construct-hub 0.4.322 → 0.4.323

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/js/256.600a7918.chunk.js","mappings":"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K,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,IAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,KAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,yCC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","sources":["../node_modules/@chakra-ui/media-query/dist/chakra-ui-media-query.esm.js","../node_modules/@chakra-ui/select/dist/chakra-ui-select.esm.js","../node_modules/@chakra-ui/table/dist/chakra-ui-table.esm.js","../node_modules/@chakra-ui/tabs/dist/chakra-ui-tabs.esm.js","../node_modules/bail/index.js","../node_modules/ccount/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/escape-string-regexp/index.js","../node_modules/extend/index.js","../node_modules/hast-to-hyperscript/index.js","../node_modules/hast-util-from-parse5/index.js","../node_modules/hast-util-parse-selector/index.js","../node_modules/hast-util-raw/index.js","../node_modules/hast-util-sanitize/index.js","../node_modules/hast-util-sanitize/lib/index.js","../node_modules/hast-util-to-parse5/index.js","../node_modules/hastscript/factory.js","../node_modules/hastscript/html.js","../node_modules/hastscript/index.js","../node_modules/hastscript/svg.js","../node_modules/inline-style-parser/index.js","../node_modules/is-buffer/index.js","../node_modules/is-plain-obj/index.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_baseValues.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_iteratorToArray.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isString.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toArray.js","../node_modules/lodash/values.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-definitions/index.js","../node_modules/mdast-util-from-markdown/dist/index.js","../node_modules/mdast-util-from-markdown/index.js","../node_modules/mdast-util-gfm-autolink-literal/from-markdown.js","../node_modules/mdast-util-gfm-autolink-literal/node_modules/mdast-util-find-and-replace/index.js","../node_modules/mdast-util-gfm-autolink-literal/to-markdown.js","../node_modules/mdast-util-gfm-strikethrough/from-markdown.js","../node_modules/mdast-util-gfm-strikethrough/to-markdown.js","../node_modules/mdast-util-gfm-table/from-markdown.js","../node_modules/mdast-util-gfm-table/to-markdown.js","../node_modules/mdast-util-gfm-task-list-item/from-markdown.js","../node_modules/mdast-util-gfm-task-list-item/to-markdown.js","../node_modules/mdast-util-gfm/from-markdown.js","../node_modules/mdast-util-gfm/to-markdown.js","../node_modules/mdast-util-to-hast/index.js","../node_modules/mdast-util-to-hast/lib/all.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/mdast-util-to-hast/lib/one.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/wrap.js","../node_modules/mdast-util-to-markdown/lib/configure.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","../node_modules/mdast-util-to-markdown/lib/util/container-flow.js","../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","../node_modules/mdast-util-to-string/index.js","../node_modules/mdurl/encode.js","../node_modules/micromark-extension-gfm-autolink-literal/index.js","../node_modules/micromark-extension-gfm-autolink-literal/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/index.js","../node_modules/micromark-extension-gfm-table/index.js","../node_modules/micromark-extension-gfm-table/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/index.js","../node_modules/micromark-extension-gfm-task-list-item/syntax.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/micromark-extension-gfm/syntax.js","../node_modules/micromark/dist/character/ascii-alpha.js","../node_modules/micromark/dist/character/ascii-alphanumeric.js","../node_modules/micromark/dist/character/ascii-atext.js","../node_modules/micromark/dist/character/ascii-control.js","../node_modules/micromark/dist/character/ascii-digit.js","../node_modules/micromark/dist/character/ascii-hex-digit.js","../node_modules/micromark/dist/character/ascii-punctuation.js","../node_modules/micromark/dist/character/markdown-line-ending-or-space.js","../node_modules/micromark/dist/character/markdown-line-ending.js","../node_modules/micromark/dist/character/markdown-space.js","../node_modules/micromark/dist/character/unicode-punctuation.js","../node_modules/micromark/dist/character/unicode-whitespace.js","../node_modules/micromark/dist/constant/assign.js","../node_modules/micromark/dist/constant/from-char-code.js","../node_modules/micromark/dist/constant/has-own-property.js","../node_modules/micromark/dist/constant/html-block-names.js","../node_modules/micromark/dist/constant/html-raw-names.js","../node_modules/micromark/dist/constant/splice.js","../node_modules/micromark/dist/constant/unicode-punctuation-regex.js","../node_modules/micromark/dist/constructs.js","../node_modules/micromark/dist/initialize/content.js","../node_modules/micromark/dist/initialize/document.js","../node_modules/micromark/dist/initialize/flow.js","../node_modules/micromark/dist/initialize/text.js","../node_modules/micromark/dist/parse.js","../node_modules/micromark/dist/postprocess.js","../node_modules/micromark/dist/preprocess.js","../node_modules/micromark/dist/tokenize/attention.js","../node_modules/micromark/dist/tokenize/autolink.js","../node_modules/micromark/dist/tokenize/block-quote.js","../node_modules/micromark/dist/tokenize/character-escape.js","../node_modules/micromark/dist/tokenize/character-reference.js","../node_modules/micromark/dist/tokenize/code-fenced.js","../node_modules/micromark/dist/tokenize/code-indented.js","../node_modules/micromark/dist/tokenize/code-text.js","../node_modules/micromark/dist/tokenize/content.js","../node_modules/micromark/dist/tokenize/definition.js","../node_modules/micromark/dist/tokenize/factory-destination.js","../node_modules/micromark/dist/tokenize/factory-label.js","../node_modules/micromark/dist/tokenize/factory-space.js","../node_modules/micromark/dist/tokenize/factory-title.js","../node_modules/micromark/dist/tokenize/factory-whitespace.js","../node_modules/micromark/dist/tokenize/hard-break-escape.js","../node_modules/micromark/dist/tokenize/heading-atx.js","../node_modules/micromark/dist/tokenize/html-flow.js","../node_modules/micromark/dist/tokenize/html-text.js","../node_modules/micromark/dist/tokenize/label-end.js","../node_modules/micromark/dist/tokenize/label-start-image.js","../node_modules/micromark/dist/tokenize/label-start-link.js","../node_modules/micromark/dist/tokenize/line-ending.js","../node_modules/micromark/dist/tokenize/list.js","../node_modules/micromark/dist/tokenize/partial-blank-line.js","../node_modules/micromark/dist/tokenize/setext-underline.js","../node_modules/micromark/dist/tokenize/thematic-break.js","../node_modules/micromark/dist/util/chunked-push.js","../node_modules/micromark/dist/util/chunked-splice.js","../node_modules/micromark/dist/util/classify-character.js","../node_modules/micromark/dist/util/combine-extensions.js","../node_modules/micromark/dist/util/create-tokenizer.js","../node_modules/micromark/dist/util/miniflat.js","../node_modules/micromark/dist/util/move-point.js","../node_modules/micromark/dist/util/normalize-identifier.js","../node_modules/micromark/dist/util/prefix-size.js","../node_modules/micromark/dist/util/regex-check.js","../node_modules/micromark/dist/util/resolve-all.js","../node_modules/micromark/dist/util/safe-from-int.js","../node_modules/micromark/dist/util/serialize-chunks.js","../node_modules/micromark/dist/util/shallow.js","../node_modules/micromark/dist/util/size-chunks.js","../node_modules/micromark/dist/util/slice-chunks.js","../node_modules/micromark/dist/util/subtokenize.js","../node_modules/node-emoji/index.js","../node_modules/node-emoji/lib/emoji.js","../node_modules/parse-entities/decode-entity.browser.js","../node_modules/parse5/lib/common/doctype.js","../node_modules/parse5/lib/common/error-codes.js","../node_modules/parse5/lib/common/foreign-content.js","../node_modules/parse5/lib/common/html.js","../node_modules/parse5/lib/common/unicode.js","../node_modules/parse5/lib/extensions/error-reporting/mixin-base.js","../node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js","../node_modules/parse5/lib/extensions/location-info/parser-mixin.js","../node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js","../node_modules/parse5/lib/parser/formatting-element-list.js","../node_modules/parse5/lib/parser/index.js","../node_modules/parse5/lib/parser/open-element-stack.js","../node_modules/parse5/lib/tokenizer/index.js","../node_modules/parse5/lib/tokenizer/named-entity-data.js","../node_modules/parse5/lib/tokenizer/preprocessor.js","../node_modules/parse5/lib/tree-adapters/default.js","../node_modules/parse5/lib/utils/merge-options.js","../node_modules/parse5/lib/utils/mixin.js","../node_modules/prism-react-renderer/prism/index.js","../node_modules/prism-react-renderer/themes/duotoneDark/index.js","../node_modules/prism-react-renderer/dist/index.js","../node_modules/prism-react-renderer/themes/nightOwl/index.js","../node_modules/prism-react-renderer/themes/nightOwlLight/index.js","../node_modules/property-information/find.js","../node_modules/property-information/html.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/normalize.js","../node_modules/property-information/svg.js","../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../node_modules/react-dom/server.browser.js","../node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-markdown/node_modules/react-is/index.js","../node_modules/react-markdown/src/ast-to-react.js","../node_modules/react-markdown/src/react-markdown.js","../node_modules/react-markdown/src/rehype-filter.js","../node_modules/react-markdown/src/uri-transformer.js","../node_modules/rehype-raw/index.js","../node_modules/rehype-sanitize/index.js","../node_modules/remark-gfm/index.js","../node_modules/remark-parse/index.js","../node_modules/remark-rehype/index.js","../node_modules/repeat-string/index.js","../node_modules/semver/classes/comparator.js","../node_modules/semver/classes/range.js","../node_modules/semver/classes/semver.js","../node_modules/semver/functions/clean.js","../node_modules/semver/functions/cmp.js","../node_modules/semver/functions/coerce.js","../node_modules/semver/functions/compare-build.js","../node_modules/semver/functions/compare-loose.js","../node_modules/semver/functions/compare.js","../node_modules/semver/functions/diff.js","../node_modules/semver/functions/eq.js","../node_modules/semver/functions/gt.js","../node_modules/semver/functions/gte.js","../node_modules/semver/functions/inc.js","../node_modules/semver/functions/lt.js","../node_modules/semver/functions/lte.js","../node_modules/semver/functions/major.js","../node_modules/semver/functions/minor.js","../node_modules/semver/functions/neq.js","../node_modules/semver/functions/parse.js","../node_modules/semver/functions/patch.js","../node_modules/semver/functions/prerelease.js","../node_modules/semver/functions/rcompare.js","../node_modules/semver/functions/rsort.js","../node_modules/semver/functions/satisfies.js","../node_modules/semver/functions/sort.js","../node_modules/semver/functions/valid.js","../node_modules/semver/index.js","../node_modules/semver/internal/constants.js","../node_modules/semver/internal/debug.js","../node_modules/semver/internal/identifiers.js","../node_modules/semver/internal/parse-options.js","../node_modules/semver/internal/re.js","../node_modules/semver/node_modules/lru-cache/index.js","../node_modules/semver/ranges/gtr.js","../node_modules/semver/ranges/intersects.js","../node_modules/semver/ranges/ltr.js","../node_modules/semver/ranges/max-satisfying.js","../node_modules/semver/ranges/min-satisfying.js","../node_modules/semver/ranges/min-version.js","../node_modules/semver/ranges/outside.js","../node_modules/semver/ranges/simplify.js","../node_modules/semver/ranges/subset.js","../node_modules/semver/ranges/to-comparators.js","../node_modules/semver/ranges/valid.js","../node_modules/space-separated-tokens/index.js","../node_modules/spdx-license-list/index.js","../node_modules/style-to-object/index.js","../node_modules/trough/index.js","../node_modules/trough/wrap.js","../node_modules/unified/index.js","../node_modules/unist-builder/index.js","../node_modules/unist-util-generated/index.js","../node_modules/unist-util-is/convert.js","../node_modules/unist-util-position/index.js","../node_modules/unist-util-stringify-position/index.js","../node_modules/unist-util-visit-parents/color.browser.js","../node_modules/unist-util-visit-parents/index.js","../node_modules/unist-util-visit/index.js","../node_modules/vfile-location/index.js","../node_modules/vfile-message/index.js","../node_modules/vfile/index.js","../node_modules/vfile/lib/core.js","../node_modules/vfile/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/xtend/immutable.js","../node_modules/yallist/iterator.js","../node_modules/yallist/yallist.js","../node_modules/zwitch/index.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/emoticon/index.js","../node_modules/mdast-util-find-and-replace/node_modules/unist-util-is/lib/index.js","../node_modules/mdast-util-find-and-replace/node_modules/unist-util-visit-parents/lib/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/remark-emoji/index.js"],"sourcesContent":["import { useTheme } from '@chakra-ui/system';\nimport { isBrowser, __DEV__, memoizedGet, breakpoints, isArray, fromEntries, arrayToObjectNotation } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport React__default from 'react';\nimport { useEnvironment } from '@chakra-ui/react-env';\n\nvar useSafeLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect;\n/**\n * React hook that tracks state of a CSS media query\n *\n * @param query the media query to match\n */\n\nfunction useMediaQuery(query) {\n var env = useEnvironment();\n var queries = Array.isArray(query) ? query : [query];\n var isSupported = isBrowser && \"matchMedia\" in env.window;\n\n var _React$useState = React.useState(queries.map(function (query) {\n return isSupported ? !!env.window.matchMedia(query).matches : false;\n })),\n matches = _React$useState[0],\n setMatches = _React$useState[1]; // Specifying matches in the dependency list will cause the event listeners\n // to unload and then load each time the dependency changes. This causes\n // Media Query Events to be missed. The event listeners should only be unloaded\n // when the component unloads.\n\n\n useSafeLayoutEffect(function () {\n if (!isSupported) return undefined;\n var mediaQueryList = queries.map(function (query) {\n return env.window.matchMedia(query);\n });\n var listenerList = mediaQueryList.map(function (_, index) {\n var listener = function listener(mqlEvent) {\n var queryIndex = mediaQueryList.findIndex(function (mediaQuery) {\n return mediaQuery.media === mqlEvent.media;\n }); // As the event listener is on the media query list, any time the\n // listener is called, we know there is a change. There's no need\n // to compare the previous matches with current. Using\n // setMatches(matches => {...}) provides access to the current matches\n // state. Trying to access matches outside the setMatches function\n // would provide data from the the time of instantiation (stale).\n\n setMatches(function (matches) {\n var currentMatches = matches.map(function (x) {\n return x;\n });\n currentMatches[queryIndex] = mqlEvent.matches;\n return currentMatches;\n });\n }; // Listening to the 'change' event on the Media Query List Object\n // is more performant as the callback is only invoked when a specified\n // media query is matched. Using addEventListener on the window object\n // to listen for the resize event will call the callback on every\n // viewport resize.\n\n\n if (typeof mediaQueryList[index].addEventListener === \"function\") {\n mediaQueryList[index].addEventListener(\"change\", listener);\n } else {\n mediaQueryList[index].addListener(listener);\n }\n\n return listener;\n });\n return function () {\n mediaQueryList.forEach(function (_, index) {\n if (typeof mediaQueryList[index].removeEventListener === \"function\") {\n mediaQueryList[index].removeEventListener(\"change\", listenerList[index]);\n } else {\n mediaQueryList[index].removeListener(listenerList[index]);\n }\n });\n };\n }, []);\n return matches;\n}\n\n/**\n * Visibility\n *\n * React component to control the visibility of its\n * children based on the current breakpoint\n */\nvar Visibility = function Visibility(props) {\n var breakpoint = props.breakpoint,\n hide = props.hide,\n children = props.children;\n\n var _useMediaQuery = useMediaQuery(breakpoint),\n show = _useMediaQuery[0];\n\n var isVisible = hide ? !show : show;\n var rendered = isVisible ? children : null;\n return rendered;\n};\n\nvar Hide = function Hide(props) {\n var children = props.children;\n var query = useQuery(props);\n return /*#__PURE__*/React.createElement(Visibility, {\n breakpoint: query,\n hide: true\n }, children);\n};\n\nif (__DEV__) {\n Hide.displayName = \"Hide\";\n}\n\nvar Show = function Show(props) {\n var children = props.children;\n var query = useQuery(props);\n return /*#__PURE__*/React.createElement(Visibility, {\n breakpoint: query\n }, children);\n};\n\nif (__DEV__) {\n Show.displayName = \"Show\";\n}\n\nvar getBreakpoint = function getBreakpoint(theme, value) {\n return memoizedGet(theme, \"breakpoints.\" + value, value);\n};\n\nfunction useQuery(props) {\n var _props$breakpoint = props.breakpoint,\n breakpoint = _props$breakpoint === void 0 ? \"\" : _props$breakpoint,\n below = props.below,\n above = props.above;\n var theme = useTheme();\n var bpBelow = getBreakpoint(theme, below);\n var bpAbove = getBreakpoint(theme, above);\n var query = breakpoint;\n\n if (bpBelow) {\n query = \"(max-width: \" + bpBelow + \")\";\n } else if (bpAbove) {\n query = \"(min-width: \" + bpAbove + \")\";\n }\n\n return query;\n}\n\n/**\n * React hook used to get the user's animation preference.\n */\n\nfunction usePrefersReducedMotion() {\n var _useMediaQuery = useMediaQuery(\"(prefers-reduced-motion: reduce)\"),\n prefersReducedMotion = _useMediaQuery[0];\n\n return prefersReducedMotion;\n}\n/**\n * React hook for getting the user's color mode preference.\n */\n\nfunction useColorModePreference() {\n var _useMediaQuery2 = useMediaQuery([\"(prefers-color-scheme: light)\", \"(prefers-color-scheme: dark)\"]),\n isLight = _useMediaQuery2[0],\n isDark = _useMediaQuery2[1];\n\n if (isLight) return \"light\";\n if (isDark) return \"dark\";\n return undefined;\n}\n\n/**\n * React hook used to get the current responsive media breakpoint.\n *\n * @param [defaultBreakpoint=\"base\"] default breakpoint name\n * (in non-window environments like SSR)\n *\n * For SSR, you can use a package like [is-mobile](https://github.com/kaimallea/isMobile)\n * to get the default breakpoint value from the user-agent\n */\n\nfunction useBreakpoint(defaultBreakpoint // default value ensures SSR+CSR consistency\n) {\n if (defaultBreakpoint === void 0) {\n defaultBreakpoint = \"base\";\n }\n\n var _useTheme = useTheme(),\n __breakpoints = _useTheme.__breakpoints;\n\n var env = useEnvironment();\n var queries = React__default.useMemo(function () {\n var _breakpoints$details;\n\n return (_breakpoints$details = __breakpoints == null ? void 0 : __breakpoints.details.map(function (_ref) {\n var minMaxQuery = _ref.minMaxQuery,\n breakpoint = _ref.breakpoint;\n return {\n breakpoint: breakpoint,\n query: minMaxQuery.replace(\"@media screen and \", \"\")\n };\n })) != null ? _breakpoints$details : [];\n }, [__breakpoints]);\n\n var _React$useState = React__default.useState(function () {\n if (defaultBreakpoint) {\n // use default breakpoint to ensure render consistency in SSR + CSR environments\n // => first render on the client has to match the render on the server\n var fallbackBreakpointDetail = queries.find(function (_ref2) {\n var breakpoint = _ref2.breakpoint;\n return breakpoint === defaultBreakpoint;\n });\n\n if (fallbackBreakpointDetail) {\n return fallbackBreakpointDetail.breakpoint;\n }\n }\n\n if (env.window.matchMedia) {\n // set correct breakpoint on first render if no default breakpoint was provided\n var matchingBreakpointDetail = queries.find(function (_ref3) {\n var query = _ref3.query;\n return env.window.matchMedia(query).matches;\n });\n\n if (matchingBreakpointDetail) {\n return matchingBreakpointDetail.breakpoint;\n }\n }\n\n return undefined;\n }),\n currentBreakpoint = _React$useState[0],\n setCurrentBreakpoint = _React$useState[1];\n\n React__default.useEffect(function () {\n var allUnregisterFns = queries.map(function (_ref4) {\n var breakpoint = _ref4.breakpoint,\n query = _ref4.query;\n var mediaQueryList = env.window.matchMedia(query);\n\n if (mediaQueryList.matches) {\n setCurrentBreakpoint(breakpoint);\n }\n\n var handleChange = function handleChange(ev) {\n if (ev.matches) {\n setCurrentBreakpoint(breakpoint);\n }\n }; // add media query listener\n\n\n if (typeof mediaQueryList.addEventListener === \"function\") {\n mediaQueryList.addEventListener(\"change\", handleChange);\n } else {\n mediaQueryList.addListener(handleChange);\n } // return unregister fn\n\n\n return function () {\n if (typeof mediaQueryList.removeEventListener === \"function\") {\n mediaQueryList.removeEventListener(\"change\", handleChange);\n } else {\n mediaQueryList.removeListener(handleChange);\n }\n };\n });\n return function () {\n allUnregisterFns.forEach(function (unregister) {\n return unregister();\n });\n };\n }, [queries, __breakpoints, env.window]);\n return currentBreakpoint;\n}\n\nfunction getClosestValue(values, breakpoint, breakpoints$1) {\n if (breakpoints$1 === void 0) {\n breakpoints$1 = breakpoints;\n }\n\n var index = Object.keys(values).indexOf(breakpoint);\n\n if (index !== -1) {\n return values[breakpoint];\n }\n\n var stopIndex = breakpoints$1.indexOf(breakpoint);\n\n while (stopIndex >= 0) {\n var key = breakpoints$1[stopIndex];\n\n if (values[key] != null) {\n index = stopIndex;\n break;\n }\n\n stopIndex -= 1;\n }\n\n if (index !== -1) {\n var _key = breakpoints$1[index];\n return values[_key];\n }\n\n return undefined;\n}\n\n/**\n * React hook for getting the value for the current breakpoint from the\n * provided responsive values object.\n *\n * @param values\n * @param [defaultBreakpoint] default breakpoint name\n * (in non-window environments like SSR)\n *\n * For SSR, you can use a package like [is-mobile](https://github.com/kaimallea/isMobile)\n * to get the default breakpoint value from the user-agent\n *\n * @example\n * const width = useBreakpointValue({ base: '150px', md: '250px' })\n */\n\nfunction useBreakpointValue(values, defaultBreakpoint) {\n var _theme$__breakpoints;\n\n var breakpoint = useBreakpoint(defaultBreakpoint);\n var theme = useTheme();\n if (!breakpoint) return undefined;\n /**\n * Get the sorted breakpoint keys from the provided breakpoints\n */\n\n var breakpoints = Array.from(((_theme$__breakpoints = theme.__breakpoints) == null ? void 0 : _theme$__breakpoints.keys) || []);\n var obj = isArray(values) ? fromEntries(Object.entries(arrayToObjectNotation(values, breakpoints)).map(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return [key, value];\n })) : values;\n return getClosestValue(obj, breakpoint, breakpoints);\n}\n\nexport { Hide, Show, useBreakpoint, useBreakpointValue, useColorModePreference, useMediaQuery, usePrefersReducedMotion, useQuery };\n","import { useFormControl } from '@chakra-ui/form-control';\nimport { forwardRef, chakra, useMultiStyleConfig, omitThemingProps, layoutPropNames } from '@chakra-ui/system';\nimport { cx, __DEV__, split, mergeWith, dataAttr } from '@chakra-ui/utils';\nimport * as React from 'react';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _excluded = [\"children\", \"placeholder\", \"className\"],\n _excluded2 = [\"rootProps\", \"placeholder\", \"icon\", \"color\", \"height\", \"h\", \"minH\", \"minHeight\", \"iconColor\", \"iconSize\", \"isFullWidth\"],\n _excluded3 = [\"children\"];\nvar SelectField = /*#__PURE__*/forwardRef(function (props, ref) {\n var children = props.children,\n placeholder = props.placeholder,\n className = props.className,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(chakra.select, _extends({}, rest, {\n ref: ref,\n className: cx(\"chakra-select\", className)\n }), placeholder && /*#__PURE__*/React.createElement(\"option\", {\n value: \"\"\n }, placeholder), children);\n});\n\nif (__DEV__) {\n SelectField.displayName = \"SelectField\";\n}\n\n/**\n * React component used to select one item from a list of options.\n */\nvar Select = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useMultiStyleConfig(\"Select\", props);\n\n var _omitThemingProps = omitThemingProps(props),\n rootProps = _omitThemingProps.rootProps,\n placeholder = _omitThemingProps.placeholder,\n icon = _omitThemingProps.icon,\n color = _omitThemingProps.color,\n height = _omitThemingProps.height,\n h = _omitThemingProps.h,\n minH = _omitThemingProps.minH,\n minHeight = _omitThemingProps.minHeight,\n iconColor = _omitThemingProps.iconColor,\n iconSize = _omitThemingProps.iconSize;\n _omitThemingProps.isFullWidth;\n var rest = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded2);\n\n var _split = split(rest, layoutPropNames),\n layoutProps = _split[0],\n otherProps = _split[1];\n\n var ownProps = useFormControl(otherProps);\n var rootStyles = {\n width: \"100%\",\n height: \"fit-content\",\n position: \"relative\",\n color: color\n };\n var fieldStyles = mergeWith({\n paddingEnd: \"2rem\"\n }, styles.field, {\n _focus: {\n zIndex: \"unset\"\n }\n });\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n className: \"chakra-select__wrapper\",\n __css: rootStyles\n }, layoutProps, rootProps), /*#__PURE__*/React.createElement(SelectField, _extends({\n ref: ref,\n height: h != null ? h : height,\n minH: minH != null ? minH : minHeight,\n placeholder: placeholder\n }, ownProps, {\n __css: fieldStyles\n }), props.children), /*#__PURE__*/React.createElement(SelectIcon, _extends({\n \"data-disabled\": dataAttr(ownProps.disabled)\n }, (iconColor || color) && {\n color: iconColor || color\n }, {\n __css: styles.icon\n }, iconSize && {\n fontSize: iconSize\n }), icon));\n});\n\nif (__DEV__) {\n Select.displayName = \"Select\";\n}\n\nvar DefaultIcon = function DefaultIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n }));\n};\nvar IconWrapper = chakra(\"div\", {\n baseStyle: {\n position: \"absolute\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n top: \"50%\",\n transform: \"translateY(-50%)\"\n }\n});\n\nvar SelectIcon = function SelectIcon(props) {\n var _props$children = props.children,\n children = _props$children === void 0 ? /*#__PURE__*/React.createElement(DefaultIcon, null) : _props$children,\n rest = _objectWithoutPropertiesLoose(props, _excluded3);\n\n var clone = /*#__PURE__*/React.cloneElement(children, {\n role: \"presentation\",\n className: \"chakra-select__icon\",\n focusable: false,\n \"aria-hidden\": true,\n // force icon to adhere to `IconWrapper` styles\n style: {\n width: \"1em\",\n height: \"1em\",\n color: \"currentColor\"\n }\n });\n return /*#__PURE__*/React.createElement(IconWrapper, _extends({}, rest, {\n className: \"chakra-select__icon-wrapper\"\n }), /*#__PURE__*/React.isValidElement(children) ? clone : null);\n};\n\nif (__DEV__) {\n SelectIcon.displayName = \"SelectIcon\";\n}\n\nexport { DefaultIcon, Select, SelectField };\n","import { forwardRef, chakra, useMultiStyleConfig, omitThemingProps, StylesProvider, useStyles } from '@chakra-ui/system';\nimport { cx, __DEV__ } from '@chakra-ui/utils';\nimport * as React from 'react';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _excluded = [\"overflow\", \"overflowX\", \"className\"],\n _excluded2 = [\"className\"],\n _excluded3 = [\"placement\"],\n _excluded4 = [\"isNumeric\"],\n _excluded5 = [\"isNumeric\"];\nvar TableContainer = /*#__PURE__*/forwardRef(function (props, ref) {\n var _ref;\n\n var overflow = props.overflow,\n overflowX = props.overflowX,\n className = props.className,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n ref: ref,\n className: cx(\"chakra-table__container\", className)\n }, rest, {\n __css: {\n display: \"block\",\n whiteSpace: \"nowrap\",\n WebkitOverflowScrolling: \"touch\",\n overflowX: (_ref = overflow != null ? overflow : overflowX) != null ? _ref : \"auto\",\n overflowY: \"hidden\",\n maxWidth: \"100%\"\n }\n }));\n});\nvar Table = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useMultiStyleConfig(\"Table\", props);\n\n var _omitThemingProps = omitThemingProps(props),\n className = _omitThemingProps.className,\n tableProps = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded2);\n\n return /*#__PURE__*/React.createElement(StylesProvider, {\n value: styles\n }, /*#__PURE__*/React.createElement(chakra.table, _extends({\n role: \"table\",\n ref: ref,\n __css: styles.table,\n className: cx(\"chakra-table\", className)\n }, tableProps)));\n});\n\nif (__DEV__) {\n Table.displayName = \"Table\";\n}\n\nvar TableCaption = /*#__PURE__*/forwardRef(function (props, ref) {\n var _props$placement = props.placement,\n placement = _props$placement === void 0 ? \"bottom\" : _props$placement,\n rest = _objectWithoutPropertiesLoose(props, _excluded3);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.caption, _extends({}, rest, {\n ref: ref,\n __css: _extends({}, styles.caption, {\n captionSide: placement\n })\n }));\n});\n\nif (__DEV__) {\n TableCaption.displayName = \"TableCaption\";\n}\n\nvar Thead = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.thead, _extends({}, props, {\n ref: ref,\n __css: styles.thead\n }));\n});\nvar Tbody = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.tbody, _extends({}, props, {\n ref: ref,\n __css: styles.tbody\n }));\n});\nvar Tfoot = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.tfoot, _extends({}, props, {\n ref: ref,\n __css: styles.tfoot\n }));\n});\nvar Th = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var isNumeric = _ref2.isNumeric,\n rest = _objectWithoutPropertiesLoose(_ref2, _excluded4);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.th, _extends({}, rest, {\n ref: ref,\n __css: styles.th,\n \"data-is-numeric\": isNumeric\n }));\n});\nvar Tr = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.tr, _extends({\n role: \"row\"\n }, props, {\n ref: ref,\n __css: styles.tr\n }));\n});\nvar Td = /*#__PURE__*/forwardRef(function (_ref3, ref) {\n var isNumeric = _ref3.isNumeric,\n rest = _objectWithoutPropertiesLoose(_ref3, _excluded5);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.td, _extends({\n role: \"gridcell\"\n }, rest, {\n ref: ref,\n __css: styles.td,\n \"data-is-numeric\": isNumeric\n }));\n});\n\nexport { Table, TableCaption, TableContainer, Tbody, Td, Tfoot, Th, Thead, Tr };\n","import { forwardRef, useMultiStyleConfig, omitThemingProps, StylesProvider, chakra, useStyles } from '@chakra-ui/system';\nimport { normalizeEventKey, callAllHandlers, determineLazyBehavior, isUndefined, focus, omit, cx, __DEV__ } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { useClickable } from '@chakra-ui/clickable';\nimport { createDescendantContext } from '@chakra-ui/descendant';\nimport { useControllableState, useId, useSafeLayoutEffect } from '@chakra-ui/hooks';\nimport { createContext, mergeRefs, getValidChildren } from '@chakra-ui/react-utils';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _excluded$1 = [\"defaultIndex\", \"onChange\", \"index\", \"isManual\", \"isLazy\", \"lazyBehavior\", \"orientation\", \"direction\"],\n _excluded2$1 = [\"isDisabled\", \"isFocusable\"],\n _excluded3 = [\"isSelected\", \"id\", \"children\"];\n/* -------------------------------------------------------------------------------------------------\n * Create context to track descendants and their indices\n * -----------------------------------------------------------------------------------------------*/\n\nvar _createDescendantCont = createDescendantContext(),\n TabsDescendantsProvider = _createDescendantCont[0],\n useTabsDescendantsContext = _createDescendantCont[1],\n useTabsDescendants = _createDescendantCont[2],\n useTabsDescendant = _createDescendantCont[3];\n\n/**\n * Tabs hook that provides all the states, and accessibility\n * helpers to keep all things working properly.\n *\n * Its returned object will be passed unto a Context Provider\n * so all child components can read from it.\n * There is no document link yet\n * @see Docs https://chakra-ui.com/docs/components/useTabs\n */\nfunction useTabs(props) {\n var defaultIndex = props.defaultIndex,\n onChange = props.onChange,\n index = props.index,\n isManual = props.isManual,\n isLazy = props.isLazy,\n _props$lazyBehavior = props.lazyBehavior,\n lazyBehavior = _props$lazyBehavior === void 0 ? \"unmount\" : _props$lazyBehavior,\n _props$orientation = props.orientation,\n orientation = _props$orientation === void 0 ? \"horizontal\" : _props$orientation,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? \"ltr\" : _props$direction,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded$1);\n /**\n * We use this to keep track of the index of the focused tab.\n *\n * Tabs can be automatically activated, this means selection follows focus.\n * When we navigate with the arrow keys, we move focus and selection to next/prev tab\n *\n * Tabs can also be manually activated, this means selection does not follow focus.\n * When we navigate with the arrow keys, we only move focus NOT selection. The user\n * will need not manually activate the tab using `Enter` or `Space`.\n *\n * This is why we need to keep track of the `focusedIndex` and `selectedIndex`\n */\n\n\n var _React$useState = React.useState(defaultIndex != null ? defaultIndex : 0),\n focusedIndex = _React$useState[0],\n setFocusedIndex = _React$useState[1];\n\n var _useControllableState = useControllableState({\n defaultValue: defaultIndex != null ? defaultIndex : 0,\n value: index,\n onChange: onChange\n }),\n selectedIndex = _useControllableState[0],\n setSelectedIndex = _useControllableState[1];\n /**\n * Sync focused `index` with controlled `selectedIndex` (which is the `props.index`)\n */\n\n\n React.useEffect(function () {\n if (index != null) {\n setFocusedIndex(index);\n }\n }, [index]);\n /**\n * Think of `useDescendants` as a register for the tab nodes.\n */\n\n var descendants = useTabsDescendants();\n /**\n * Generate a unique id or use user-provided id for the tabs widget\n */\n\n var id = useId(props.id, \"tabs\");\n return {\n id: id,\n selectedIndex: selectedIndex,\n focusedIndex: focusedIndex,\n setSelectedIndex: setSelectedIndex,\n setFocusedIndex: setFocusedIndex,\n isManual: isManual,\n isLazy: isLazy,\n lazyBehavior: lazyBehavior,\n orientation: orientation,\n descendants: descendants,\n direction: direction,\n htmlProps: htmlProps\n };\n}\n\nvar _createContext = createContext({\n name: \"TabsContext\",\n errorMessage: \"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within <Tabs />\"\n}),\n TabsProvider = _createContext[0],\n useTabsContext = _createContext[1];\n\n/**\n * Tabs hook to manage multiple tab buttons,\n * and ensures only one tab is selected per time.\n *\n * @param props props object for the tablist\n */\nfunction useTabList(props) {\n var _useTabsContext = useTabsContext(),\n focusedIndex = _useTabsContext.focusedIndex,\n orientation = _useTabsContext.orientation,\n direction = _useTabsContext.direction;\n\n var descendants = useTabsDescendantsContext();\n var onKeyDown = React.useCallback(function (event) {\n var _keyMap;\n\n var nextTab = function nextTab() {\n var next = descendants.nextEnabled(focusedIndex);\n if (next) focus(next.node);\n };\n\n var prevTab = function prevTab() {\n var prev = descendants.prevEnabled(focusedIndex);\n if (prev) focus(prev.node);\n };\n\n var firstTab = function firstTab() {\n var first = descendants.firstEnabled();\n if (first) focus(first.node);\n };\n\n var lastTab = function lastTab() {\n var last = descendants.lastEnabled();\n if (last) focus(last.node);\n };\n\n var isHorizontal = orientation === \"horizontal\";\n var isVertical = orientation === \"vertical\";\n var eventKey = normalizeEventKey(event);\n var ArrowStart = direction === \"ltr\" ? \"ArrowLeft\" : \"ArrowRight\";\n var ArrowEnd = direction === \"ltr\" ? \"ArrowRight\" : \"ArrowLeft\";\n var keyMap = (_keyMap = {}, _keyMap[ArrowStart] = function () {\n return isHorizontal && prevTab();\n }, _keyMap[ArrowEnd] = function () {\n return isHorizontal && nextTab();\n }, _keyMap.ArrowDown = function ArrowDown() {\n return isVertical && nextTab();\n }, _keyMap.ArrowUp = function ArrowUp() {\n return isVertical && prevTab();\n }, _keyMap.Home = firstTab, _keyMap.End = lastTab, _keyMap);\n var action = keyMap[eventKey];\n\n if (action) {\n event.preventDefault();\n action(event);\n }\n }, [descendants, focusedIndex, orientation, direction]);\n return _extends({}, props, {\n role: \"tablist\",\n \"aria-orientation\": orientation,\n onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown)\n });\n}\n\n/**\n * Tabs hook to manage each tab button.\n *\n * A tab can be disabled and focusable, or both,\n * hence the use of `useClickable` to handle this scenario\n */\nfunction useTab(props) {\n var isDisabled = props.isDisabled,\n isFocusable = props.isFocusable,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded2$1);\n\n var _useTabsContext2 = useTabsContext(),\n setSelectedIndex = _useTabsContext2.setSelectedIndex,\n isManual = _useTabsContext2.isManual,\n id = _useTabsContext2.id,\n setFocusedIndex = _useTabsContext2.setFocusedIndex,\n selectedIndex = _useTabsContext2.selectedIndex;\n\n var _useTabsDescendant = useTabsDescendant({\n disabled: isDisabled && !isFocusable\n }),\n index = _useTabsDescendant.index,\n register = _useTabsDescendant.register;\n\n var isSelected = index === selectedIndex;\n\n var onClick = function onClick() {\n setSelectedIndex(index);\n };\n\n var onFocus = function onFocus() {\n setFocusedIndex(index);\n var isDisabledButFocusable = isDisabled && isFocusable;\n var shouldSelect = !isManual && !isDisabledButFocusable;\n\n if (shouldSelect) {\n setSelectedIndex(index);\n }\n };\n\n var clickableProps = useClickable(_extends({}, htmlProps, {\n ref: mergeRefs(register, props.ref),\n isDisabled: isDisabled,\n isFocusable: isFocusable,\n onClick: callAllHandlers(props.onClick, onClick)\n }));\n var type = \"button\";\n return _extends({}, clickableProps, {\n id: makeTabId(id, index),\n role: \"tab\",\n tabIndex: isSelected ? 0 : -1,\n type: type,\n \"aria-selected\": isSelected,\n \"aria-controls\": makeTabPanelId(id, index),\n onFocus: isDisabled ? undefined : callAllHandlers(props.onFocus, onFocus)\n });\n}\n\n/**\n * Tabs hook for managing the visibility of multiple tab panels.\n *\n * Since only one panel can be show at a time, we use `cloneElement`\n * to inject `selected` panel to each TabPanel.\n *\n * It returns a cloned version of its children with\n * all functionality included.\n */\nfunction useTabPanels(props) {\n var context = useTabsContext();\n var id = context.id,\n selectedIndex = context.selectedIndex;\n var validChildren = getValidChildren(props.children);\n var children = validChildren.map(function (child, index) {\n return /*#__PURE__*/React.cloneElement(child, {\n isSelected: index === selectedIndex,\n id: makeTabPanelId(id, index),\n // Refers to the associated tab element, and also provides an accessible name to the tab panel.\n \"aria-labelledby\": makeTabId(id, index)\n });\n });\n return _extends({}, props, {\n children: children\n });\n}\n/**\n * Tabs hook for managing the visible/hidden states\n * of the tab panel.\n *\n * @param props props object for the tab panel\n */\n\nfunction useTabPanel(props) {\n var isSelected = props.isSelected,\n id = props.id,\n children = props.children,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded3);\n\n var _useTabsContext3 = useTabsContext(),\n isLazy = _useTabsContext3.isLazy,\n lazyBehavior = _useTabsContext3.lazyBehavior;\n\n var hasBeenSelected = React.useRef(false);\n\n if (isSelected) {\n hasBeenSelected.current = true;\n }\n\n var shouldRenderChildren = determineLazyBehavior({\n hasBeenSelected: hasBeenSelected.current,\n isSelected: isSelected,\n isLazy: isLazy,\n lazyBehavior: lazyBehavior\n });\n return _extends({\n // Puts the tabpanel in the page `Tab` sequence.\n tabIndex: 0\n }, htmlProps, {\n children: shouldRenderChildren ? children : null,\n role: \"tabpanel\",\n hidden: !isSelected,\n id: id\n });\n}\n/**\n * Tabs hook to show an animated indicators that\n * follows the active tab.\n *\n * The way we do it is by measuring the DOM Rect (or dimensions)\n * of the active tab, and return that as CSS style for\n * the indicator.\n */\n\nfunction useTabIndicator() {\n var context = useTabsContext();\n var descendants = useTabsDescendantsContext();\n var selectedIndex = context.selectedIndex,\n orientation = context.orientation;\n var isHorizontal = orientation === \"horizontal\";\n var isVertical = orientation === \"vertical\"; // Get the clientRect of the selected tab\n\n var _React$useState2 = React.useState(function () {\n if (isHorizontal) return {\n left: 0,\n width: 0\n };\n if (isVertical) return {\n top: 0,\n height: 0\n };\n return undefined;\n }),\n rect = _React$useState2[0],\n setRect = _React$useState2[1];\n\n var _React$useState3 = React.useState(false),\n hasMeasured = _React$useState3[0],\n setHasMeasured = _React$useState3[1]; // Update the selected tab rect when the selectedIndex changes\n\n\n useSafeLayoutEffect(function () {\n if (isUndefined(selectedIndex)) return undefined;\n var tab = descendants.item(selectedIndex);\n if (isUndefined(tab)) return undefined; // Horizontal Tab: Calculate width and left distance\n\n if (isHorizontal) {\n setRect({\n left: tab.node.offsetLeft,\n width: tab.node.offsetWidth\n });\n } // Vertical Tab: Calculate height and top distance\n\n\n if (isVertical) {\n setRect({\n top: tab.node.offsetTop,\n height: tab.node.offsetHeight\n });\n } // Prevent unwanted transition from 0 to measured rect\n // by setting the measured state in the next tick\n\n\n var id = requestAnimationFrame(function () {\n setHasMeasured(true);\n });\n return function () {\n if (id) {\n cancelAnimationFrame(id);\n }\n };\n }, [selectedIndex, isHorizontal, isVertical, descendants]);\n return _extends({\n position: \"absolute\",\n transitionProperty: \"left, right, top, bottom, height, width\",\n transitionDuration: hasMeasured ? \"200ms\" : \"0ms\",\n transitionTimingFunction: \"cubic-bezier(0, 0, 0.2, 1)\"\n }, rect);\n}\n\nfunction makeTabId(id, index) {\n return id + \"--tab-\" + index;\n}\n\nfunction makeTabPanelId(id, index) {\n return id + \"--tabpanel-\" + index;\n}\n\nvar _excluded = [\"children\", \"className\"],\n _excluded2 = [\"htmlProps\", \"descendants\"];\n\n/**\n * Tabs\n *\n * Provides context and logic for all tabs components.\n */\nvar Tabs = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useMultiStyleConfig(\"Tabs\", props);\n\n var _omitThemingProps = omitThemingProps(props),\n children = _omitThemingProps.children,\n className = _omitThemingProps.className,\n rest = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded);\n\n var _useTabs = useTabs(rest),\n htmlProps = _useTabs.htmlProps,\n descendants = _useTabs.descendants,\n ctx = _objectWithoutPropertiesLoose(_useTabs, _excluded2);\n\n var context = React.useMemo(function () {\n return ctx;\n }, [ctx]);\n var rootProps = omit(htmlProps, [\"isFitted\"]);\n return /*#__PURE__*/React.createElement(TabsDescendantsProvider, {\n value: descendants\n }, /*#__PURE__*/React.createElement(TabsProvider, {\n value: context\n }, /*#__PURE__*/React.createElement(StylesProvider, {\n value: styles\n }, /*#__PURE__*/React.createElement(chakra.div, _extends({\n className: cx(\"chakra-tabs\", className),\n ref: ref\n }, rootProps, {\n __css: styles.root\n }), children))));\n});\n\nif (__DEV__) {\n Tabs.displayName = \"Tabs\";\n}\n\n/**\n * Tab button used to activate a specific tab panel. It renders a `button`,\n * and is responsible for automatic and manual selection modes.\n */\nvar Tab = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n var tabProps = useTab(_extends({}, props, {\n ref: ref\n }));\n\n var tabStyles = _extends({\n outline: \"0\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n }, styles.tab);\n\n return /*#__PURE__*/React.createElement(chakra.button, _extends({}, tabProps, {\n className: cx(\"chakra-tabs__tab\", props.className),\n __css: tabStyles\n }));\n});\n\nif (__DEV__) {\n Tab.displayName = \"Tab\";\n}\n\n/**\n * TabList is used to manage a list of tab buttons. It renders a `div` by default,\n * and is responsible the keyboard interaction between tabs.\n */\nvar TabList = /*#__PURE__*/forwardRef(function (props, ref) {\n var tablistProps = useTabList(_extends({}, props, {\n ref: ref\n }));\n var styles = useStyles();\n\n var tablistStyles = _extends({\n display: \"flex\"\n }, styles.tablist);\n\n return /*#__PURE__*/React.createElement(chakra.div, _extends({}, tablistProps, {\n className: cx(\"chakra-tabs__tablist\", props.className),\n __css: tablistStyles\n }));\n});\n\nif (__DEV__) {\n TabList.displayName = \"TabList\";\n}\n\n/**\n * TabPanel\n * Used to render the content for a specific tab.\n */\nvar TabPanel = /*#__PURE__*/forwardRef(function (props, ref) {\n var panelProps = useTabPanel(_extends({}, props, {\n ref: ref\n }));\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n outline: \"0\"\n }, panelProps, {\n className: cx(\"chakra-tabs__tab-panel\", props.className),\n __css: styles.tabpanel\n }));\n});\n\nif (__DEV__) {\n TabPanel.displayName = \"TabPanel\";\n}\n\n/**\n * TabPanel\n *\n * Used to manage the rendering of multiple tab panels. It uses\n * `cloneElement` to hide/show tab panels.\n *\n * It renders a `div` by default.\n */\nvar TabPanels = /*#__PURE__*/forwardRef(function (props, ref) {\n var panelsProps = useTabPanels(props);\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({}, panelsProps, {\n width: \"100%\",\n ref: ref,\n className: cx(\"chakra-tabs__tab-panels\", props.className),\n __css: styles.tabpanels\n }));\n});\n\nif (__DEV__) {\n TabPanels.displayName = \"TabPanels\";\n}\n\n/**\n * TabIndicator\n *\n * Used to render an active tab indicator that animates between\n * selected tabs.\n */\nvar TabIndicator = /*#__PURE__*/forwardRef(function (props, ref) {\n var indicatorStyle = useTabIndicator();\n\n var style = _extends({}, props.style, indicatorStyle);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n ref: ref\n }, props, {\n className: cx(\"chakra-tabs__tab-indicator\", props.className),\n style: style,\n __css: styles.indicator\n }));\n});\n\nif (__DEV__) {\n TabIndicator.displayName = \"TabIndicator\";\n}\n\nexport { Tab, TabIndicator, TabList, TabPanel, TabPanels, Tabs, TabsDescendantsProvider, TabsProvider, useTab, useTabIndicator, useTabList, useTabPanel, useTabPanels, useTabs, useTabsContext, useTabsDescendant, useTabsDescendants, useTabsDescendantsContext };\n","'use strict'\n\nmodule.exports = bail\n\nfunction bail(err) {\n if (err) {\n throw err\n }\n}\n","'use strict'\n\nmodule.exports = ccount\n\nfunction ccount(source, character) {\n var value = String(source)\n var count = 0\n var index\n\n if (typeof character !== 'string') {\n throw new Error('Expected character')\n }\n\n index = value.indexOf(character)\n\n while (index !== -1) {\n count++\n index = value.indexOf(character, index + character.length)\n }\n\n return count\n}\n","'use strict'\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar comma = ','\nvar space = ' '\nvar empty = ''\n\n// Parse comma-separated tokens to an array.\nfunction parse(value) {\n var values = []\n var input = String(value || empty)\n var index = input.indexOf(comma)\n var lastIndex = 0\n var end = false\n var val\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n val = input.slice(lastIndex, index).trim()\n\n if (val || !end) {\n values.push(val)\n }\n\n lastIndex = index + 1\n index = input.indexOf(comma, lastIndex)\n }\n\n return values\n}\n\n// Compile an array to comma-separated tokens.\n// `options.padLeft` (default: `true`) pads a space left of each token, and\n// `options.padRight` (default: `false`) pads a space to the right of each token.\nfunction stringify(values, options) {\n var settings = options || {}\n var left = settings.padLeft === false ? empty : space\n var right = settings.padRight ? space : empty\n\n // Ensure the last empty entry is seen.\n if (values[values.length - 1] === empty) {\n values = values.concat(empty)\n }\n\n return values.join(right + comma + left).trim()\n}\n","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict'\n\nvar html = require('property-information/html')\nvar svg = require('property-information/svg')\nvar find = require('property-information/find')\nvar hastToReact = require('property-information/hast-to-react.json')\nvar spaces = require('space-separated-tokens')\nvar commas = require('comma-separated-tokens')\nvar style = require('style-to-object')\nvar ns = require('web-namespaces')\nvar convert = require('unist-util-is/convert')\n\nvar root = convert('root')\nvar element = convert('element')\nvar text = convert('text')\n\nmodule.exports = wrapper\n\nfunction wrapper(h, node, options) {\n var settings = options || {}\n var r = react(h)\n var v = vue(h)\n var vd = vdom(h)\n var prefix\n\n if (typeof h !== 'function') {\n throw new Error('h is not a function')\n }\n\n if (typeof settings === 'string' || typeof settings === 'boolean') {\n prefix = settings\n settings = {}\n } else {\n prefix = settings.prefix\n }\n\n if (root(node)) {\n node =\n node.children.length === 1 && element(node.children[0])\n ? node.children[0]\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: node.children\n }\n } else if (!element(node)) {\n throw new Error(\n 'Expected root or element, not `' + ((node && node.type) || node) + '`'\n )\n }\n\n return toH(h, node, {\n schema: settings.space === 'svg' ? svg : html,\n prefix: prefix == null ? (r || v || vd ? 'h-' : null) : prefix,\n key: 0,\n react: r,\n vue: v,\n vdom: vd,\n hyperscript: hyperscript(h)\n })\n}\n\n// Transform a hast node through a hyperscript interface to *anything*!\nfunction toH(h, node, ctx) {\n var parentSchema = ctx.schema\n var schema = parentSchema\n var name = node.tagName\n var attributes = {}\n var nodes = []\n var index = -1\n var key\n var value\n\n if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {\n schema = svg\n ctx.schema = schema\n }\n\n for (key in node.properties) {\n addAttribute(attributes, key, node.properties[key], ctx, name)\n }\n\n if (ctx.vdom) {\n if (schema.space === 'html') {\n name = name.toUpperCase()\n } else {\n attributes.namespace = ns[schema.space]\n }\n }\n\n if (ctx.prefix) {\n ctx.key++\n attributes.key = ctx.prefix + ctx.key\n }\n\n if (node.children) {\n while (++index < node.children.length) {\n value = node.children[index]\n\n if (element(value)) {\n nodes.push(toH(h, value, ctx))\n } else if (text(value)) {\n nodes.push(value.value)\n }\n }\n }\n\n // Restore parent schema.\n ctx.schema = parentSchema\n\n // Ensure no React warnings are triggered for void elements having children\n // passed in.\n return nodes.length\n ? h.call(node, name, attributes, nodes)\n : h.call(node, name, attributes)\n}\n\nfunction addAttribute(props, prop, value, ctx, name) {\n var info = find(ctx.schema, prop)\n var subprop\n\n // Ignore nullish and `NaN` values.\n // Ignore `false` and falsey known booleans for hyperlike DSLs.\n if (\n value == null ||\n value !== value ||\n (value === false && (ctx.vue || ctx.vdom || ctx.hyperscript)) ||\n (!value && info.boolean && (ctx.vue || ctx.vdom || ctx.hyperscript))\n ) {\n return\n }\n\n if (value && typeof value === 'object' && 'length' in value) {\n // Accept `array`.\n // Most props are space-separated.\n value = (info.commaSeparated ? commas : spaces).stringify(value)\n }\n\n // Treat `true` and truthy known booleans.\n if (info.boolean && ctx.hyperscript) {\n value = ''\n }\n\n // VDOM, Vue, and React accept `style` as object.\n if (\n info.property === 'style' &&\n typeof value === 'string' &&\n (ctx.react || ctx.vue || ctx.vdom)\n ) {\n value = parseStyle(value, name)\n }\n\n if (ctx.vue) {\n if (info.property !== 'style') subprop = 'attrs'\n } else if (!info.mustUseProperty) {\n if (ctx.vdom) {\n if (info.property !== 'style') subprop = 'attributes'\n } else if (ctx.hyperscript) {\n subprop = 'attrs'\n }\n }\n\n if (subprop) {\n if (!props[subprop]) props[subprop] = {}\n props[subprop][info.attribute] = value\n } else if (info.space && ctx.react) {\n props[hastToReact[info.property] || info.property] = value\n } else {\n props[info.attribute] = value\n }\n}\n\n// Check if `h` is `react.createElement`.\nfunction react(h) {\n var node = h && h('div')\n return Boolean(\n node && ('_owner' in node || '_store' in node) && node.key == null\n )\n}\n\n// Check if `h` is `hyperscript`.\nfunction hyperscript(h) {\n return Boolean(h && h.context && h.cleanup)\n}\n\n// Check if `h` is `virtual-dom/h`.\nfunction vdom(h) {\n return h && h('div').type === 'VirtualNode'\n}\n\nfunction vue(h) {\n var node = h && h('div')\n return Boolean(node && node.context && node.context._isVue)\n}\n\nfunction parseStyle(value, tagName) {\n var result = {}\n\n try {\n style(value, iterator)\n } catch (error) {\n error.message =\n tagName + '[style]' + error.message.slice('undefined'.length)\n throw error\n }\n\n return result\n\n function iterator(name, value) {\n if (name.slice(0, 4) === '-ms-') name = 'ms-' + name.slice(4)\n result[name.replace(/-([a-z])/g, styleReplacer)] = value\n }\n}\n\nfunction styleReplacer($0, $1) {\n return $1.toUpperCase()\n}\n","'use strict'\n\nvar s = require('hastscript/svg')\nvar h = require('hastscript')\nvar find = require('property-information/find')\nvar html = require('property-information/html')\nvar svg = require('property-information/svg')\nvar vfileLocation = require('vfile-location')\nvar ns = require('web-namespaces')\n\nmodule.exports = wrapper\n\nvar own = {}.hasOwnProperty\n\n// Handlers.\nvar map = {\n '#document': root,\n '#document-fragment': root,\n '#text': text,\n '#comment': comment,\n '#documentType': doctype\n}\n\n// Wrapper to normalise options.\nfunction wrapper(ast, options) {\n var settings = options || {}\n var file\n\n if (settings.messages) {\n file = settings\n settings = {}\n } else {\n file = settings.file\n }\n\n return transform(ast, {\n schema: settings.space === 'svg' ? svg : html,\n file: file,\n verbose: settings.verbose\n })\n}\n\n// Transform a node.\nfunction transform(ast, config) {\n var schema = config.schema\n var fn = own.call(map, ast.nodeName) ? map[ast.nodeName] : element\n var children\n var result\n var position\n\n if (fn === element) {\n config.schema = ast.namespaceURI === ns.svg ? svg : html\n }\n\n if (ast.childNodes) {\n children = nodes(ast.childNodes, config)\n }\n\n result = fn(ast, children, config)\n\n if (ast.sourceCodeLocation && config.file) {\n position = location(result, ast.sourceCodeLocation, config)\n\n if (position) {\n config.location = true\n result.position = position\n }\n }\n\n config.schema = schema\n\n return result\n}\n\n// Transform children.\nfunction nodes(children, config) {\n var index = -1\n var result = []\n\n while (++index < children.length) {\n result[index] = transform(children[index], config)\n }\n\n return result\n}\n\n// Transform a document.\n// Stores `ast.quirksMode` in `node.data.quirksMode`.\nfunction root(ast, children, config) {\n var result = {\n type: 'root',\n children: children,\n data: {quirksMode: ast.mode === 'quirks' || ast.mode === 'limited-quirks'}\n }\n var doc\n var location\n\n if (config.file && config.location) {\n doc = String(config.file)\n location = vfileLocation(doc)\n result.position = {\n start: location.toPoint(0),\n end: location.toPoint(doc.length)\n }\n }\n\n return result\n}\n\n// Transform a doctype.\nfunction doctype(ast) {\n return {\n type: 'doctype',\n name: ast.name || '',\n public: ast.publicId || null,\n system: ast.systemId || null\n }\n}\n\n// Transform a text.\nfunction text(ast) {\n return {type: 'text', value: ast.value}\n}\n\n// Transform a comment.\nfunction comment(ast) {\n return {type: 'comment', value: ast.data}\n}\n\n// Transform an element.\nfunction element(ast, children, config) {\n var fn = config.schema.space === 'svg' ? s : h\n var props = {}\n var index = -1\n var result\n var attribute\n var pos\n var start\n var end\n\n while (++index < ast.attrs.length) {\n attribute = ast.attrs[index]\n props[(attribute.prefix ? attribute.prefix + ':' : '') + attribute.name] =\n attribute.value\n }\n\n result = fn(ast.tagName, props, children)\n\n if (result.tagName === 'template' && 'content' in ast) {\n pos = ast.sourceCodeLocation\n start = pos && pos.startTag && position(pos.startTag).end\n end = pos && pos.endTag && position(pos.endTag).start\n\n result.content = transform(ast.content, config)\n\n if ((start || end) && config.file) {\n result.content.position = {start: start, end: end}\n }\n }\n\n return result\n}\n\n// Create clean positional information.\nfunction location(node, location, config) {\n var result = position(location)\n var tail\n var key\n var props\n\n if (node.type === 'element') {\n tail = node.children[node.children.length - 1]\n\n // Bug for unclosed with children.\n // See: <https://github.com/inikulin/parse5/issues/109>.\n if (!location.endTag && tail && tail.position && tail.position.end) {\n result.end = Object.assign({}, tail.position.end)\n }\n\n if (config.verbose) {\n props = {}\n\n for (key in location.attrs) {\n props[find(config.schema, key).property] = position(location.attrs[key])\n }\n\n node.data = {\n position: {\n opening: position(location.startTag),\n closing: location.endTag ? position(location.endTag) : null,\n properties: props\n }\n }\n }\n }\n\n return result\n}\n\nfunction position(loc) {\n var start = point({\n line: loc.startLine,\n column: loc.startCol,\n offset: loc.startOffset\n })\n var end = point({\n line: loc.endLine,\n column: loc.endCol,\n offset: loc.endOffset\n })\n return start || end ? {start: start, end: end} : null\n}\n\nfunction point(point) {\n return point.line && point.column ? point : null\n}\n","'use strict'\n\nmodule.exports = parse\n\nvar search = /[#.]/g\n\n// Create a hast element from a simple CSS selector.\nfunction parse(selector, defaultTagName) {\n var value = selector || ''\n var name = defaultTagName || 'div'\n var props = {}\n var start = 0\n var subvalue\n var previous\n var match\n\n while (start < value.length) {\n search.lastIndex = start\n match = search.exec(value)\n subvalue = value.slice(start, match ? match.index : value.length)\n\n if (subvalue) {\n if (!previous) {\n name = subvalue\n } else if (previous === '#') {\n props.id = subvalue\n } else if (props.className) {\n props.className.push(subvalue)\n } else {\n props.className = [subvalue]\n }\n\n start += subvalue.length\n }\n\n if (match) {\n previous = match[0]\n start++\n }\n }\n\n return {type: 'element', tagName: name, properties: props, children: []}\n}\n","'use strict'\n\nvar Parser = require('parse5/lib/parser')\nvar pos = require('unist-util-position')\nvar visit = require('unist-util-visit')\nvar fromParse5 = require('hast-util-from-parse5')\nvar toParse5 = require('hast-util-to-parse5')\nvar voids = require('html-void-elements')\nvar ns = require('web-namespaces')\nvar zwitch = require('zwitch')\nvar xtend = require('xtend')\n\nmodule.exports = wrap\n\nvar inTemplateMode = 'IN_TEMPLATE_MODE'\nvar dataState = 'DATA_STATE'\nvar characterToken = 'CHARACTER_TOKEN'\nvar startTagToken = 'START_TAG_TOKEN'\nvar endTagToken = 'END_TAG_TOKEN'\nvar commentToken = 'COMMENT_TOKEN'\nvar doctypeToken = 'DOCTYPE_TOKEN'\n\nvar parseOptions = {sourceCodeLocationInfo: true, scriptingEnabled: false}\n\nfunction wrap(tree, file, options) {\n var parser = new Parser(parseOptions)\n var one = zwitch('type', {\n handlers: {\n root: root,\n element: element,\n text: text,\n comment: comment,\n doctype: doctype,\n raw: raw\n },\n unknown: unknown\n })\n var stitches\n var tokenizer\n var preprocessor\n var posTracker\n var locationTracker\n var result\n var index\n\n if (file && !('contents' in file)) {\n options = file\n file = undefined\n }\n\n if (options && options.passThrough) {\n index = -1\n\n while (++index < options.passThrough.length) {\n one.handlers[options.passThrough[index]] = stitch\n }\n }\n\n result = fromParse5(documentMode(tree) ? document() : fragment(), file)\n\n if (stitches) {\n visit(result, 'comment', mend)\n }\n\n // Unpack if possible and when not given a `root`.\n if (tree.type !== 'root' && result.children.length === 1) {\n return result.children[0]\n }\n\n return result\n\n function mend(node, index, parent) {\n if (node.value.stitch) {\n parent.children[index] = node.value.stitch\n return index\n }\n }\n\n function fragment() {\n var context = {\n nodeName: 'template',\n tagName: 'template',\n attrs: [],\n namespaceURI: ns.html,\n childNodes: []\n }\n var mock = {\n nodeName: 'documentmock',\n tagName: 'documentmock',\n attrs: [],\n namespaceURI: ns.html,\n childNodes: []\n }\n var doc = {nodeName: '#document-fragment', childNodes: []}\n\n parser._bootstrap(mock, context)\n parser._pushTmplInsertionMode(inTemplateMode)\n parser._initTokenizerForFragmentParsing()\n parser._insertFakeRootElement()\n parser._resetInsertionMode()\n parser._findFormInFragmentContext()\n\n tokenizer = parser.tokenizer\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n parser._adoptNodes(mock.childNodes[0], doc)\n\n return doc\n }\n\n function document() {\n var doc = parser.treeAdapter.createDocument()\n\n parser._bootstrap(doc, null)\n tokenizer = parser.tokenizer\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n return doc\n }\n\n function all(nodes) {\n var index = -1\n\n /* istanbul ignore else - invalid nodes, see rehypejs/rehype-raw#7. */\n if (nodes) {\n while (++index < nodes.length) {\n one(nodes[index])\n }\n }\n }\n\n function root(node) {\n all(node.children)\n }\n\n function element(node) {\n resetTokenizer()\n parser._processToken(startTag(node), ns.html)\n\n all(node.children)\n\n if (voids.indexOf(node.tagName) < 0) {\n resetTokenizer()\n parser._processToken(endTag(node))\n }\n }\n\n function text(node) {\n resetTokenizer()\n parser._processToken({\n type: characterToken,\n chars: node.value,\n location: createParse5Location(node)\n })\n }\n\n function doctype(node) {\n var p5 = toParse5(node)\n resetTokenizer()\n parser._processToken({\n type: doctypeToken,\n name: p5.name,\n forceQuirks: false,\n publicId: p5.publicId,\n systemId: p5.systemId,\n location: createParse5Location(node)\n })\n }\n\n function comment(node) {\n resetTokenizer()\n parser._processToken({\n type: commentToken,\n data: node.value,\n location: createParse5Location(node)\n })\n }\n\n function raw(node) {\n var start = pos.start(node)\n var line = start.line || 1\n var column = start.column || 1\n var offset = start.offset || 0\n var token\n\n // Reset preprocessor:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/preprocessor.js>.\n preprocessor.html = null\n preprocessor.pos = -1\n preprocessor.lastGapPos = -1\n preprocessor.lastCharPos = -1\n preprocessor.gapStack = []\n preprocessor.skipNextNewLine = false\n preprocessor.lastChunkWritten = false\n preprocessor.endOfChunkHit = false\n\n // Reset preprocessor mixin:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/position-tracking/preprocessor-mixin.js>.\n posTracker.isEol = false\n posTracker.lineStartPos = -column + 1 // Looks weird, but ensures we get correct positional info.\n posTracker.droppedBufferSize = offset\n posTracker.offset = 0\n posTracker.col = 1\n posTracker.line = line\n\n // Reset location tracker:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js>.\n locationTracker.currentAttrLocation = null\n locationTracker.ctLoc = createParse5Location(node)\n\n // See the code for `parse` and `parseFragment`:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/parser/index.js#L371>.\n tokenizer.write(node.value)\n parser._runParsingLoop(null)\n\n // Process final characters if they’re still there after hibernating.\n // Similar to:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js#L95>.\n token = tokenizer.currentCharacterToken\n\n if (token) {\n token.location.endLine = posTracker.line\n token.location.endCol = posTracker.col + 1\n token.location.endOffset = posTracker.offset + 1\n parser._processToken(token)\n }\n }\n\n function stitch(node) {\n var clone = Object.assign({}, node)\n\n stitches = true\n\n // Recurse, because to somewhat handle `[<x>]</x>` (where `[]` denotes the\n // passed through node).\n if (node.children) {\n clone.children = wrap(\n {type: 'root', children: node.children},\n file,\n options\n ).children\n }\n\n // Hack: `value` is supposed to be a string, but as none of the tools\n // (`parse5` or `hast-util-from-parse5`) looks at it, we can pass nodes\n // through.\n comment({value: {stitch: clone}})\n }\n\n function resetTokenizer() {\n // Reset tokenizer:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/index.js#L218-L234>.\n // Especially putting it back in the `data` state is useful: some elements,\n // like textareas and iframes, change the state.\n // See GH-7.\n // But also if broken HTML is in `raw`, and then a correct element is given.\n // See GH-11.\n tokenizer.tokenQueue = []\n tokenizer.state = dataState\n tokenizer.returnState = ''\n tokenizer.charRefCode = -1\n tokenizer.tempBuff = []\n tokenizer.lastStartTagName = ''\n tokenizer.consumedAfterSnapshot = -1\n tokenizer.active = false\n tokenizer.currentCharacterToken = null\n tokenizer.currentToken = null\n tokenizer.currentAttr = null\n }\n}\n\nfunction startTag(node) {\n var location = createParse5Location(node)\n\n location.startTag = xtend(location)\n\n return {\n type: startTagToken,\n tagName: node.tagName,\n selfClosing: false,\n attrs: attributes(node),\n location: location\n }\n}\n\nfunction attributes(node) {\n return toParse5({\n tagName: node.tagName,\n type: 'element',\n properties: node.properties\n }).attrs\n}\n\nfunction endTag(node) {\n var location = createParse5Location(node)\n\n location.endTag = xtend(location)\n\n return {\n type: endTagToken,\n tagName: node.tagName,\n attrs: [],\n location: location\n }\n}\n\nfunction unknown(node) {\n throw new Error('Cannot compile `' + node.type + '` node')\n}\n\nfunction documentMode(node) {\n var head = node.type === 'root' ? node.children[0] : node\n\n return head && (head.type === 'doctype' || head.tagName === 'html')\n}\n\nfunction createParse5Location(node) {\n var start = pos.start(node)\n var end = pos.end(node)\n\n return {\n startLine: start.line,\n startCol: start.column,\n startOffset: start.offset,\n endLine: end.line,\n endCol: end.column,\n endOffset: end.offset\n }\n}\n","'use strict'\nmodule.exports = require('./lib')\n","'use strict'\n\nvar xtend = require('xtend')\nvar defaults = require('./github.json')\n\nmodule.exports = wrapper\n\nvar own = {}.hasOwnProperty\nvar push = [].push\n\nvar nodeSchema = {\n root: {children: all},\n doctype: handleDoctype,\n comment: handleComment,\n element: {\n tagName: handleTagName,\n properties: handleProperties,\n children: all\n },\n text: {value: handleValue},\n '*': {data: allow, position: allow}\n}\n\n// Sanitize `node`, according to `schema`.\nfunction wrapper(node, schema) {\n var ctx = {type: 'root', children: []}\n var replace\n\n if (node && typeof node === 'object' && node.type) {\n replace = one(xtend(defaults, schema || {}), node, [])\n\n if (replace) {\n if ('length' in replace) {\n if (replace.length === 1) {\n ctx = replace[0]\n } else {\n ctx.children = replace\n }\n } else {\n ctx = replace\n }\n }\n }\n\n return ctx\n}\n\n// Sanitize `node`.\nfunction one(schema, node, stack) {\n var type = node && node.type\n var replacement = {type: node.type}\n var replace\n var definition\n var allowed\n var result\n var key\n\n if (own.call(nodeSchema, type)) {\n definition = nodeSchema[type]\n\n if (typeof definition === 'function') {\n definition = definition(schema, node)\n }\n\n if (definition) {\n replace = true\n allowed = xtend(definition, nodeSchema['*'])\n\n for (key in allowed) {\n result = allowed[key](schema, node[key], node, stack)\n\n if (result === false) {\n replace = null\n // Set the non-safe value.\n replacement[key] = node[key]\n } else if (result != null) {\n replacement[key] = result\n }\n }\n }\n }\n\n if (replace) {\n return replacement\n }\n\n return replacement.children &&\n replacement.children.length &&\n schema.strip.indexOf(replacement.tagName) < 0\n ? replacement.children\n : null\n}\n\n// Sanitize `children`.\nfunction all(schema, children, node, stack) {\n var results = []\n var index = -1\n var value\n\n if (children) {\n stack.push(node.tagName)\n\n while (++index < children.length) {\n value = one(schema, children[index], stack)\n\n if (value) {\n if ('length' in value) {\n push.apply(results, value)\n } else {\n results.push(value)\n }\n }\n }\n\n stack.pop()\n }\n\n return results\n}\n\n// Sanitize `properties`.\nfunction handleProperties(schema, properties, node, stack) {\n var name = handleTagName(schema, node.tagName, node, stack)\n var reqs = schema.required || /* istanbul ignore next */ {}\n var props = properties || {}\n var allowed = xtend(\n toPropertyValueMap(schema.attributes['*']),\n toPropertyValueMap(\n own.call(schema.attributes, name) ? schema.attributes[name] : []\n )\n )\n var result = {}\n var definition\n var key\n var value\n\n for (key in props) {\n if (own.call(allowed, key)) {\n definition = allowed[key]\n } else if (data(key) && own.call(allowed, 'data*')) {\n definition = allowed['data*']\n } else {\n continue\n }\n\n value = props[key]\n value =\n value && typeof value === 'object' && 'length' in value\n ? handlePropertyValues(schema, value, key, definition)\n : handlePropertyValue(schema, value, key, definition)\n\n if (value != null) {\n result[key] = value\n }\n }\n\n if (own.call(reqs, name)) {\n for (key in reqs[name]) {\n if (!own.call(result, key)) {\n result[key] = reqs[name][key]\n }\n }\n }\n\n return result\n}\n\n// Sanitize a property value which is a list.\nfunction handlePropertyValues(schema, values, prop, definition) {\n var result = []\n var index = -1\n var value\n\n while (++index < values.length) {\n value = handlePropertyValue(schema, values[index], prop, definition)\n\n if (value != null) {\n result.push(value)\n }\n }\n\n return result\n}\n\n// Sanitize a property value.\nfunction handlePropertyValue(schema, value, prop, definition) {\n if (\n (typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string') &&\n handleProtocol(schema, value, prop) &&\n (!definition.length || definition.indexOf(value) > -1)\n ) {\n return schema.clobber.indexOf(prop) < 0\n ? value\n : schema.clobberPrefix + value\n }\n}\n\n// Check whether `value` is a safe URL.\nfunction handleProtocol(schema, value, prop) {\n var url = String(value)\n var colon = url.indexOf(':')\n var questionMark = url.indexOf('?')\n var numberSign = url.indexOf('#')\n var slash = url.indexOf('/')\n var protocols = own.call(schema.protocols, prop)\n ? schema.protocols[prop].concat()\n : []\n var index = -1\n\n if (\n !protocols.length ||\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign)\n ) {\n return true\n }\n\n while (++index < protocols.length) {\n if (\n colon === protocols[index].length &&\n url.slice(0, protocols[index].length) === protocols[index]\n ) {\n return true\n }\n }\n\n return false\n}\n\n// Always return a valid HTML5 doctype.\nfunction handleDoctypeName() {\n return 'html'\n}\n\n// Sanitize `tagName`.\nfunction handleTagName(schema, tagName, node, stack) {\n var name = typeof tagName === 'string' && tagName\n var index = -1\n\n if (!name || name === '*' || schema.tagNames.indexOf(name) < 0) {\n return false\n }\n\n // Some nodes can break out of their context if they don’t have a certain\n // ancestor.\n if (own.call(schema.ancestors, name)) {\n while (++index < schema.ancestors[name].length) {\n if (stack.indexOf(schema.ancestors[name][index]) > -1) {\n return name\n }\n }\n\n return false\n }\n\n return name\n}\n\nfunction handleDoctype(schema) {\n return schema.allowDoctypes ? {name: handleDoctypeName} : null\n}\n\nfunction handleComment(schema) {\n return schema.allowComments ? {value: handleCommentValue} : null\n}\n\n// See <https://html.spec.whatwg.org/multipage/parsing.html#serialising-html-fragments>\nfunction handleCommentValue(schema, value) {\n var result = typeof value === 'string' ? value : ''\n var index = result.indexOf('-->')\n\n return index < 0 ? result : result.slice(0, index)\n}\n\n// Sanitize `value`.\nfunction handleValue(schema, value) {\n return typeof value === 'string' ? value : ''\n}\n\n// Create a map from a list of props or a list of properties and values.\nfunction toPropertyValueMap(values) {\n var result = {}\n var index = -1\n var value\n\n while (++index < values.length) {\n value = values[index]\n\n if (value && typeof value === 'object' && 'length' in value) {\n result[value[0]] = value.slice(1)\n } else {\n result[value] = []\n }\n }\n\n return result\n}\n\n// Allow `value`.\nfunction allow(schema, value) {\n return value\n}\n\n// Check if `prop` is a data property.\nfunction data(prop) {\n return prop.length > 4 && prop.slice(0, 4).toLowerCase() === 'data'\n}\n","'use strict'\n\nvar xtend = require('xtend')\nvar html = require('property-information/html')\nvar svg = require('property-information/svg')\nvar find = require('property-information/find')\nvar toH = require('hast-to-hyperscript')\nvar ns = require('web-namespaces')\nvar zwitch = require('zwitch')\n\nmodule.exports = transform\n\nvar ignoredSpaces = ['svg', 'html']\n\nvar one = zwitch('type')\n\none.handlers.root = root\none.handlers.element = element\none.handlers.text = text\none.handlers.comment = comment\none.handlers.doctype = doctype\n\n// Transform a tree from hast to Parse5’s AST.\nfunction transform(tree, space) {\n return one(tree, space === 'svg' ? svg : html)\n}\n\nfunction root(node, schema) {\n var data = node.data || {}\n var mode = data.quirksMode ? 'quirks' : 'no-quirks'\n\n return patch(node, {nodeName: '#document', mode: mode}, schema)\n}\n\nfunction fragment(node, schema) {\n return patch(node, {nodeName: '#document-fragment'}, schema)\n}\n\nfunction doctype(node, schema) {\n return patch(\n node,\n {\n nodeName: '#documentType',\n name: node.name,\n publicId: node.public || '',\n systemId: node.system || ''\n },\n schema\n )\n}\n\nfunction text(node, schema) {\n return patch(node, {nodeName: '#text', value: node.value}, schema)\n}\n\nfunction comment(node, schema) {\n return patch(node, {nodeName: '#comment', data: node.value}, schema)\n}\n\nfunction element(node, schema) {\n var space = schema.space\n var shallow = xtend(node, {children: []})\n\n return toH(h, shallow, {space: space})\n\n function h(name, attrs) {\n var values = []\n var p5\n var attr\n var value\n var key\n var info\n var pos\n\n for (key in attrs) {\n info = find(schema, key)\n attr = attrs[key]\n\n if (attr === false || (info.boolean && !attr)) {\n continue\n }\n\n value = {name: key, value: attr === true ? '' : String(attr)}\n\n if (info.space && ignoredSpaces.indexOf(info.space) === -1) {\n pos = key.indexOf(':')\n\n if (pos === -1) {\n value.prefix = ''\n } else {\n value.name = key.slice(pos + 1)\n value.prefix = key.slice(0, pos)\n }\n\n value.namespace = ns[info.space]\n }\n\n values.push(value)\n }\n\n p5 = patch(node, {nodeName: name, tagName: name, attrs: values}, schema)\n\n if (name === 'template') {\n p5.content = fragment(shallow.content, schema)\n }\n\n return p5\n }\n}\n\n// Patch specific properties.\nfunction patch(node, p5, parentSchema) {\n var schema = parentSchema\n var position = node.position\n var children = node.children\n var childNodes = []\n var length = children ? children.length : 0\n var index = -1\n var child\n\n if (node.type === 'element') {\n if (schema.space === 'html' && node.tagName === 'svg') {\n schema = svg\n }\n\n p5.namespaceURI = ns[schema.space]\n }\n\n while (++index < length) {\n child = one(children[index], schema)\n child.parentNode = p5\n childNodes[index] = child\n }\n\n if (node.type === 'element' || node.type === 'root') {\n p5.childNodes = childNodes\n }\n\n if (position && position.start && position.end) {\n p5.sourceCodeLocation = {\n startLine: position.start.line,\n startCol: position.start.column,\n startOffset: position.start.offset,\n endLine: position.end.line,\n endCol: position.end.column,\n endOffset: position.end.offset\n }\n }\n\n return p5\n}\n","'use strict'\n\nvar find = require('property-information/find')\nvar normalize = require('property-information/normalize')\nvar parseSelector = require('hast-util-parse-selector')\nvar spaces = require('space-separated-tokens').parse\nvar commas = require('comma-separated-tokens').parse\n\nmodule.exports = factory\n\nvar own = {}.hasOwnProperty\n\nfunction factory(schema, defaultTagName, caseSensitive) {\n var adjust = caseSensitive ? createAdjustMap(caseSensitive) : null\n\n return h\n\n // Hyperscript compatible DSL for creating virtual hast trees.\n function h(selector, properties) {\n var node = parseSelector(selector, defaultTagName)\n var children = Array.prototype.slice.call(arguments, 2)\n var name = node.tagName.toLowerCase()\n var property\n\n node.tagName = adjust && own.call(adjust, name) ? adjust[name] : name\n\n if (properties && isChildren(properties, node)) {\n children.unshift(properties)\n properties = null\n }\n\n if (properties) {\n for (property in properties) {\n addProperty(node.properties, property, properties[property])\n }\n }\n\n addChild(node.children, children)\n\n if (node.tagName === 'template') {\n node.content = {type: 'root', children: node.children}\n node.children = []\n }\n\n return node\n }\n\n function addProperty(properties, key, value) {\n var info\n var property\n var result\n\n // Ignore nullish and NaN values.\n if (value === null || value === undefined || value !== value) {\n return\n }\n\n info = find(schema, key)\n property = info.property\n result = value\n\n // Handle list values.\n if (typeof result === 'string') {\n if (info.spaceSeparated) {\n result = spaces(result)\n } else if (info.commaSeparated) {\n result = commas(result)\n } else if (info.commaOrSpaceSeparated) {\n result = spaces(commas(result).join(' '))\n }\n }\n\n // Accept `object` on style.\n if (property === 'style' && typeof value !== 'string') {\n result = style(result)\n }\n\n // Class-names (which can be added both on the `selector` and here).\n if (property === 'className' && properties.className) {\n result = properties.className.concat(result)\n }\n\n properties[property] = parsePrimitives(info, property, result)\n }\n}\n\nfunction isChildren(value, node) {\n return (\n typeof value === 'string' ||\n 'length' in value ||\n isNode(node.tagName, value)\n )\n}\n\nfunction isNode(tagName, value) {\n var type = value.type\n\n if (tagName === 'input' || !type || typeof type !== 'string') {\n return false\n }\n\n if (typeof value.children === 'object' && 'length' in value.children) {\n return true\n }\n\n type = type.toLowerCase()\n\n if (tagName === 'button') {\n return (\n type !== 'menu' &&\n type !== 'submit' &&\n type !== 'reset' &&\n type !== 'button'\n )\n }\n\n return 'value' in value\n}\n\nfunction addChild(nodes, value) {\n var index\n var length\n\n if (typeof value === 'string' || typeof value === 'number') {\n nodes.push({type: 'text', value: String(value)})\n return\n }\n\n if (typeof value === 'object' && 'length' in value) {\n index = -1\n length = value.length\n\n while (++index < length) {\n addChild(nodes, value[index])\n }\n\n return\n }\n\n if (typeof value !== 'object' || !('type' in value)) {\n throw new Error('Expected node, nodes, or string, got `' + value + '`')\n }\n\n nodes.push(value)\n}\n\n// Parse a (list of) primitives.\nfunction parsePrimitives(info, name, value) {\n var index\n var length\n var result\n\n if (typeof value !== 'object' || !('length' in value)) {\n return parsePrimitive(info, name, value)\n }\n\n length = value.length\n index = -1\n result = []\n\n while (++index < length) {\n result[index] = parsePrimitive(info, name, value[index])\n }\n\n return result\n}\n\n// Parse a single primitives.\nfunction parsePrimitive(info, name, value) {\n var result = value\n\n if (info.number || info.positiveNumber) {\n if (!isNaN(result) && result !== '') {\n result = Number(result)\n }\n } else if (info.boolean || info.overloadedBoolean) {\n // Accept `boolean` and `string`.\n if (\n typeof result === 'string' &&\n (result === '' || normalize(value) === normalize(name))\n ) {\n result = true\n }\n }\n\n return result\n}\n\nfunction style(value) {\n var result = []\n var key\n\n for (key in value) {\n result.push([key, value[key]].join(': '))\n }\n\n return result.join('; ')\n}\n\nfunction createAdjustMap(values) {\n var length = values.length\n var index = -1\n var result = {}\n var value\n\n while (++index < length) {\n value = values[index]\n result[value.toLowerCase()] = value\n }\n\n return result\n}\n","'use strict'\n\nvar schema = require('property-information/html')\nvar factory = require('./factory')\n\nvar html = factory(schema, 'div')\nhtml.displayName = 'html'\n\nmodule.exports = html\n","'use strict'\n\nmodule.exports = require('./html')\n","'use strict'\n\nvar schema = require('property-information/svg')\nvar caseSensitive = require('./svg-case-sensitive-tag-names.json')\nvar factory = require('./factory')\n\nvar svg = factory(schema, 'g', caseSensitive)\nsvg.displayName = 'svg'\n\nmodule.exports = svg\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function(node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nmodule.exports = value => {\n\tif (Object.prototype.toString.call(value) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || prototype === Object.prototype;\n};\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var Symbol = require('./_Symbol'),\n copyArray = require('./_copyArray'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n iteratorToArray = require('./_iteratorToArray'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray'),\n stringToArray = require('./_stringToArray'),\n values = require('./values');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\nfunction toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n}\n\nmodule.exports = toArray;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","'use strict'\n\nvar repeat = require('repeat-string')\n\nmodule.exports = markdownTable\n\nvar trailingWhitespace = / +$/\n\n// Characters.\nvar space = ' '\nvar lineFeed = '\\n'\nvar dash = '-'\nvar colon = ':'\nvar verticalBar = '|'\n\nvar x = 0\nvar C = 67\nvar L = 76\nvar R = 82\nvar c = 99\nvar l = 108\nvar r = 114\n\n// Create a table from a matrix of strings.\nfunction markdownTable(table, options) {\n var settings = options || {}\n var padding = settings.padding !== false\n var start = settings.delimiterStart !== false\n var end = settings.delimiterEnd !== false\n var align = (settings.align || []).concat()\n var alignDelimiters = settings.alignDelimiters !== false\n var alignments = []\n var stringLength = settings.stringLength || defaultStringLength\n var rowIndex = -1\n var rowLength = table.length\n var cellMatrix = []\n var sizeMatrix = []\n var row = []\n var sizes = []\n var longestCellByColumn = []\n var mostCellsPerRow = 0\n var cells\n var columnIndex\n var columnLength\n var largest\n var size\n var cell\n var lines\n var line\n var before\n var after\n var code\n\n // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < rowLength) {\n cells = table[rowIndex]\n columnIndex = -1\n columnLength = cells.length\n row = []\n sizes = []\n\n if (columnLength > mostCellsPerRow) {\n mostCellsPerRow = columnLength\n }\n\n while (++columnIndex < columnLength) {\n cell = serialize(cells[columnIndex])\n\n if (alignDelimiters === true) {\n size = stringLength(cell)\n sizes[columnIndex] = size\n\n largest = longestCellByColumn[columnIndex]\n\n if (largest === undefined || size > largest) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n columnIndex = -1\n columnLength = mostCellsPerRow\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < columnLength) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n code = toAlignment(align)\n\n while (++columnIndex < columnLength) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n columnLength = mostCellsPerRow\n row = []\n sizes = []\n\n while (++columnIndex < columnLength) {\n code = alignments[columnIndex]\n before = ''\n after = ''\n\n if (code === l) {\n before = colon\n } else if (code === r) {\n after = colon\n } else if (code === c) {\n before = colon\n after = colon\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n size = alignDelimiters\n ? Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n : 1\n\n cell = before + repeat(dash, size) + after\n\n if (alignDelimiters === true) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n rowLength = cellMatrix.length\n lines = []\n\n while (++rowIndex < rowLength) {\n row = cellMatrix[rowIndex]\n sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n columnLength = mostCellsPerRow\n line = []\n\n while (++columnIndex < columnLength) {\n cell = row[columnIndex] || ''\n before = ''\n after = ''\n\n if (alignDelimiters === true) {\n size = longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n code = alignments[columnIndex]\n\n if (code === r) {\n before = repeat(space, size)\n } else if (code === c) {\n if (size % 2 === 0) {\n before = repeat(space, size / 2)\n after = before\n } else {\n before = repeat(space, size / 2 + 0.5)\n after = repeat(space, size / 2 - 0.5)\n }\n } else {\n after = repeat(space, size)\n }\n }\n\n if (start === true && columnIndex === 0) {\n line.push(verticalBar)\n }\n\n if (\n padding === true &&\n // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(alignDelimiters === false && cell === '') &&\n (start === true || columnIndex !== 0)\n ) {\n line.push(space)\n }\n\n if (alignDelimiters === true) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (alignDelimiters === true) {\n line.push(after)\n }\n\n if (padding === true) {\n line.push(space)\n }\n\n if (end === true || columnIndex !== columnLength - 1) {\n line.push(verticalBar)\n }\n }\n\n line = line.join('')\n\n if (end === false) {\n line = line.replace(trailingWhitespace, '')\n }\n\n lines.push(line)\n }\n\n return lines.join(lineFeed)\n}\n\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\nfunction defaultStringLength(value) {\n return value.length\n}\n\nfunction toAlignment(value) {\n var code = typeof value === 'string' ? value.charCodeAt(0) : x\n\n return code === L || code === l\n ? l\n : code === R || code === r\n ? r\n : code === C || code === c\n ? c\n : x\n}\n","'use strict'\n\nvar visit = require('unist-util-visit')\n\nmodule.exports = getDefinitionFactory\n\nvar own = {}.hasOwnProperty\n\n// Get a definition in `node` by `identifier`.\nfunction getDefinitionFactory(node, options) {\n return getterFactory(gather(node, options))\n}\n\n// Gather all definitions in `node`\nfunction gather(node) {\n var cache = {}\n\n if (!node || !node.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(node, 'definition', ondefinition)\n\n return cache\n\n function ondefinition(definition) {\n var id = normalise(definition.identifier)\n if (!own.call(cache, id)) {\n cache[id] = definition\n }\n }\n}\n\n// Factory to get a node from the given definition-cache.\nfunction getterFactory(cache) {\n return getter\n\n // Get a node from the bound definition-cache.\n function getter(identifier) {\n var id = identifier && normalise(identifier)\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\nfunction normalise(identifier) {\n return identifier.toUpperCase()\n}\n","'use strict'\n\nmodule.exports = fromMarkdown\n\n// These three are compiled away in the `dist/`\n\nvar toString = require('mdast-util-to-string')\nvar assign = require('micromark/dist/constant/assign')\nvar own = require('micromark/dist/constant/has-own-property')\nvar normalizeIdentifier = require('micromark/dist/util/normalize-identifier')\nvar safeFromInt = require('micromark/dist/util/safe-from-int')\nvar parser = require('micromark/dist/parse')\nvar preprocessor = require('micromark/dist/preprocess')\nvar postprocess = require('micromark/dist/postprocess')\nvar decode = require('parse-entities/decode-entity')\nvar stringifyPosition = require('unist-util-stringify-position')\n\nfunction fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n postprocess(\n parser(options).document().write(preprocessor()(value, encoding, true))\n )\n )\n}\n\n// Note this compiler only understand complete buffering, not streaming.\nfunction compiler(options) {\n var settings = options || {}\n var config = configure(\n {\n transforms: [],\n canContainEols: [\n 'emphasis',\n 'fragment',\n 'heading',\n 'paragraph',\n 'strong'\n ],\n\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n },\n\n settings.mdastExtensions || []\n )\n\n var data = {}\n\n return compile\n\n function compile(events) {\n var tree = {type: 'root', children: []}\n var stack = [tree]\n var tokenStack = []\n var listStack = []\n var index = -1\n var handler\n var listStart\n\n var context = {\n stack: stack,\n tokenStack: tokenStack,\n config: config,\n enter: enter,\n exit: exit,\n buffer: buffer,\n resume: resume,\n setData: setData,\n getData: getData\n }\n\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n listStart = listStack.pop(index)\n index = prepareList(events, listStart, index)\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n assign({sliceSerialize: events[index][2].sliceSerialize}, context),\n events[index][1]\n )\n }\n }\n\n if (tokenStack.length) {\n throw new Error(\n 'Cannot close document, a token (`' +\n tokenStack[tokenStack.length - 1].type +\n '`, ' +\n stringifyPosition({\n start: tokenStack[tokenStack.length - 1].start,\n end: tokenStack[tokenStack.length - 1].end\n }) +\n ') is still open'\n )\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length ? events[0][1].start : {line: 1, column: 1, offset: 0}\n ),\n\n end: point(\n events.length\n ? events[events.length - 2][1].end\n : {line: 1, column: 1, offset: 0}\n )\n }\n\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n\n return tree\n }\n\n function prepareList(events, start, length) {\n var index = start - 1\n var containerBalance = -1\n var listSpread = false\n var listItem\n var tailIndex\n var lineIndex\n var tailEvent\n var event\n var firstBlankLineIndex\n var atMarker\n\n while (++index <= length) {\n event = events[index]\n\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n tailEvent = events[tailIndex]\n\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = point(\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: point(event[1].start)\n }\n\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n\n events[start][1]._spread = listSpread\n return length\n }\n\n function setData(key, value) {\n data[key] = value\n }\n\n function getData(key) {\n return data[key]\n }\n\n function point(d) {\n return {line: d.line, column: d.column, offset: d.offset}\n }\n\n function opener(create, and) {\n return open\n\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n function buffer() {\n this.stack.push({type: 'fragment', children: []})\n }\n\n function enter(node, token) {\n this.stack[this.stack.length - 1].children.push(node)\n this.stack.push(node)\n this.tokenStack.push(token)\n node.position = {start: point(token.start)}\n return node\n }\n\n function closer(and) {\n return close\n\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n function exit(token) {\n var node = this.stack.pop()\n var open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): it’s not open'\n )\n } else if (open.type !== token.type) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): a different token (`' +\n open.type +\n '`, ' +\n stringifyPosition({start: open.start, end: open.end}) +\n ') is open'\n )\n }\n\n node.position.end = point(token.end)\n return node\n }\n\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n this.stack[this.stack.length - 2].start = parseInt(\n this.sliceSerialize(token),\n 10\n )\n\n setData('expectingFirstListItemValue')\n }\n }\n\n function onexitcodefencedfenceinfo() {\n var data = this.resume()\n this.stack[this.stack.length - 1].lang = data\n }\n\n function onexitcodefencedfencemeta() {\n var data = this.resume()\n this.stack[this.stack.length - 1].meta = data\n }\n\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n\n function onexitcodefenced() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data.replace(\n /^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g,\n ''\n )\n\n setData('flowCodeInside')\n }\n\n function onexitcodeindented() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitdefinitiontitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitdefinitiondestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitatxheadingsequence(token) {\n if (!this.stack[this.stack.length - 1].depth) {\n this.stack[this.stack.length - 1].depth = this.sliceSerialize(\n token\n ).length\n }\n }\n\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n function onexitsetextheadinglinesequence(token) {\n this.stack[this.stack.length - 1].depth =\n this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n function onenterdata(token) {\n var siblings = this.stack[this.stack.length - 1].children\n var tail = siblings[siblings.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {start: point(token.start)}\n this.stack[this.stack.length - 1].children.push(tail)\n }\n\n this.stack.push(tail)\n }\n\n function onexitdata(token) {\n var tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n function onexitlineending(token) {\n var context = this.stack[this.stack.length - 1]\n\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n context.children[context.children.length - 1].position.end = point(\n token.end\n )\n\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.indexOf(context.type) > -1\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n function onexithtmlflow() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexithtmltext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitcodetext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitlink() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitimage() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitlabeltext(token) {\n this.stack[this.stack.length - 2].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitlabel() {\n var fragment = this.stack[this.stack.length - 1]\n var value = this.resume()\n\n this.stack[this.stack.length - 1].label = value\n\n // Assume a reference.\n setData('inReference', true)\n\n if (this.stack[this.stack.length - 1].type === 'link') {\n this.stack[this.stack.length - 1].children = fragment.children\n } else {\n this.stack[this.stack.length - 1].alt = value\n }\n }\n\n function onexitresourcedestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitresourcetitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitresource() {\n setData('inReference')\n }\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n function onexitreferencestring(token) {\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n function onexitcharacterreferencevalue(token) {\n var data = this.sliceSerialize(token)\n var type = getData('characterReferenceType')\n var value\n var tail\n\n if (type) {\n value = safeFromInt(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n\n setData('characterReferenceType')\n } else {\n value = decode(data)\n }\n\n tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url = this.sliceSerialize(token)\n }\n\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url =\n 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n function blockQuote() {\n return {type: 'blockquote', children: []}\n }\n\n function codeFlow() {\n return {type: 'code', lang: null, meta: null, value: ''}\n }\n\n function codeText() {\n return {type: 'inlineCode', value: ''}\n }\n\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n function emphasis() {\n return {type: 'emphasis', children: []}\n }\n\n function heading() {\n return {type: 'heading', depth: undefined, children: []}\n }\n\n function hardBreak() {\n return {type: 'break'}\n }\n\n function html() {\n return {type: 'html', value: ''}\n }\n\n function image() {\n return {type: 'image', title: null, url: '', alt: null}\n }\n\n function link() {\n return {type: 'link', title: null, url: '', children: []}\n }\n\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n function paragraph() {\n return {type: 'paragraph', children: []}\n }\n\n function strong() {\n return {type: 'strong', children: []}\n }\n\n function text() {\n return {type: 'text', value: ''}\n }\n\n function thematicBreak() {\n return {type: 'thematicBreak'}\n }\n}\n\nfunction configure(config, extensions) {\n var index = -1\n\n while (++index < extensions.length) {\n extension(config, extensions[index])\n }\n\n return config\n}\n\nfunction extension(config, extension) {\n var key\n var left\n\n for (key in extension) {\n left = own.call(config, key) ? config[key] : (config[key] = {})\n\n if (key === 'canContainEols' || key === 'transforms') {\n config[key] = [].concat(left, extension[key])\n } else {\n Object.assign(left, extension[key])\n }\n }\n}\n","'use strict'\n\nmodule.exports = require('./dist')\n","var ccount = require('ccount')\nvar findAndReplace = require('mdast-util-find-and-replace')\nvar unicodePunctuation = require('micromark/dist/character/unicode-punctuation')\nvar unicodeWhitespace = require('micromark/dist/character/unicode-whitespace')\n\nexports.transforms = [transformGfmAutolinkLiterals]\nexports.enter = {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n}\nexports.exit = {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n}\n\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n this.stack[this.stack.length - 1].url = 'http://' + this.sliceSerialize(token)\n}\n\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/i, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\nfunction findUrl($0, protocol, domain, path, match) {\n var prefix = ''\n var parts\n var result\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n result = [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\nfunction findEmail($0, atext, label, match) {\n // Not an expected previous character.\n if (!previous(match, true) || /[_-]$/.test(label)) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\nfunction isCorrectDomain(domain) {\n var parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\nfunction splitUrl(url) {\n var trail = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n var closingParenIndex\n var openingParens\n var closingParens\n\n if (trail) {\n url = url.slice(0, trail.index)\n trail = trail[0]\n closingParenIndex = trail.indexOf(')')\n openingParens = ccount(url, '(')\n closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n }\n\n return [url, trail]\n}\n\nfunction previous(match, email) {\n var code = match.input.charCodeAt(match.index - 1)\n return (\n (code !== code || unicodeWhitespace(code) || unicodePunctuation(code)) &&\n (!email || code !== 47)\n )\n}\n","'use strict'\n\nmodule.exports = findAndReplace\n\nvar visit = require('unist-util-visit-parents')\nvar convert = require('unist-util-is/convert')\nvar escape = require('escape-string-regexp')\n\nvar splice = [].splice\n\nfunction findAndReplace(tree, find, replace, options) {\n var settings\n var schema\n\n if (typeof find === 'string' || (find && typeof find.exec === 'function')) {\n schema = [[find, replace]]\n } else {\n schema = find\n options = replace\n }\n\n settings = options || {}\n\n search(tree, settings, handlerFactory(toPairs(schema)))\n\n return tree\n\n function handlerFactory(pairs) {\n var pair = pairs[0]\n\n return handler\n\n function handler(node, parent) {\n var find = pair[0]\n var replace = pair[1]\n var nodes = []\n var start = 0\n var index = parent.children.indexOf(node)\n var position\n var match\n var subhandler\n var value\n\n find.lastIndex = 0\n\n match = find.exec(node.value)\n\n while (match) {\n position = match.index\n value = replace.apply(\n null,\n [].concat(match, {index: match.index, input: match.input})\n )\n\n if (value !== false) {\n if (start !== position) {\n nodes.push({type: 'text', value: node.value.slice(start, position)})\n }\n\n if (typeof value === 'string' && value.length > 0) {\n value = {type: 'text', value: value}\n }\n\n if (value) {\n nodes = [].concat(nodes, value)\n }\n\n start = position + match[0].length\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (position === undefined) {\n nodes = [node]\n index--\n } else {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n nodes.unshift(index, 1)\n splice.apply(parent.children, nodes)\n }\n\n if (pairs.length > 1) {\n subhandler = handlerFactory(pairs.slice(1))\n position = -1\n\n while (++position < nodes.length) {\n node = nodes[position]\n\n if (node.type === 'text') {\n subhandler(node, parent)\n } else {\n search(node, settings, subhandler)\n }\n }\n }\n\n return index + nodes.length + 1\n }\n }\n}\n\nfunction search(tree, settings, handler) {\n var ignored = convert(settings.ignore || [])\n var result = []\n\n visit(tree, 'text', visitor)\n\n return result\n\n function visitor(node, parents) {\n var index = -1\n var parent\n var grandparent\n\n while (++index < parents.length) {\n parent = parents[index]\n\n if (\n ignored(\n parent,\n grandparent ? grandparent.children.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n return handler(node, grandparent)\n }\n}\n\nfunction toPairs(schema) {\n var result = []\n var key\n var index\n\n if (typeof schema !== 'object') {\n throw new Error('Expected array or object as schema')\n }\n\n if ('length' in schema) {\n index = -1\n\n while (++index < schema.length) {\n result.push([\n toExpression(schema[index][0]),\n toFunction(schema[index][1])\n ])\n }\n } else {\n for (key in schema) {\n result.push([toExpression(key), toFunction(schema[key])])\n }\n }\n\n return result\n}\n\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\nfunction toFunction(replace) {\n return typeof replace === 'function' ? replace : returner\n\n function returner() {\n return replace\n }\n}\n","var inConstruct = 'phrasing'\nvar notInConstruct = ['autolink', 'link', 'image', 'label']\n\nexports.unsafe = [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct: inConstruct,\n notInConstruct: notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct: inConstruct,\n notInConstruct: notInConstruct\n },\n {\n character: ':',\n before: '[ps]',\n after: '\\\\/',\n inConstruct: inConstruct,\n notInConstruct: notInConstruct\n }\n]\n","exports.canContainEols = ['delete']\nexports.enter = {strikethrough: enterStrikethrough}\nexports.exit = {strikethrough: exitStrikethrough}\n\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n","var phrasing = require('mdast-util-to-markdown/lib/util/container-phrasing')\n\nexports.unsafe = [{character: '~', inConstruct: 'phrasing'}]\nexports.handlers = {delete: handleDelete}\n\nhandleDelete.peek = peekDelete\n\nfunction handleDelete(node, _, context) {\n var exit = context.enter('emphasis')\n var value = phrasing(node, context, {before: '~', after: '~'})\n exit()\n return '~~' + value + '~~'\n}\n\nfunction peekDelete() {\n return '~'\n}\n","exports.enter = {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n}\nexports.exit = {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n}\n\nfunction enterTable(token) {\n this.enter({type: 'table', align: token._align, children: []}, token)\n this.setData('inTable', true)\n}\n\nfunction exitTable(token) {\n this.exit(token)\n this.setData('inTable')\n}\n\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\nfunction exit(token) {\n this.exit(token)\n}\n\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\nfunction exitCodeText(token) {\n var value = this.resume()\n\n if (this.getData('inTable')) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n this.stack[this.stack.length - 1].value = value\n this.exit(token)\n}\n\nfunction replace($0, $1) {\n // Pipes work, backslashes don’t (but can’t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n","var phrasing = require('mdast-util-to-markdown/lib/util/container-phrasing')\nvar defaultInlineCode = require('mdast-util-to-markdown/lib/handle/inline-code')\nvar markdownTable = require('markdown-table')\n\nmodule.exports = toMarkdown\n\nfunction toMarkdown(options) {\n var settings = options || {}\n var padding = settings.tableCellPadding\n var alignDelimiters = settings.tablePipeAlign\n var stringLength = settings.stringLength\n var around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n table: handleTable,\n tableRow: handleTableRow,\n tableCell: handleTableCell,\n inlineCode: inlineCodeWithTable\n }\n }\n\n function handleTable(node, _, context) {\n return serializeData(handleTableAsData(node, context), node.align)\n }\n\n // This function isn’t really used normally, because we handle rows at the\n // table level.\n // But, if someone passes in a table row, this ensures we make somewhat sense.\n function handleTableRow(node, _, context) {\n var row = handleTableRowAsData(node, context)\n // `markdown-table` will always add an align row\n var value = serializeData([row])\n return value.slice(0, value.indexOf('\\n'))\n }\n\n function handleTableCell(node, _, context) {\n var exit = context.enter('tableCell')\n var value = phrasing(node, context, {before: around, after: around})\n exit()\n return value\n }\n\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align: align,\n alignDelimiters: alignDelimiters,\n padding: padding,\n stringLength: stringLength\n })\n }\n\n function handleTableAsData(node, context) {\n var children = node.children\n var index = -1\n var length = children.length\n var result = []\n var subexit = context.enter('table')\n\n while (++index < length) {\n result[index] = handleTableRowAsData(children[index], context)\n }\n\n subexit()\n\n return result\n }\n\n function handleTableRowAsData(node, context) {\n var children = node.children\n var index = -1\n var length = children.length\n var result = []\n var subexit = context.enter('tableRow')\n\n while (++index < length) {\n result[index] = handleTableCell(children[index], node, context)\n }\n\n subexit()\n\n return result\n }\n\n function inlineCodeWithTable(node, parent, context) {\n var value = defaultInlineCode(node, parent, context)\n\n if (context.stack.indexOf('tableCell') !== -1) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n","exports.exit = {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n}\n\nfunction exitCheck(token) {\n // We’re always in a paragraph, in a list item.\n this.stack[this.stack.length - 2].checked =\n token.type === 'taskListCheckValueChecked'\n}\n\nfunction exitParagraphWithTaskListItem(token) {\n var parent = this.stack[this.stack.length - 2]\n var node = this.stack[this.stack.length - 1]\n var siblings = parent.children\n var head = node.children[0]\n var index = -1\n var firstParaghraph\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean' &&\n head &&\n head.type === 'text'\n ) {\n while (++index < siblings.length) {\n if (siblings[index].type === 'paragraph') {\n firstParaghraph = siblings[index]\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n\n this.exit(token)\n}\n","var defaultListItem = require('mdast-util-to-markdown/lib/handle/list-item')\n\nexports.unsafe = [{atBreak: true, character: '-', after: '[:|-]'}]\n\nexports.handlers = {\n listItem: listItemWithTaskListItem\n}\n\nfunction listItemWithTaskListItem(node, parent, context) {\n var value = defaultListItem(node, parent, context)\n var head = node.children[0]\n\n if (typeof node.checked === 'boolean' && head && head.type === 'paragraph') {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n function check($0) {\n return $0 + '[' + (node.checked ? 'x' : ' ') + '] '\n }\n}\n","var autolinkLiteral = require('mdast-util-gfm-autolink-literal/from-markdown')\nvar strikethrough = require('mdast-util-gfm-strikethrough/from-markdown')\nvar table = require('mdast-util-gfm-table/from-markdown')\nvar taskListItem = require('mdast-util-gfm-task-list-item/from-markdown')\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = configure([\n autolinkLiteral,\n strikethrough,\n table,\n taskListItem\n])\n\nfunction configure(extensions) {\n var config = {transforms: [], canContainEols: []}\n var length = extensions.length\n var index = -1\n\n while (++index < length) {\n extension(config, extensions[index])\n }\n\n return config\n}\n\nfunction extension(config, extension) {\n var key\n var left\n var right\n\n for (key in extension) {\n left = own.call(config, key) ? config[key] : (config[key] = {})\n right = extension[key]\n\n if (key === 'canContainEols' || key === 'transforms') {\n config[key] = [].concat(left, right)\n } else {\n Object.assign(left, right)\n }\n }\n}\n","var autolinkLiteral = require('mdast-util-gfm-autolink-literal/to-markdown')\nvar strikethrough = require('mdast-util-gfm-strikethrough/to-markdown')\nvar table = require('mdast-util-gfm-table/to-markdown')\nvar taskListItem = require('mdast-util-gfm-task-list-item/to-markdown')\nvar configure = require('mdast-util-to-markdown/lib/configure')\n\nmodule.exports = toMarkdown\n\nfunction toMarkdown(options) {\n var config = configure(\n {handlers: {}, join: [], unsafe: [], options: {}},\n {\n extensions: [autolinkLiteral, strikethrough, table(options), taskListItem]\n }\n )\n\n return Object.assign(config.options, {\n handlers: config.handlers,\n join: config.join,\n unsafe: config.unsafe\n })\n}\n","'use strict'\nmodule.exports = require('./lib')\n","'use strict'\n\nmodule.exports = all\n\nvar one = require('./one')\n\nfunction all(h, parent) {\n var nodes = parent.children || []\n var length = nodes.length\n var values = []\n var index = -1\n var result\n var head\n\n while (++index < length) {\n result = one(h, nodes[index], parent)\n\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (result.value) {\n result.value = result.value.replace(/^\\s+/, '')\n }\n\n head = result.children && result.children[0]\n\n if (head && head.value) {\n head.value = head.value.replace(/^\\s+/, '')\n }\n }\n\n values = values.concat(result)\n }\n }\n\n return values\n}\n","'use strict'\n\nmodule.exports = generateFootnotes\n\nvar thematicBreak = require('./handlers/thematic-break')\nvar list = require('./handlers/list')\nvar wrap = require('./wrap')\n\nfunction generateFootnotes(h) {\n var footnoteById = h.footnoteById\n var footnoteOrder = h.footnoteOrder\n var length = footnoteOrder.length\n var index = -1\n var listItems = []\n var def\n var backReference\n var content\n var tail\n\n while (++index < length) {\n def = footnoteById[footnoteOrder[index].toUpperCase()]\n\n if (!def) {\n continue\n }\n\n content = def.children.concat()\n tail = content[content.length - 1]\n backReference = {\n type: 'link',\n url: '#fnref-' + def.identifier,\n data: {hProperties: {className: ['footnote-backref']}},\n children: [{type: 'text', value: '↩'}]\n }\n\n if (!tail || tail.type !== 'paragraph') {\n tail = {type: 'paragraph', children: []}\n content.push(tail)\n }\n\n tail.children.push(backReference)\n\n listItems.push({\n type: 'listItem',\n data: {hProperties: {id: 'fn-' + def.identifier}},\n children: content,\n position: def.position\n })\n }\n\n if (listItems.length === 0) {\n return null\n }\n\n return h(\n null,\n 'div',\n {className: ['footnotes']},\n wrap(\n [\n thematicBreak(h),\n list(h, {type: 'list', ordered: true, children: listItems})\n ],\n true\n )\n )\n}\n","'use strict'\n\nmodule.exports = blockquote\n\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction blockquote(h, node) {\n return h(node, 'blockquote', wrap(all(h, node), true))\n}\n","'use strict'\n\nmodule.exports = hardBreak\n\nvar u = require('unist-builder')\n\nfunction hardBreak(h, node) {\n return [h(node, 'br'), u('text', '\\n')]\n}\n","'use strict'\n\nmodule.exports = code\n\nvar u = require('unist-builder')\n\nfunction code(h, node) {\n var value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n var lang = node.lang && node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/)\n var props = {}\n var code\n\n if (lang) {\n props.className = ['language-' + lang]\n }\n\n code = h(node, 'code', props, [u('text', value)])\n\n if (node.meta) {\n code.data = {meta: node.meta}\n }\n\n return h(node.position, 'pre', [code])\n}\n","'use strict'\n\nmodule.exports = strikethrough\n\nvar all = require('../all')\n\nfunction strikethrough(h, node) {\n return h(node, 'del', all(h, node))\n}\n","'use strict'\n\nmodule.exports = emphasis\n\nvar all = require('../all')\n\nfunction emphasis(h, node) {\n return h(node, 'em', all(h, node))\n}\n","'use strict'\n\nmodule.exports = footnoteReference\n\nvar u = require('unist-builder')\n\nfunction footnoteReference(h, node) {\n var footnoteOrder = h.footnoteOrder\n var identifier = String(node.identifier)\n\n if (footnoteOrder.indexOf(identifier) === -1) {\n footnoteOrder.push(identifier)\n }\n\n return h(node.position, 'sup', {id: 'fnref-' + identifier}, [\n h(node, 'a', {href: '#fn-' + identifier, className: ['footnote-ref']}, [\n u('text', node.label || identifier)\n ])\n ])\n}\n","'use strict'\n\nmodule.exports = footnote\n\nvar footnoteReference = require('./footnote-reference')\n\nfunction footnote(h, node) {\n var footnoteById = h.footnoteById\n var footnoteOrder = h.footnoteOrder\n var identifier = 1\n\n while (identifier in footnoteById) {\n identifier++\n }\n\n identifier = String(identifier)\n\n // No need to check if `identifier` exists in `footnoteOrder`, it’s guaranteed\n // to not exist because we just generated it.\n footnoteOrder.push(identifier)\n\n footnoteById[identifier] = {\n type: 'footnoteDefinition',\n identifier: identifier,\n children: [{type: 'paragraph', children: node.children}],\n position: node.position\n }\n\n return footnoteReference(h, {\n type: 'footnoteReference',\n identifier: identifier,\n position: node.position\n })\n}\n","'use strict'\n\nmodule.exports = heading\n\nvar all = require('../all')\n\nfunction heading(h, node) {\n return h(node, 'h' + node.depth, all(h, node))\n}\n","'use strict'\n\nmodule.exports = html\n\nvar u = require('unist-builder')\n\n// Return either a `raw` node in dangerous mode, otherwise nothing.\nfunction html(h, node) {\n return h.dangerous ? h.augment(node, u('raw', node.value)) : null\n}\n","'use strict'\n\nmodule.exports = imageReference\n\nvar normalize = require('mdurl/encode')\nvar revert = require('../revert')\n\nfunction imageReference(h, node) {\n var def = h.definition(node.identifier)\n var props\n\n if (!def) {\n return revert(h, node)\n }\n\n props = {src: normalize(def.url || ''), alt: node.alt}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'img', props)\n}\n","'use strict'\n\nvar normalize = require('mdurl/encode')\n\nmodule.exports = image\n\nfunction image(h, node) {\n var props = {src: normalize(node.url), alt: node.alt}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'img', props)\n}\n","'use strict'\n\nmodule.exports = {\n blockquote: require('./blockquote'),\n break: require('./break'),\n code: require('./code'),\n delete: require('./delete'),\n emphasis: require('./emphasis'),\n footnoteReference: require('./footnote-reference'),\n footnote: require('./footnote'),\n heading: require('./heading'),\n html: require('./html'),\n imageReference: require('./image-reference'),\n image: require('./image'),\n inlineCode: require('./inline-code'),\n linkReference: require('./link-reference'),\n link: require('./link'),\n listItem: require('./list-item'),\n list: require('./list'),\n paragraph: require('./paragraph'),\n root: require('./root'),\n strong: require('./strong'),\n table: require('./table'),\n text: require('./text'),\n thematicBreak: require('./thematic-break'),\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return null\n}\n","'use strict'\n\nmodule.exports = inlineCode\n\nvar u = require('unist-builder')\n\nfunction inlineCode(h, node) {\n var value = node.value.replace(/\\r?\\n|\\r/g, ' ')\n return h(node, 'code', [u('text', value)])\n}\n","'use strict'\n\nmodule.exports = linkReference\n\nvar normalize = require('mdurl/encode')\nvar revert = require('../revert')\nvar all = require('../all')\n\nfunction linkReference(h, node) {\n var def = h.definition(node.identifier)\n var props\n\n if (!def) {\n return revert(h, node)\n }\n\n props = {href: normalize(def.url || '')}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","'use strict'\n\nvar normalize = require('mdurl/encode')\nvar all = require('../all')\n\nmodule.exports = link\n\nfunction link(h, node) {\n var props = {href: normalize(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","'use strict'\n\nmodule.exports = listItem\n\nvar u = require('unist-builder')\nvar all = require('../all')\n\nfunction listItem(h, node, parent) {\n var result = all(h, node)\n var head = result[0]\n var loose = parent ? listLoose(parent) : listItemLoose(node)\n var props = {}\n var wrapped = []\n var length\n var index\n var child\n\n if (typeof node.checked === 'boolean') {\n if (!head || head.tagName !== 'p') {\n head = h(null, 'p', [])\n result.unshift(head)\n }\n\n if (head.children.length > 0) {\n head.children.unshift(u('text', ' '))\n }\n\n head.children.unshift(\n h(null, 'input', {\n type: 'checkbox',\n checked: node.checked,\n disabled: true\n })\n )\n\n // According to github-markdown-css, this class hides bullet.\n // See: <https://github.com/sindresorhus/github-markdown-css>.\n props.className = ['task-list-item']\n }\n\n length = result.length\n index = -1\n\n while (++index < length) {\n child = result[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (loose || index !== 0 || child.tagName !== 'p') {\n wrapped.push(u('text', '\\n'))\n }\n\n if (child.tagName === 'p' && !loose) {\n wrapped = wrapped.concat(child.children)\n } else {\n wrapped.push(child)\n }\n }\n\n // Add a final eol.\n if (length && (loose || child.tagName !== 'p')) {\n wrapped.push(u('text', '\\n'))\n }\n\n return h(node, 'li', props, wrapped)\n}\n\nfunction listLoose(node) {\n var loose = node.spread\n var children = node.children\n var length = children.length\n var index = -1\n\n while (!loose && ++index < length) {\n loose = listItemLoose(children[index])\n }\n\n return loose\n}\n\nfunction listItemLoose(node) {\n var spread = node.spread\n\n return spread === undefined || spread === null\n ? node.children.length > 1\n : spread\n}\n","'use strict'\n\nmodule.exports = list\n\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction list(h, node) {\n var props = {}\n var name = node.ordered ? 'ol' : 'ul'\n var items\n var index = -1\n var length\n\n if (typeof node.start === 'number' && node.start !== 1) {\n props.start = node.start\n }\n\n items = all(h, node)\n length = items.length\n\n // Like GitHub, add a class for custom styling.\n while (++index < length) {\n if (\n items[index].properties.className &&\n items[index].properties.className.indexOf('task-list-item') !== -1\n ) {\n props.className = ['contains-task-list']\n break\n }\n }\n\n return h(node, name, props, wrap(items, true))\n}\n","'use strict'\n\nmodule.exports = paragraph\n\nvar all = require('../all')\n\nfunction paragraph(h, node) {\n return h(node, 'p', all(h, node))\n}\n","'use strict'\n\nmodule.exports = root\n\nvar u = require('unist-builder')\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction root(h, node) {\n return h.augment(node, u('root', wrap(all(h, node))))\n}\n","'use strict'\n\nmodule.exports = strong\n\nvar all = require('../all')\n\nfunction strong(h, node) {\n return h(node, 'strong', all(h, node))\n}\n","'use strict'\n\nmodule.exports = table\n\nvar position = require('unist-util-position')\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction table(h, node) {\n var rows = node.children\n var index = rows.length\n var align = node.align || []\n var alignLength = align.length\n var result = []\n var pos\n var row\n var out\n var name\n var cell\n\n while (index--) {\n row = rows[index].children\n name = index === 0 ? 'th' : 'td'\n pos = alignLength || row.length\n out = []\n\n while (pos--) {\n cell = row[pos]\n out[pos] = h(cell, name, {align: align[pos]}, cell ? all(h, cell) : [])\n }\n\n result[index] = h(rows[index], 'tr', wrap(out, true))\n }\n\n return h(\n node,\n 'table',\n wrap(\n [h(result[0].position, 'thead', wrap([result[0]], true))].concat(\n result[1]\n ? h(\n {\n start: position.start(result[1]),\n end: position.end(result[result.length - 1])\n },\n 'tbody',\n wrap(result.slice(1), true)\n )\n : []\n ),\n true\n )\n )\n}\n","'use strict'\n\nmodule.exports = text\n\nvar u = require('unist-builder')\n\nfunction text(h, node) {\n return h.augment(\n node,\n u('text', String(node.value).replace(/[ \\t]*(\\r?\\n|\\r)[ \\t]*/g, '$1'))\n )\n}\n","'use strict'\n\nmodule.exports = thematicBreak\n\nfunction thematicBreak(h, node) {\n return h(node, 'hr')\n}\n","'use strict'\n\nmodule.exports = toHast\n\nvar u = require('unist-builder')\nvar visit = require('unist-util-visit')\nvar position = require('unist-util-position')\nvar generated = require('unist-util-generated')\nvar definitions = require('mdast-util-definitions')\nvar one = require('./one')\nvar footer = require('./footer')\nvar handlers = require('./handlers')\n\nvar own = {}.hasOwnProperty\n\nvar deprecationWarningIssued = false\n\n// Factory to transform.\nfunction factory(tree, options) {\n var settings = options || {}\n\n // Issue a warning if the deprecated tag 'allowDangerousHTML' is used\n if (settings.allowDangerousHTML !== undefined && !deprecationWarningIssued) {\n deprecationWarningIssued = true\n console.warn(\n 'mdast-util-to-hast: deprecation: `allowDangerousHTML` is nonstandard, use `allowDangerousHtml` instead'\n )\n }\n\n var dangerous = settings.allowDangerousHtml || settings.allowDangerousHTML\n var footnoteById = {}\n\n h.dangerous = dangerous\n h.definition = definitions(tree)\n h.footnoteById = footnoteById\n h.footnoteOrder = []\n h.augment = augment\n h.handlers = Object.assign({}, handlers, settings.handlers)\n h.unknownHandler = settings.unknownHandler\n h.passThrough = settings.passThrough\n\n visit(tree, 'footnoteDefinition', onfootnotedefinition)\n\n return h\n\n // Finalise the created `right`, a hast node, from `left`, an mdast node.\n function augment(left, right) {\n var data\n var ctx\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && left.data) {\n data = left.data\n\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n }\n }\n\n right.tagName = data.hName\n }\n\n if (right.type === 'element' && data.hProperties) {\n right.properties = Object.assign({}, right.properties, data.hProperties)\n }\n\n if (right.children && data.hChildren) {\n right.children = data.hChildren\n }\n }\n\n ctx = left && left.position ? left : {position: left}\n\n if (!generated(ctx)) {\n right.position = {\n start: position.start(ctx),\n end: position.end(ctx)\n }\n }\n\n return right\n }\n\n // Create an element for `node`.\n function h(node, tagName, props, children) {\n if (\n (children === undefined || children === null) &&\n typeof props === 'object' &&\n 'length' in props\n ) {\n children = props\n props = {}\n }\n\n return augment(node, {\n type: 'element',\n tagName: tagName,\n properties: props || {},\n children: children || []\n })\n }\n\n function onfootnotedefinition(definition) {\n var id = String(definition.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/8290999/index.js#L26>.\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition\n }\n }\n}\n\n// Transform `tree`, which is an mdast node, to a hast node.\nfunction toHast(tree, options) {\n var h = factory(tree, options)\n var node = one(h, tree)\n var foot = footer(h)\n\n if (foot) {\n node.children = node.children.concat(u('text', '\\n'), foot)\n }\n\n return node\n}\n","'use strict'\n\nmodule.exports = one\n\nvar u = require('unist-builder')\nvar all = require('./all')\n\nvar own = {}.hasOwnProperty\n\n// Transform an unknown node.\nfunction unknown(h, node) {\n if (text(node)) {\n return h.augment(node, u('text', node.value))\n }\n\n return h(node, 'div', all(h, node))\n}\n\n// Visit a node.\nfunction one(h, node, parent) {\n var type = node && node.type\n var fn\n\n // Fail on non-nodes.\n if (!type) {\n throw new Error('Expected node, got `' + node + '`')\n }\n\n if (own.call(h.handlers, type)) {\n fn = h.handlers[type]\n } else if (h.passThrough && h.passThrough.indexOf(type) > -1) {\n fn = returnNode\n } else {\n fn = h.unknownHandler\n }\n\n return (typeof fn === 'function' ? fn : unknown)(h, node, parent)\n}\n\n// Check if the node should be renderered as a text node.\nfunction text(node) {\n var data = node.data || {}\n\n if (\n own.call(data, 'hName') ||\n own.call(data, 'hProperties') ||\n own.call(data, 'hChildren')\n ) {\n return false\n }\n\n return 'value' in node\n}\n\nfunction returnNode(h, node) {\n var clone\n\n if (node.children) {\n clone = Object.assign({}, node)\n clone.children = all(h, node)\n return clone\n }\n\n return node\n}\n","'use strict'\n\nmodule.exports = revert\n\nvar u = require('unist-builder')\nvar all = require('./all')\n\n// Return the content of a reference without definition as Markdown.\nfunction revert(h, node) {\n var subtype = node.referenceType\n var suffix = ']'\n var contents\n var head\n var tail\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return u('text', '![' + node.alt + suffix)\n }\n\n contents = all(h, node)\n head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift(u('text', '['))\n }\n\n tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push(u('text', suffix))\n }\n\n return contents\n}\n","'use strict'\n\nmodule.exports = wrap\n\nvar u = require('unist-builder')\n\n// Wrap `nodes` with line feeds between each entry.\n// Optionally adds line feeds at the start and end.\nfunction wrap(nodes, loose) {\n var result = []\n var index = -1\n var length = nodes.length\n\n if (loose) {\n result.push(u('text', '\\n'))\n }\n\n while (++index < length) {\n if (index) {\n result.push(u('text', '\\n'))\n }\n\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push(u('text', '\\n'))\n }\n\n return result\n}\n","module.exports = configure\n\nfunction configure(base, extension) {\n var index = -1\n var key\n\n // First do subextensions.\n if (extension.extensions) {\n while (++index < extension.extensions.length) {\n configure(base, extension.extensions[index])\n }\n }\n\n for (key in extension) {\n if (key === 'extensions') {\n // Empty.\n } else if (key === 'unsafe' || key === 'join') {\n base[key] = base[key].concat(extension[key] || [])\n } else if (key === 'handlers') {\n base[key] = Object.assign(base[key], extension[key] || {})\n } else {\n base.options[key] = extension[key]\n }\n }\n\n return base\n}\n","module.exports = inlineCode\ninlineCode.peek = inlineCodePeek\n\nvar patternCompile = require('../util/pattern-compile')\n\nfunction inlineCode(node, parent, context) {\n var value = node.value || ''\n var sequence = '`'\n var index = -1\n var pattern\n var expression\n var match\n var position\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don’t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n (/[ \\r\\n`]/.test(value.charAt(0)) ||\n /[ \\r\\n`]/.test(value.charAt(value.length - 1)))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can’t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < context.unsafe.length) {\n pattern = context.unsafe[index]\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n expression = patternCompile(pattern)\n\n while ((match = expression.exec(value))) {\n position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\nfunction inlineCodePeek() {\n return '`'\n}\n","module.exports = listItem\n\nvar repeat = require('repeat-string')\nvar checkBullet = require('../util/check-bullet')\nvar checkListItemIndent = require('../util/check-list-item-indent')\nvar flow = require('../util/container-flow')\nvar indentLines = require('../util/indent-lines')\n\nfunction listItem(node, parent, context) {\n var bullet = checkBullet(context)\n var listItemIndent = checkListItemIndent(context)\n var size\n var value\n var exit\n\n if (parent && parent.ordered) {\n bullet =\n (parent.start > -1 ? parent.start : 1) +\n (context.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n '.'\n }\n\n size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' && ((parent && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n exit = context.enter('listItem')\n value = indentLines(flow(node, context), map)\n exit()\n\n return value\n\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : repeat(' ', size)) + line\n }\n\n return (blank ? bullet : bullet + repeat(' ', size - bullet.length)) + line\n }\n}\n","module.exports = checkBullet\n\nfunction checkBullet(context) {\n var marker = context.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n","module.exports = checkListItemIndent\n\nfunction checkListItemIndent(context) {\n var style = context.options.listItemIndent || 'tab'\n\n if (style === 1 || style === '1') {\n return 'one'\n }\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n","module.exports = flow\n\nvar repeat = require('repeat-string')\n\nfunction flow(parent, context) {\n var children = parent.children || []\n var results = []\n var index = -1\n var child\n\n while (++index < children.length) {\n child = children[index]\n\n results.push(\n context.handle(child, parent, context, {before: '\\n', after: '\\n'})\n )\n\n if (index + 1 < children.length) {\n results.push(between(child, children[index + 1]))\n }\n }\n\n return results.join('')\n\n function between(left, right) {\n var index = -1\n var result\n\n while (++index < context.join.length) {\n result = context.join[index](left, right, parent, context)\n\n if (result === true || result === 1) {\n break\n }\n\n if (typeof result === 'number') {\n return repeat('\\n', 1 + Number(result))\n }\n\n if (result === false) {\n return '\\n\\n<!---->\\n\\n'\n }\n }\n\n return '\\n\\n'\n }\n}\n","module.exports = phrasing\n\nfunction phrasing(parent, context, safeOptions) {\n var children = parent.children || []\n var results = []\n var index = -1\n var before = safeOptions.before\n var after\n var handle\n var child\n\n while (++index < children.length) {\n child = children[index]\n\n if (index + 1 < children.length) {\n handle = context.handle.handlers[children[index + 1].type]\n if (handle && handle.peek) handle = handle.peek\n after = handle\n ? handle(children[index + 1], parent, context, {\n before: '',\n after: ''\n }).charAt(0)\n : ''\n } else {\n after = safeOptions.after\n }\n\n // In some cases, html (text) can be found in phrasing right after an eol.\n // When we’d serialize that, in most cases that would be seen as html\n // (flow).\n // As we can’t escape or so to prevent it from happening, we take a somewhat\n // reasonable approach: replace that eol with a space.\n // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>\n if (\n results.length > 0 &&\n (before === '\\r' || before === '\\n') &&\n child.type === 'html'\n ) {\n results[results.length - 1] = results[results.length - 1].replace(\n /(\\r?\\n|\\r)$/,\n ' '\n )\n before = ' '\n }\n\n results.push(\n context.handle(child, parent, context, {\n before: before,\n after: after\n })\n )\n\n before = results[results.length - 1].slice(-1)\n }\n\n return results.join('')\n}\n","module.exports = indentLines\n\nvar eol = /\\r?\\n|\\r/g\n\nfunction indentLines(value, map) {\n var result = []\n var start = 0\n var line = 0\n var match\n\n while ((match = eol.exec(value))) {\n one(value.slice(start, match.index))\n result.push(match[0])\n start = match.index + match[0].length\n line++\n }\n\n one(value.slice(start))\n\n return result.join('')\n\n function one(value) {\n result.push(map(value, line, !value))\n }\n}\n","module.exports = patternCompile\n\nfunction patternCompile(pattern) {\n var before\n var after\n\n if (!pattern._compiled) {\n before = pattern.before ? '(?:' + pattern.before + ')' : ''\n after = pattern.after ? '(?:' + pattern.after + ')' : ''\n\n if (pattern.atBreak) {\n before = '[\\\\r\\\\n][\\\\t ]*' + before\n }\n\n pattern._compiled = new RegExp(\n (before ? '(' + before + ')' : '') +\n (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n pattern.character +\n (after || ''),\n 'g'\n )\n }\n\n return pattern._compiled\n}\n","'use strict'\n\nmodule.exports = toString\n\n// Get the text content of a node.\n// Prefer the node’s plain-text fields, otherwise serialize its children,\n// and if the given value is an array, serialize the nodes in it.\nfunction toString(node) {\n return (\n (node &&\n (node.value ||\n node.alt ||\n node.title ||\n ('children' in node && all(node.children)) ||\n ('length' in node && all(node)))) ||\n ''\n )\n}\n\nfunction all(values) {\n var result = []\n var index = -1\n\n while (++index < values.length) {\n result[index] = toString(values[index])\n }\n\n return result.join('')\n}\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","module.exports = require('./syntax')\n","var asciiAlpha = require('micromark/dist/character/ascii-alpha')\nvar asciiAlphanumeric = require('micromark/dist/character/ascii-alphanumeric')\nvar asciiControl = require('micromark/dist/character/ascii-control')\nvar markdownLineEnding = require('micromark/dist/character/markdown-line-ending')\nvar unicodePunctuation = require('micromark/dist/character/unicode-punctuation')\nvar unicodeWhitespace = require('micromark/dist/character/unicode-whitespace')\n\nvar www = {tokenize: tokenizeWww, partial: true}\nvar domain = {tokenize: tokenizeDomain, partial: true}\nvar path = {tokenize: tokenizePath, partial: true}\nvar punctuation = {tokenize: tokenizePunctuation, partial: true}\nvar namedCharacterReference = {\n tokenize: tokenizeNamedCharacterReference,\n partial: true\n}\n\nvar wwwAutolink = {tokenize: tokenizeWwwAutolink, previous: previousWww}\nvar httpAutolink = {tokenize: tokenizeHttpAutolink, previous: previousHttp}\nvar emailAutolink = {tokenize: tokenizeEmailAutolink, previous: previousEmail}\n\nvar text = {}\n\n// Export hooked constructs.\nexports.text = text\n\n// `0`\nvar code = 48\n\n// While the code is smaller than `{`.\nwhile (code < 123) {\n text[code] = emailAutolink\n code++\n // Jump from `:` -> `A`\n if (code === 58) code = 65\n // Jump from `[` -> `a`\n else if (code === 91) code = 97\n}\n\n// `+`\ntext[43] = emailAutolink\n// `-`\ntext[45] = emailAutolink\n// `.`\ntext[46] = emailAutolink\n// `_`\ntext[95] = emailAutolink\n// `h`.\ntext[72] = [emailAutolink, httpAutolink]\ntext[104] = [emailAutolink, httpAutolink]\n// `w`.\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n var self = this\n var hasDot\n\n return start\n\n function start(code) {\n /* istanbul ignore next - hooks. */\n if (\n !gfmAtext(code) ||\n !previousEmail(self.previous) ||\n previous(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkEmail')\n return atext(code)\n }\n\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code)\n return atext\n }\n\n // `@`\n if (code === 64) {\n effects.consume(code)\n return label\n }\n\n return nok(code)\n }\n\n function label(code) {\n // `.`\n if (code === 46) {\n return effects.check(punctuation, done, dotContinuation)(code)\n }\n\n if (\n // `-`\n code === 45 ||\n // `_`\n code === 95\n ) {\n return effects.check(punctuation, nok, dashOrUnderscoreContinuation)(code)\n }\n\n if (asciiAlphanumeric(code)) {\n effects.consume(code)\n return label\n }\n\n return done(code)\n }\n\n function dotContinuation(code) {\n effects.consume(code)\n hasDot = true\n return label\n }\n\n function dashOrUnderscoreContinuation(code) {\n effects.consume(code)\n return afterDashOrUnderscore\n }\n\n function afterDashOrUnderscore(code) {\n // `.`\n if (code === 46) {\n return effects.check(punctuation, nok, dotContinuation)(code)\n }\n\n return label(code)\n }\n\n function done(code) {\n if (hasDot) {\n effects.exit('literalAutolinkEmail')\n effects.exit('literalAutolink')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n var self = this\n\n return start\n\n function start(code) {\n /* istanbul ignore next - hooks. */\n if (\n (code !== 87 && code - 32 !== 87) ||\n !previousWww(self.previous) ||\n previous(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkWww')\n // For `www.` we check instead of attempt, because when it matches, GH\n // treats it as part of a domain (yes, it says a valid domain must come\n // after `www.`, but that’s not how it’s implemented by them).\n return effects.check(\n www,\n effects.attempt(domain, effects.attempt(path, done), nok),\n nok\n )(code)\n }\n\n function done(code) {\n effects.exit('literalAutolinkWww')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\nfunction tokenizeHttpAutolink(effects, ok, nok) {\n var self = this\n\n return start\n\n function start(code) {\n /* istanbul ignore next - hooks. */\n if (\n (code !== 72 && code - 32 !== 72) ||\n !previousHttp(self.previous) ||\n previous(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkHttp')\n effects.consume(code)\n return t1\n }\n\n function t1(code) {\n // `t`\n if (code === 84 || code - 32 === 84) {\n effects.consume(code)\n return t2\n }\n\n return nok(code)\n }\n\n function t2(code) {\n // `t`\n if (code === 84 || code - 32 === 84) {\n effects.consume(code)\n return p\n }\n\n return nok(code)\n }\n\n function p(code) {\n // `p`\n if (code === 80 || code - 32 === 80) {\n effects.consume(code)\n return s\n }\n\n return nok(code)\n }\n\n function s(code) {\n // `s`\n if (code === 83 || code - 32 === 83) {\n effects.consume(code)\n return colon\n }\n\n return colon(code)\n }\n\n function colon(code) {\n // `:`\n if (code === 58) {\n effects.consume(code)\n return slash1\n }\n\n return nok(code)\n }\n\n function slash1(code) {\n // `/`\n if (code === 47) {\n effects.consume(code)\n return slash2\n }\n\n return nok(code)\n }\n\n function slash2(code) {\n // `/`\n if (code === 47) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n return asciiControl(code) ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)\n ? nok(code)\n : effects.attempt(domain, effects.attempt(path, done), nok)(code)\n }\n\n function done(code) {\n effects.exit('literalAutolinkHttp')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\nfunction tokenizeWww(effects, ok, nok) {\n return start\n\n function start(code) {\n // Assume a `w`.\n effects.consume(code)\n return w2\n }\n\n function w2(code) {\n // `w`\n if (code === 87 || code - 32 === 87) {\n effects.consume(code)\n return w3\n }\n\n return nok(code)\n }\n\n function w3(code) {\n // `w`\n if (code === 87 || code - 32 === 87) {\n effects.consume(code)\n return dot\n }\n\n return nok(code)\n }\n\n function dot(code) {\n // `.`\n if (code === 46) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? nok(code) : ok(code)\n }\n}\n\nfunction tokenizeDomain(effects, ok, nok) {\n var hasUnderscoreInLastSegment\n var hasUnderscoreInLastLastSegment\n\n return domain\n\n function domain(code) {\n // `&`\n if (code === 38) {\n return effects.check(\n namedCharacterReference,\n done,\n punctuationContinuation\n )(code)\n }\n\n if (code === 46 /* `.` */ || code === 95 /* `_` */) {\n return effects.check(punctuation, done, punctuationContinuation)(code)\n }\n\n // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n // so that’s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n if (\n asciiControl(code) ||\n unicodeWhitespace(code) ||\n (code !== 45 /* `-` */ && unicodePunctuation(code))\n ) {\n return done(code)\n }\n\n effects.consume(code)\n return domain\n }\n\n function punctuationContinuation(code) {\n // `.`\n if (code === 46) {\n hasUnderscoreInLastLastSegment = hasUnderscoreInLastSegment\n hasUnderscoreInLastSegment = undefined\n effects.consume(code)\n return domain\n }\n\n // `_`\n if (code === 95) hasUnderscoreInLastSegment = true\n\n effects.consume(code)\n return domain\n }\n\n function done(code) {\n if (!hasUnderscoreInLastLastSegment && !hasUnderscoreInLastSegment) {\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizePath(effects, ok) {\n var balance = 0\n\n return inPath\n\n function inPath(code) {\n // `&`\n if (code === 38) {\n return effects.check(\n namedCharacterReference,\n ok,\n continuedPunctuation\n )(code)\n }\n\n // `(`\n if (code === 40) {\n balance++\n }\n\n // `)`\n if (code === 41) {\n return effects.check(\n punctuation,\n parenAtPathEnd,\n continuedPunctuation\n )(code)\n }\n\n if (pathEnd(code)) {\n return ok(code)\n }\n\n if (trailingPunctuation(code)) {\n return effects.check(punctuation, ok, continuedPunctuation)(code)\n }\n\n effects.consume(code)\n return inPath\n }\n\n function continuedPunctuation(code) {\n effects.consume(code)\n return inPath\n }\n\n function parenAtPathEnd(code) {\n balance--\n return balance < 0 ? ok(code) : continuedPunctuation(code)\n }\n}\n\nfunction tokenizeNamedCharacterReference(effects, ok, nok) {\n return start\n\n function start(code) {\n // Assume an ampersand.\n effects.consume(code)\n return inside\n }\n\n function inside(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return inside\n }\n\n // `;`\n if (code === 59) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n // If the named character reference is followed by the end of the path, it’s\n // not continued punctuation.\n return pathEnd(code) ? ok(code) : nok(code)\n }\n}\n\nfunction tokenizePunctuation(effects, ok, nok) {\n return start\n\n function start(code) {\n // Always a valid trailing punctuation marker.\n effects.consume(code)\n return after\n }\n\n function after(code) {\n // Check the next.\n if (trailingPunctuation(code)) {\n effects.consume(code)\n return after\n }\n\n // If the punctuation marker is followed by the end of the path, it’s not\n // continued punctuation.\n return pathEnd(code) ? ok(code) : nok(code)\n }\n}\n\nfunction trailingPunctuation(code) {\n return (\n // `!`\n code === 33 ||\n // `\"`\n code === 34 ||\n // `'`\n code === 39 ||\n // `)`\n code === 41 ||\n // `*`\n code === 42 ||\n // `,`\n code === 44 ||\n // `.`\n code === 46 ||\n // `:`\n code === 58 ||\n // `;`\n code === 59 ||\n // `<`\n code === 60 ||\n // `?`\n code === 63 ||\n // `_`.\n code === 95 ||\n // `~`\n code === 126\n )\n}\n\nfunction pathEnd(code) {\n return (\n // EOF.\n code === null ||\n // CR, LF, CRLF, HT, VS.\n code < 0 ||\n // Space.\n code === 32 ||\n // `<`\n code === 60\n )\n}\n\nfunction gfmAtext(code) {\n return (\n code === 43 /* `+` */ ||\n code === 45 /* `-` */ ||\n code === 46 /* `.` */ ||\n code === 95 /* `_` */ ||\n asciiAlphanumeric(code)\n )\n}\n\nfunction previousWww(code) {\n return (\n code === null ||\n code < 0 ||\n code === 32 /* ` ` */ ||\n code === 40 /* `(` */ ||\n code === 42 /* `*` */ ||\n code === 95 /* `_` */ ||\n code === 126 /* `~` */\n )\n}\n\nfunction previousHttp(code) {\n return code === null || !asciiAlpha(code)\n}\n\nfunction previousEmail(code) {\n return code !== 47 /* `/` */ && previousHttp(code)\n}\n\nfunction previous(events) {\n var index = events.length\n\n while (index--) {\n if (\n (events[index][1].type === 'labelLink' ||\n events[index][1].type === 'labelImage') &&\n !events[index][1]._balanced\n ) {\n return true\n }\n }\n}\n","module.exports = create\n\nvar classifyCharacter = require('micromark/dist/util/classify-character')\nvar chunkedSplice = require('micromark/dist/util/chunked-splice')\nvar resolveAll = require('micromark/dist/util/resolve-all')\nvar shallow = require('micromark/dist/util/shallow')\n\nfunction create(options) {\n var settings = options || {}\n var single = settings.singleTilde\n var tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n }\n\n if (single === null || single === undefined) {\n single = true\n }\n\n return {text: {126: tokenizer}, insideSpan: {null: tokenizer}}\n\n // Take events and resolve strikethrough.\n function resolveAllStrikethrough(events, context) {\n var index = -1\n var strikethrough\n var text\n var open\n var nextEvents\n\n // Walk through all events.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'strikethroughSequenceTemporary' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'strikethroughSequenceTemporary' &&\n events[open][1]._open &&\n // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset ===\n events[open][1].end.offset - events[open][1].start.offset\n ) {\n events[index][1].type = 'strikethroughSequence'\n events[open][1].type = 'strikethroughSequence'\n\n strikethrough = {\n type: 'strikethrough',\n start: shallow(events[open][1].start),\n end: shallow(events[index][1].end)\n }\n\n text = {\n type: 'strikethroughText',\n start: shallow(events[open][1].end),\n end: shallow(events[index][1].start)\n }\n\n // Opening.\n nextEvents = [\n ['enter', strikethrough, context],\n ['enter', events[open][1], context],\n ['exit', events[open][1], context],\n ['enter', text, context]\n ]\n\n // Between.\n chunkedSplice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n chunkedSplice(nextEvents, nextEvents.length, 0, [\n ['exit', text, context],\n ['enter', events[index][1], context],\n ['exit', events[index][1], context],\n ['exit', strikethrough, context]\n ])\n\n chunkedSplice(events, open - 1, index - open + 3, nextEvents)\n\n index = open + nextEvents.length - 2\n break\n }\n }\n }\n }\n\n return removeRemainingSequences(events)\n }\n\n function removeRemainingSequences(events) {\n var index = -1\n var length = events.length\n\n while (++index < length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n }\n\n function tokenizeStrikethrough(effects, ok, nok) {\n var previous = this.previous\n var events = this.events\n var size = 0\n\n return start\n\n function start(code) {\n if (\n code !== 126 ||\n (previous === 126 &&\n events[events.length - 1][1].type !== 'characterEscape')\n ) {\n return nok(code)\n }\n\n effects.enter('strikethroughSequenceTemporary')\n return more(code)\n }\n\n function more(code) {\n var before = classifyCharacter(previous)\n var token\n var after\n\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code)\n effects.consume(code)\n size++\n return more\n }\n\n if (size < 2 && !single) return nok(code)\n token = effects.exit('strikethroughSequenceTemporary')\n after = classifyCharacter(code)\n token._open = !after || (after === 2 && before)\n token._close = !before || (before === 2 && after)\n return ok(code)\n }\n }\n}\n","module.exports = require('./syntax')\n","exports.flow = {\n null: {tokenize: tokenizeTable, resolve: resolveTable, interruptible: true}\n}\n\nvar createSpace = require('micromark/dist/tokenize/factory-space')\n\nvar setextUnderlineMini = {tokenize: tokenizeSetextUnderlineMini, partial: true}\nvar nextPrefixedOrBlank = {tokenize: tokenizeNextPrefixedOrBlank, partial: true}\n\nfunction resolveTable(events, context) {\n var length = events.length\n var index = -1\n var token\n var inHead\n var inDelimiterRow\n var inRow\n var cell\n var content\n var text\n var contentStart\n var contentEnd\n var cellStart\n\n while (++index < length) {\n token = events[index][1]\n\n if (inRow) {\n if (token.type === 'temporaryTableCellContent') {\n contentStart = contentStart || index\n contentEnd = index\n }\n\n if (\n // Combine separate content parts into one.\n (token.type === 'tableCellDivider' || token.type === 'tableRow') &&\n contentEnd\n ) {\n content = {\n type: 'tableContent',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: content.start,\n end: content.end,\n contentType: 'text'\n }\n\n events.splice(\n contentStart,\n contentEnd - contentStart + 1,\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n )\n index -= contentEnd - contentStart - 3\n length = events.length\n contentStart = undefined\n contentEnd = undefined\n }\n }\n\n if (\n events[index][0] === 'exit' &&\n cellStart &&\n cellStart + 1 < index &&\n (token.type === 'tableCellDivider' ||\n (token.type === 'tableRow' &&\n (cellStart + 3 < index ||\n events[cellStart][1].type !== 'whitespace')))\n ) {\n cell = {\n type: inDelimiterRow\n ? 'tableDelimiter'\n : inHead\n ? 'tableHeader'\n : 'tableData',\n start: events[cellStart][1].start,\n end: events[index][1].end\n }\n events.splice(index + (token.type === 'tableCellDivider' ? 1 : 0), 0, [\n 'exit',\n cell,\n context\n ])\n events.splice(cellStart, 0, ['enter', cell, context])\n index += 2\n length = events.length\n cellStart = index + 1\n }\n\n if (token.type === 'tableRow') {\n inRow = events[index][0] === 'enter'\n\n if (inRow) {\n cellStart = index + 1\n }\n }\n\n if (token.type === 'tableDelimiterRow') {\n inDelimiterRow = events[index][0] === 'enter'\n\n if (inDelimiterRow) {\n cellStart = index + 1\n }\n }\n\n if (token.type === 'tableHead') {\n inHead = events[index][0] === 'enter'\n }\n }\n\n return events\n}\n\nfunction tokenizeTable(effects, ok, nok) {\n var align = []\n var tableHeaderCount = 0\n var seenDelimiter\n var hasDash\n\n return start\n\n function start(code) {\n /* istanbul ignore if - used to be passed in beta micromark versions. */\n if (code === null || code === -5 || code === -4 || code === -3) {\n return nok(code)\n }\n\n effects.enter('table')._align = align\n effects.enter('tableHead')\n effects.enter('tableRow')\n\n // If we start with a pipe, we open a cell marker.\n if (code === 124) {\n return cellDividerHead(code)\n }\n\n tableHeaderCount++\n effects.enter('temporaryTableCellContent')\n // Can’t be space or eols at the start of a construct, so we’re in a cell.\n return inCellContentHead(code)\n }\n\n function cellDividerHead(code) {\n // Always a pipe.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n seenDelimiter = true\n return cellBreakHead\n }\n\n function cellBreakHead(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return atRowEndHead(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceHead\n }\n\n if (seenDelimiter) {\n seenDelimiter = undefined\n tableHeaderCount++\n }\n\n // `|`\n if (code === 124) {\n return cellDividerHead(code)\n }\n\n // Anything else is cell content.\n effects.enter('temporaryTableCellContent')\n return inCellContentHead(code)\n }\n\n function inWhitespaceHead(code) {\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return inWhitespaceHead\n }\n\n effects.exit('whitespace')\n return cellBreakHead(code)\n }\n\n function inCellContentHead(code) {\n // EOF, whitespace, pipe\n if (code === null || code < 0 || code === 32 || code === 124) {\n effects.exit('temporaryTableCellContent')\n return cellBreakHead(code)\n }\n\n effects.consume(code)\n // `\\`\n return code === 92 ? inCellContentEscapeHead : inCellContentHead\n }\n\n function inCellContentEscapeHead(code) {\n // `\\` or `|`\n if (code === 92 || code === 124) {\n effects.consume(code)\n return inCellContentHead\n }\n\n // Anything else.\n return inCellContentHead(code)\n }\n\n function atRowEndHead(code) {\n if (code === null) {\n return nok(code)\n }\n\n effects.exit('tableRow')\n effects.exit('tableHead')\n\n // Always a line ending.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n\n // If a setext heading, exit.\n return effects.check(\n setextUnderlineMini,\n nok,\n // Support an indent before the delimiter row.\n createSpace(effects, rowStartDelimiter, 'linePrefix', 4)\n )\n }\n\n function rowStartDelimiter(code) {\n // If there’s another space, or we’re at the EOL/EOF, exit.\n if (code === null || code < 0 || code === 32) {\n return nok(code)\n }\n\n effects.enter('tableDelimiterRow')\n return atDelimiterRowBreak(code)\n }\n\n function atDelimiterRowBreak(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return rowEndDelimiter(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n // `-`\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n effects.consume(code)\n hasDash = true\n align.push(null)\n return inFillerDelimiter\n }\n\n // `:`\n if (code === 58) {\n effects.enter('tableDelimiterAlignment')\n effects.consume(code)\n effects.exit('tableDelimiterAlignment')\n align.push('left')\n return afterLeftAlignment\n }\n\n // If we start with a pipe, we open a cell marker.\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return atDelimiterRowBreak\n }\n\n return nok(code)\n }\n\n function inWhitespaceDelimiter(code) {\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n effects.exit('whitespace')\n return atDelimiterRowBreak(code)\n }\n\n function inFillerDelimiter(code) {\n // `-`\n if (code === 45) {\n effects.consume(code)\n return inFillerDelimiter\n }\n\n effects.exit('tableDelimiterFiller')\n\n // `:`\n if (code === 58) {\n effects.enter('tableDelimiterAlignment')\n effects.consume(code)\n effects.exit('tableDelimiterAlignment')\n\n align[align.length - 1] =\n align[align.length - 1] === 'left' ? 'center' : 'right'\n\n return afterRightAlignment\n }\n\n return atDelimiterRowBreak(code)\n }\n\n function afterLeftAlignment(code) {\n // `-`\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n effects.consume(code)\n hasDash = true\n return inFillerDelimiter\n }\n\n // Anything else is not ok.\n return nok(code)\n }\n\n function afterRightAlignment(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return rowEndDelimiter(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n // `|`\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return atDelimiterRowBreak\n }\n\n return nok(code)\n }\n\n function rowEndDelimiter(code) {\n effects.exit('tableDelimiterRow')\n\n // Exit if there was no dash at all, or if the header cell count is not the\n // delimiter cell count.\n if (!hasDash || tableHeaderCount !== align.length) {\n return nok(code)\n }\n\n if (code === null) {\n return tableClose(code)\n }\n\n return effects.check(nextPrefixedOrBlank, tableClose, tableContinue)(code)\n }\n\n function tableClose(code) {\n effects.exit('table')\n return ok(code)\n }\n\n function tableContinue(code) {\n // Always a line ending.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n // We checked that it’s not a prefixed or blank line, so we’re certain a\n // body is coming, though it may be indented.\n return createSpace(effects, bodyStart, 'linePrefix', 4)\n }\n\n function bodyStart(code) {\n effects.enter('tableBody')\n return rowStartBody(code)\n }\n\n function rowStartBody(code) {\n effects.enter('tableRow')\n\n // If we start with a pipe, we open a cell marker.\n if (code === 124) {\n return cellDividerBody(code)\n }\n\n effects.enter('temporaryTableCellContent')\n // Can’t be space or eols at the start of a construct, so we’re in a cell.\n return inCellContentBody(code)\n }\n\n function cellDividerBody(code) {\n // Always a pipe.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return cellBreakBody\n }\n\n function cellBreakBody(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return atRowEndBody(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceBody\n }\n\n // `|`\n if (code === 124) {\n return cellDividerBody(code)\n }\n\n // Anything else is cell content.\n effects.enter('temporaryTableCellContent')\n return inCellContentBody(code)\n }\n\n function inWhitespaceBody(code) {\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return inWhitespaceBody\n }\n\n effects.exit('whitespace')\n return cellBreakBody(code)\n }\n\n function inCellContentBody(code) {\n // EOF, whitespace, pipe\n if (code === null || code < 0 || code === 32 || code === 124) {\n effects.exit('temporaryTableCellContent')\n return cellBreakBody(code)\n }\n\n effects.consume(code)\n // `\\`\n return code === 92 ? inCellContentEscapeBody : inCellContentBody\n }\n\n function inCellContentEscapeBody(code) {\n // `\\` or `|`\n if (code === 92 || code === 124) {\n effects.consume(code)\n return inCellContentBody\n }\n\n // Anything else.\n return inCellContentBody(code)\n }\n\n function atRowEndBody(code) {\n effects.exit('tableRow')\n\n if (code === null) {\n return tableBodyClose(code)\n }\n\n return effects.check(\n nextPrefixedOrBlank,\n tableBodyClose,\n tableBodyContinue\n )(code)\n }\n\n function tableBodyClose(code) {\n effects.exit('tableBody')\n return tableClose(code)\n }\n\n function tableBodyContinue(code) {\n // Always a line ending.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n // Support an optional prefix, then start a body row.\n return createSpace(effects, rowStartBody, 'linePrefix', 4)\n }\n}\n\n// Based on micromark, but that won’t work as we’re in a table, and that expects\n// content.\n// <https://github.com/micromark/micromark/blob/main/lib/tokenize/setext-underline.js>\nfunction tokenizeSetextUnderlineMini(effects, ok, nok) {\n return start\n\n function start(code) {\n // `-`\n if (code !== 45) {\n return nok(code)\n }\n\n effects.enter('setextUnderline')\n return sequence(code)\n }\n\n function sequence(code) {\n if (code === 45) {\n effects.consume(code)\n return sequence\n }\n\n return whitespace(code)\n }\n\n function whitespace(code) {\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return whitespace\n }\n\n if (code === null || code === -5 || code === -4 || code === -3) {\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeNextPrefixedOrBlank(effects, ok, nok) {\n var size = 0\n\n return start\n\n function start(code) {\n // This is a check, so we don’t care about tokens, but we open a bogus one\n // so we’re valid.\n effects.enter('check')\n // EOL.\n effects.consume(code)\n return whitespace\n }\n\n function whitespace(code) {\n // VS or SP.\n if (code === -1 || code === 32) {\n effects.consume(code)\n size++\n return size === 4 ? ok : whitespace\n }\n\n // EOF or whitespace\n if (code === null || code < 0) {\n return ok(code)\n }\n\n // Anything else.\n return nok(code)\n }\n}\n","module.exports = require('./syntax')\n","var markdownLineEndingOrSpace = require('micromark/dist/character/markdown-line-ending-or-space')\nvar spaceFactory = require('micromark/dist/tokenize/factory-space')\nvar prefixSize = require('micromark/dist/util/prefix-size')\n\nvar tasklistCheck = {tokenize: tokenizeTasklistCheck}\n\nexports.text = {91: tasklistCheck}\n\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n var self = this\n\n return open\n\n function open(code) {\n if (\n // Exit if not `[`.\n code !== 91 ||\n // Exit if there’s stuff before.\n self.previous !== null ||\n // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code)\n }\n\n effects.enter('taskListCheck')\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n return inside\n }\n\n function inside(code) {\n // Tab or space.\n if (code === -2 || code === 32) {\n effects.enter('taskListCheckValueUnchecked')\n effects.consume(code)\n effects.exit('taskListCheckValueUnchecked')\n return close\n }\n\n // Upper- and lower `x`.\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked')\n effects.consume(code)\n effects.exit('taskListCheckValueChecked')\n return close\n }\n\n return nok(code)\n }\n\n function close(code) {\n // `]`\n if (code === 93) {\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n effects.exit('taskListCheck')\n return effects.check({tokenize: spaceThenNonSpace}, ok, nok)\n }\n\n return nok(code)\n }\n}\n\nfunction spaceThenNonSpace(effects, ok, nok) {\n var self = this\n\n return spaceFactory(effects, after, 'whitespace')\n\n function after(code) {\n return prefixSize(self.events, 'whitespace') &&\n code !== null &&\n !markdownLineEndingOrSpace(code)\n ? ok(code)\n : nok(code)\n }\n}\n","module.exports = require('./syntax')\n","var combine = require('micromark/dist/util/combine-extensions')\nvar autolink = require('micromark-extension-gfm-autolink-literal')\nvar strikethrough = require('micromark-extension-gfm-strikethrough')\nvar table = require('micromark-extension-gfm-table')\nvar tasklist = require('micromark-extension-gfm-task-list-item')\n\nmodule.exports = create\n\nfunction create(options) {\n return combine([autolink, strikethrough(options), table, tasklist])\n}\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlpha = regexCheck(/[A-Za-z]/)\n\nmodule.exports = asciiAlpha\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\nmodule.exports = asciiAlphanumeric\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\nmodule.exports = asciiAtext\n","'use strict'\n\n// Note: EOF is seen as ASCII control here, because `null < 32 == true`.\nfunction asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code < 32 || code === 127\n )\n}\n\nmodule.exports = asciiControl\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiDigit = regexCheck(/\\d/)\n\nmodule.exports = asciiDigit\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\nmodule.exports = asciiHexDigit\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\nmodule.exports = asciiPunctuation\n","'use strict'\n\nfunction markdownLineEndingOrSpace(code) {\n return code < 0 || code === 32\n}\n\nmodule.exports = markdownLineEndingOrSpace\n","'use strict'\n\nfunction markdownLineEnding(code) {\n return code < -2\n}\n\nmodule.exports = markdownLineEnding\n","'use strict'\n\nfunction markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\nmodule.exports = markdownSpace\n","'use strict'\n\nvar unicodePunctuationRegex = require('../constant/unicode-punctuation-regex.js')\nvar regexCheck = require('../util/regex-check.js')\n\n// In fact adds to the bundle size.\n\nvar unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar unicodeWhitespace = regexCheck(/\\s/)\n\nmodule.exports = unicodeWhitespace\n","'use strict'\n\nvar assign = Object.assign\n\nmodule.exports = assign\n","'use strict'\n\nvar fromCharCode = String.fromCharCode\n\nmodule.exports = fromCharCode\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = own\n","'use strict'\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar basics = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'source',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\nmodule.exports = basics\n","'use strict'\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar raws = ['pre', 'script', 'style', 'textarea']\n\nmodule.exports = raws\n","'use strict'\n\nvar splice = [].splice\n\nmodule.exports = splice\n","'use strict'\n\n// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nvar unicodePunctuation = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar text$1 = require('./initialize/text.js')\nvar attention = require('./tokenize/attention.js')\nvar autolink = require('./tokenize/autolink.js')\nvar blockQuote = require('./tokenize/block-quote.js')\nvar characterEscape = require('./tokenize/character-escape.js')\nvar characterReference = require('./tokenize/character-reference.js')\nvar codeFenced = require('./tokenize/code-fenced.js')\nvar codeIndented = require('./tokenize/code-indented.js')\nvar codeText = require('./tokenize/code-text.js')\nvar definition = require('./tokenize/definition.js')\nvar hardBreakEscape = require('./tokenize/hard-break-escape.js')\nvar headingAtx = require('./tokenize/heading-atx.js')\nvar htmlFlow = require('./tokenize/html-flow.js')\nvar htmlText = require('./tokenize/html-text.js')\nvar labelEnd = require('./tokenize/label-end.js')\nvar labelStartImage = require('./tokenize/label-start-image.js')\nvar labelStartLink = require('./tokenize/label-start-link.js')\nvar lineEnding = require('./tokenize/line-ending.js')\nvar list = require('./tokenize/list.js')\nvar setextUnderline = require('./tokenize/setext-underline.js')\nvar thematicBreak = require('./tokenize/thematic-break.js')\n\nvar document = {\n 42: list,\n // Asterisk\n 43: list,\n // Plus sign\n 45: list,\n // Dash\n 48: list,\n // 0\n 49: list,\n // 1\n 50: list,\n // 2\n 51: list,\n // 3\n 52: list,\n // 4\n 53: list,\n // 5\n 54: list,\n // 6\n 55: list,\n // 7\n 56: list,\n // 8\n 57: list,\n // 9\n 62: blockQuote // Greater than\n}\nvar contentInitial = {\n 91: definition // Left square bracket\n}\nvar flowInitial = {\n '-2': codeIndented,\n // Horizontal tab\n '-1': codeIndented,\n // Virtual space\n 32: codeIndented // Space\n}\nvar flow = {\n 35: headingAtx,\n // Number sign\n 42: thematicBreak,\n // Asterisk\n 45: [setextUnderline, thematicBreak],\n // Dash\n 60: htmlFlow,\n // Less than\n 61: setextUnderline,\n // Equals to\n 95: thematicBreak,\n // Underscore\n 96: codeFenced,\n // Grave accent\n 126: codeFenced // Tilde\n}\nvar string = {\n 38: characterReference,\n // Ampersand\n 92: characterEscape // Backslash\n}\nvar text = {\n '-5': lineEnding,\n // Carriage return\n '-4': lineEnding,\n // Line feed\n '-3': lineEnding,\n // Carriage return + line feed\n 33: labelStartImage,\n // Exclamation mark\n 38: characterReference,\n // Ampersand\n 42: attention,\n // Asterisk\n 60: [autolink, htmlText],\n // Less than\n 91: labelStartLink,\n // Left square bracket\n 92: [hardBreakEscape, characterEscape],\n // Backslash\n 93: labelEnd,\n // Right square bracket\n 95: attention,\n // Underscore\n 96: codeText // Grave accent\n}\nvar insideSpan = {\n null: [attention, text$1.resolver]\n}\nvar disable = {\n null: []\n}\n\nexports.contentInitial = contentInitial\nexports.disable = disable\nexports.document = document\nexports.flow = flow\nexports.flowInitial = flowInitial\nexports.insideSpan = insideSpan\nexports.string = string\nexports.text = text\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\n\nvar tokenize = initializeContent\n\nfunction initializeContent(effects) {\n var contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n var previous\n return contentStart\n\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n function lineStart(code) {\n var token = effects.enter('chunkText', {\n contentType: 'text',\n previous: previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\n\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n } // Data.\n\n effects.consume(code)\n return data\n }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeDocument\nvar containerConstruct = {\n tokenize: tokenizeContainer\n}\nvar lazyFlowConstruct = {\n tokenize: tokenizeLazyFlow\n}\n\nfunction initializeDocument(effects) {\n var self = this\n var stack = []\n var continued = 0\n var inspectConstruct = {\n tokenize: tokenizeInspect,\n partial: true\n }\n var inspectResult\n var childFlow\n var childToken\n return start\n\n function start(code) {\n if (continued < stack.length) {\n self.containerState = stack[continued][1]\n return effects.attempt(\n stack[continued][0].continuation,\n documentContinue,\n documentContinued\n )(code)\n }\n\n return documentContinued(code)\n }\n\n function documentContinue(code) {\n continued++\n return start(code)\n }\n\n function documentContinued(code) {\n // If we’re in a concrete construct (such as when expecting another line of\n // HTML, or we resulted in lazy content), we can immediately start flow.\n if (inspectResult && inspectResult.flowContinue) {\n return flowStart(code)\n }\n\n self.interrupt =\n childFlow &&\n childFlow.currentConstruct &&\n childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n function containerContinue(code) {\n stack.push([self.currentConstruct, self.containerState])\n self.containerState = undefined\n return documentContinued(code)\n }\n\n function flowStart(code) {\n if (code === null) {\n exitContainers(0, true)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n\n function flowContinue(code) {\n if (code === null) {\n continueFlow(effects.exit('chunkFlow'))\n return flowStart(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n continueFlow(effects.exit('chunkFlow'))\n return effects.check(inspectConstruct, documentAfterPeek)\n }\n\n effects.consume(code)\n return flowContinue\n }\n\n function documentAfterPeek(code) {\n exitContainers(\n inspectResult.continued,\n inspectResult && inspectResult.flowEnd\n )\n continued = 0\n return start(code)\n }\n\n function continueFlow(token) {\n if (childToken) childToken.next = token\n childToken = token\n childFlow.lazy = inspectResult && inspectResult.lazy\n childFlow.defineSkip(token.start)\n childFlow.write(self.sliceStream(token))\n }\n\n function exitContainers(size, end) {\n var index = stack.length // Close the flow.\n\n if (childFlow && end) {\n childFlow.write([null])\n childToken = childFlow = undefined\n } // Exit open containers.\n\n while (index-- > size) {\n self.containerState = stack[index][1]\n stack[index][0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function tokenizeInspect(effects, ok) {\n var subcontinued = 0\n inspectResult = {}\n return inspectStart\n\n function inspectStart(code) {\n if (subcontinued < stack.length) {\n self.containerState = stack[subcontinued][1]\n return effects.attempt(\n stack[subcontinued][0].continuation,\n inspectContinue,\n inspectLess\n )(code)\n } // If we’re continued but in a concrete flow, we can’t have more\n // containers.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n inspectResult.flowContinue = true\n return inspectDone(code)\n }\n\n self.interrupt =\n childFlow.currentConstruct && childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd,\n inspectDone\n )(code)\n }\n\n function inspectContinue(code) {\n subcontinued++\n return self.containerState._closeFlow\n ? inspectFlowEnd(code)\n : inspectStart(code)\n }\n\n function inspectLess(code) {\n if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {\n // Maybe another container?\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd, // Maybe flow, or a blank line?\n effects.attempt(\n lazyFlowConstruct,\n inspectFlowEnd,\n effects.check(partialBlankLine, inspectFlowEnd, inspectLazy)\n )\n )(code)\n } // Otherwise we’re interrupting.\n\n return inspectFlowEnd(code)\n }\n\n function inspectLazy(code) {\n // Act as if all containers are continued.\n subcontinued = stack.length\n inspectResult.lazy = true\n inspectResult.flowContinue = true\n return inspectDone(code)\n } // We’re done with flow if we have more containers, or an interruption.\n\n function inspectFlowEnd(code) {\n inspectResult.flowEnd = true\n return inspectDone(code)\n }\n\n function inspectDone(code) {\n inspectResult.continued = subcontinued\n self.interrupt = self.containerState = undefined\n return ok(code)\n }\n }\n}\n\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction tokenizeLazyFlow(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.lazy(this.parser.constructs.flow, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar content = require('../tokenize/content.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeFlow\n\nfunction initializeFlow(effects) {\n var self = this\n var initial = effects.attempt(\n // Try to parse a blank line.\n partialBlankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar assign = require('../constant/assign.js')\nvar shallow = require('../util/shallow.js')\n\nvar text = initializeFactory('text')\nvar string = initializeFactory('string')\nvar resolver = {\n resolveAll: createResolver()\n}\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n function initializeText(effects) {\n var self = this\n var constructs = this.parser.constructs[field]\n var text = effects.attempt(constructs, start, notText)\n return start\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n\n function atBreak(code) {\n var list = constructs[code]\n var index = -1\n\n if (code === null) {\n return true\n }\n\n if (list) {\n while (++index < list.length) {\n if (\n !list[index].previous ||\n list[index].previous.call(self, self.previous)\n ) {\n return true\n }\n }\n }\n }\n }\n}\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n function resolveAllText(events, context) {\n var index = -1\n var enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n} // A rather ugly set of instructions which again looks at chunks in the input\n// stream.\n// The reason to do this here is that it is *much* faster to parse in reverse.\n// And that we can’t hook into `null` to split the line suffix before an EOF.\n// To do: figure out if we can make this into a clean utility, or even in core.\n// As it will be useful for GFMs literal autolink extension (and maybe even\n// tables?)\n\nfunction resolveAllLineSuffixes(events, context) {\n var eventIndex = -1\n var chunks\n var data\n var chunk\n var index\n var bufferIndex\n var size\n var tabs\n var token\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n data = events[eventIndex - 1][1]\n chunks = context.sliceStream(data)\n index = chunks.length\n bufferIndex = -1\n size = 0\n tabs = undefined\n\n while (index--) {\n chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n } // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1);\n else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: shallow(data.end)\n }\n data.end = shallow(token.start)\n\n if (data.start.offset === data.end.offset) {\n assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n\nexports.resolver = resolver\nexports.string = string\nexports.text = text\n","'use strict'\n\nvar content = require('./initialize/content.js')\nvar document = require('./initialize/document.js')\nvar flow = require('./initialize/flow.js')\nvar text = require('./initialize/text.js')\nvar combineExtensions = require('./util/combine-extensions.js')\nvar createTokenizer = require('./util/create-tokenizer.js')\nvar miniflat = require('./util/miniflat.js')\nvar constructs = require('./constructs.js')\n\nfunction parse(options) {\n var settings = options || {}\n var parser = {\n defined: [],\n constructs: combineExtensions(\n [constructs].concat(miniflat(settings.extensions))\n ),\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(text.string),\n text: create(text.text)\n }\n return parser\n\n function create(initializer) {\n return creator\n\n function creator(from) {\n return createTokenizer(parser, initializer, from)\n }\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nvar subtokenize = require('./util/subtokenize.js')\n\nfunction postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n\nmodule.exports = postprocess\n","'use strict'\n\nvar search = /[\\0\\t\\n\\r]/g\n\nfunction preprocess() {\n var start = true\n var column = 1\n var buffer = ''\n var atCarriageReturn\n return preprocessor\n\n function preprocessor(value, encoding, end) {\n var chunks = []\n var match\n var next\n var startPosition\n var endPosition\n var code\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition = match ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n if (code === 0) {\n chunks.push(65533)\n column++\n } else if (code === 9) {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n } else if (code === 10) {\n chunks.push(-4)\n column = 1\n } // Must be carriage return.\n else {\n atCarriageReturn = true\n column = 1\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\n}\n\nmodule.exports = preprocess\n","'use strict'\n\nvar chunkedPush = require('../util/chunked-push.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar classifyCharacter = require('../util/classify-character.js')\nvar movePoint = require('../util/move-point.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar shallow = require('../util/shallow.js')\n\nvar attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\nfunction resolveAllAttention(events, context) {\n var index = -1\n var open\n var group\n var text\n var openingSequence\n var closingSequence\n var use\n var nextEvents\n var offset // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open && // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n } // Number of markers to use from the sequence.\n\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: movePoint(shallow(events[open][1].end), -use),\n end: shallow(events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: shallow(events[index][1].start),\n end: movePoint(shallow(events[index][1].start), use)\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: shallow(events[open][1].end),\n end: shallow(events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: shallow(openingSequence.start),\n end: shallow(closingSequence.end)\n }\n events[open][1].end = shallow(openingSequence.start)\n events[index][1].start = shallow(closingSequence.end)\n nextEvents = [] // If there are more markers in the opening, add them before.\n\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = chunkedPush(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = chunkedPush(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = chunkedPush(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = chunkedPush(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ]) // If there are more markers in the closing, add them after.\n\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = chunkedPush(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n chunkedSplice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n } // Remove remaining sequences.\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n}\n\nfunction tokenizeAttention(effects, ok) {\n var before = classifyCharacter(this.previous)\n var marker\n return start\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n\n function sequence(code) {\n var token\n var after\n var open\n var close\n\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n token = effects.exit('attentionSequence')\n after = classifyCharacter(code)\n open = !after || (after === 2 && before)\n close = !before || (before === 2 && after)\n token._open = marker === 42 ? open : open && (before || !close)\n token._close = marker === 42 ? close : close && (after || !open)\n return ok(code)\n }\n}\n\nmodule.exports = attention\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiAtext = require('../character/ascii-atext.js')\nvar asciiControl = require('../character/ascii-control.js')\n\nvar autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\nfunction tokenizeAutolink(effects, ok, nok) {\n var size = 1\n return start\n\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n\nmodule.exports = autolink\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit: exit\n}\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n if (code === 62) {\n if (!self.containerState.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n self.containerState.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n\nmodule.exports = blockQuote\n","'use strict'\n\nvar asciiPunctuation = require('../character/ascii-punctuation.js')\n\nvar characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return open\n }\n\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = characterEscape\n","'use strict'\n\nvar decodeEntity = require('parse-entities/decode-entity.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiDigit = require('../character/ascii-digit.js')\nvar asciiHexDigit = require('../character/ascii-hex-digit.js')\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === 'object' && 'default' in e ? e : {default: e}\n}\n\nvar decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy(decodeEntity)\n\nvar characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n var self = this\n var size = 0\n var max\n var test\n return start\n\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n function value(code) {\n var token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeEntity__default['default'](self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = characterReference\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar factorySpace = require('./factory-space.js')\n\nvar codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n var self = this\n var closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n var initialPrefix = prefixSize(this.events, 'linePrefix')\n var sizeOpen = 0\n var marker\n return start\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : content(code)\n }\n\n function content(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(effects, content, 'linePrefix', initialPrefix + 1)\n : content\n )\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return content(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n function tokenizeClosingFence(effects, ok, nok) {\n var size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n\nmodule.exports = codeFenced\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar factorySpace = require('./factory-space.js')\n\nvar codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented,\n resolve: resolveCodeIndented\n}\nvar indentedContentConstruct = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n\nfunction resolveCodeIndented(events, context) {\n var code = {\n type: 'codeIndented',\n start: events[0][1].start,\n end: events[events.length - 1][1].end\n }\n chunkedSplice(events, 0, 0, [['enter', code, context]])\n chunkedSplice(events, events.length, 0, [['exit', code, context]])\n return events\n}\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n return effects.attempt(indentedContentConstruct, afterPrefix, nok)\n\n function afterPrefix(code) {\n if (code === null) {\n return ok(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n}\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n var self = this\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n\n function afterPrefix(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n }\n\n return prefixSize(self.events, 'linePrefix') < 4 ? nok(code) : ok(code)\n }\n}\n\nmodule.exports = codeIndented\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous: previous\n}\n\nfunction resolveCodeText(events) {\n var tailExitIndex = events.length - 4\n var headEnterIndex = 3\n var index\n var enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[tailExitIndex][1].type = events[headEnterIndex][1].type =\n 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\nfunction tokenizeCodeText(effects, ok, nok) {\n var sizeOpen = 0\n var size\n var token\n return start\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don’t work, and virtual spaces don’t make sense.\n\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return gap\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return gap\n } // Data.\n\n effects.enter('codeTextData')\n return data(code)\n } // In code.\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n\nmodule.exports = codeText\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar subtokenize = require('../util/subtokenize.js')\nvar factorySpace = require('./factory-space.js')\n\n// No name because it must not be turned off.\nvar content = {\n tokenize: tokenizeContent,\n resolve: resolveContent,\n interruptible: true,\n lazy: true\n}\nvar continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n} // Content is transparent: it’s parsed right now. That way, definitions are also\n// parsed right now: before text in paragraphs (specifically, media) are parsed.\n\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n\nfunction tokenizeContent(effects, ok) {\n var previous\n return start\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\n\n function data(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous = previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous: previous\n })\n return data\n }\n}\n\nfunction tokenizeContinuation(effects, ok, nok) {\n var self = this\n return startLookahead\n\n function startLookahead(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ||\n prefixSize(self.events, 'linePrefix') < 4\n ) {\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n\n return ok(code)\n }\n}\n\nmodule.exports = content\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factorySpace = require('./factory-space.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\nvar factoryTitle = require('./factory-title.js')\n\nvar definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\nvar titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n\nfunction tokenizeDefinition(effects, ok, nok) {\n var self = this\n var identifier\n return start\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can’t exist in content.\n\n return factoryWhitespace(\n effects,\n factoryDestination(\n effects,\n effects.attempt(\n titleConstruct,\n factorySpace(effects, after, 'whitespace'),\n factorySpace(effects, after, 'whitespace')\n ),\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )\n )\n }\n\n return nok(code)\n }\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (self.parser.defined.indexOf(identifier) < 0) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = definition\n","'use strict'\n\nvar asciiControl = require('../character/ascii-control.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\n// eslint-disable-next-line max-params\nfunction destinationFactory(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n var limit = max || Infinity\n var balance = 0\n return start\n\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return destinationEnclosedBefore\n }\n\n if (asciiControl(code) || code === 41) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationRaw(code)\n }\n\n function destinationEnclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationEnclosed(code)\n }\n\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return destinationEnclosedBefore(code)\n }\n\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n }\n\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return destinationEnclosed\n }\n\n return destinationEnclosed(code)\n }\n\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code)\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code)\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (asciiControl(code)) return nok(code)\n effects.consume(code)\n return code === 92 ? destinationRawEscape : destinationRaw\n }\n\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return destinationRaw\n }\n\n return destinationRaw(code)\n }\n}\n\nmodule.exports = destinationFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\n\n// eslint-disable-next-line max-params\nfunction labelFactory(effects, ok, nok, type, markerType, stringType) {\n var self = this\n var size = 0\n var data\n return start\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n\n function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* c8 ignore next */\n (code === 94 &&\n /* c8 ignore next */\n !size &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs) ||\n size > 999\n ) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return label(code)\n }\n\n function label(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n effects.consume(code)\n data = data || !markdownSpace(code)\n return code === 92 ? labelEscape : label\n }\n\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return label\n }\n\n return label(code)\n }\n}\n\nmodule.exports = labelFactory\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\n\nfunction spaceFactory(effects, ok, type, max) {\n var limit = max ? max - 1 : Infinity\n var size = 0\n return start\n\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n\nmodule.exports = spaceFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction titleFactory(effects, ok, nok, type, markerType, stringType) {\n var marker\n return start\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can’t exist in content.\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atTitleBreak, 'linePrefix')\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return title(code)\n }\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n\nmodule.exports = titleFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction whitespaceFactory(effects, ok) {\n var seen\n return start\n\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n\nmodule.exports = whitespaceFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = hardBreakEscape\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar factorySpace = require('./factory-space.js')\n\nvar headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\nfunction resolveHeadingAtx(events, context) {\n var contentEnd = events.length - 2\n var contentStart = 3\n var content\n var text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: 'text'\n }\n chunkedSplice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n var self = this\n var size = 0\n return start\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n\nmodule.exports = headingAtx\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar fromCharCode = require('../constant/from-char-code.js')\nvar htmlBlockNames = require('../constant/html-block-names.js')\nvar htmlRawNames = require('../constant/html-raw-names.js')\nvar partialBlankLine = require('./partial-blank-line.js')\n\nvar htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\nvar nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n\nfunction resolveToHtmlFlow(events) {\n var index = events.length\n\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n events.splice(index - 2, 2)\n }\n\n return events\n}\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n var self = this\n var kind\n var startTag\n var buffer\n var index\n var marker\n return start\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationStart\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\n\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code)\n kind = 2\n return commentOpenInside\n }\n\n if (code === 91) {\n effects.consume(code)\n kind = 5\n buffer = 'CDATA['\n index = 0\n return cdataOpenInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n kind = 4\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length\n ? self.interrupt\n ? ok\n : continuation\n : cdataOpenInside\n }\n\n return nok(code)\n }\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n if (\n code !== 47 &&\n startTag &&\n htmlRawNames.indexOf(buffer.toLowerCase()) > -1\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.indexOf(buffer.toLowerCase()) > -1) {\n kind = 6\n\n if (code === 47) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n kind = 7 // Do not support complete HTML when interrupting.\n\n return self.interrupt\n ? nok(code)\n : startTag\n ? completeAttributeNameBefore(code)\n : completeClosingTagAfter(code)\n }\n\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n\n function completeAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return completeAttributeValueQuoted\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n marker = undefined\n return completeAttributeValueUnquoted(code)\n }\n\n function completeAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return code === null || markdownLineEnding(code)\n ? continuation(code)\n : nok(code)\n }\n\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === 60 && kind === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === 62 && kind === 4) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === 63 && kind === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === 93 && kind === 5) {\n effects.consume(code)\n return continuationCharacterDataInside\n }\n\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(\n nextBlankConstruct,\n continuationClose,\n continuationAtLineEnding\n )(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code)\n }\n\n effects.consume(code)\n return continuation\n }\n\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return htmlContinueStart\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n return continuation(code)\n }\n\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return done(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.exit('htmlFlowData')\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n return effects.attempt(partialBlankLine, ok, nok)\n }\n}\n\nmodule.exports = htmlFlow\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n var self = this\n var marker\n var buffer\n var index\n var returnState\n return start\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can’t have blank lines in content, so no need to worry about empty\n // tokens.\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n }\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = htmlText\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar chunkedPush = require('../util/chunked-push.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar shallow = require('../util/shallow.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factoryTitle = require('./factory-title.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\n\nvar labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\nvar resourceConstruct = {\n tokenize: tokenizeResource\n}\nvar fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\nvar collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n\nfunction resolveAllLabelEnd(events) {\n var index = -1\n var token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n !token._used &&\n (token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd')\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n\nfunction resolveToLabelEnd(events, context) {\n var index = events.length\n var offset = 0\n var group\n var label\n var text\n var token\n var open\n var close\n var media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n } // Mark other link openings as inactive, as we can’t have links in\n // links.\n\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n\n group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: shallow(events[open][1].start),\n end: shallow(events[events.length - 1][1].end)\n }\n label = {\n type: 'label',\n start: shallow(events[open][1].start),\n end: shallow(events[close][1].end)\n }\n text = {\n type: 'labelText',\n start: shallow(events[open + offset + 2][1].end),\n end: shallow(events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = chunkedPush(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = chunkedPush(media, [['enter', text, context]]) // Between.\n\n media = chunkedPush(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = chunkedPush(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = chunkedPush(media, events.slice(close + 1)) // Media close.\n\n media = chunkedPush(media, [['exit', group, context]])\n chunkedSplice(events, open, events.length, media)\n return events\n}\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var labelStart\n var defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It’s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined =\n self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n ) > -1\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 3\n )(code)\n }\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeFullReference(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n function afterLabel(code) {\n return self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n ) < 0\n ? nok(code)\n : ok(code)\n }\n}\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = labelEnd\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartImage\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartLink\n","'use strict'\n\nvar factorySpace = require('./factory-space.js')\n\nvar lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n\nmodule.exports = lineEnding\n","'use strict'\n\nvar asciiDigit = require('../character/ascii-digit.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar sizeChunks = require('../util/size-chunks.js')\nvar factorySpace = require('./factory-space.js')\nvar partialBlankLine = require('./partial-blank-line.js')\nvar thematicBreak = require('./thematic-break.js')\n\nvar list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\nvar listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\nvar indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\nfunction tokenizeListStart(effects, ok, nok) {\n var self = this\n var initialSize = prefixSize(self.events, 'linePrefix')\n var size = 0\n return start\n\n function start(code) {\n var kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n\n return nok(code)\n }\n\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n\n return nok(code)\n }\n\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n partialBlankLine, // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n\n return nok(code)\n }\n\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize + sizeChunks(self.sliceStream(effects.exit('listItemPrefix')))\n return ok(code)\n }\n}\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n var self = this\n self.containerState._closeFlow = undefined\n return effects.check(partialBlankLine, onBlank, notBlank)\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine // We have a blank line.\n // Still, try to consume at most the items size.\n\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.\n\n self.interrupt = undefined\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )(code)\n }\n}\n\nfunction tokenizeIndent(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n\n function afterPrefix(code) {\n return prefixSize(self.events, 'listItemIndent') ===\n self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4 + 1\n )\n\n function afterPrefix(code) {\n return markdownSpace(code) ||\n !prefixSize(self.events, 'listItemPrefixWhitespace')\n ? nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = list\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nvar partialBlankLine = {\n tokenize: tokenizePartialBlankLine,\n partial: true\n}\n\nfunction tokenizePartialBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = partialBlankLine\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar shallow = require('../util/shallow.js')\nvar factorySpace = require('./factory-space.js')\n\nvar setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\nfunction resolveToSetextUnderline(events, context) {\n var index = events.length\n var content\n var text\n var definition\n var heading // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n } // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n\n heading = {\n type: 'setextHeading',\n start: shallow(events[text][1].start),\n end: shallow(events[events.length - 1][1].end)\n } // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = shallow(events[definition][1].end)\n } else {\n events[content][1] = heading\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context])\n return events\n}\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var marker\n var paragraph // Find an opening.\n\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n return start\n\n function start(code) {\n if (!self.lazy && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n effects.enter('setextHeadingLineSequence')\n marker = code\n return closingSequence(code)\n }\n\n return nok(code)\n }\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n return closingSequence\n }\n\n effects.exit('setextHeadingLineSequence')\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n }\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = setextUnderline\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n var size = 0\n var marker\n return start\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n\nmodule.exports = thematicBreak\n","'use strict'\n\nvar chunkedSplice = require('./chunked-splice.js')\n\nfunction chunkedPush(list, items) {\n if (list.length) {\n chunkedSplice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n\nmodule.exports = chunkedPush\n","'use strict'\n\nvar splice = require('../constant/splice.js')\n\n// causes a stack overflow in V8 when trying to insert 100k items for instance.\n\nfunction chunkedSplice(list, start, remove, items) {\n var end = list.length\n var chunkStart = 0\n var parameters // Make start between zero and `end` (included).\n\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n splice.apply(list, parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0)\n splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n\nmodule.exports = chunkedSplice\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar unicodePunctuation = require('../character/unicode-punctuation.js')\nvar unicodeWhitespace = require('../character/unicode-whitespace.js')\n\n// Classify whether a character is unicode whitespace, unicode punctuation, or\n// anything else.\n// Used for attention (emphasis, strong), whose sequences can open or close\n// based on the class of surrounding characters.\nfunction classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n\nmodule.exports = classifyCharacter\n","'use strict'\n\nvar hasOwnProperty = require('../constant/has-own-property.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\n\nfunction combineExtensions(extensions) {\n var all = {}\n var index = -1\n\n while (++index < extensions.length) {\n extension(all, extensions[index])\n }\n\n return all\n}\n\nfunction extension(all, extension) {\n var hook\n var left\n var right\n var code\n\n for (hook in extension) {\n left = hasOwnProperty.call(all, hook) ? all[hook] : (all[hook] = {})\n right = extension[hook]\n\n for (code in right) {\n left[code] = constructs(\n miniflat(right[code]),\n hasOwnProperty.call(left, code) ? left[code] : []\n )\n }\n }\n}\n\nfunction constructs(list, existing) {\n var index = -1\n var before = []\n\n while (++index < list.length) {\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n chunkedSplice(existing, 0, 0, before)\n return existing\n}\n\nmodule.exports = combineExtensions\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar chunkedPush = require('./chunked-push.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\nvar resolveAll = require('./resolve-all.js')\nvar serializeChunks = require('./serialize-chunks.js')\nvar shallow = require('./shallow.js')\nvar sliceChunks = require('./slice-chunks.js')\n\n// Create a tokenizer.\n// Tokenizers deal with one type of data (e.g., containers, flow, text).\n// The parser is the object dealing with it all.\n// `initialize` works like other constructs, except that only its `tokenize`\n// function is used, in which case it doesn’t receive an `ok` or `nok`.\n// `from` can be given to set the point before the first character, although\n// when further lines are indented, they must be set with `defineSkip`.\nfunction createTokenizer(parser, initialize, from) {\n var point = from\n ? shallow(from)\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n var columnStart = {}\n var resolveAllConstructs = []\n var chunks = []\n var stack = []\n\n var effects = {\n consume: consume,\n enter: enter,\n exit: exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n }),\n lazy: constructFactory(onsuccessfulcheck, {\n lazy: true\n })\n } // State and tools for resolving and serializing.\n\n var context = {\n previous: null,\n events: [],\n parser: parser,\n sliceStream: sliceStream,\n sliceSerialize: sliceSerialize,\n now: now,\n defineSkip: skip,\n write: write\n } // The state function.\n\n var state = initialize.tokenize.call(context, effects) // Track which character we expect to be consumed, to catch bugs.\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n } // Store where we are in the input stream.\n\n point._index = 0\n point._bufferIndex = -1\n return context\n\n function write(slice) {\n chunks = chunkedPush(chunks, slice)\n main() // Exit if we’re not done, resolve might change stuff.\n\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n\n addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n } //\n // Tools.\n //\n\n function sliceSerialize(token) {\n return serializeChunks(sliceStream(token))\n }\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n function now() {\n return shallow(point)\n }\n\n function skip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\n //\n // Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n // `consume`).\n // Here is where we walk through the chunks, which either include strings of\n // several characters, or numerical character codes.\n // The reason to do this in a loop instead of a call is so the stack can\n // drain.\n\n function main() {\n var chunkIndex\n var chunk\n\n while (point._index < chunks.length) {\n chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n } // Deal with one code.\n\n function go(code) {\n state = state(code)\n } // Move a character forward.\n\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n } // Start a token.\n\n function enter(type, fields) {\n var token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n } // Stop a token.\n\n function exit(type) {\n var token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n } // Use results.\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n } // Discard results.\n\n function onsuccessfulcheck(construct, info) {\n info.restore()\n } // Factory to attempt/check/interrupt.\n\n function constructFactory(onreturn, fields) {\n return hook // Handle either an object mapping codes to constructs, a list of\n // constructs, or a single construct.\n\n function hook(constructs, returnState, bogusState) {\n var listOfConstructs\n var constructIndex\n var currentConstruct\n var info\n return constructs.tokenize || 'length' in constructs\n ? handleListOfConstructs(miniflat(constructs))\n : handleMapOfConstructs\n\n function handleMapOfConstructs(code) {\n if (code in constructs || null in constructs) {\n return handleListOfConstructs(\n constructs.null\n ? /* c8 ignore next */\n miniflat(constructs[code]).concat(miniflat(constructs.null))\n : constructs[code]\n )(code)\n }\n\n return bogusState(code)\n }\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n return handleConstruct(list[constructIndex])\n }\n\n function handleConstruct(construct) {\n return start\n\n function start(code) {\n // To do: not nede to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.indexOf(construct.name) > -1\n ) {\n return nok()\n }\n\n return construct.tokenize.call(\n fields ? assign({}, context, fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n function ok(code) {\n onreturn(currentConstruct, info)\n return returnState\n }\n\n function nok(code) {\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n\n function addResult(construct, from) {\n if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n chunkedSplice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n\n function store() {\n var startPoint = now()\n var startPrevious = context.previous\n var startCurrentConstruct = context.currentConstruct\n var startEventsIndex = context.events.length\n var startStack = Array.from(stack)\n return {\n restore: restore,\n from: startEventsIndex\n }\n\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n\nmodule.exports = createTokenizer\n","'use strict'\n\nfunction miniflat(value) {\n return value === null || value === undefined\n ? []\n : 'length' in value\n ? value\n : [value]\n}\n\nmodule.exports = miniflat\n","'use strict'\n\n// chunks (replacement characters, tabs, or line endings).\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n return point\n}\n\nmodule.exports = movePoint\n","'use strict'\n\nfunction normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no object method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n\nmodule.exports = normalizeIdentifier\n","'use strict'\n\nvar sizeChunks = require('./size-chunks.js')\n\nfunction prefixSize(events, type) {\n var tail = events[events.length - 1]\n if (!tail || tail[1].type !== type) return 0\n return sizeChunks(tail[2].sliceStream(tail[1]))\n}\n\nmodule.exports = prefixSize\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction regexCheck(regex) {\n return check\n\n function check(code) {\n return regex.test(fromCharCode(code))\n }\n}\n\nmodule.exports = regexCheck\n","'use strict'\n\nfunction resolveAll(constructs, events, context) {\n var called = []\n var index = -1\n var resolve\n\n while (++index < constructs.length) {\n resolve = constructs[index].resolveAll\n\n if (resolve && called.indexOf(resolve) < 0) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n\nmodule.exports = resolveAll\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction safeFromInt(value, base) {\n var code = parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return fromCharCode(code)\n}\n\nmodule.exports = safeFromInt\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction serializeChunks(chunks) {\n var index = -1\n var result = []\n var chunk\n var value\n var atTab\n\n while (++index < chunks.length) {\n chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n value = chunk\n } else if (chunk === -5) {\n value = '\\r'\n } else if (chunk === -4) {\n value = '\\n'\n } else if (chunk === -3) {\n value = '\\r' + '\\n'\n } else if (chunk === -2) {\n value = '\\t'\n } else if (chunk === -1) {\n if (atTab) continue\n value = ' '\n } else {\n // Currently only replacement character.\n value = fromCharCode(chunk)\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n\nmodule.exports = serializeChunks\n","'use strict'\n\nvar assign = require('../constant/assign.js')\n\nfunction shallow(object) {\n return assign({}, object)\n}\n\nmodule.exports = shallow\n","'use strict'\n\n// Counts tabs based on their expanded size, and CR+LF as one character.\n\nfunction sizeChunks(chunks) {\n var index = -1\n var size = 0\n\n while (++index < chunks.length) {\n size += typeof chunks[index] === 'string' ? chunks[index].length : 1\n }\n\n return size\n}\n\nmodule.exports = sizeChunks\n","'use strict'\n\nfunction sliceChunks(chunks, token) {\n var startIndex = token.start._index\n var startBufferIndex = token.start._bufferIndex\n var endIndex = token.end._index\n var endBufferIndex = token.end._bufferIndex\n var view\n\n if (startIndex === endIndex) {\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n\nmodule.exports = sliceChunks\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar shallow = require('./shallow.js')\n\nfunction subtokenize(events) {\n var jumps = {}\n var index = -1\n var event\n var lineIndex\n var otherIndex\n var otherEvent\n var parameters\n var subevents\n var more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1].isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n } // Enter.\n\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container || event[1]._movePreviousLineEndings) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = shallow(events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n\nfunction subcontent(events, eventIndex) {\n var token = events[eventIndex][1]\n var context = events[eventIndex][2]\n var startPosition = eventIndex - 1\n var startPositions = []\n var tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n var childEvents = tokenizer.events\n var jumps = []\n var gaps = {}\n var stream\n var previous\n var index\n var entered\n var end\n var adjust // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (token) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== token) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!token._tokenizer) {\n stream = context.sliceStream(token)\n\n if (!token.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(token.start)\n }\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = token\n token = token.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n token = previous\n index = childEvents.length\n\n while (index--) {\n // Make sure we’ve at least seen something (final eol is part of the last\n // token).\n if (childEvents[index][0] === 'enter') {\n entered = true\n } else if (\n // Find a void token that includes a break.\n entered &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n add(childEvents.slice(index + 1, end))\n // Help GC.\n token._tokenizer = token.next = undefined\n token = token.previous\n end = index + 1\n }\n }\n\n // Help GC.\n tokenizer.events = token._tokenizer = token.next = undefined // Do head:\n\n add(childEvents.slice(0, end))\n index = -1\n adjust = 0\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n\n function add(slice) {\n var start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n chunkedSplice(events, start, 2, slice)\n }\n}\n\nmodule.exports = subtokenize\n","module.exports = require('./lib/emoji');","/*jslint node: true*/\nvar toArray = require('lodash/toArray');\nvar emojiByName = require('./emoji.json');\n\n\"use strict\";\n\n/**\n * regex to parse emoji in a string - finds emoji, e.g. :coffee:\n */\nvar emojiNameRegex = /:([a-zA-Z0-9_\\-\\+]+):/g;\n\n/**\n * regex to trim whitespace\n * use instead of String.prototype.trim() for IE8 support\n */\nvar trimSpaceRegex = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n/**\n * Removes colons on either side\n * of the string if present\n * @param {string} str\n * @return {string}\n */\nfunction stripColons (str) {\n var colonIndex = str.indexOf(':');\n if (colonIndex > -1) {\n // :emoji: (http://www.emoji-cheat-sheet.com/)\n if (colonIndex === str.length - 1) {\n str = str.substring(0, colonIndex);\n return stripColons(str);\n } else {\n str = str.substr(colonIndex + 1);\n return stripColons(str);\n }\n }\n\n return str;\n}\n\n/**\n * Adds colons to either side\n * of the string\n * @param {string} str\n * @return {string}\n */\nfunction wrapColons (str) {\n return (typeof str === 'string' && str.length > 0) ? ':' + str + ':' : str;\n}\n\n/**\n * Ensure that the word is wrapped in colons\n * by only adding them, if they are not there.\n * @param {string} str\n * @return {string}\n */\nfunction ensureColons (str) {\n return (typeof str === 'string' && str[0] !== ':') ? wrapColons(str) : str;\n}\n\n// Non spacing mark, some emoticons have them. It's the 'Variant Form',\n// which provides more information so that emoticons can be rendered as\n// more colorful graphics. FE0E is a unicode text version, where as FE0F\n// should be rendered as a graphical version. The code gracefully degrades.\nvar NON_SPACING_MARK = String.fromCharCode(65039); // 65039 - '️' - 0xFE0F;\nvar nonSpacingRegex = new RegExp(NON_SPACING_MARK, 'g')\n\n// Remove the non-spacing-mark from the code, never send a stripped version\n// to the client, as it kills graphical emoticons.\nfunction stripNSB (code) {\n return code.replace(nonSpacingRegex, '');\n};\n\n// Reversed hash table, where as emojiByName contains a { heart: '❤' }\n// dictionary emojiByCode contains { ❤: 'heart' }. The codes are normalized\n// to the text version.\nvar emojiByCode = Object.keys(emojiByName).reduce(function(h,k) {\n h[stripNSB(emojiByName[k])] = k;\n return h;\n}, {});\n\n/**\n * Emoji namespace\n */\nvar Emoji = {\n emoji: emojiByName,\n};\n\n/**\n * get emoji code from name. return emoji code back if code is passed in.\n * @param {string} emoji\n * @return {string}\n */\nEmoji._get = function _get (emoji) {\n if (emojiByCode[stripNSB(emoji)]) {\n return emoji;\n } else if (emojiByName.hasOwnProperty(emoji)) {\n return emojiByName[emoji];\n }\n\n return ensureColons(emoji);\n};\n\n/**\n * get emoji code from :emoji: string or name\n * @param {string} emoji\n * @return {string}\n */\nEmoji.get = function get (emoji) {\n emoji = stripColons(emoji);\n\n return Emoji._get(emoji);\n};\n\n/**\n * find the emoji by either code or name\n * @param {string} nameOrCode The emoji to find, either `coffee`, `:coffee:` or `☕`;\n * @return {object}\n */\nEmoji.find = function find (nameOrCode) {\n return Emoji.findByName(nameOrCode) || Emoji.findByCode(nameOrCode);\n};\n\n/**\n * find the emoji by name\n * @param {string} name The emoji to find either `coffee` or `:coffee:`;\n * @return {object}\n */\nEmoji.findByName = function findByName (name) {\n var stripped = stripColons(name);\n var emoji = emojiByName[stripped];\n\n return emoji ? ({ emoji: emoji, key: stripped }) : undefined;\n};\n\n/**\n * find the emoji by code (emoji)\n * @param {string} code The emoji to find; for example `☕` or `☔`\n * @return {object}\n */\nEmoji.findByCode = function findByCode (code) {\n var stripped = stripNSB(code);\n var name = emojiByCode[stripped];\n\n // lookup emoji to ensure the Variant Form is returned\n return name ? ({ emoji: emojiByName[name], key: name }) : undefined;\n};\n\n\n/**\n * Check if an emoji is known by this library\n * @param {string} nameOrCode The emoji to validate, either `coffee`, `:coffee:` or `☕`;\n * @return {object}\n */\nEmoji.hasEmoji = function hasEmoji (nameOrCode) {\n return Emoji.hasEmojiByName(nameOrCode) || Emoji.hasEmojiByCode(nameOrCode);\n};\n\n/**\n * Check if an emoji with given name is known by this library\n * @param {string} name The emoji to validate either `coffee` or `:coffee:`;\n * @return {object}\n */\nEmoji.hasEmojiByName = function hasEmojiByName (name) {\n var result = Emoji.findByName(name);\n return !!result && result.key === stripColons(name);\n};\n\n/**\n * Check if a given emoji is known by this library\n * @param {string} code The emoji to validate; for example `☕` or `☔`\n * @return {object}\n */\nEmoji.hasEmojiByCode = function hasEmojiByCode (code) {\n var result = Emoji.findByCode(code);\n return !!result && stripNSB(result.emoji) === stripNSB(code);\n};\n\n/**\n * get emoji name from code\n * @param {string} emoji\n * @param {boolean} includeColons should the result include the ::\n * @return {string}\n */\nEmoji.which = function which (emoji_code, includeColons) {\n var code = stripNSB(emoji_code);\n var word = emojiByCode[code];\n\n return includeColons ? wrapColons(word) : word;\n};\n\n/**\n * emojify a string (replace :emoji: with an emoji)\n * @param {string} str\n * @param {function} on_missing (gets emoji name without :: and returns a proper emoji if no emoji was found)\n * @param {function} format (wrap the returned emoji in a custom element)\n * @return {string}\n */\nEmoji.emojify = function emojify (str, on_missing, format) {\n if (!str) return '';\n\n return str.split(emojiNameRegex) // parse emoji via regex\n .map(function parseEmoji(s, i) {\n // every second element is an emoji, e.g. \"test :fast_forward:\" -> [ \"test \", \"fast_forward\" ]\n if (i % 2 === 0) return s;\n var emoji = Emoji._get(s);\n var isMissing = emoji.indexOf(':') > -1;\n\n if (isMissing && typeof on_missing === 'function') {\n return on_missing(s);\n }\n\n if (!isMissing && typeof format === 'function') {\n return format(emoji, s);\n }\n\n return emoji;\n })\n .join('') // convert back to string\n ;\n};\n\n/**\n * return a random emoji\n * @return {string}\n */\nEmoji.random = function random () {\n var emojiKeys = Object.keys(emojiByName);\n var randomIndex = Math.floor(Math.random() * emojiKeys.length);\n var key = emojiKeys[randomIndex];\n var emoji = Emoji._get(key);\n return { key: key, emoji: emoji };\n}\n\n/**\n * return an collection of potential emoji matches\n * @param {string} str\n * @return {Array.<Object>}\n */\nEmoji.search = function search (str) {\n var emojiKeys = Object.keys(emojiByName);\n var matcher = stripColons(str)\n var matchingKeys = emojiKeys.filter(function(key) {\n return key.toString().indexOf(matcher) === 0;\n });\n return matchingKeys.map(function(key) {\n return {\n key: key,\n emoji: Emoji._get(key),\n };\n });\n}\n\n/**\n * unemojify a string (replace emoji with :emoji:)\n * @param {string} str\n * @return {string}\n */\nEmoji.unemojify = function unemojify (str) {\n if (!str) return '';\n var words = toArray(str);\n\n return words.map(function(word) {\n return Emoji.which(word, true) || word;\n }).join('');\n};\n\n/**\n * replace emojis with replacement value\n * @param {string} str\n * @param {function|string} the string or callback function to replace the emoji with\n * @param {boolean} should trailing whitespaces be cleaned? Defaults false\n * @return {string}\n */\nEmoji.replace = function replace (str, replacement, cleanSpaces) {\n if (!str) return '';\n\n var replace = typeof replacement === 'function' ? replacement : function() { return replacement; };\n var words = toArray(str);\n\n var replaced = words.map(function(word, idx) {\n var emoji = Emoji.findByCode(word);\n\n if (emoji && cleanSpaces && words[idx + 1] === ' ') {\n words[idx + 1] = '';\n }\n\n return emoji ? replace(emoji) : word;\n }).join('');\n\n return cleanSpaces ? replaced.replace(trimSpaceRegex, '') : replaced;\n};\n\n\n/**\n * remove all emojis from a string\n * @param {string} str\n * @return {string}\n */\nEmoji.strip = function strip (str) {\n return Emoji.replace(str, '', true);\n};\n\nmodule.exports = Emoji;\n","'use strict'\n\n/* eslint-env browser */\n\nvar el\n\nvar semicolon = 59 // ';'\n\nmodule.exports = decodeEntity\n\nfunction decodeEntity(characters) {\n var entity = '&' + characters + ';'\n var char\n\n el = el || document.createElement('i')\n el.innerHTML = entity\n char = el.textContent\n\n // Some entities do not require the closing semicolon (`&not` - for instance),\n // which leads to situations where parsing the assumed entity of &notit; will\n // result in the string `¬it;`. When we encounter a trailing semicolon after\n // parsing and the entity to decode was not a semicolon (`&semi;`), we can\n // assume that the matching was incomplete\n if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the entity was not valid\n return char === entity ? false : char\n}\n","'use strict';\n\nconst { DOCUMENT_MODE } = require('./html');\n\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\n\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//'\n];\n\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = QUIRKS_MODE_PUBLIC_ID_PREFIXES.concat([\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//'\n]);\n\nconst QUIRKS_MODE_PUBLIC_IDS = ['-//w3o//dtd w3 html strict 3.0//en//', '-/w3c/dtd html 4.0 transitional/en', 'html'];\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\n\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = LIMITED_QUIRKS_PUBLIC_ID_PREFIXES.concat([\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//'\n]);\n\n//Utils\nfunction enquoteDoctypeId(id) {\n const quote = id.indexOf('\"') !== -1 ? \"'\" : '\"';\n\n return quote + id + quote;\n}\n\nfunction hasPrefix(publicId, prefixes) {\n for (let i = 0; i < prefixes.length; i++) {\n if (publicId.indexOf(prefixes[i]) === 0) {\n return true;\n }\n }\n\n return false;\n}\n\n//API\nexports.isConforming = function(token) {\n return (\n token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID)\n );\n};\n\nexports.getDocumentMode = function(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n const systemId = token.systemId;\n\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n let publicId = token.publicId;\n\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n\n if (QUIRKS_MODE_PUBLIC_IDS.indexOf(publicId) > -1) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n\n return DOCUMENT_MODE.NO_QUIRKS;\n};\n\nexports.serializeContent = function(name, publicId, systemId) {\n let str = '!DOCTYPE ';\n\n if (name) {\n str += name;\n }\n\n if (publicId) {\n str += ' PUBLIC ' + enquoteDoctypeId(publicId);\n } else if (systemId) {\n str += ' SYSTEM';\n }\n\n if (systemId !== null) {\n str += ' ' + enquoteDoctypeId(systemId);\n }\n\n return str;\n};\n","'use strict';\n\nmodule.exports = {\n controlCharacterInInputStream: 'control-character-in-input-stream',\n noncharacterInInputStream: 'noncharacter-in-input-stream',\n surrogateInInputStream: 'surrogate-in-input-stream',\n nonVoidHtmlElementStartTagWithTrailingSolidus: 'non-void-html-element-start-tag-with-trailing-solidus',\n endTagWithAttributes: 'end-tag-with-attributes',\n endTagWithTrailingSolidus: 'end-tag-with-trailing-solidus',\n unexpectedSolidusInTag: 'unexpected-solidus-in-tag',\n unexpectedNullCharacter: 'unexpected-null-character',\n unexpectedQuestionMarkInsteadOfTagName: 'unexpected-question-mark-instead-of-tag-name',\n invalidFirstCharacterOfTagName: 'invalid-first-character-of-tag-name',\n unexpectedEqualsSignBeforeAttributeName: 'unexpected-equals-sign-before-attribute-name',\n missingEndTagName: 'missing-end-tag-name',\n unexpectedCharacterInAttributeName: 'unexpected-character-in-attribute-name',\n unknownNamedCharacterReference: 'unknown-named-character-reference',\n missingSemicolonAfterCharacterReference: 'missing-semicolon-after-character-reference',\n unexpectedCharacterAfterDoctypeSystemIdentifier: 'unexpected-character-after-doctype-system-identifier',\n unexpectedCharacterInUnquotedAttributeValue: 'unexpected-character-in-unquoted-attribute-value',\n eofBeforeTagName: 'eof-before-tag-name',\n eofInTag: 'eof-in-tag',\n missingAttributeValue: 'missing-attribute-value',\n missingWhitespaceBetweenAttributes: 'missing-whitespace-between-attributes',\n missingWhitespaceAfterDoctypePublicKeyword: 'missing-whitespace-after-doctype-public-keyword',\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:\n 'missing-whitespace-between-doctype-public-and-system-identifiers',\n missingWhitespaceAfterDoctypeSystemKeyword: 'missing-whitespace-after-doctype-system-keyword',\n missingQuoteBeforeDoctypePublicIdentifier: 'missing-quote-before-doctype-public-identifier',\n missingQuoteBeforeDoctypeSystemIdentifier: 'missing-quote-before-doctype-system-identifier',\n missingDoctypePublicIdentifier: 'missing-doctype-public-identifier',\n missingDoctypeSystemIdentifier: 'missing-doctype-system-identifier',\n abruptDoctypePublicIdentifier: 'abrupt-doctype-public-identifier',\n abruptDoctypeSystemIdentifier: 'abrupt-doctype-system-identifier',\n cdataInHtmlContent: 'cdata-in-html-content',\n incorrectlyOpenedComment: 'incorrectly-opened-comment',\n eofInScriptHtmlCommentLikeText: 'eof-in-script-html-comment-like-text',\n eofInDoctype: 'eof-in-doctype',\n nestedComment: 'nested-comment',\n abruptClosingOfEmptyComment: 'abrupt-closing-of-empty-comment',\n eofInComment: 'eof-in-comment',\n incorrectlyClosedComment: 'incorrectly-closed-comment',\n eofInCdata: 'eof-in-cdata',\n absenceOfDigitsInNumericCharacterReference: 'absence-of-digits-in-numeric-character-reference',\n nullCharacterReference: 'null-character-reference',\n surrogateCharacterReference: 'surrogate-character-reference',\n characterReferenceOutsideUnicodeRange: 'character-reference-outside-unicode-range',\n controlCharacterReference: 'control-character-reference',\n noncharacterCharacterReference: 'noncharacter-character-reference',\n missingWhitespaceBeforeDoctypeName: 'missing-whitespace-before-doctype-name',\n missingDoctypeName: 'missing-doctype-name',\n invalidCharacterSequenceAfterDoctypeName: 'invalid-character-sequence-after-doctype-name',\n duplicateAttribute: 'duplicate-attribute',\n nonConformingDoctype: 'non-conforming-doctype',\n missingDoctype: 'missing-doctype',\n misplacedDoctype: 'misplaced-doctype',\n endTagWithoutMatchingOpenElement: 'end-tag-without-matching-open-element',\n closingOfElementWithOpenChildElements: 'closing-of-element-with-open-child-elements',\n disallowedContentInNoscriptInHead: 'disallowed-content-in-noscript-in-head',\n openElementsLeftAfterEof: 'open-elements-left-after-eof',\n abandonedHeadElementChild: 'abandoned-head-element-child',\n misplacedStartTagForHeadElement: 'misplaced-start-tag-for-head-element',\n nestedNoscriptInHead: 'nested-noscript-in-head',\n eofInElementThatCanContainOnlyText: 'eof-in-element-that-can-contain-only-text'\n};\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst HTML = require('./html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml'\n};\n\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = {\n attributename: 'attributeName',\n attributetype: 'attributeType',\n basefrequency: 'baseFrequency',\n baseprofile: 'baseProfile',\n calcmode: 'calcMode',\n clippathunits: 'clipPathUnits',\n diffuseconstant: 'diffuseConstant',\n edgemode: 'edgeMode',\n filterunits: 'filterUnits',\n glyphref: 'glyphRef',\n gradienttransform: 'gradientTransform',\n gradientunits: 'gradientUnits',\n kernelmatrix: 'kernelMatrix',\n kernelunitlength: 'kernelUnitLength',\n keypoints: 'keyPoints',\n keysplines: 'keySplines',\n keytimes: 'keyTimes',\n lengthadjust: 'lengthAdjust',\n limitingconeangle: 'limitingConeAngle',\n markerheight: 'markerHeight',\n markerunits: 'markerUnits',\n markerwidth: 'markerWidth',\n maskcontentunits: 'maskContentUnits',\n maskunits: 'maskUnits',\n numoctaves: 'numOctaves',\n pathlength: 'pathLength',\n patterncontentunits: 'patternContentUnits',\n patterntransform: 'patternTransform',\n patternunits: 'patternUnits',\n pointsatx: 'pointsAtX',\n pointsaty: 'pointsAtY',\n pointsatz: 'pointsAtZ',\n preservealpha: 'preserveAlpha',\n preserveaspectratio: 'preserveAspectRatio',\n primitiveunits: 'primitiveUnits',\n refx: 'refX',\n refy: 'refY',\n repeatcount: 'repeatCount',\n repeatdur: 'repeatDur',\n requiredextensions: 'requiredExtensions',\n requiredfeatures: 'requiredFeatures',\n specularconstant: 'specularConstant',\n specularexponent: 'specularExponent',\n spreadmethod: 'spreadMethod',\n startoffset: 'startOffset',\n stddeviation: 'stdDeviation',\n stitchtiles: 'stitchTiles',\n surfacescale: 'surfaceScale',\n systemlanguage: 'systemLanguage',\n tablevalues: 'tableValues',\n targetx: 'targetX',\n targety: 'targetY',\n textlength: 'textLength',\n viewbox: 'viewBox',\n viewtarget: 'viewTarget',\n xchannelselector: 'xChannelSelector',\n ychannelselector: 'yChannelSelector',\n zoomandpan: 'zoomAndPan'\n};\n\nconst XML_ATTRS_ADJUSTMENT_MAP = {\n 'xlink:actuate': { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK },\n 'xlink:arcrole': { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK },\n 'xlink:href': { prefix: 'xlink', name: 'href', namespace: NS.XLINK },\n 'xlink:role': { prefix: 'xlink', name: 'role', namespace: NS.XLINK },\n 'xlink:show': { prefix: 'xlink', name: 'show', namespace: NS.XLINK },\n 'xlink:title': { prefix: 'xlink', name: 'title', namespace: NS.XLINK },\n 'xlink:type': { prefix: 'xlink', name: 'type', namespace: NS.XLINK },\n 'xml:base': { prefix: 'xml', name: 'base', namespace: NS.XML },\n 'xml:lang': { prefix: 'xml', name: 'lang', namespace: NS.XML },\n 'xml:space': { prefix: 'xml', name: 'space', namespace: NS.XML },\n xmlns: { prefix: '', name: 'xmlns', namespace: NS.XMLNS },\n 'xmlns:xlink': { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }\n};\n\n//SVG tag names adjustment map\nconst SVG_TAG_NAMES_ADJUSTMENT_MAP = (exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = {\n altglyph: 'altGlyph',\n altglyphdef: 'altGlyphDef',\n altglyphitem: 'altGlyphItem',\n animatecolor: 'animateColor',\n animatemotion: 'animateMotion',\n animatetransform: 'animateTransform',\n clippath: 'clipPath',\n feblend: 'feBlend',\n fecolormatrix: 'feColorMatrix',\n fecomponenttransfer: 'feComponentTransfer',\n fecomposite: 'feComposite',\n feconvolvematrix: 'feConvolveMatrix',\n fediffuselighting: 'feDiffuseLighting',\n fedisplacementmap: 'feDisplacementMap',\n fedistantlight: 'feDistantLight',\n feflood: 'feFlood',\n fefunca: 'feFuncA',\n fefuncb: 'feFuncB',\n fefuncg: 'feFuncG',\n fefuncr: 'feFuncR',\n fegaussianblur: 'feGaussianBlur',\n feimage: 'feImage',\n femerge: 'feMerge',\n femergenode: 'feMergeNode',\n femorphology: 'feMorphology',\n feoffset: 'feOffset',\n fepointlight: 'fePointLight',\n fespecularlighting: 'feSpecularLighting',\n fespotlight: 'feSpotLight',\n fetile: 'feTile',\n feturbulence: 'feTurbulence',\n foreignobject: 'foreignObject',\n glyphref: 'glyphRef',\n lineargradient: 'linearGradient',\n radialgradient: 'radialGradient',\n textpath: 'textPath'\n});\n\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = {\n [$.B]: true,\n [$.BIG]: true,\n [$.BLOCKQUOTE]: true,\n [$.BODY]: true,\n [$.BR]: true,\n [$.CENTER]: true,\n [$.CODE]: true,\n [$.DD]: true,\n [$.DIV]: true,\n [$.DL]: true,\n [$.DT]: true,\n [$.EM]: true,\n [$.EMBED]: true,\n [$.H1]: true,\n [$.H2]: true,\n [$.H3]: true,\n [$.H4]: true,\n [$.H5]: true,\n [$.H6]: true,\n [$.HEAD]: true,\n [$.HR]: true,\n [$.I]: true,\n [$.IMG]: true,\n [$.LI]: true,\n [$.LISTING]: true,\n [$.MENU]: true,\n [$.META]: true,\n [$.NOBR]: true,\n [$.OL]: true,\n [$.P]: true,\n [$.PRE]: true,\n [$.RUBY]: true,\n [$.S]: true,\n [$.SMALL]: true,\n [$.SPAN]: true,\n [$.STRONG]: true,\n [$.STRIKE]: true,\n [$.SUB]: true,\n [$.SUP]: true,\n [$.TABLE]: true,\n [$.TT]: true,\n [$.U]: true,\n [$.UL]: true,\n [$.VAR]: true\n};\n\n//Check exit from foreign content\nexports.causesExit = function(startTagToken) {\n const tn = startTagToken.tagName;\n const isFontWithAttrs =\n tn === $.FONT &&\n (Tokenizer.getTokenAttr(startTagToken, ATTRS.COLOR) !== null ||\n Tokenizer.getTokenAttr(startTagToken, ATTRS.SIZE) !== null ||\n Tokenizer.getTokenAttr(startTagToken, ATTRS.FACE) !== null);\n\n return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT[tn];\n};\n\n//Token adjustments\nexports.adjustTokenMathMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n};\n\nexports.adjustTokenSVGAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n if (adjustedAttrName) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n};\n\nexports.adjustTokenXMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n};\n\nexports.adjustTokenSVGTagName = function(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP[token.tagName];\n\n if (adjustedTagName) {\n token.tagName = adjustedTagName;\n }\n};\n\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\n\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\n\nexports.isIntegrationPoint = function(tn, ns, attrs, foreignNS) {\n if ((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) {\n return true;\n }\n\n if ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)) {\n return true;\n }\n\n return false;\n};\n","'use strict';\n\nconst NS = (exports.NAMESPACES = {\n HTML: 'http://www.w3.org/1999/xhtml',\n MATHML: 'http://www.w3.org/1998/Math/MathML',\n SVG: 'http://www.w3.org/2000/svg',\n XLINK: 'http://www.w3.org/1999/xlink',\n XML: 'http://www.w3.org/XML/1998/namespace',\n XMLNS: 'http://www.w3.org/2000/xmlns/'\n});\n\nexports.ATTRS = {\n TYPE: 'type',\n ACTION: 'action',\n ENCODING: 'encoding',\n PROMPT: 'prompt',\n NAME: 'name',\n COLOR: 'color',\n FACE: 'face',\n SIZE: 'size'\n};\n\nexports.DOCUMENT_MODE = {\n NO_QUIRKS: 'no-quirks',\n QUIRKS: 'quirks',\n LIMITED_QUIRKS: 'limited-quirks'\n};\n\nconst $ = (exports.TAG_NAMES = {\n A: 'a',\n ADDRESS: 'address',\n ANNOTATION_XML: 'annotation-xml',\n APPLET: 'applet',\n AREA: 'area',\n ARTICLE: 'article',\n ASIDE: 'aside',\n\n B: 'b',\n BASE: 'base',\n BASEFONT: 'basefont',\n BGSOUND: 'bgsound',\n BIG: 'big',\n BLOCKQUOTE: 'blockquote',\n BODY: 'body',\n BR: 'br',\n BUTTON: 'button',\n\n CAPTION: 'caption',\n CENTER: 'center',\n CODE: 'code',\n COL: 'col',\n COLGROUP: 'colgroup',\n\n DD: 'dd',\n DESC: 'desc',\n DETAILS: 'details',\n DIALOG: 'dialog',\n DIR: 'dir',\n DIV: 'div',\n DL: 'dl',\n DT: 'dt',\n\n EM: 'em',\n EMBED: 'embed',\n\n FIELDSET: 'fieldset',\n FIGCAPTION: 'figcaption',\n FIGURE: 'figure',\n FONT: 'font',\n FOOTER: 'footer',\n FOREIGN_OBJECT: 'foreignObject',\n FORM: 'form',\n FRAME: 'frame',\n FRAMESET: 'frameset',\n\n H1: 'h1',\n H2: 'h2',\n H3: 'h3',\n H4: 'h4',\n H5: 'h5',\n H6: 'h6',\n HEAD: 'head',\n HEADER: 'header',\n HGROUP: 'hgroup',\n HR: 'hr',\n HTML: 'html',\n\n I: 'i',\n IMG: 'img',\n IMAGE: 'image',\n INPUT: 'input',\n IFRAME: 'iframe',\n\n KEYGEN: 'keygen',\n\n LABEL: 'label',\n LI: 'li',\n LINK: 'link',\n LISTING: 'listing',\n\n MAIN: 'main',\n MALIGNMARK: 'malignmark',\n MARQUEE: 'marquee',\n MATH: 'math',\n MENU: 'menu',\n META: 'meta',\n MGLYPH: 'mglyph',\n MI: 'mi',\n MO: 'mo',\n MN: 'mn',\n MS: 'ms',\n MTEXT: 'mtext',\n\n NAV: 'nav',\n NOBR: 'nobr',\n NOFRAMES: 'noframes',\n NOEMBED: 'noembed',\n NOSCRIPT: 'noscript',\n\n OBJECT: 'object',\n OL: 'ol',\n OPTGROUP: 'optgroup',\n OPTION: 'option',\n\n P: 'p',\n PARAM: 'param',\n PLAINTEXT: 'plaintext',\n PRE: 'pre',\n\n RB: 'rb',\n RP: 'rp',\n RT: 'rt',\n RTC: 'rtc',\n RUBY: 'ruby',\n\n S: 's',\n SCRIPT: 'script',\n SECTION: 'section',\n SELECT: 'select',\n SOURCE: 'source',\n SMALL: 'small',\n SPAN: 'span',\n STRIKE: 'strike',\n STRONG: 'strong',\n STYLE: 'style',\n SUB: 'sub',\n SUMMARY: 'summary',\n SUP: 'sup',\n\n TABLE: 'table',\n TBODY: 'tbody',\n TEMPLATE: 'template',\n TEXTAREA: 'textarea',\n TFOOT: 'tfoot',\n TD: 'td',\n TH: 'th',\n THEAD: 'thead',\n TITLE: 'title',\n TR: 'tr',\n TRACK: 'track',\n TT: 'tt',\n\n U: 'u',\n UL: 'ul',\n\n SVG: 'svg',\n\n VAR: 'var',\n\n WBR: 'wbr',\n\n XMP: 'xmp'\n});\n\nexports.SPECIAL_ELEMENTS = {\n [NS.HTML]: {\n [$.ADDRESS]: true,\n [$.APPLET]: true,\n [$.AREA]: true,\n [$.ARTICLE]: true,\n [$.ASIDE]: true,\n [$.BASE]: true,\n [$.BASEFONT]: true,\n [$.BGSOUND]: true,\n [$.BLOCKQUOTE]: true,\n [$.BODY]: true,\n [$.BR]: true,\n [$.BUTTON]: true,\n [$.CAPTION]: true,\n [$.CENTER]: true,\n [$.COL]: true,\n [$.COLGROUP]: true,\n [$.DD]: true,\n [$.DETAILS]: true,\n [$.DIR]: true,\n [$.DIV]: true,\n [$.DL]: true,\n [$.DT]: true,\n [$.EMBED]: true,\n [$.FIELDSET]: true,\n [$.FIGCAPTION]: true,\n [$.FIGURE]: true,\n [$.FOOTER]: true,\n [$.FORM]: true,\n [$.FRAME]: true,\n [$.FRAMESET]: true,\n [$.H1]: true,\n [$.H2]: true,\n [$.H3]: true,\n [$.H4]: true,\n [$.H5]: true,\n [$.H6]: true,\n [$.HEAD]: true,\n [$.HEADER]: true,\n [$.HGROUP]: true,\n [$.HR]: true,\n [$.HTML]: true,\n [$.IFRAME]: true,\n [$.IMG]: true,\n [$.INPUT]: true,\n [$.LI]: true,\n [$.LINK]: true,\n [$.LISTING]: true,\n [$.MAIN]: true,\n [$.MARQUEE]: true,\n [$.MENU]: true,\n [$.META]: true,\n [$.NAV]: true,\n [$.NOEMBED]: true,\n [$.NOFRAMES]: true,\n [$.NOSCRIPT]: true,\n [$.OBJECT]: true,\n [$.OL]: true,\n [$.P]: true,\n [$.PARAM]: true,\n [$.PLAINTEXT]: true,\n [$.PRE]: true,\n [$.SCRIPT]: true,\n [$.SECTION]: true,\n [$.SELECT]: true,\n [$.SOURCE]: true,\n [$.STYLE]: true,\n [$.SUMMARY]: true,\n [$.TABLE]: true,\n [$.TBODY]: true,\n [$.TD]: true,\n [$.TEMPLATE]: true,\n [$.TEXTAREA]: true,\n [$.TFOOT]: true,\n [$.TH]: true,\n [$.THEAD]: true,\n [$.TITLE]: true,\n [$.TR]: true,\n [$.TRACK]: true,\n [$.UL]: true,\n [$.WBR]: true,\n [$.XMP]: true\n },\n [NS.MATHML]: {\n [$.MI]: true,\n [$.MO]: true,\n [$.MN]: true,\n [$.MS]: true,\n [$.MTEXT]: true,\n [$.ANNOTATION_XML]: true\n },\n [NS.SVG]: {\n [$.TITLE]: true,\n [$.FOREIGN_OBJECT]: true,\n [$.DESC]: true\n }\n};\n","'use strict';\n\nconst UNDEFINED_CODE_POINTS = [\n 0xfffe,\n 0xffff,\n 0x1fffe,\n 0x1ffff,\n 0x2fffe,\n 0x2ffff,\n 0x3fffe,\n 0x3ffff,\n 0x4fffe,\n 0x4ffff,\n 0x5fffe,\n 0x5ffff,\n 0x6fffe,\n 0x6ffff,\n 0x7fffe,\n 0x7ffff,\n 0x8fffe,\n 0x8ffff,\n 0x9fffe,\n 0x9ffff,\n 0xafffe,\n 0xaffff,\n 0xbfffe,\n 0xbffff,\n 0xcfffe,\n 0xcffff,\n 0xdfffe,\n 0xdffff,\n 0xefffe,\n 0xeffff,\n 0xffffe,\n 0xfffff,\n 0x10fffe,\n 0x10ffff\n];\n\nexports.REPLACEMENT_CHARACTER = '\\uFFFD';\n\nexports.CODE_POINTS = {\n EOF: -1,\n NULL: 0x00,\n TABULATION: 0x09,\n CARRIAGE_RETURN: 0x0d,\n LINE_FEED: 0x0a,\n FORM_FEED: 0x0c,\n SPACE: 0x20,\n EXCLAMATION_MARK: 0x21,\n QUOTATION_MARK: 0x22,\n NUMBER_SIGN: 0x23,\n AMPERSAND: 0x26,\n APOSTROPHE: 0x27,\n HYPHEN_MINUS: 0x2d,\n SOLIDUS: 0x2f,\n DIGIT_0: 0x30,\n DIGIT_9: 0x39,\n SEMICOLON: 0x3b,\n LESS_THAN_SIGN: 0x3c,\n EQUALS_SIGN: 0x3d,\n GREATER_THAN_SIGN: 0x3e,\n QUESTION_MARK: 0x3f,\n LATIN_CAPITAL_A: 0x41,\n LATIN_CAPITAL_F: 0x46,\n LATIN_CAPITAL_X: 0x58,\n LATIN_CAPITAL_Z: 0x5a,\n RIGHT_SQUARE_BRACKET: 0x5d,\n GRAVE_ACCENT: 0x60,\n LATIN_SMALL_A: 0x61,\n LATIN_SMALL_F: 0x66,\n LATIN_SMALL_X: 0x78,\n LATIN_SMALL_Z: 0x7a,\n REPLACEMENT_CHARACTER: 0xfffd\n};\n\nexports.CODE_POINT_SEQUENCES = {\n DASH_DASH_STRING: [0x2d, 0x2d], //--\n DOCTYPE_STRING: [0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45], //DOCTYPE\n CDATA_START_STRING: [0x5b, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5b], //[CDATA[\n SCRIPT_STRING: [0x73, 0x63, 0x72, 0x69, 0x70, 0x74], //script\n PUBLIC_STRING: [0x50, 0x55, 0x42, 0x4c, 0x49, 0x43], //PUBLIC\n SYSTEM_STRING: [0x53, 0x59, 0x53, 0x54, 0x45, 0x4d] //SYSTEM\n};\n\n//Surrogates\nexports.isSurrogate = function(cp) {\n return cp >= 0xd800 && cp <= 0xdfff;\n};\n\nexports.isSurrogatePair = function(cp) {\n return cp >= 0xdc00 && cp <= 0xdfff;\n};\n\nexports.getSurrogatePairCodePoint = function(cp1, cp2) {\n return (cp1 - 0xd800) * 0x400 + 0x2400 + cp2;\n};\n\n//NOTE: excluding NULL and ASCII whitespace\nexports.isControlCodePoint = function(cp) {\n return (\n (cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f)\n );\n};\n\nexports.isUndefinedCodePoint = function(cp) {\n return (cp >= 0xfdd0 && cp <= 0xfdef) || UNDEFINED_CODE_POINTS.indexOf(cp) > -1;\n};\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingMixinBase extends Mixin {\n constructor(host, opts) {\n super(host);\n\n this.posTracker = null;\n this.onParseError = opts.onParseError;\n }\n\n _setErrorLocation(err) {\n err.startLine = err.endLine = this.posTracker.line;\n err.startCol = err.endCol = this.posTracker.col;\n err.startOffset = err.endOffset = this.posTracker.offset;\n }\n\n _reportError(code) {\n const err = {\n code: code,\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n\n this._setErrorLocation(err);\n this.onParseError(err);\n }\n\n _getOverriddenMethods(mxn) {\n return {\n _err(code) {\n mxn._reportError(code);\n }\n };\n }\n}\n\nmodule.exports = ErrorReportingMixinBase;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoTokenizerMixin = require('../location-info/tokenizer-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingParserMixin extends ErrorReportingMixinBase {\n constructor(parser, opts) {\n super(parser, opts);\n\n this.opts = opts;\n this.ctLoc = null;\n this.locBeforeToken = false;\n }\n\n _setErrorLocation(err) {\n if (this.ctLoc) {\n err.startLine = this.ctLoc.startLine;\n err.startCol = this.ctLoc.startCol;\n err.startOffset = this.ctLoc.startOffset;\n\n err.endLine = this.locBeforeToken ? this.ctLoc.startLine : this.ctLoc.endLine;\n err.endCol = this.locBeforeToken ? this.ctLoc.startCol : this.ctLoc.endCol;\n err.endOffset = this.locBeforeToken ? this.ctLoc.startOffset : this.ctLoc.endOffset;\n }\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document, fragmentContext) {\n orig._bootstrap.call(this, document, fragmentContext);\n\n Mixin.install(this.tokenizer, ErrorReportingTokenizerMixin, mxn.opts);\n Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n },\n\n _processInputToken(token) {\n mxn.ctLoc = token.location;\n\n orig._processInputToken.call(this, token);\n },\n\n _err(code, options) {\n mxn.locBeforeToken = options && options.beforeToken;\n mxn._reportError(code);\n }\n };\n }\n}\n\nmodule.exports = ErrorReportingParserMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingPreprocessorMixin extends ErrorReportingMixinBase {\n constructor(preprocessor, opts) {\n super(preprocessor, opts);\n\n this.posTracker = Mixin.install(preprocessor, PositionTrackingPreprocessorMixin);\n this.lastErrOffset = -1;\n }\n\n _reportError(code) {\n //NOTE: avoid reporting error twice on advance/retreat\n if (this.lastErrOffset !== this.posTracker.offset) {\n this.lastErrOffset = this.posTracker.offset;\n super._reportError(code);\n }\n }\n}\n\nmodule.exports = ErrorReportingPreprocessorMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingPreprocessorMixin = require('./preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingTokenizerMixin extends ErrorReportingMixinBase {\n constructor(tokenizer, opts) {\n super(tokenizer, opts);\n\n const preprocessorMixin = Mixin.install(tokenizer.preprocessor, ErrorReportingPreprocessorMixin, opts);\n\n this.posTracker = preprocessorMixin.posTracker;\n }\n}\n\nmodule.exports = ErrorReportingTokenizerMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass LocationInfoOpenElementStackMixin extends Mixin {\n constructor(stack, opts) {\n super(stack);\n\n this.onItemPop = opts.onItemPop;\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n pop() {\n mxn.onItemPop(this.current);\n orig.pop.call(this);\n },\n\n popAllUpToHtmlElement() {\n for (let i = this.stackTop; i > 0; i--) {\n mxn.onItemPop(this.items[i]);\n }\n\n orig.popAllUpToHtmlElement.call(this);\n },\n\n remove(element) {\n mxn.onItemPop(this.current);\n orig.remove.call(this, element);\n }\n };\n }\n}\n\nmodule.exports = LocationInfoOpenElementStackMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst LocationInfoTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoOpenElementStackMixin = require('./open-element-stack-mixin');\nconst HTML = require('../../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\n\nclass LocationInfoParserMixin extends Mixin {\n constructor(parser) {\n super(parser);\n\n this.parser = parser;\n this.treeAdapter = this.parser.treeAdapter;\n this.posTracker = null;\n this.lastStartTagToken = null;\n this.lastFosterParentingLocation = null;\n this.currentToken = null;\n }\n\n _setStartLocation(element) {\n let loc = null;\n\n if (this.lastStartTagToken) {\n loc = Object.assign({}, this.lastStartTagToken.location);\n loc.startTag = this.lastStartTagToken.location;\n }\n\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n\n _setEndLocation(element, closingToken) {\n const loc = this.treeAdapter.getNodeSourceCodeLocation(element);\n\n if (loc) {\n if (closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n\n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n const isClosingEndTag = closingToken.type === Tokenizer.END_TAG_TOKEN && tn === closingToken.tagName;\n const endLoc = {};\n if (isClosingEndTag) {\n endLoc.endTag = Object.assign({}, ctLoc);\n endLoc.endLine = ctLoc.endLine;\n endLoc.endCol = ctLoc.endCol;\n endLoc.endOffset = ctLoc.endOffset;\n } else {\n endLoc.endLine = ctLoc.startLine;\n endLoc.endCol = ctLoc.startCol;\n endLoc.endOffset = ctLoc.startOffset;\n }\n\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document, fragmentContext) {\n orig._bootstrap.call(this, document, fragmentContext);\n\n mxn.lastStartTagToken = null;\n mxn.lastFosterParentingLocation = null;\n mxn.currentToken = null;\n\n const tokenizerMixin = Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n\n mxn.posTracker = tokenizerMixin.posTracker;\n\n Mixin.install(this.openElements, LocationInfoOpenElementStackMixin, {\n onItemPop: function(element) {\n mxn._setEndLocation(element, mxn.currentToken);\n }\n });\n },\n\n _runParsingLoop(scriptHandler) {\n orig._runParsingLoop.call(this, scriptHandler);\n\n // NOTE: generate location info for elements\n // that remains on open element stack\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n mxn._setEndLocation(this.openElements.items[i], mxn.currentToken);\n }\n },\n\n //Token processing\n _processTokenInForeignContent(token) {\n mxn.currentToken = token;\n orig._processTokenInForeignContent.call(this, token);\n },\n\n _processToken(token) {\n mxn.currentToken = token;\n orig._processToken.call(this, token);\n\n //NOTE: <body> and <html> are never popped from the stack, so we need to updated\n //their end location explicitly.\n const requireExplicitUpdate =\n token.type === Tokenizer.END_TAG_TOKEN &&\n (token.tagName === $.HTML || (token.tagName === $.BODY && this.openElements.hasInScope($.BODY)));\n\n if (requireExplicitUpdate) {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const element = this.openElements.items[i];\n\n if (this.treeAdapter.getTagName(element) === token.tagName) {\n mxn._setEndLocation(element, token);\n break;\n }\n }\n }\n },\n\n //Doctype\n _setDocumentType(token) {\n orig._setDocumentType.call(this, token);\n\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const cnLength = documentChildren.length;\n\n for (let i = 0; i < cnLength; i++) {\n const node = documentChildren[i];\n\n if (this.treeAdapter.isDocumentTypeNode(node)) {\n this.treeAdapter.setNodeSourceCodeLocation(node, token.location);\n break;\n }\n }\n },\n\n //Elements\n _attachElementToTree(element) {\n //NOTE: _attachElementToTree is called from _appendElement, _insertElement and _insertTemplate methods.\n //So we will use token location stored in this methods for the element.\n mxn._setStartLocation(element);\n mxn.lastStartTagToken = null;\n orig._attachElementToTree.call(this, element);\n },\n\n _appendElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._appendElement.call(this, token, namespaceURI);\n },\n\n _insertElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._insertElement.call(this, token, namespaceURI);\n },\n\n _insertTemplate(token) {\n mxn.lastStartTagToken = token;\n orig._insertTemplate.call(this, token);\n\n const tmplContent = this.treeAdapter.getTemplateContent(this.openElements.current);\n\n this.treeAdapter.setNodeSourceCodeLocation(tmplContent, null);\n },\n\n _insertFakeRootElement() {\n orig._insertFakeRootElement.call(this);\n this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current, null);\n },\n\n //Comments\n _appendCommentNode(token, parent) {\n orig._appendCommentNode.call(this, token, parent);\n\n const children = this.treeAdapter.getChildNodes(parent);\n const commentNode = children[children.length - 1];\n\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n },\n\n //Text\n _findFosterParentingLocation() {\n //NOTE: store last foster parenting location, so we will be able to find inserted text\n //in case of foster parenting\n mxn.lastFosterParentingLocation = orig._findFosterParentingLocation.call(this);\n\n return mxn.lastFosterParentingLocation;\n },\n\n _insertCharacters(token) {\n orig._insertCharacters.call(this, token);\n\n const hasFosterParent = this._shouldFosterParentOnInsertion();\n\n const parent =\n (hasFosterParent && mxn.lastFosterParentingLocation.parent) ||\n this.openElements.currentTmplContent ||\n this.openElements.current;\n\n const siblings = this.treeAdapter.getChildNodes(parent);\n\n const textNodeIdx =\n hasFosterParent && mxn.lastFosterParentingLocation.beforeElement\n ? siblings.indexOf(mxn.lastFosterParentingLocation.beforeElement) - 1\n : siblings.length - 1;\n\n const textNode = siblings[textNodeIdx];\n\n //NOTE: if we have location assigned by another token, then just update end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n } else {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n };\n }\n}\n\nmodule.exports = LocationInfoParserMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\n\nclass LocationInfoTokenizerMixin extends Mixin {\n constructor(tokenizer) {\n super(tokenizer);\n\n this.tokenizer = tokenizer;\n this.posTracker = Mixin.install(tokenizer.preprocessor, PositionTrackingPreprocessorMixin);\n this.currentAttrLocation = null;\n this.ctLoc = null;\n }\n\n _getCurrentLocation() {\n return {\n startLine: this.posTracker.line,\n startCol: this.posTracker.col,\n startOffset: this.posTracker.offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n }\n\n _attachCurrentAttrLocationInfo() {\n this.currentAttrLocation.endLine = this.posTracker.line;\n this.currentAttrLocation.endCol = this.posTracker.col;\n this.currentAttrLocation.endOffset = this.posTracker.offset;\n\n const currentToken = this.tokenizer.currentToken;\n const currentAttr = this.tokenizer.currentAttr;\n\n if (!currentToken.location.attrs) {\n currentToken.location.attrs = Object.create(null);\n }\n\n currentToken.location.attrs[currentAttr.name] = this.currentAttrLocation;\n }\n\n _getOverriddenMethods(mxn, orig) {\n const methods = {\n _createStartTagToken() {\n orig._createStartTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createEndTagToken() {\n orig._createEndTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createCommentToken() {\n orig._createCommentToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createDoctypeToken(initialName) {\n orig._createDoctypeToken.call(this, initialName);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createCharacterToken(type, ch) {\n orig._createCharacterToken.call(this, type, ch);\n this.currentCharacterToken.location = mxn.ctLoc;\n },\n\n _createEOFToken() {\n orig._createEOFToken.call(this);\n this.currentToken.location = mxn._getCurrentLocation();\n },\n\n _createAttr(attrNameFirstCh) {\n orig._createAttr.call(this, attrNameFirstCh);\n mxn.currentAttrLocation = mxn._getCurrentLocation();\n },\n\n _leaveAttrName(toState) {\n orig._leaveAttrName.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n\n _leaveAttrValue(toState) {\n orig._leaveAttrValue.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n\n _emitCurrentToken() {\n const ctLoc = this.currentToken.location;\n\n //NOTE: if we have pending character token make it's end location equal to the\n //current token's start location.\n if (this.currentCharacterToken) {\n this.currentCharacterToken.location.endLine = ctLoc.startLine;\n this.currentCharacterToken.location.endCol = ctLoc.startCol;\n this.currentCharacterToken.location.endOffset = ctLoc.startOffset;\n }\n\n if (this.currentToken.type === Tokenizer.EOF_TOKEN) {\n ctLoc.endLine = ctLoc.startLine;\n ctLoc.endCol = ctLoc.startCol;\n ctLoc.endOffset = ctLoc.startOffset;\n } else {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col + 1;\n ctLoc.endOffset = mxn.posTracker.offset + 1;\n }\n\n orig._emitCurrentToken.call(this);\n },\n\n _emitCurrentCharacterToken() {\n const ctLoc = this.currentCharacterToken && this.currentCharacterToken.location;\n\n //NOTE: if we have character token and it's location wasn't set in the _emitCurrentToken(),\n //then set it's location at the current preprocessor position.\n //We don't need to increment preprocessor position, since character token\n //emission is always forced by the start of the next character token here.\n //So, we already have advanced position.\n if (ctLoc && ctLoc.endOffset === -1) {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col;\n ctLoc.endOffset = mxn.posTracker.offset;\n }\n\n orig._emitCurrentCharacterToken.call(this);\n }\n };\n\n //NOTE: patch initial states for each mode to obtain token start position\n Object.keys(Tokenizer.MODE).forEach(modeName => {\n const state = Tokenizer.MODE[modeName];\n\n methods[state] = function(cp) {\n mxn.ctLoc = mxn._getCurrentLocation();\n orig[state].call(this, cp);\n };\n });\n\n return methods;\n }\n}\n\nmodule.exports = LocationInfoTokenizerMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass PositionTrackingPreprocessorMixin extends Mixin {\n constructor(preprocessor) {\n super(preprocessor);\n\n this.preprocessor = preprocessor;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n\n this.offset = 0;\n this.col = 0;\n this.line = 1;\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n advance() {\n const pos = this.pos + 1;\n const ch = this.html[pos];\n\n //NOTE: LF should be in the last column of the line\n if (mxn.isEol) {\n mxn.isEol = false;\n mxn.line++;\n mxn.lineStartPos = pos;\n }\n\n if (ch === '\\n' || (ch === '\\r' && this.html[pos + 1] !== '\\n')) {\n mxn.isEol = true;\n }\n\n mxn.col = pos - mxn.lineStartPos + 1;\n mxn.offset = mxn.droppedBufferSize + pos;\n\n return orig.advance.call(this);\n },\n\n retreat() {\n orig.retreat.call(this);\n\n mxn.isEol = false;\n mxn.col = this.pos - mxn.lineStartPos + 1;\n },\n\n dropParsedChunk() {\n const prevPos = this.pos;\n\n orig.dropParsedChunk.call(this);\n\n const reduction = prevPos - this.pos;\n\n mxn.lineStartPos -= reduction;\n mxn.droppedBufferSize += reduction;\n mxn.offset = mxn.droppedBufferSize + this.pos;\n }\n };\n }\n}\n\nmodule.exports = PositionTrackingPreprocessorMixin;\n","'use strict';\n\n//Const\nconst NOAH_ARK_CAPACITY = 3;\n\n//List of formatting elements\nclass FormattingElementList {\n constructor(treeAdapter) {\n this.length = 0;\n this.entries = [];\n this.treeAdapter = treeAdapter;\n this.bookmark = null;\n }\n\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement) {\n const candidates = [];\n\n if (this.length >= NOAH_ARK_CAPACITY) {\n const neAttrsLength = this.treeAdapter.getAttrList(newElement).length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n\n const element = entry.element;\n const elementAttrs = this.treeAdapter.getAttrList(element);\n\n const isCandidate =\n this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI &&\n elementAttrs.length === neAttrsLength;\n\n if (isCandidate) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n\n return candidates.length < NOAH_ARK_CAPACITY ? [] : candidates;\n }\n\n _ensureNoahArkCondition(newElement) {\n const candidates = this._getNoahArkConditionCandidates(newElement);\n let cLength = candidates.length;\n\n if (cLength) {\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const neAttrsLength = neAttrs.length;\n const neAttrsMap = Object.create(null);\n\n //NOTE: build attrs map for the new element so we can perform fast lookups\n for (let i = 0; i < neAttrsLength; i++) {\n const neAttr = neAttrs[i];\n\n neAttrsMap[neAttr.name] = neAttr.value;\n }\n\n for (let i = 0; i < neAttrsLength; i++) {\n for (let j = 0; j < cLength; j++) {\n const cAttr = candidates[j].attrs[i];\n\n if (neAttrsMap[cAttr.name] !== cAttr.value) {\n candidates.splice(j, 1);\n cLength--;\n }\n\n if (candidates.length < NOAH_ARK_CAPACITY) {\n return;\n }\n }\n }\n\n //NOTE: remove bottommost candidates until Noah's Ark condition will not be met\n for (let i = cLength - 1; i >= NOAH_ARK_CAPACITY - 1; i--) {\n this.entries.splice(candidates[i].idx, 1);\n this.length--;\n }\n }\n }\n\n //Mutations\n insertMarker() {\n this.entries.push({ type: FormattingElementList.MARKER_ENTRY });\n this.length++;\n }\n\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n\n this.entries.push({\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element,\n token: token\n });\n\n this.length++;\n }\n\n insertElementAfterBookmark(element, token) {\n let bookmarkIdx = this.length - 1;\n\n for (; bookmarkIdx >= 0; bookmarkIdx--) {\n if (this.entries[bookmarkIdx] === this.bookmark) {\n break;\n }\n }\n\n this.entries.splice(bookmarkIdx + 1, 0, {\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element,\n token: token\n });\n\n this.length++;\n }\n\n removeEntry(entry) {\n for (let i = this.length - 1; i >= 0; i--) {\n if (this.entries[i] === entry) {\n this.entries.splice(i, 1);\n this.length--;\n break;\n }\n }\n }\n\n clearToLastMarker() {\n while (this.length) {\n const entry = this.entries.pop();\n\n this.length--;\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n }\n }\n\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n return null;\n }\n\n if (this.treeAdapter.getTagName(entry.element) === tagName) {\n return entry;\n }\n }\n\n return null;\n }\n\n getElementEntry(element) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.ELEMENT_ENTRY && entry.element === element) {\n return entry;\n }\n }\n\n return null;\n }\n}\n\n//Entry types\nFormattingElementList.MARKER_ENTRY = 'MARKER_ENTRY';\nFormattingElementList.ELEMENT_ENTRY = 'ELEMENT_ENTRY';\n\nmodule.exports = FormattingElementList;\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst OpenElementStack = require('./open-element-stack');\nconst FormattingElementList = require('./formatting-element-list');\nconst LocationInfoParserMixin = require('../extensions/location-info/parser-mixin');\nconst ErrorReportingParserMixin = require('../extensions/error-reporting/parser-mixin');\nconst Mixin = require('../utils/mixin');\nconst defaultTreeAdapter = require('../tree-adapters/default');\nconst mergeOptions = require('../utils/merge-options');\nconst doctype = require('../common/doctype');\nconst foreignContent = require('../common/foreign-content');\nconst ERR = require('../common/error-codes');\nconst unicode = require('../common/unicode');\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\nconst DEFAULT_OPTIONS = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n onParseError: null,\n treeAdapter: defaultTreeAdapter\n};\n\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n\n//Insertion modes\nconst INITIAL_MODE = 'INITIAL_MODE';\nconst BEFORE_HTML_MODE = 'BEFORE_HTML_MODE';\nconst BEFORE_HEAD_MODE = 'BEFORE_HEAD_MODE';\nconst IN_HEAD_MODE = 'IN_HEAD_MODE';\nconst IN_HEAD_NO_SCRIPT_MODE = 'IN_HEAD_NO_SCRIPT_MODE';\nconst AFTER_HEAD_MODE = 'AFTER_HEAD_MODE';\nconst IN_BODY_MODE = 'IN_BODY_MODE';\nconst TEXT_MODE = 'TEXT_MODE';\nconst IN_TABLE_MODE = 'IN_TABLE_MODE';\nconst IN_TABLE_TEXT_MODE = 'IN_TABLE_TEXT_MODE';\nconst IN_CAPTION_MODE = 'IN_CAPTION_MODE';\nconst IN_COLUMN_GROUP_MODE = 'IN_COLUMN_GROUP_MODE';\nconst IN_TABLE_BODY_MODE = 'IN_TABLE_BODY_MODE';\nconst IN_ROW_MODE = 'IN_ROW_MODE';\nconst IN_CELL_MODE = 'IN_CELL_MODE';\nconst IN_SELECT_MODE = 'IN_SELECT_MODE';\nconst IN_SELECT_IN_TABLE_MODE = 'IN_SELECT_IN_TABLE_MODE';\nconst IN_TEMPLATE_MODE = 'IN_TEMPLATE_MODE';\nconst AFTER_BODY_MODE = 'AFTER_BODY_MODE';\nconst IN_FRAMESET_MODE = 'IN_FRAMESET_MODE';\nconst AFTER_FRAMESET_MODE = 'AFTER_FRAMESET_MODE';\nconst AFTER_AFTER_BODY_MODE = 'AFTER_AFTER_BODY_MODE';\nconst AFTER_AFTER_FRAMESET_MODE = 'AFTER_AFTER_FRAMESET_MODE';\n\n//Insertion mode reset map\nconst INSERTION_MODE_RESET_MAP = {\n [$.TR]: IN_ROW_MODE,\n [$.TBODY]: IN_TABLE_BODY_MODE,\n [$.THEAD]: IN_TABLE_BODY_MODE,\n [$.TFOOT]: IN_TABLE_BODY_MODE,\n [$.CAPTION]: IN_CAPTION_MODE,\n [$.COLGROUP]: IN_COLUMN_GROUP_MODE,\n [$.TABLE]: IN_TABLE_MODE,\n [$.BODY]: IN_BODY_MODE,\n [$.FRAMESET]: IN_FRAMESET_MODE\n};\n\n//Template insertion mode switch map\nconst TEMPLATE_INSERTION_MODE_SWITCH_MAP = {\n [$.CAPTION]: IN_TABLE_MODE,\n [$.COLGROUP]: IN_TABLE_MODE,\n [$.TBODY]: IN_TABLE_MODE,\n [$.TFOOT]: IN_TABLE_MODE,\n [$.THEAD]: IN_TABLE_MODE,\n [$.COL]: IN_COLUMN_GROUP_MODE,\n [$.TR]: IN_TABLE_BODY_MODE,\n [$.TD]: IN_ROW_MODE,\n [$.TH]: IN_ROW_MODE\n};\n\n//Token handlers map for insertion modes\nconst TOKEN_HANDLERS = {\n [INITIAL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: doctypeInInitialMode,\n [Tokenizer.START_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.END_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.EOF_TOKEN]: tokenInInitialMode\n },\n [BEFORE_HTML_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHtml,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHtml,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHtml\n },\n [BEFORE_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHead,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHead,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHead\n },\n [IN_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHead,\n [Tokenizer.END_TAG_TOKEN]: endTagInHead,\n [Tokenizer.EOF_TOKEN]: tokenInHead\n },\n [IN_HEAD_NO_SCRIPT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHeadNoScript,\n [Tokenizer.END_TAG_TOKEN]: endTagInHeadNoScript,\n [Tokenizer.EOF_TOKEN]: tokenInHeadNoScript\n },\n [AFTER_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterHead,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterHead,\n [Tokenizer.EOF_TOKEN]: tokenAfterHead\n },\n [IN_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: ignoreToken,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: ignoreToken,\n [Tokenizer.END_TAG_TOKEN]: endTagInText,\n [Tokenizer.EOF_TOKEN]: eofInText\n },\n [IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTableText,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInTableText,\n [Tokenizer.COMMENT_TOKEN]: tokenInTableText,\n [Tokenizer.DOCTYPE_TOKEN]: tokenInTableText,\n [Tokenizer.START_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.END_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.EOF_TOKEN]: tokenInTableText\n },\n [IN_CAPTION_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCaption,\n [Tokenizer.END_TAG_TOKEN]: endTagInCaption,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_COLUMN_GROUP_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInColumnGroup,\n [Tokenizer.END_TAG_TOKEN]: endTagInColumnGroup,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTableBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInTableBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_ROW_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInRow,\n [Tokenizer.END_TAG_TOKEN]: endTagInRow,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_CELL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCell,\n [Tokenizer.END_TAG_TOKEN]: endTagInCell,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelect,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelect,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelectInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelectInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TEMPLATE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTemplate,\n [Tokenizer.END_TAG_TOKEN]: endTagInTemplate,\n [Tokenizer.EOF_TOKEN]: eofInTemplate\n },\n [AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToRootHtmlElement,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterBody,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [IN_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagInFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterBody,\n [Tokenizer.END_TAG_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: ignoreToken,\n [Tokenizer.EOF_TOKEN]: stopParsing\n }\n};\n\n//Parser\nclass Parser {\n constructor(options) {\n this.options = mergeOptions(DEFAULT_OPTIONS, options);\n\n this.treeAdapter = this.options.treeAdapter;\n this.pendingScript = null;\n\n if (this.options.sourceCodeLocationInfo) {\n Mixin.install(this, LocationInfoParserMixin);\n }\n\n if (this.options.onParseError) {\n Mixin.install(this, ErrorReportingParserMixin, { onParseError: this.options.onParseError });\n }\n }\n\n // API\n parse(html) {\n const document = this.treeAdapter.createDocument();\n\n this._bootstrap(document, null);\n this.tokenizer.write(html, true);\n this._runParsingLoop(null);\n\n return document;\n }\n\n parseFragment(html, fragmentContext) {\n //NOTE: use <template> element as a fragment context if context element was not provided,\n //so we will parse in \"forgiving\" manner\n if (!fragmentContext) {\n fragmentContext = this.treeAdapter.createElement($.TEMPLATE, NS.HTML, []);\n }\n\n //NOTE: create fake element which will be used as 'document' for fragment parsing.\n //This is important for jsdom there 'document' can't be recreated, therefore\n //fragment parsing causes messing of the main `document`.\n const documentMock = this.treeAdapter.createElement('documentmock', NS.HTML, []);\n\n this._bootstrap(documentMock, fragmentContext);\n\n if (this.treeAdapter.getTagName(fragmentContext) === $.TEMPLATE) {\n this._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n }\n\n this._initTokenizerForFragmentParsing();\n this._insertFakeRootElement();\n this._resetInsertionMode();\n this._findFormInFragmentContext();\n this.tokenizer.write(html, true);\n this._runParsingLoop(null);\n\n const rootElement = this.treeAdapter.getFirstChild(documentMock);\n const fragment = this.treeAdapter.createDocumentFragment();\n\n this._adoptNodes(rootElement, fragment);\n\n return fragment;\n }\n\n //Bootstrap parser\n _bootstrap(document, fragmentContext) {\n this.tokenizer = new Tokenizer(this.options);\n\n this.stopped = false;\n\n this.insertionMode = INITIAL_MODE;\n this.originalInsertionMode = '';\n\n this.document = document;\n this.fragmentContext = fragmentContext;\n\n this.headElement = null;\n this.formElement = null;\n\n this.openElements = new OpenElementStack(this.document, this.treeAdapter);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n\n this.tmplInsertionModeStack = [];\n this.tmplInsertionModeStackTop = -1;\n this.currentTmplInsertionMode = null;\n\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n }\n\n //Errors\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n //Parsing loop\n _runParsingLoop(scriptHandler) {\n while (!this.stopped) {\n this._setupTokenizerCDATAMode();\n\n const token = this.tokenizer.getNextToken();\n\n if (token.type === Tokenizer.HIBERNATION_TOKEN) {\n break;\n }\n\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n\n if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN && token.chars[0] === '\\n') {\n if (token.chars.length === 1) {\n continue;\n }\n\n token.chars = token.chars.substr(1);\n }\n }\n\n this._processInputToken(token);\n\n if (scriptHandler && this.pendingScript) {\n break;\n }\n }\n }\n\n runParsingLoopForCurrentChunk(writeCallback, scriptHandler) {\n this._runParsingLoop(scriptHandler);\n\n if (scriptHandler && this.pendingScript) {\n const script = this.pendingScript;\n\n this.pendingScript = null;\n\n scriptHandler(script);\n\n return;\n }\n\n if (writeCallback) {\n writeCallback();\n }\n }\n\n //Text parsing\n _setupTokenizerCDATAMode() {\n const current = this._getAdjustedCurrentElement();\n\n this.tokenizer.allowCDATA =\n current &&\n current !== this.document &&\n this.treeAdapter.getNamespaceURI(current) !== NS.HTML &&\n !this._isIntegrationPoint(current);\n }\n\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = TEXT_MODE;\n }\n\n switchToPlaintextParsing() {\n this.insertionMode = TEXT_MODE;\n this.originalInsertionMode = IN_BODY_MODE;\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n\n //Fragment parsing\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n\n do {\n if (this.treeAdapter.getTagName(node) === $.FORM) {\n this.formElement = node;\n break;\n }\n\n node = this.treeAdapter.getParentNode(node);\n } while (node);\n }\n\n _initTokenizerForFragmentParsing() {\n if (this.treeAdapter.getNamespaceURI(this.fragmentContext) === NS.HTML) {\n const tn = this.treeAdapter.getTagName(this.fragmentContext);\n\n if (tn === $.TITLE || tn === $.TEXTAREA) {\n this.tokenizer.state = Tokenizer.MODE.RCDATA;\n } else if (\n tn === $.STYLE ||\n tn === $.XMP ||\n tn === $.IFRAME ||\n tn === $.NOEMBED ||\n tn === $.NOFRAMES ||\n tn === $.NOSCRIPT\n ) {\n this.tokenizer.state = Tokenizer.MODE.RAWTEXT;\n } else if (tn === $.SCRIPT) {\n this.tokenizer.state = Tokenizer.MODE.SCRIPT_DATA;\n } else if (tn === $.PLAINTEXT) {\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n }\n }\n\n //Tree mutation\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n }\n\n _attachElementToTree(element) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n this.treeAdapter.appendChild(parent, element);\n }\n }\n\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n this._attachElementToTree(element);\n }\n\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n this._attachElementToTree(element);\n this.openElements.push(element);\n }\n\n _insertFakeElement(tagName) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n\n this._attachElementToTree(element);\n this.openElements.push(element);\n }\n\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl);\n this.openElements.push(tmpl);\n }\n\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement($.HTML, NS.HTML, []);\n\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element);\n }\n\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n\n this.treeAdapter.appendChild(parent, commentNode);\n }\n\n _insertCharacters(token) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentText(token.chars);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n\n //Token processing\n _shouldProcessTokenInForeignContent(token) {\n const current = this._getAdjustedCurrentElement();\n\n if (!current || current === this.document) {\n return false;\n }\n\n const ns = this.treeAdapter.getNamespaceURI(current);\n\n if (ns === NS.HTML) {\n return false;\n }\n\n if (\n this.treeAdapter.getTagName(current) === $.ANNOTATION_XML &&\n ns === NS.MATHML &&\n token.type === Tokenizer.START_TAG_TOKEN &&\n token.tagName === $.SVG\n ) {\n return false;\n }\n\n const isCharacterToken =\n token.type === Tokenizer.CHARACTER_TOKEN ||\n token.type === Tokenizer.NULL_CHARACTER_TOKEN ||\n token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n\n const isMathMLTextStartTag =\n token.type === Tokenizer.START_TAG_TOKEN && token.tagName !== $.MGLYPH && token.tagName !== $.MALIGNMARK;\n\n if ((isMathMLTextStartTag || isCharacterToken) && this._isIntegrationPoint(current, NS.MATHML)) {\n return false;\n }\n\n if (\n (token.type === Tokenizer.START_TAG_TOKEN || isCharacterToken) &&\n this._isIntegrationPoint(current, NS.HTML)\n ) {\n return false;\n }\n\n return token.type !== Tokenizer.EOF_TOKEN;\n }\n\n _processToken(token) {\n TOKEN_HANDLERS[this.insertionMode][token.type](this, token);\n }\n\n _processTokenInBodyMode(token) {\n TOKEN_HANDLERS[IN_BODY_MODE][token.type](this, token);\n }\n\n _processTokenInForeignContent(token) {\n if (token.type === Tokenizer.CHARACTER_TOKEN) {\n characterInForeignContent(this, token);\n } else if (token.type === Tokenizer.NULL_CHARACTER_TOKEN) {\n nullCharacterInForeignContent(this, token);\n } else if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN) {\n insertCharacters(this, token);\n } else if (token.type === Tokenizer.COMMENT_TOKEN) {\n appendComment(this, token);\n } else if (token.type === Tokenizer.START_TAG_TOKEN) {\n startTagInForeignContent(this, token);\n } else if (token.type === Tokenizer.END_TAG_TOKEN) {\n endTagInForeignContent(this, token);\n }\n }\n\n _processInputToken(token) {\n if (this._shouldProcessTokenInForeignContent(token)) {\n this._processTokenInForeignContent(token);\n } else {\n this._processToken(token);\n }\n\n if (token.type === Tokenizer.START_TAG_TOKEN && token.selfClosing && !token.ackSelfClosing) {\n this._err(ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n\n //Integration points\n _isIntegrationPoint(element, foreignNS) {\n const tn = this.treeAdapter.getTagName(element);\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n\n return foreignContent.isIntegrationPoint(tn, ns, attrs, foreignNS);\n }\n\n //Active formatting elements reconstruction\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.length;\n\n if (listLength) {\n let unopenIdx = listLength;\n let entry = null;\n\n do {\n unopenIdx--;\n entry = this.activeFormattingElements.entries[unopenIdx];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY || this.openElements.contains(entry.element)) {\n unopenIdx++;\n break;\n }\n } while (unopenIdx > 0);\n\n for (let i = unopenIdx; i < listLength; i++) {\n entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n\n //Close elements\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = IN_ROW_MODE;\n }\n\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n\n //Insertion modes\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop, last = false; i >= 0; i--) {\n let element = this.openElements.items[i];\n\n if (i === 0) {\n last = true;\n\n if (this.fragmentContext) {\n element = this.fragmentContext;\n }\n }\n\n const tn = this.treeAdapter.getTagName(element);\n const newInsertionMode = INSERTION_MODE_RESET_MAP[tn];\n\n if (newInsertionMode) {\n this.insertionMode = newInsertionMode;\n break;\n } else if (!last && (tn === $.TD || tn === $.TH)) {\n this.insertionMode = IN_CELL_MODE;\n break;\n } else if (!last && tn === $.HEAD) {\n this.insertionMode = IN_HEAD_MODE;\n break;\n } else if (tn === $.SELECT) {\n this._resetInsertionModeForSelect(i);\n break;\n } else if (tn === $.TEMPLATE) {\n this.insertionMode = this.currentTmplInsertionMode;\n break;\n } else if (tn === $.HTML) {\n this.insertionMode = this.headElement ? AFTER_HEAD_MODE : BEFORE_HEAD_MODE;\n break;\n } else if (last) {\n this.insertionMode = IN_BODY_MODE;\n break;\n }\n }\n }\n\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const ancestor = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(ancestor);\n\n if (tn === $.TEMPLATE) {\n break;\n } else if (tn === $.TABLE) {\n this.insertionMode = IN_SELECT_IN_TABLE_MODE;\n return;\n }\n }\n }\n\n this.insertionMode = IN_SELECT_MODE;\n }\n\n _pushTmplInsertionMode(mode) {\n this.tmplInsertionModeStack.push(mode);\n this.tmplInsertionModeStackTop++;\n this.currentTmplInsertionMode = mode;\n }\n\n _popTmplInsertionMode() {\n this.tmplInsertionModeStack.pop();\n this.tmplInsertionModeStackTop--;\n this.currentTmplInsertionMode = this.tmplInsertionModeStack[this.tmplInsertionModeStackTop];\n }\n\n //Foster parenting\n _isElementCausesFosterParenting(element) {\n const tn = this.treeAdapter.getTagName(element);\n\n return tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR;\n }\n\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.current);\n }\n\n _findFosterParentingLocation() {\n const location = {\n parent: null,\n beforeElement: null\n };\n\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(openElement);\n const ns = this.treeAdapter.getNamespaceURI(openElement);\n\n if (tn === $.TEMPLATE && ns === NS.HTML) {\n location.parent = this.treeAdapter.getTemplateContent(openElement);\n break;\n } else if (tn === $.TABLE) {\n location.parent = this.treeAdapter.getParentNode(openElement);\n\n if (location.parent) {\n location.beforeElement = openElement;\n } else {\n location.parent = this.openElements.items[i - 1];\n }\n\n break;\n }\n }\n\n if (!location.parent) {\n location.parent = this.openElements.items[0];\n }\n\n return location;\n }\n\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n } else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n\n _fosterParentText(chars) {\n const location = this._findFosterParentingLocation();\n\n if (location.beforeElement) {\n this.treeAdapter.insertTextBefore(location.parent, chars, location.beforeElement);\n } else {\n this.treeAdapter.insertText(location.parent, chars);\n }\n }\n\n //Special elements\n _isSpecialElement(element) {\n const tn = this.treeAdapter.getTagName(element);\n const ns = this.treeAdapter.getNamespaceURI(element);\n\n return HTML.SPECIAL_ELEMENTS[ns][tn];\n }\n}\n\nmodule.exports = Parser;\n\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n } else if (!p.openElements.hasInScope(token.tagName)) {\n formattingElementEntry = null;\n }\n } else {\n genericEndTagInBody(p, token);\n }\n\n return formattingElementEntry;\n}\n\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const element = p.openElements.items[i];\n\n if (element === formattingElementEntry.element) {\n break;\n }\n\n if (p._isSpecialElement(element)) {\n furthestBlock = element;\n }\n }\n\n if (!furthestBlock) {\n p.openElements.popUntilElementPopped(formattingElementEntry.element);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n\n return furthestBlock;\n}\n\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n\n p.openElements.remove(element);\n } else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n\n return lastElement;\n}\n\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n\n return newElement;\n}\n\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n if (p._isElementCausesFosterParenting(commonAncestor)) {\n p._fosterParentElement(lastElement);\n } else {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n\n if (tn === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const token = formattingElementEntry.token;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n\n p.activeFormattingElements.insertElementAfterBookmark(newElement, formattingElementEntry.token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement);\n}\n\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n let formattingElementEntry;\n\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n formattingElementEntry = aaObtainFormattingElementEntry(p, token, formattingElementEntry);\n\n if (!formattingElementEntry) {\n break;\n }\n\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n\n if (!furthestBlock) {\n break;\n }\n\n p.activeFormattingElements.bookmark = formattingElementEntry;\n\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n\n p.treeAdapter.detachNode(lastElement);\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n\n//Generic token handlers\n//------------------------------------------------------------------\nfunction ignoreToken() {\n //NOTE: do nothing =)\n}\n\nfunction misplacedDoctype(p) {\n p._err(ERR.misplacedDoctype);\n}\n\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContent || p.openElements.current);\n}\n\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\n\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\n\nfunction insertCharacters(p, token) {\n p._insertCharacters(token);\n}\n\nfunction stopParsing(p) {\n p.stopped = true;\n}\n\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n\n const mode = token.forceQuirks ? HTML.DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n\n if (!doctype.isConforming(token)) {\n p._err(ERR.nonConformingDoctype);\n }\n\n p.treeAdapter.setDocumentMode(p.document, mode);\n\n p.insertionMode = BEFORE_HTML_MODE;\n}\n\nfunction tokenInInitialMode(p, token) {\n p._err(ERR.missingDoctype, { beforeToken: true });\n p.treeAdapter.setDocumentMode(p.document, HTML.DOCUMENT_MODE.QUIRKS);\n p.insertionMode = BEFORE_HTML_MODE;\n p._processToken(token);\n}\n\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagName === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = BEFORE_HEAD_MODE;\n } else {\n tokenBeforeHtml(p, token);\n }\n}\n\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\n\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = BEFORE_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.HEAD) {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = IN_HEAD_MODE;\n } else {\n tokenBeforeHead(p, token);\n }\n}\n\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement($.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = IN_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TITLE) {\n p._switchToTextParsing(token, Tokenizer.MODE.RCDATA);\n } else if (tn === $.NOSCRIPT) {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_HEAD_NO_SCRIPT_MODE;\n }\n } else if (tn === $.NOFRAMES || tn === $.STYLE) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else if (tn === $.SCRIPT) {\n p._switchToTextParsing(token, Tokenizer.MODE.SCRIPT_DATA);\n } else if (tn === $.TEMPLATE) {\n p._insertTemplate(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = IN_TEMPLATE_MODE;\n p._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n } else if (tn === $.HEAD) {\n p._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenInHead(p, token);\n }\n}\n\nfunction endTagInHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HEAD) {\n p.openElements.pop();\n p.insertionMode = AFTER_HEAD_MODE;\n } else if (tn === $.BODY || tn === $.BR || tn === $.HTML) {\n tokenInHead(p, token);\n } else if (tn === $.TEMPLATE) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n\n if (p.openElements.currentTagName !== $.TEMPLATE) {\n p._err(ERR.closingOfElementWithOpenChildElements);\n }\n\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p._popTmplInsertionMode();\n p._resetInsertionMode();\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = AFTER_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.HEAD ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.STYLE\n ) {\n startTagInHead(p, token);\n } else if (tn === $.NOSCRIPT) {\n p._err(ERR.nestedNoscriptInHead);\n } else {\n tokenInHeadNoScript(p, token);\n }\n}\n\nfunction endTagInHeadNoScript(p, token) {\n const tn = token.tagName;\n\n if (tn === $.NOSCRIPT) {\n p.openElements.pop();\n p.insertionMode = IN_HEAD_MODE;\n } else if (tn === $.BR) {\n tokenInHeadNoScript(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenInHeadNoScript(p, token) {\n const errCode =\n token.type === Tokenizer.EOF_TOKEN ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n\n p._err(errCode);\n p.openElements.pop();\n p.insertionMode = IN_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.BODY) {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = IN_BODY_MODE;\n } else if (tn === $.FRAMESET) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_FRAMESET_MODE;\n } else if (\n tn === $.BASE ||\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.SCRIPT ||\n tn === $.STYLE ||\n tn === $.TEMPLATE ||\n tn === $.TITLE\n ) {\n p._err(ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n } else if (tn === $.HEAD) {\n p._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenAfterHead(p, token);\n }\n}\n\nfunction endTagAfterHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenAfterHead(p, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement($.BODY);\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\n\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\n\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\n\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\n\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_FRAMESET_MODE;\n }\n}\n\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n const tn = p.openElements.currentTagName;\n\n if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\n\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\n\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n\n const tn = token.tagName;\n\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const element = p.openElements.items[i];\n const elementTn = p.treeAdapter.getTagName(element);\n let closeTn = null;\n\n if (tn === $.LI && elementTn === $.LI) {\n closeTn = $.LI;\n } else if ((tn === $.DD || tn === $.DT) && (elementTn === $.DD || elementTn === $.DT)) {\n closeTn = elementTn;\n }\n\n if (closeTn) {\n p.openElements.generateImpliedEndTagsWithExclusion(closeTn);\n p.openElements.popUntilTagNamePopped(closeTn);\n break;\n }\n\n if (elementTn !== $.ADDRESS && elementTn !== $.DIV && elementTn !== $.P && p._isSpecialElement(element)) {\n break;\n }\n }\n\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n}\n\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\n\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName($.A);\n\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\n\nfunction tableStartTagInBody(p, token) {\n if (\n p.treeAdapter.getDocumentMode(p.document) !== HTML.DOCUMENT_MODE.QUIRKS &&\n p.openElements.hasInButtonScope($.P)\n ) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = IN_TABLE_MODE;\n}\n\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\n\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n if (!inputType || inputType.toLowerCase() !== HIDDEN_INPUT_TYPE) {\n p.framesetOk = false;\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\n\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\n\nfunction imageStartTagInBody(p, token) {\n token.tagName = $.IMG;\n areaStartTagInBody(p, token);\n}\n\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = Tokenizer.MODE.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = TEXT_MODE;\n}\n\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as a rawtext.\nfunction noembedStartTagInBody(p, token) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n\n if (\n p.insertionMode === IN_TABLE_MODE ||\n p.insertionMode === IN_CAPTION_MODE ||\n p.insertionMode === IN_TABLE_BODY_MODE ||\n p.insertionMode === IN_ROW_MODE ||\n p.insertionMode === IN_CELL_MODE\n ) {\n p.insertionMode = IN_SELECT_IN_TABLE_MODE;\n } else {\n p.insertionMode = IN_SELECT_MODE;\n }\n}\n\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\n\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction menuStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n } else {\n p._insertElement(token, NS.MATHML);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n } else {\n p._insertElement(token, NS.SVG);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction startTagInBody(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 1:\n if (tn === $.I || tn === $.S || tn === $.B || tn === $.U) {\n bStartTagInBody(p, token);\n } else if (tn === $.P) {\n addressStartTagInBody(p, token);\n } else if (tn === $.A) {\n aStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 2:\n if (tn === $.DL || tn === $.OL || tn === $.UL) {\n addressStartTagInBody(p, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderStartTagInBody(p, token);\n } else if (tn === $.LI || tn === $.DD || tn === $.DT) {\n listItemStartTagInBody(p, token);\n } else if (tn === $.EM || tn === $.TT) {\n bStartTagInBody(p, token);\n } else if (tn === $.BR) {\n areaStartTagInBody(p, token);\n } else if (tn === $.HR) {\n hrStartTagInBody(p, token);\n } else if (tn === $.RB) {\n rbStartTagInBody(p, token);\n } else if (tn === $.RT || tn === $.RP) {\n rtStartTagInBody(p, token);\n } else if (tn !== $.TH && tn !== $.TD && tn !== $.TR) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.DIV || tn === $.DIR || tn === $.NAV) {\n addressStartTagInBody(p, token);\n } else if (tn === $.PRE) {\n preStartTagInBody(p, token);\n } else if (tn === $.BIG) {\n bStartTagInBody(p, token);\n } else if (tn === $.IMG || tn === $.WBR) {\n areaStartTagInBody(p, token);\n } else if (tn === $.XMP) {\n xmpStartTagInBody(p, token);\n } else if (tn === $.SVG) {\n svgStartTagInBody(p, token);\n } else if (tn === $.RTC) {\n rbStartTagInBody(p, token);\n } else if (tn !== $.COL) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.HTML) {\n htmlStartTagInBody(p, token);\n } else if (tn === $.BASE || tn === $.LINK || tn === $.META) {\n startTagInHead(p, token);\n } else if (tn === $.BODY) {\n bodyStartTagInBody(p, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressStartTagInBody(p, token);\n } else if (tn === $.FORM) {\n formStartTagInBody(p, token);\n } else if (tn === $.CODE || tn === $.FONT) {\n bStartTagInBody(p, token);\n } else if (tn === $.NOBR) {\n nobrStartTagInBody(p, token);\n } else if (tn === $.AREA) {\n areaStartTagInBody(p, token);\n } else if (tn === $.MATH) {\n mathStartTagInBody(p, token);\n } else if (tn === $.MENU) {\n menuStartTagInBody(p, token);\n } else if (tn !== $.HEAD) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.STYLE || tn === $.TITLE) {\n startTagInHead(p, token);\n } else if (tn === $.ASIDE) {\n addressStartTagInBody(p, token);\n } else if (tn === $.SMALL) {\n bStartTagInBody(p, token);\n } else if (tn === $.TABLE) {\n tableStartTagInBody(p, token);\n } else if (tn === $.EMBED) {\n areaStartTagInBody(p, token);\n } else if (tn === $.INPUT) {\n inputStartTagInBody(p, token);\n } else if (tn === $.PARAM || tn === $.TRACK) {\n paramStartTagInBody(p, token);\n } else if (tn === $.IMAGE) {\n imageStartTagInBody(p, token);\n } else if (tn !== $.FRAME && tn !== $.TBODY && tn !== $.TFOOT && tn !== $.THEAD) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p, token);\n } else if (\n tn === $.CENTER ||\n tn === $.FIGURE ||\n tn === $.FOOTER ||\n tn === $.HEADER ||\n tn === $.HGROUP ||\n tn === $.DIALOG\n ) {\n addressStartTagInBody(p, token);\n } else if (tn === $.BUTTON) {\n buttonStartTagInBody(p, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n bStartTagInBody(p, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletStartTagInBody(p, token);\n } else if (tn === $.KEYGEN) {\n areaStartTagInBody(p, token);\n } else if (tn === $.SOURCE) {\n paramStartTagInBody(p, token);\n } else if (tn === $.IFRAME) {\n iframeStartTagInBody(p, token);\n } else if (tn === $.SELECT) {\n selectStartTagInBody(p, token);\n } else if (tn === $.OPTION) {\n optgroupStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 7:\n if (tn === $.BGSOUND) {\n startTagInHead(p, token);\n } else if (\n tn === $.DETAILS ||\n tn === $.ADDRESS ||\n tn === $.ARTICLE ||\n tn === $.SECTION ||\n tn === $.SUMMARY\n ) {\n addressStartTagInBody(p, token);\n } else if (tn === $.LISTING) {\n preStartTagInBody(p, token);\n } else if (tn === $.MARQUEE) {\n appletStartTagInBody(p, token);\n } else if (tn === $.NOEMBED) {\n noembedStartTagInBody(p, token);\n } else if (tn !== $.CAPTION) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.BASEFONT) {\n startTagInHead(p, token);\n } else if (tn === $.FRAMESET) {\n framesetStartTagInBody(p, token);\n } else if (tn === $.FIELDSET) {\n addressStartTagInBody(p, token);\n } else if (tn === $.TEXTAREA) {\n textareaStartTagInBody(p, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else if (tn === $.NOSCRIPT) {\n if (p.options.scriptingEnabled) {\n noembedStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n } else if (tn === $.OPTGROUP) {\n optgroupStartTagInBody(p, token);\n } else if (tn !== $.COLGROUP) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 9:\n if (tn === $.PLAINTEXT) {\n plaintextStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n default:\n genericStartTagInBody(p, token);\n }\n}\n\nfunction bodyEndTagInBody(p) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = AFTER_BODY_MODE;\n }\n}\n\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = AFTER_BODY_MODE;\n p._processToken(token);\n }\n}\n\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\n\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const formElement = p.formElement;\n\n if (!inTemplate) {\n p.formElement = null;\n }\n\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n } else {\n p.openElements.remove(formElement);\n }\n }\n}\n\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement($.P);\n }\n\n p._closePElement();\n}\n\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\n\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\n\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\n\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\n\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement($.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\n\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n\n if (p.treeAdapter.getTagName(element) === tn) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilElementPopped(element);\n break;\n }\n\n if (p._isSpecialElement(element)) {\n break;\n }\n }\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction endTagInBody(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 1:\n if (tn === $.A || tn === $.B || tn === $.I || tn === $.S || tn === $.U) {\n callAdoptionAgency(p, token);\n } else if (tn === $.P) {\n pEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 2:\n if (tn === $.DL || tn === $.UL || tn === $.OL) {\n addressEndTagInBody(p, token);\n } else if (tn === $.LI) {\n liEndTagInBody(p, token);\n } else if (tn === $.DD || tn === $.DT) {\n ddEndTagInBody(p, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderEndTagInBody(p, token);\n } else if (tn === $.BR) {\n brEndTagInBody(p, token);\n } else if (tn === $.EM || tn === $.TT) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.BIG) {\n callAdoptionAgency(p, token);\n } else if (tn === $.DIR || tn === $.DIV || tn === $.NAV || tn === $.PRE) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.BODY) {\n bodyEndTagInBody(p, token);\n } else if (tn === $.HTML) {\n htmlEndTagInBody(p, token);\n } else if (tn === $.FORM) {\n formEndTagInBody(p, token);\n } else if (tn === $.CODE || tn === $.FONT || tn === $.NOBR) {\n callAdoptionAgency(p, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.ASIDE) {\n addressEndTagInBody(p, token);\n } else if (tn === $.SMALL) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 6:\n if (\n tn === $.CENTER ||\n tn === $.FIGURE ||\n tn === $.FOOTER ||\n tn === $.HEADER ||\n tn === $.HGROUP ||\n tn === $.DIALOG\n ) {\n addressEndTagInBody(p, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletEndTagInBody(p, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 7:\n if (\n tn === $.ADDRESS ||\n tn === $.ARTICLE ||\n tn === $.DETAILS ||\n tn === $.SECTION ||\n tn === $.SUMMARY ||\n tn === $.LISTING\n ) {\n addressEndTagInBody(p, token);\n } else if (tn === $.MARQUEE) {\n appletEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.FIELDSET) {\n addressEndTagInBody(p, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n default:\n genericEndTagInBody(p, token);\n }\n}\n\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStackTop > -1) {\n eofInTemplate(p, token);\n } else {\n p.stopped = true;\n }\n}\n\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n if (token.tagName === $.SCRIPT) {\n p.pendingScript = p.openElements.current;\n }\n\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\n\nfunction eofInText(p, token) {\n p._err(ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n const curTn = p.openElements.currentTagName;\n\n if (curTn === $.TABLE || curTn === $.TBODY || curTn === $.TFOOT || curTn === $.THEAD || curTn === $.TR) {\n p.pendingCharacterTokens = [];\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = IN_TABLE_TEXT_MODE;\n p._processToken(token);\n } else {\n tokenInTable(p, token);\n }\n}\n\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_CAPTION_MODE;\n}\n\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_COLUMN_GROUP_MODE;\n}\n\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement($.COLGROUP);\n p.insertionMode = IN_COLUMN_GROUP_MODE;\n p._processToken(token);\n}\n\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_TABLE_BODY_MODE;\n}\n\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement($.TBODY);\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n}\n\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processToken(token);\n }\n}\n\nfunction inputStartTagInTable(p, token) {\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n if (inputType && inputType.toLowerCase() === HIDDEN_INPUT_TYPE) {\n p._appendElement(token, NS.HTML);\n } else {\n tokenInTable(p, token);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\n\nfunction startTagInTable(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 2:\n if (tn === $.TD || tn === $.TH || tn === $.TR) {\n tdStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.COL) {\n colStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.FORM) {\n formStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.TABLE) {\n tableStartTagInTable(p, token);\n } else if (tn === $.STYLE) {\n startTagInHead(p, token);\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n tbodyStartTagInTable(p, token);\n } else if (tn === $.INPUT) {\n inputStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 7:\n if (tn === $.CAPTION) {\n captionStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.COLGROUP) {\n colgroupStartTagInTable(p, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n default:\n tokenInTable(p, token);\n }\n}\n\nfunction endTagInTable(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else if (\n tn !== $.BODY &&\n tn !== $.CAPTION &&\n tn !== $.COL &&\n tn !== $.COLGROUP &&\n tn !== $.HTML &&\n tn !== $.TBODY &&\n tn !== $.TD &&\n tn !== $.TFOOT &&\n tn !== $.TH &&\n tn !== $.THEAD &&\n tn !== $.TR\n ) {\n tokenInTable(p, token);\n }\n}\n\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n\n p.fosterParentingEnabled = true;\n p._processTokenInBodyMode(token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\n\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\n\nfunction tokenInTableText(p, token) {\n let i = 0;\n\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n } else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCaption(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TD ||\n tn === $.TFOOT ||\n tn === $.TH ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\n\nfunction endTagInCaption(p, token) {\n const tn = token.tagName;\n\n if (tn === $.CAPTION || tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_TABLE_MODE;\n\n if (tn === $.TABLE) {\n p._processToken(token);\n }\n }\n } else if (\n tn !== $.BODY &&\n tn !== $.COL &&\n tn !== $.COLGROUP &&\n tn !== $.HTML &&\n tn !== $.TBODY &&\n tn !== $.TD &&\n tn !== $.TFOOT &&\n tn !== $.TH &&\n tn !== $.THEAD &&\n tn !== $.TR\n ) {\n endTagInBody(p, token);\n }\n}\n\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.COL) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else {\n tokenInColumnGroup(p, token);\n }\n}\n\nfunction endTagInColumnGroup(p, token) {\n const tn = token.tagName;\n\n if (tn === $.COLGROUP) {\n if (p.openElements.currentTagName === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else if (tn !== $.COL) {\n tokenInColumnGroup(p, token);\n }\n}\n\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagName === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n}\n\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TR) {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_ROW_MODE;\n } else if (tn === $.TH || tn === $.TD) {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement($.TR);\n p.insertionMode = IN_ROW_MODE;\n p._processToken(token);\n } else if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD\n ) {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else {\n startTagInTable(p, token);\n }\n}\n\nfunction endTagInTableBody(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else if (\n (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n (tn !== $.HTML && tn !== $.TD && tn !== $.TH && tn !== $.TR)\n ) {\n endTagInTable(p, token);\n }\n}\n\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TH || tn === $.TD) {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_CELL_MODE;\n p.activeFormattingElements.insertMarker();\n } else if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else {\n startTagInTable(p, token);\n }\n}\n\nfunction endTagInRow(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TR) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p.openElements.hasInTableScope(tn) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else if (\n (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n (tn !== $.HTML && tn !== $.TD && tn !== $.TH)\n ) {\n endTagInTable(p, token);\n }\n}\n\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TD ||\n tn === $.TFOOT ||\n tn === $.TH ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n p._processToken(token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\n\nfunction endTagInCell(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TD || tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_ROW_MODE;\n }\n } else if (tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR) {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n p._processToken(token);\n }\n } else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML) {\n endTagInBody(p, token);\n }\n}\n\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.OPTION) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n } else if (tn === $.OPTGROUP) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n if (p.openElements.currentTagName === $.OPTGROUP) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n } else if (tn === $.INPUT || tn === $.KEYGEN || tn === $.TEXTAREA || tn === $.SELECT) {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n\n if (tn !== $.SELECT) {\n p._processToken(token);\n }\n }\n } else if (tn === $.SCRIPT || tn === $.TEMPLATE) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagInSelect(p, token) {\n const tn = token.tagName;\n\n if (tn === $.OPTGROUP) {\n const prevOpenElement = p.openElements.items[p.openElements.stackTop - 1];\n const prevOpenElementTn = prevOpenElement && p.treeAdapter.getTagName(prevOpenElement);\n\n if (p.openElements.currentTagName === $.OPTION && prevOpenElementTn === $.OPTGROUP) {\n p.openElements.pop();\n }\n\n if (p.openElements.currentTagName === $.OPTGROUP) {\n p.openElements.pop();\n }\n } else if (tn === $.OPTION) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n } else if (tn === $.SELECT && p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n }\n}\n\n//12.2.5.4.17 The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH\n ) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processToken(token);\n } else {\n startTagInSelect(p, token);\n }\n}\n\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH\n ) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processToken(token);\n }\n } else {\n endTagInSelect(p, token);\n }\n}\n\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.BASE ||\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.SCRIPT ||\n tn === $.STYLE ||\n tn === $.TEMPLATE ||\n tn === $.TITLE\n ) {\n startTagInHead(p, token);\n } else {\n const newInsertionMode = TEMPLATE_INSERTION_MODE_SWITCH_MAP[tn] || IN_BODY_MODE;\n\n p._popTmplInsertionMode();\n p._pushTmplInsertionMode(newInsertionMode);\n p.insertionMode = newInsertionMode;\n p._processToken(token);\n }\n}\n\nfunction endTagInTemplate(p, token) {\n if (token.tagName === $.TEMPLATE) {\n endTagInHead(p, token);\n }\n}\n\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p._popTmplInsertionMode();\n p._resetInsertionMode();\n p._processToken(token);\n } else {\n p.stopped = true;\n }\n}\n\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterBody(p, token);\n }\n}\n\nfunction endTagAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = AFTER_AFTER_BODY_MODE;\n }\n } else {\n tokenAfterBody(p, token);\n }\n}\n\nfunction tokenAfterBody(p, token) {\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.FRAMESET) {\n p._insertElement(token, NS.HTML);\n } else if (tn === $.FRAME) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagInFrameset(p, token) {\n if (token.tagName === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n\n if (!p.fragmentContext && p.openElements.currentTagName !== $.FRAMESET) {\n p.insertionMode = AFTER_FRAMESET_MODE;\n }\n }\n}\n\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagAfterFrameset(p, token) {\n if (token.tagName === $.HTML) {\n p.insertionMode = AFTER_AFTER_FRAMESET_MODE;\n }\n}\n\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterAfterBody(p, token);\n }\n}\n\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\n\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\n\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token) && !p.fragmentContext) {\n while (\n p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n !p._isIntegrationPoint(p.openElements.current)\n ) {\n p.openElements.pop();\n }\n\n p._processToken(token);\n } else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n } else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n } else {\n p._insertElement(token, currentNs);\n }\n\n token.ackSelfClosing = true;\n }\n}\n\nfunction endTagInForeignContent(p, token) {\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._processToken(token);\n break;\n }\n\n if (p.treeAdapter.getTagName(element).toLowerCase() === token.tagName) {\n p.openElements.popUntilElementPopped(element);\n break;\n }\n }\n}\n","'use strict';\n\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\n\n//Element utils\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction isImpliedEndTagRequired(tn) {\n switch (tn.length) {\n case 1:\n return tn === $.P;\n\n case 2:\n return tn === $.RB || tn === $.RP || tn === $.RT || tn === $.DD || tn === $.DT || tn === $.LI;\n\n case 3:\n return tn === $.RTC;\n\n case 6:\n return tn === $.OPTION;\n\n case 8:\n return tn === $.OPTGROUP;\n }\n\n return false;\n}\n\nfunction isImpliedEndTagRequiredThoroughly(tn) {\n switch (tn.length) {\n case 1:\n return tn === $.P;\n\n case 2:\n return (\n tn === $.RB ||\n tn === $.RP ||\n tn === $.RT ||\n tn === $.DD ||\n tn === $.DT ||\n tn === $.LI ||\n tn === $.TD ||\n tn === $.TH ||\n tn === $.TR\n );\n\n case 3:\n return tn === $.RTC;\n\n case 5:\n return tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD;\n\n case 6:\n return tn === $.OPTION;\n\n case 7:\n return tn === $.CAPTION;\n\n case 8:\n return tn === $.OPTGROUP || tn === $.COLGROUP;\n }\n\n return false;\n}\n\nfunction isScopingElement(tn, ns) {\n switch (tn.length) {\n case 2:\n if (tn === $.TD || tn === $.TH) {\n return ns === NS.HTML;\n } else if (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS) {\n return ns === NS.MATHML;\n }\n\n break;\n\n case 4:\n if (tn === $.HTML) {\n return ns === NS.HTML;\n } else if (tn === $.DESC) {\n return ns === NS.SVG;\n }\n\n break;\n\n case 5:\n if (tn === $.TABLE) {\n return ns === NS.HTML;\n } else if (tn === $.MTEXT) {\n return ns === NS.MATHML;\n } else if (tn === $.TITLE) {\n return ns === NS.SVG;\n }\n\n break;\n\n case 6:\n return (tn === $.APPLET || tn === $.OBJECT) && ns === NS.HTML;\n\n case 7:\n return (tn === $.CAPTION || tn === $.MARQUEE) && ns === NS.HTML;\n\n case 8:\n return tn === $.TEMPLATE && ns === NS.HTML;\n\n case 13:\n return tn === $.FOREIGN_OBJECT && ns === NS.SVG;\n\n case 14:\n return tn === $.ANNOTATION_XML && ns === NS.MATHML;\n }\n\n return false;\n}\n\n//Stack of open elements\nclass OpenElementStack {\n constructor(document, treeAdapter) {\n this.stackTop = -1;\n this.items = [];\n this.current = document;\n this.currentTagName = null;\n this.currentTmplContent = null;\n this.tmplCount = 0;\n this.treeAdapter = treeAdapter;\n }\n\n //Index of element\n _indexOf(element) {\n let idx = -1;\n\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element) {\n idx = i;\n break;\n }\n }\n return idx;\n }\n\n //Update current element\n _isInTemplate() {\n return this.currentTagName === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagName = this.current && this.treeAdapter.getTagName(this.current);\n\n this.currentTmplContent = this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : null;\n }\n\n //Mutations\n push(element) {\n this.items[++this.stackTop] = element;\n this._updateCurrentElement();\n\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n }\n\n pop() {\n this.stackTop--;\n\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n\n this._updateCurrentElement();\n }\n\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n\n this.items[idx] = newElement;\n\n if (idx === this.stackTop) {\n this._updateCurrentElement();\n }\n }\n\n insertAfter(referenceElement, newElement) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n\n this.items.splice(insertionIdx, 0, newElement);\n\n if (insertionIdx === ++this.stackTop) {\n this._updateCurrentElement();\n }\n }\n\n popUntilTagNamePopped(tagName) {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (tn === tagName && ns === NS.HTML) {\n break;\n }\n }\n }\n\n popUntilElementPopped(element) {\n while (this.stackTop > -1) {\n const poppedElement = this.current;\n\n this.pop();\n\n if (poppedElement === element) {\n break;\n }\n }\n }\n\n popUntilNumberedHeaderPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (\n tn === $.H1 ||\n tn === $.H2 ||\n tn === $.H3 ||\n tn === $.H4 ||\n tn === $.H5 ||\n (tn === $.H6 && ns === NS.HTML)\n ) {\n break;\n }\n }\n }\n\n popUntilTableCellPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (tn === $.TD || (tn === $.TH && ns === NS.HTML)) {\n break;\n }\n }\n }\n\n popAllUpToHtmlElement() {\n //NOTE: here we assume that root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.stackTop = 0;\n this._updateCurrentElement();\n }\n\n clearBackToTableContext() {\n while (\n (this.currentTagName !== $.TABLE && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n clearBackToTableBodyContext() {\n while (\n (this.currentTagName !== $.TBODY &&\n this.currentTagName !== $.TFOOT &&\n this.currentTagName !== $.THEAD &&\n this.currentTagName !== $.TEMPLATE &&\n this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n clearBackToTableRowContext() {\n while (\n (this.currentTagName !== $.TR && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n remove(element) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element) {\n this.items.splice(i, 1);\n this.stackTop--;\n this._updateCurrentElement();\n break;\n }\n }\n }\n\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n const element = this.items[1];\n\n return element && this.treeAdapter.getTagName(element) === $.BODY ? element : null;\n }\n\n contains(element) {\n return this._indexOf(element) > -1;\n }\n\n getCommonAncestor(element) {\n let elementIdx = this._indexOf(element);\n\n return --elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.currentTagName === $.HTML;\n }\n\n //Element in scope\n hasInScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if (isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (\n (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) &&\n ns === NS.HTML\n ) {\n return true;\n }\n\n if (isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInListItemScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInButtonScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if ((tn === $.BUTTON && ns === NS.HTML) || isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === tagName) {\n return true;\n }\n\n if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n return false;\n }\n }\n\n return true;\n }\n\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n return true;\n }\n\n if (tn === $.TABLE || tn === $.HTML) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === tagName) {\n return true;\n }\n\n if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n return false;\n }\n }\n\n return true;\n }\n\n //Implied end tags\n generateImpliedEndTags() {\n while (isImpliedEndTagRequired(this.currentTagName)) {\n this.pop();\n }\n }\n\n generateImpliedEndTagsThoroughly() {\n while (isImpliedEndTagRequiredThoroughly(this.currentTagName)) {\n this.pop();\n }\n }\n\n generateImpliedEndTagsWithExclusion(exclusionTagName) {\n while (isImpliedEndTagRequired(this.currentTagName) && this.currentTagName !== exclusionTagName) {\n this.pop();\n }\n }\n}\n\nmodule.exports = OpenElementStack;\n","'use strict';\n\nconst Preprocessor = require('./preprocessor');\nconst unicode = require('../common/unicode');\nconst neTree = require('./named-entity-data');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\nconst $$ = unicode.CODE_POINT_SEQUENCES;\n\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = {\n 0x80: 0x20ac,\n 0x82: 0x201a,\n 0x83: 0x0192,\n 0x84: 0x201e,\n 0x85: 0x2026,\n 0x86: 0x2020,\n 0x87: 0x2021,\n 0x88: 0x02c6,\n 0x89: 0x2030,\n 0x8a: 0x0160,\n 0x8b: 0x2039,\n 0x8c: 0x0152,\n 0x8e: 0x017d,\n 0x91: 0x2018,\n 0x92: 0x2019,\n 0x93: 0x201c,\n 0x94: 0x201d,\n 0x95: 0x2022,\n 0x96: 0x2013,\n 0x97: 0x2014,\n 0x98: 0x02dc,\n 0x99: 0x2122,\n 0x9a: 0x0161,\n 0x9b: 0x203a,\n 0x9c: 0x0153,\n 0x9e: 0x017e,\n 0x9f: 0x0178\n};\n\n// Named entity tree flags\nconst HAS_DATA_FLAG = 1 << 0;\nconst DATA_DUPLET_FLAG = 1 << 1;\nconst HAS_BRANCHES_FLAG = 1 << 2;\nconst MAX_BRANCH_MARKER_VALUE = HAS_DATA_FLAG | DATA_DUPLET_FLAG | HAS_BRANCHES_FLAG;\n\n//States\nconst DATA_STATE = 'DATA_STATE';\nconst RCDATA_STATE = 'RCDATA_STATE';\nconst RAWTEXT_STATE = 'RAWTEXT_STATE';\nconst SCRIPT_DATA_STATE = 'SCRIPT_DATA_STATE';\nconst PLAINTEXT_STATE = 'PLAINTEXT_STATE';\nconst TAG_OPEN_STATE = 'TAG_OPEN_STATE';\nconst END_TAG_OPEN_STATE = 'END_TAG_OPEN_STATE';\nconst TAG_NAME_STATE = 'TAG_NAME_STATE';\nconst RCDATA_LESS_THAN_SIGN_STATE = 'RCDATA_LESS_THAN_SIGN_STATE';\nconst RCDATA_END_TAG_OPEN_STATE = 'RCDATA_END_TAG_OPEN_STATE';\nconst RCDATA_END_TAG_NAME_STATE = 'RCDATA_END_TAG_NAME_STATE';\nconst RAWTEXT_LESS_THAN_SIGN_STATE = 'RAWTEXT_LESS_THAN_SIGN_STATE';\nconst RAWTEXT_END_TAG_OPEN_STATE = 'RAWTEXT_END_TAG_OPEN_STATE';\nconst RAWTEXT_END_TAG_NAME_STATE = 'RAWTEXT_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_END_TAG_OPEN_STATE = 'SCRIPT_DATA_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_END_TAG_NAME_STATE = 'SCRIPT_DATA_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_ESCAPE_START_STATE = 'SCRIPT_DATA_ESCAPE_START_STATE';\nconst SCRIPT_DATA_ESCAPE_START_DASH_STATE = 'SCRIPT_DATA_ESCAPE_START_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_STATE = 'SCRIPT_DATA_ESCAPED_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE';\nconst BEFORE_ATTRIBUTE_NAME_STATE = 'BEFORE_ATTRIBUTE_NAME_STATE';\nconst ATTRIBUTE_NAME_STATE = 'ATTRIBUTE_NAME_STATE';\nconst AFTER_ATTRIBUTE_NAME_STATE = 'AFTER_ATTRIBUTE_NAME_STATE';\nconst BEFORE_ATTRIBUTE_VALUE_STATE = 'BEFORE_ATTRIBUTE_VALUE_STATE';\nconst ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_UNQUOTED_STATE = 'ATTRIBUTE_VALUE_UNQUOTED_STATE';\nconst AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = 'AFTER_ATTRIBUTE_VALUE_QUOTED_STATE';\nconst SELF_CLOSING_START_TAG_STATE = 'SELF_CLOSING_START_TAG_STATE';\nconst BOGUS_COMMENT_STATE = 'BOGUS_COMMENT_STATE';\nconst MARKUP_DECLARATION_OPEN_STATE = 'MARKUP_DECLARATION_OPEN_STATE';\nconst COMMENT_START_STATE = 'COMMENT_START_STATE';\nconst COMMENT_START_DASH_STATE = 'COMMENT_START_DASH_STATE';\nconst COMMENT_STATE = 'COMMENT_STATE';\nconst COMMENT_LESS_THAN_SIGN_STATE = 'COMMENT_LESS_THAN_SIGN_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE';\nconst COMMENT_END_DASH_STATE = 'COMMENT_END_DASH_STATE';\nconst COMMENT_END_STATE = 'COMMENT_END_STATE';\nconst COMMENT_END_BANG_STATE = 'COMMENT_END_BANG_STATE';\nconst DOCTYPE_STATE = 'DOCTYPE_STATE';\nconst BEFORE_DOCTYPE_NAME_STATE = 'BEFORE_DOCTYPE_NAME_STATE';\nconst DOCTYPE_NAME_STATE = 'DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_NAME_STATE = 'AFTER_DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE = 'AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE = 'BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE';\nconst AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE = 'AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst BOGUS_DOCTYPE_STATE = 'BOGUS_DOCTYPE_STATE';\nconst CDATA_SECTION_STATE = 'CDATA_SECTION_STATE';\nconst CDATA_SECTION_BRACKET_STATE = 'CDATA_SECTION_BRACKET_STATE';\nconst CDATA_SECTION_END_STATE = 'CDATA_SECTION_END_STATE';\nconst CHARACTER_REFERENCE_STATE = 'CHARACTER_REFERENCE_STATE';\nconst NAMED_CHARACTER_REFERENCE_STATE = 'NAMED_CHARACTER_REFERENCE_STATE';\nconst AMBIGUOUS_AMPERSAND_STATE = 'AMBIGUOS_AMPERSAND_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_STATE = 'NUMERIC_CHARACTER_REFERENCE_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_START_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_START_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_START_STATE = 'DECIMAL_CHARACTER_REFERENCE_START_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_STATE = 'DECIMAL_CHARACTER_REFERENCE_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_END_STATE = 'NUMERIC_CHARACTER_REFERENCE_END_STATE';\n\n//Utils\n\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\n\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\n\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\n\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\n\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\n\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\n\nfunction isAsciiUpperHexDigit(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\n\nfunction isAsciiLowerHexDigit(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\n\nfunction isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\n\nfunction toAsciiLowerCodePoint(cp) {\n return cp + 0x0020;\n}\n\n//NOTE: String.fromCharCode() function can handle only characters from BMP subset.\n//So, we need to workaround this manually.\n//(see: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/fromCharCode#Getting_it_to_work_with_higher_values)\nfunction toChar(cp) {\n if (cp <= 0xffff) {\n return String.fromCharCode(cp);\n }\n\n cp -= 0x10000;\n return String.fromCharCode(((cp >>> 10) & 0x3ff) | 0xd800) + String.fromCharCode(0xdc00 | (cp & 0x3ff));\n}\n\nfunction toAsciiLowerChar(cp) {\n return String.fromCharCode(toAsciiLowerCodePoint(cp));\n}\n\nfunction findNamedEntityTreeBranch(nodeIx, cp) {\n const branchCount = neTree[++nodeIx];\n let lo = ++nodeIx;\n let hi = lo + branchCount - 1;\n\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midCp = neTree[mid];\n\n if (midCp < cp) {\n lo = mid + 1;\n } else if (midCp > cp) {\n hi = mid - 1;\n } else {\n return neTree[mid + branchCount];\n }\n }\n\n return -1;\n}\n\n//Tokenizer\nclass Tokenizer {\n constructor() {\n this.preprocessor = new Preprocessor();\n\n this.tokenQueue = [];\n\n this.allowCDATA = false;\n\n this.state = DATA_STATE;\n this.returnState = '';\n\n this.charRefCode = -1;\n this.tempBuff = [];\n this.lastStartTagName = '';\n\n this.consumedAfterSnapshot = -1;\n this.active = false;\n\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = null;\n }\n\n //Errors\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n _errOnNextCodePoint(err) {\n this._consume();\n this._err(err);\n this._unconsume();\n }\n\n //API\n getNextToken() {\n while (!this.tokenQueue.length && this.active) {\n this.consumedAfterSnapshot = 0;\n\n const cp = this._consume();\n\n if (!this._ensureHibernation()) {\n this[this.state](cp);\n }\n }\n\n return this.tokenQueue.shift();\n }\n\n write(chunk, isLastChunk) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n }\n\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n }\n\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n for (; this.consumedAfterSnapshot > 0; this.consumedAfterSnapshot--) {\n this.preprocessor.retreat();\n }\n\n this.active = false;\n this.tokenQueue.push({ type: Tokenizer.HIBERNATION_TOKEN });\n\n return true;\n }\n\n return false;\n }\n\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n\n _unconsume() {\n this.consumedAfterSnapshot--;\n this.preprocessor.retreat();\n }\n\n _reconsumeInState(state) {\n this.state = state;\n this._unconsume();\n }\n\n _consumeSequenceIfMatch(pattern, startCp, caseSensitive) {\n let consumedCount = 0;\n let isMatch = true;\n const patternLength = pattern.length;\n let patternPos = 0;\n let cp = startCp;\n let patternCp = void 0;\n\n for (; patternPos < patternLength; patternPos++) {\n if (patternPos > 0) {\n cp = this._consume();\n consumedCount++;\n }\n\n if (cp === $.EOF) {\n isMatch = false;\n break;\n }\n\n patternCp = pattern[patternPos];\n\n if (cp !== patternCp && (caseSensitive || cp !== toAsciiLowerCodePoint(patternCp))) {\n isMatch = false;\n break;\n }\n }\n\n if (!isMatch) {\n while (consumedCount--) {\n this._unconsume();\n }\n }\n\n return isMatch;\n }\n\n //Temp buffer\n _isTempBufferEqualToScriptString() {\n if (this.tempBuff.length !== $$.SCRIPT_STRING.length) {\n return false;\n }\n\n for (let i = 0; i < this.tempBuff.length; i++) {\n if (this.tempBuff[i] !== $$.SCRIPT_STRING[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: Tokenizer.START_TAG_TOKEN,\n tagName: '',\n selfClosing: false,\n ackSelfClosing: false,\n attrs: []\n };\n }\n\n _createEndTagToken() {\n this.currentToken = {\n type: Tokenizer.END_TAG_TOKEN,\n tagName: '',\n selfClosing: false,\n attrs: []\n };\n }\n\n _createCommentToken() {\n this.currentToken = {\n type: Tokenizer.COMMENT_TOKEN,\n data: ''\n };\n }\n\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: Tokenizer.DOCTYPE_TOKEN,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null\n };\n }\n\n _createCharacterToken(type, ch) {\n this.currentCharacterToken = {\n type: type,\n chars: ch\n };\n }\n\n _createEOFToken() {\n this.currentToken = { type: Tokenizer.EOF_TOKEN };\n }\n\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: ''\n };\n }\n\n _leaveAttrName(toState) {\n if (Tokenizer.getTokenAttr(this.currentToken, this.currentAttr.name) === null) {\n this.currentToken.attrs.push(this.currentAttr);\n } else {\n this._err(ERR.duplicateAttribute);\n }\n\n this.state = toState;\n }\n\n _leaveAttrValue(toState) {\n this.state = toState;\n }\n\n //Token emission\n _emitCurrentToken() {\n this._emitCurrentCharacterToken();\n\n const ct = this.currentToken;\n\n this.currentToken = null;\n\n //NOTE: store emited start tag's tagName to determine is the following end tag token is appropriate.\n if (ct.type === Tokenizer.START_TAG_TOKEN) {\n this.lastStartTagName = ct.tagName;\n } else if (ct.type === Tokenizer.END_TAG_TOKEN) {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n }\n\n this.tokenQueue.push(ct);\n }\n\n _emitCurrentCharacterToken() {\n if (this.currentCharacterToken) {\n this.tokenQueue.push(this.currentCharacterToken);\n this.currentCharacterToken = null;\n }\n }\n\n _emitEOFToken() {\n this._createEOFToken();\n this._emitCurrentToken();\n }\n\n //Characters emission\n\n //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)NULL_CHARACTER_TOKEN - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)WHITESPACE_CHARACTER_TOKEN - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)CHARACTER_TOKEN - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken && this.currentCharacterToken.type !== type) {\n this._emitCurrentCharacterToken();\n }\n\n if (this.currentCharacterToken) {\n this.currentCharacterToken.chars += ch;\n } else {\n this._createCharacterToken(type, ch);\n }\n }\n\n _emitCodePoint(cp) {\n let type = Tokenizer.CHARACTER_TOKEN;\n\n if (isWhitespace(cp)) {\n type = Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n } else if (cp === $.NULL) {\n type = Tokenizer.NULL_CHARACTER_TOKEN;\n }\n\n this._appendCharToCurrentCharacterToken(type, toChar(cp));\n }\n\n _emitSeveralCodePoints(codePoints) {\n for (let i = 0; i < codePoints.length; i++) {\n this._emitCodePoint(codePoints[i]);\n }\n }\n\n //NOTE: used then we emit character explicitly. This is always a non-whitespace and a non-null character.\n //So we can avoid additional checks here.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(Tokenizer.CHARACTER_TOKEN, ch);\n }\n\n // Character reference helpers\n _matchNamedCharacterReference(startCp) {\n let result = null;\n let excess = 1;\n let i = findNamedEntityTreeBranch(0, startCp);\n\n this.tempBuff.push(startCp);\n\n while (i > -1) {\n const current = neTree[i];\n const inNode = current < MAX_BRANCH_MARKER_VALUE;\n const nodeWithData = inNode && current & HAS_DATA_FLAG;\n\n if (nodeWithData) {\n //NOTE: we use greedy search, so we continue lookup at this point\n result = current & DATA_DUPLET_FLAG ? [neTree[++i], neTree[++i]] : [neTree[++i]];\n excess = 0;\n }\n\n const cp = this._consume();\n\n this.tempBuff.push(cp);\n excess++;\n\n if (cp === $.EOF) {\n break;\n }\n\n if (inNode) {\n i = current & HAS_BRANCHES_FLAG ? findNamedEntityTreeBranch(i, cp) : -1;\n } else {\n i = cp === current ? ++i : -1;\n }\n }\n\n while (excess--) {\n this.tempBuff.pop();\n this._unconsume();\n }\n\n return result;\n }\n\n _isCharacterReferenceInAttribute() {\n return (\n this.returnState === ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE ||\n this.returnState === ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE ||\n this.returnState === ATTRIBUTE_VALUE_UNQUOTED_STATE\n );\n }\n\n _isCharacterReferenceAttributeQuirk(withSemicolon) {\n if (!withSemicolon && this._isCharacterReferenceInAttribute()) {\n const nextCp = this._consume();\n\n this._unconsume();\n\n return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n }\n\n return false;\n }\n\n _flushCodePointsConsumedAsCharacterReference() {\n if (this._isCharacterReferenceInAttribute()) {\n for (let i = 0; i < this.tempBuff.length; i++) {\n this.currentAttr.value += toChar(this.tempBuff[i]);\n }\n } else {\n this._emitSeveralCodePoints(this.tempBuff);\n }\n\n this.tempBuff = [];\n }\n\n // State machine\n\n // Data state\n //------------------------------------------------------------------\n [DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = TAG_OPEN_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = DATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // RCDATA state\n //------------------------------------------------------------------\n [RCDATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.AMPERSAND) {\n this.returnState = RCDATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = RCDATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // RAWTEXT state\n //------------------------------------------------------------------\n [RAWTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = RAWTEXT_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data state\n //------------------------------------------------------------------\n [SCRIPT_DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // PLAINTEXT state\n //------------------------------------------------------------------\n [PLAINTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Tag open state\n //------------------------------------------------------------------\n [TAG_OPEN_STATE](cp) {\n if (cp === $.EXCLAMATION_MARK) {\n this.state = MARKUP_DECLARATION_OPEN_STATE;\n } else if (cp === $.SOLIDUS) {\n this.state = END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $.QUESTION_MARK) {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n } else if (cp === $.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n } else {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this._reconsumeInState(DATA_STATE);\n }\n }\n\n // End tag open state\n //------------------------------------------------------------------\n [END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingEndTagName);\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n } else {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n\n // Tag name state\n //------------------------------------------------------------------\n [TAG_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n } else if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.tagName += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentToken.tagName += toChar(cp);\n }\n }\n\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n [RCDATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = RCDATA_END_TAG_OPEN_STATE;\n } else {\n this._emitChars('<');\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RCDATA end tag open state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RCDATA_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RCDATA end tag name state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n [RAWTEXT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = RAWTEXT_END_TAG_OPEN_STATE;\n } else {\n this._emitChars('<');\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RAWTEXT_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // Script data less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_END_TAG_OPEN_STATE;\n } else if (cp === $.EXCLAMATION_MARK) {\n this.state = SCRIPT_DATA_ESCAPE_START_STATE;\n this._emitChars('<!');\n } else {\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data end tag open state\n //------------------------------------------------------------------\n [SCRIPT_DATA_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data end tag name state\n //------------------------------------------------------------------\n [SCRIPT_DATA_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n } else if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escape start state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPE_START_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPE_START_DASH_STATE;\n this._emitChars('-');\n } else {\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escape start dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPE_START_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else {\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escaped state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_DASH_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = SCRIPT_DATA_STATE;\n this._emitChars('>');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this.tempBuff = [];\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE);\n } else {\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data double escape start state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString()\n ? SCRIPT_DATA_DOUBLE_ESCAPED_STATE\n : SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data double escaped state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = SCRIPT_DATA_STATE;\n this._emitChars('>');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE;\n this._emitChars('/');\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n\n // Script data double escape end state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString()\n ? SCRIPT_DATA_ESCAPED_STATE\n : SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n\n // Before attribute name state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n this._reconsumeInState(AFTER_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.EQUALS_SIGN) {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = ATTRIBUTE_NAME_STATE;\n } else {\n this._createAttr('');\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Attribute name state\n //------------------------------------------------------------------\n [ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n this._leaveAttrName(AFTER_ATTRIBUTE_NAME_STATE);\n this._unconsume();\n } else if (cp === $.EQUALS_SIGN) {\n this._leaveAttrName(BEFORE_ATTRIBUTE_VALUE_STATE);\n } else if (isAsciiUpper(cp)) {\n this.currentAttr.name += toAsciiLowerChar(cp);\n } else if (cp === $.QUOTATION_MARK || cp === $.APOSTROPHE || cp === $.LESS_THAN_SIGN) {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += toChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentAttr.name += toChar(cp);\n }\n }\n\n // After attribute name state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $.EQUALS_SIGN) {\n this.state = BEFORE_ATTRIBUTE_VALUE_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._createAttr('');\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Before attribute value state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_VALUE_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.state = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.state = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingAttributeValue);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(ATTRIBUTE_VALUE_UNQUOTED_STATE);\n }\n }\n\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_UNQUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_UNQUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (\n cp === $.QUOTATION_MARK ||\n cp === $.APOSTROPHE ||\n cp === $.LESS_THAN_SIGN ||\n cp === $.EQUALS_SIGN ||\n cp === $.GRAVE_ACCENT\n ) {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += toChar(cp);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_VALUE_QUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.SOLIDUS) {\n this._leaveAttrValue(SELF_CLOSING_START_TAG_STATE);\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Self-closing start tag state\n //------------------------------------------------------------------\n [SELF_CLOSING_START_TAG_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.currentToken.selfClosing = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedSolidusInTag);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Bogus comment state\n //------------------------------------------------------------------\n [BOGUS_COMMENT_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n\n // Markup declaration open state\n //------------------------------------------------------------------\n [MARKUP_DECLARATION_OPEN_STATE](cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH_STRING, cp, true)) {\n this._createCommentToken();\n this.state = COMMENT_START_STATE;\n } else if (this._consumeSequenceIfMatch($$.DOCTYPE_STRING, cp, false)) {\n this.state = DOCTYPE_STATE;\n } else if (this._consumeSequenceIfMatch($$.CDATA_START_STRING, cp, true)) {\n if (this.allowCDATA) {\n this.state = CDATA_SECTION_STATE;\n } else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken();\n this.currentToken.data = '[CDATA[';\n this.state = BOGUS_COMMENT_STATE;\n }\n }\n\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n\n // Comment start state\n //------------------------------------------------------------------\n [COMMENT_START_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_START_DASH_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment start dash state\n //------------------------------------------------------------------\n [COMMENT_START_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '-';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment state\n //------------------------------------------------------------------\n [COMMENT_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.currentToken.data += '<';\n this.state = COMMENT_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n\n // Comment less-than sign state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.EXCLAMATION_MARK) {\n this.currentToken.data += '!';\n this.state = COMMENT_LESS_THAN_SIGN_BANG_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.currentToken.data += '!';\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_END_DASH_STATE);\n }\n }\n\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE](cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n\n this._reconsumeInState(COMMENT_END_STATE);\n }\n\n // Comment end dash state\n //------------------------------------------------------------------\n [COMMENT_END_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '-';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment end state\n //------------------------------------------------------------------\n [COMMENT_END_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EXCLAMATION_MARK) {\n this.state = COMMENT_END_BANG_STATE;\n } else if (cp === $.HYPHEN_MINUS) {\n this.currentToken.data += '-';\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '--';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment end bang state\n //------------------------------------------------------------------\n [COMMENT_END_BANG_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.currentToken.data += '--!';\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.incorrectlyClosedComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '--!';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // DOCTYPE state\n //------------------------------------------------------------------\n [DOCTYPE_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n }\n }\n\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(toAsciiLowerChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(unicode.REPLACEMENT_CHARACTER);\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._createDoctypeToken(toChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n }\n }\n\n // DOCTYPE name state\n //------------------------------------------------------------------\n [DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = AFTER_DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.name += toAsciiLowerChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.name += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.name += toChar(cp);\n }\n }\n\n // After DOCTYPE name state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (this._consumeSequenceIfMatch($$.PUBLIC_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE;\n } else if (this._consumeSequenceIfMatch($$.SYSTEM_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n [BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n [BOGUS_DOCTYPE_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n } else if (cp === $.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n }\n }\n\n // CDATA section state\n //------------------------------------------------------------------\n [CDATA_SECTION_STATE](cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_BRACKET_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // CDATA section bracket state\n //------------------------------------------------------------------\n [CDATA_SECTION_BRACKET_STATE](cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_END_STATE;\n } else {\n this._emitChars(']');\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n\n // CDATA section end state\n //------------------------------------------------------------------\n [CDATA_SECTION_END_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n } else if (cp === $.RIGHT_SQUARE_BRACKET) {\n this._emitChars(']');\n } else {\n this._emitChars(']]');\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n\n // Character reference state\n //------------------------------------------------------------------\n [CHARACTER_REFERENCE_STATE](cp) {\n this.tempBuff = [$.AMPERSAND];\n\n if (cp === $.NUMBER_SIGN) {\n this.tempBuff.push(cp);\n this.state = NUMERIC_CHARACTER_REFERENCE_STATE;\n } else if (isAsciiAlphaNumeric(cp)) {\n this._reconsumeInState(NAMED_CHARACTER_REFERENCE_STATE);\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Named character reference state\n //------------------------------------------------------------------\n [NAMED_CHARACTER_REFERENCE_STATE](cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n\n //NOTE: matching can be abrupted by hibernation. In that case match\n //results are no longer valid and we will need to start over.\n if (this._ensureHibernation()) {\n this.tempBuff = [$.AMPERSAND];\n } else if (matchResult) {\n const withSemicolon = this.tempBuff[this.tempBuff.length - 1] === $.SEMICOLON;\n\n if (!this._isCharacterReferenceAttributeQuirk(withSemicolon)) {\n if (!withSemicolon) {\n this._errOnNextCodePoint(ERR.missingSemicolonAfterCharacterReference);\n }\n\n this.tempBuff = matchResult;\n }\n\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = this.returnState;\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = AMBIGUOUS_AMPERSAND_STATE;\n }\n }\n\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n [AMBIGUOUS_AMPERSAND_STATE](cp) {\n if (isAsciiAlphaNumeric(cp)) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += toChar(cp);\n } else {\n this._emitCodePoint(cp);\n }\n } else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Numeric character reference state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_STATE](cp) {\n this.charRefCode = 0;\n\n if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n this.tempBuff.push(cp);\n this.state = HEXADEMICAL_CHARACTER_REFERENCE_START_STATE;\n } else {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_START_STATE);\n }\n }\n\n // Hexademical character reference start state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiHexDigit(cp)) {\n this._reconsumeInState(HEXADEMICAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Decimal character reference start state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Hexademical character reference state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n } else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n } else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n } else if (cp === $.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n\n // Decimal character reference state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n } else if (cp === $.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n\n // Numeric character reference end state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_END_STATE]() {\n if (this.charRefCode === $.NULL) {\n this._err(ERR.nullCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (this.charRefCode > 0x10ffff) {\n this._err(ERR.characterReferenceOutsideUnicodeRange);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (unicode.isSurrogate(this.charRefCode)) {\n this._err(ERR.surrogateCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (unicode.isUndefinedCodePoint(this.charRefCode)) {\n this._err(ERR.noncharacterCharacterReference);\n } else if (unicode.isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n this._err(ERR.controlCharacterReference);\n\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS[this.charRefCode];\n\n if (replacement) {\n this.charRefCode = replacement;\n }\n }\n\n this.tempBuff = [this.charRefCode];\n\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n}\n\n//Token types\nTokenizer.CHARACTER_TOKEN = 'CHARACTER_TOKEN';\nTokenizer.NULL_CHARACTER_TOKEN = 'NULL_CHARACTER_TOKEN';\nTokenizer.WHITESPACE_CHARACTER_TOKEN = 'WHITESPACE_CHARACTER_TOKEN';\nTokenizer.START_TAG_TOKEN = 'START_TAG_TOKEN';\nTokenizer.END_TAG_TOKEN = 'END_TAG_TOKEN';\nTokenizer.COMMENT_TOKEN = 'COMMENT_TOKEN';\nTokenizer.DOCTYPE_TOKEN = 'DOCTYPE_TOKEN';\nTokenizer.EOF_TOKEN = 'EOF_TOKEN';\nTokenizer.HIBERNATION_TOKEN = 'HIBERNATION_TOKEN';\n\n//Tokenizer initial states for different modes\nTokenizer.MODE = {\n DATA: DATA_STATE,\n RCDATA: RCDATA_STATE,\n RAWTEXT: RAWTEXT_STATE,\n SCRIPT_DATA: SCRIPT_DATA_STATE,\n PLAINTEXT: PLAINTEXT_STATE\n};\n\n//Static\nTokenizer.getTokenAttr = function(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n\n return null;\n};\n\nmodule.exports = Tokenizer;\n","'use strict';\n\n//NOTE: this file contains auto-generated array mapped radix tree that is used for the named entity references consumption\n//(details: https://github.com/inikulin/parse5/tree/master/scripts/generate-named-entity-data/README.md)\nmodule.exports = new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4000,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,10000,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13000,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]);","'use strict';\n\nconst unicode = require('../common/unicode');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\n\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nclass Preprocessor {\n constructor() {\n this.html = null;\n\n this.pos = -1;\n this.lastGapPos = -1;\n this.lastCharPos = -1;\n\n this.gapStack = [];\n\n this.skipNextNewLine = false;\n\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n }\n\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.lastCharPos) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n\n if (unicode.isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n\n //NOTE: add gap that should be avoided during retreat\n this._addGap();\n\n return unicode.getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n\n //NOTE: we are at the end of a chunk, therefore we can't infer surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n\n return cp;\n }\n\n dropParsedChunk() {\n if (this.pos > this.bufferWaterline) {\n this.lastCharPos -= this.pos;\n this.html = this.html.substring(this.pos);\n this.pos = 0;\n this.lastGapPos = -1;\n this.gapStack = [];\n }\n }\n\n write(chunk, isLastChunk) {\n if (this.html) {\n this.html += chunk;\n } else {\n this.html = chunk;\n }\n\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1, this.html.length);\n\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n }\n\n advance() {\n this.pos++;\n\n if (this.pos > this.lastCharPos) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n\n let cp = this.html.charCodeAt(this.pos);\n\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (this.skipNextNewLine && cp === $.LINE_FEED) {\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n\n this.skipNextNewLine = false;\n\n if (unicode.isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange =\n (cp > 0x1f && cp < 0x7f) || cp === $.LINE_FEED || cp === $.CARRIAGE_RETURN || (cp > 0x9f && cp < 0xfdd0);\n\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n\n return cp;\n }\n\n _checkForProblematicCharacters(cp) {\n if (unicode.isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n } else if (unicode.isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n\n retreat() {\n if (this.pos === this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n\n this.pos--;\n }\n}\n\nmodule.exports = Preprocessor;\n","'use strict';\n\nconst { DOCUMENT_MODE } = require('../common/html');\n\n//Node construction\nexports.createDocument = function() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: []\n };\n};\n\nexports.createDocumentFragment = function() {\n return {\n nodeName: '#document-fragment',\n childNodes: []\n };\n};\n\nexports.createElement = function(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName: tagName,\n attrs: attrs,\n namespaceURI: namespaceURI,\n childNodes: [],\n parentNode: null\n };\n};\n\nexports.createCommentNode = function(data) {\n return {\n nodeName: '#comment',\n data: data,\n parentNode: null\n };\n};\n\nconst createTextNode = function(value) {\n return {\n nodeName: '#text',\n value: value,\n parentNode: null\n };\n};\n\n//Tree mutation\nconst appendChild = (exports.appendChild = function(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n});\n\nconst insertBefore = (exports.insertBefore = function(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n});\n\nexports.setTemplateContent = function(templateElement, contentElement) {\n templateElement.content = contentElement;\n};\n\nexports.getTemplateContent = function(templateElement) {\n return templateElement.content;\n};\n\nexports.setDocumentType = function(document, name, publicId, systemId) {\n let doctypeNode = null;\n\n for (let i = 0; i < document.childNodes.length; i++) {\n if (document.childNodes[i].nodeName === '#documentType') {\n doctypeNode = document.childNodes[i];\n break;\n }\n }\n\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n } else {\n appendChild(document, {\n nodeName: '#documentType',\n name: name,\n publicId: publicId,\n systemId: systemId\n });\n }\n};\n\nexports.setDocumentMode = function(document, mode) {\n document.mode = mode;\n};\n\nexports.getDocumentMode = function(document) {\n return document.mode;\n};\n\nexports.detachNode = function(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n};\n\nexports.insertText = function(parentNode, text) {\n if (parentNode.childNodes.length) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n\n if (prevNode.nodeName === '#text') {\n prevNode.value += text;\n return;\n }\n }\n\n appendChild(parentNode, createTextNode(text));\n};\n\nexports.insertTextBefore = function(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n\n if (prevNode && prevNode.nodeName === '#text') {\n prevNode.value += text;\n } else {\n insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n};\n\nexports.adoptAttributes = function(recipient, attrs) {\n const recipientAttrsMap = [];\n\n for (let i = 0; i < recipient.attrs.length; i++) {\n recipientAttrsMap.push(recipient.attrs[i].name);\n }\n\n for (let j = 0; j < attrs.length; j++) {\n if (recipientAttrsMap.indexOf(attrs[j].name) === -1) {\n recipient.attrs.push(attrs[j]);\n }\n }\n};\n\n//Tree traversing\nexports.getFirstChild = function(node) {\n return node.childNodes[0];\n};\n\nexports.getChildNodes = function(node) {\n return node.childNodes;\n};\n\nexports.getParentNode = function(node) {\n return node.parentNode;\n};\n\nexports.getAttrList = function(element) {\n return element.attrs;\n};\n\n//Node data\nexports.getTagName = function(element) {\n return element.tagName;\n};\n\nexports.getNamespaceURI = function(element) {\n return element.namespaceURI;\n};\n\nexports.getTextNodeContent = function(textNode) {\n return textNode.value;\n};\n\nexports.getCommentNodeContent = function(commentNode) {\n return commentNode.data;\n};\n\nexports.getDocumentTypeNodeName = function(doctypeNode) {\n return doctypeNode.name;\n};\n\nexports.getDocumentTypeNodePublicId = function(doctypeNode) {\n return doctypeNode.publicId;\n};\n\nexports.getDocumentTypeNodeSystemId = function(doctypeNode) {\n return doctypeNode.systemId;\n};\n\n//Node types\nexports.isTextNode = function(node) {\n return node.nodeName === '#text';\n};\n\nexports.isCommentNode = function(node) {\n return node.nodeName === '#comment';\n};\n\nexports.isDocumentTypeNode = function(node) {\n return node.nodeName === '#documentType';\n};\n\nexports.isElementNode = function(node) {\n return !!node.tagName;\n};\n\n// Source code location\nexports.setNodeSourceCodeLocation = function(node, location) {\n node.sourceCodeLocation = location;\n};\n\nexports.getNodeSourceCodeLocation = function(node) {\n return node.sourceCodeLocation;\n};\n\nexports.updateNodeSourceCodeLocation = function(node, endLocation) {\n node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation);\n};\n","'use strict';\n\nmodule.exports = function mergeOptions(defaults, options) {\n options = options || Object.create(null);\n\n return [defaults, options].reduce((merged, optObj) => {\n Object.keys(optObj).forEach(key => {\n merged[key] = optObj[key];\n });\n\n return merged;\n }, Object.create(null));\n};\n","'use strict';\n\nclass Mixin {\n constructor(host) {\n const originalMethods = {};\n const overriddenMethods = this._getOverriddenMethods(this, originalMethods);\n\n for (const key of Object.keys(overriddenMethods)) {\n if (typeof overriddenMethods[key] === 'function') {\n originalMethods[key] = host[key];\n host[key] = overriddenMethods[key];\n }\n }\n }\n\n _getOverriddenMethods() {\n throw new Error('Not implemented');\n }\n}\n\nMixin.install = function(host, Ctor, opts) {\n if (!host.__mixins) {\n host.__mixins = [];\n }\n\n for (let i = 0; i < host.__mixins.length; i++) {\n if (host.__mixins[i].constructor === Ctor) {\n return host.__mixins[i];\n }\n }\n\n const mixin = new Ctor(host, opts);\n\n host.__mixins.push(mixin);\n\n return mixin;\n};\n\nmodule.exports = Mixin;\n","/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\n/**\n * prism-react-renderer:\n * This file has been modified to remove:\n * - globals and window dependency\n * - worker support\n * - highlightAll and other element dependent methods\n * - _.hooks helpers\n * - UMD/node-specific hacks\n * It has also been run through prettier\n */\n\n var Prism = (function () {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\treturn _;\n\n}());\n\nvar prism = Prism;\nPrism.default = Prism;\n\n/* This content is auto-generated to include some prismjs language components: */\n\n/* \"prismjs/components/prism-markup\" */\n\nprism.languages.markup = {\n 'comment': {\n pattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n greedy: true\n },\n 'prolog': {\n pattern: /<\\?[\\s\\S]+?\\?>/,\n greedy: true\n },\n 'doctype': {\n // https://www.w3.org/TR/xml/#NT-doctypedecl\n pattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n greedy: true,\n inside: {\n 'internal-subset': {\n pattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n lookbehind: true,\n greedy: true,\n inside: null // see below\n\n },\n 'string': {\n pattern: /\"[^\"]*\"|'[^']*'/,\n greedy: true\n },\n 'punctuation': /^<!|>$|[[\\]]/,\n 'doctype-tag': /^DOCTYPE/i,\n 'name': /[^\\s<>'\"]+/\n }\n },\n 'cdata': {\n pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n greedy: true\n },\n 'tag': {\n pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n greedy: true,\n inside: {\n 'tag': {\n pattern: /^<\\/?[^\\s>\\/]+/,\n inside: {\n 'punctuation': /^<\\/?/,\n 'namespace': /^[^\\s>\\/:]+:/\n }\n },\n 'special-attr': [],\n 'attr-value': {\n pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n inside: {\n 'punctuation': [{\n pattern: /^=/,\n alias: 'attr-equals'\n }, /\"|'/]\n }\n },\n 'punctuation': /\\/?>/,\n 'attr-name': {\n pattern: /[^\\s>\\/]+/,\n inside: {\n 'namespace': /^[^\\s>\\/:]+:/\n }\n }\n }\n },\n 'entity': [{\n pattern: /&[\\da-z]{1,8};/i,\n alias: 'named-entity'\n }, /&#x?[\\da-f]{1,8};/i]\n};\nprism.languages.markup['tag'].inside['attr-value'].inside['entity'] = prism.languages.markup['entity'];\nprism.languages.markup['doctype'].inside['internal-subset'].inside = prism.languages.markup; // Plugin to make entity title show the real entity, idea by Roman Komarov\n\nprism.hooks.add('wrap', function (env) {\n if (env.type === 'entity') {\n env.attributes['title'] = env.content.replace(/&amp;/, '&');\n }\n});\nObject.defineProperty(prism.languages.markup.tag, 'addInlined', {\n /**\n * Adds an inlined language to markup.\n *\n * An example of an inlined language is CSS with `<style>` tags.\n *\n * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n * case insensitive.\n * @param {string} lang The language key.\n * @example\n * addInlined('style', 'css');\n */\n value: function addInlined(tagName, lang) {\n var includedCdataInside = {};\n includedCdataInside['language-' + lang] = {\n pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n lookbehind: true,\n inside: prism.languages[lang]\n };\n includedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n var inside = {\n 'included-cdata': {\n pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n inside: includedCdataInside\n }\n };\n inside['language-' + lang] = {\n pattern: /[\\s\\S]+/,\n inside: prism.languages[lang]\n };\n var def = {};\n def[tagName] = {\n pattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () {\n return tagName;\n }), 'i'),\n lookbehind: true,\n greedy: true,\n inside: inside\n };\n prism.languages.insertBefore('markup', 'cdata', def);\n }\n});\nObject.defineProperty(prism.languages.markup.tag, 'addAttribute', {\n /**\n * Adds an pattern to highlight languages embedded in HTML attributes.\n *\n * An example of an inlined language is CSS with `style` attributes.\n *\n * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n * case insensitive.\n * @param {string} lang The language key.\n * @example\n * addAttribute('style', 'css');\n */\n value: function (attrName, lang) {\n prism.languages.markup.tag.inside['special-attr'].push({\n pattern: RegExp(/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source, 'i'),\n lookbehind: true,\n inside: {\n 'attr-name': /^[^\\s=]+/,\n 'attr-value': {\n pattern: /=[\\s\\S]+/,\n inside: {\n 'value': {\n pattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n lookbehind: true,\n alias: [lang, 'language-' + lang],\n inside: prism.languages[lang]\n },\n 'punctuation': [{\n pattern: /^=/,\n alias: 'attr-equals'\n }, /\"|'/]\n }\n }\n }\n });\n }\n});\nprism.languages.html = prism.languages.markup;\nprism.languages.mathml = prism.languages.markup;\nprism.languages.svg = prism.languages.markup;\nprism.languages.xml = prism.languages.extend('markup', {});\nprism.languages.ssml = prism.languages.xml;\nprism.languages.atom = prism.languages.xml;\nprism.languages.rss = prism.languages.xml;\n/* \"prismjs/components/prism-bash\" */\n\n(function (Prism) {\n // $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n // + LC_ALL, RANDOM, REPLY, SECONDS.\n // + make sure PS1..4 are here as they are not always set,\n // - some useless things.\n var envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n var commandAfterHeredoc = {\n pattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n lookbehind: true,\n alias: 'punctuation',\n // this looks reasonably well in all themes\n inside: null // see below\n\n };\n var insideString = {\n 'bash': commandAfterHeredoc,\n 'environment': {\n pattern: RegExp('\\\\$' + envVars),\n alias: 'constant'\n },\n 'variable': [// [0]: Arithmetic Environment\n {\n pattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n greedy: true,\n inside: {\n // If there is a $ sign at the beginning highlight $(( and )) as variable\n 'variable': [{\n pattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n lookbehind: true\n }, /^\\$\\(\\(/],\n 'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n 'operator': /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n // If there is no $ sign at the beginning highlight (( and )) as punctuation\n 'punctuation': /\\(\\(?|\\)\\)?|,|;/\n }\n }, // [1]: Command Substitution\n {\n pattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n greedy: true,\n inside: {\n 'variable': /^\\$\\(|^`|\\)$|`$/\n }\n }, // [2]: Brace expansion\n {\n pattern: /\\$\\{[^}]+\\}/,\n greedy: true,\n inside: {\n 'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n 'punctuation': /[\\[\\]]/,\n 'environment': {\n pattern: RegExp('(\\\\{)' + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n }\n }, /\\$(?:\\w+|[#?*!@$])/],\n // Escape sequences from echo and printf's manuals, and escaped quotes.\n 'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n };\n Prism.languages.bash = {\n 'shebang': {\n pattern: /^#!\\s*\\/.*/,\n alias: 'important'\n },\n 'comment': {\n pattern: /(^|[^\"{\\\\$])#.*/,\n lookbehind: true\n },\n 'function-name': [// a) function foo {\n // b) foo() {\n // c) function foo() {\n // but not “foo {”\n {\n // a) and c)\n pattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n lookbehind: true,\n alias: 'function'\n }, {\n // b)\n pattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n alias: 'function'\n }],\n // Highlight variable names as variables in for and select beginnings.\n 'for-or-select': {\n pattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n alias: 'variable',\n lookbehind: true\n },\n // Highlight variable names as variables in the left-hand part\n // of assignments (“=” and “+=”).\n 'assign-left': {\n pattern: /(^|[\\s;|&]|[<>]\\()\\w+(?=\\+?=)/,\n inside: {\n 'environment': {\n pattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n },\n alias: 'variable',\n lookbehind: true\n },\n 'string': [// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n {\n pattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n }, // Here-document with quotes around the tag\n // → No expansion (so no “inside”).\n {\n pattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n lookbehind: true,\n greedy: true,\n inside: {\n 'bash': commandAfterHeredoc\n }\n }, // “Normal” string\n {\n // https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n pattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n }, {\n // https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n pattern: /(^|[^$\\\\])'[^']*'/,\n lookbehind: true,\n greedy: true\n }, {\n // https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n pattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n greedy: true,\n inside: {\n 'entity': insideString.entity\n }\n }],\n 'environment': {\n pattern: RegExp('\\\\$?' + envVars),\n alias: 'constant'\n },\n 'variable': insideString.variable,\n 'function': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n 'keyword': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n 'builtin': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n lookbehind: true,\n // Alias added to make those easier to distinguish from strings.\n alias: 'class-name'\n },\n 'boolean': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n 'file-descriptor': {\n pattern: /\\B&\\d\\b/,\n alias: 'important'\n },\n 'operator': {\n // Lots of redirections here, but not just that.\n pattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n inside: {\n 'file-descriptor': {\n pattern: /^\\d/,\n alias: 'important'\n }\n }\n },\n 'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n 'number': {\n pattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n lookbehind: true\n }\n };\n commandAfterHeredoc.inside = Prism.languages.bash;\n /* Patterns in command substitution. */\n\n var toBeCopied = ['comment', 'function-name', 'for-or-select', 'assign-left', 'string', 'environment', 'function', 'keyword', 'builtin', 'boolean', 'file-descriptor', 'operator', 'punctuation', 'number'];\n var inside = insideString.variable[1].inside;\n\n for (var i = 0; i < toBeCopied.length; i++) {\n inside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n }\n\n Prism.languages.shell = Prism.languages.bash;\n})(prism);\n/* \"prismjs/components/prism-clike\" */\n\n\nprism.languages.clike = {\n 'comment': [{\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n greedy: true\n }, {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }],\n 'string': {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n 'punctuation': /[.\\\\]/\n }\n },\n 'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n 'boolean': /\\b(?:false|true)\\b/,\n 'function': /\\b\\w+(?=\\()/,\n 'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n 'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n 'punctuation': /[{}[\\];(),.:]/\n};\n/* \"prismjs/components/prism-c\" */\n\nprism.languages.c = prism.languages.extend('clike', {\n 'comment': {\n pattern: /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n 'string': {\n // https://en.cppreference.com/w/c/language/string_literal\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,\n lookbehind: true\n },\n 'keyword': /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,\n 'function': /\\b[a-z_]\\w*(?=\\s*\\()/i,\n 'number': /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n 'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/\n});\nprism.languages.insertBefore('c', 'string', {\n 'char': {\n // https://en.cppreference.com/w/c/language/character_constant\n pattern: /'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,\n greedy: true\n }\n});\nprism.languages.insertBefore('c', 'string', {\n 'macro': {\n // allow for multiline macro definitions\n // spaces after the # character compile fine with gcc\n pattern: /(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n lookbehind: true,\n greedy: true,\n alias: 'property',\n inside: {\n 'string': [{\n // highlight the path of the include statement as a string\n pattern: /^(#\\s*include\\s*)<[^>]+>/,\n lookbehind: true\n }, prism.languages.c['string']],\n 'char': prism.languages.c['char'],\n 'comment': prism.languages.c['comment'],\n 'macro-name': [{\n pattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i,\n lookbehind: true\n }, {\n pattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i,\n lookbehind: true,\n alias: 'function'\n }],\n // highlight macro directives as keywords\n 'directive': {\n pattern: /^(#\\s*)[a-z]+/,\n lookbehind: true,\n alias: 'keyword'\n },\n 'directive-hash': /^#/,\n 'punctuation': /##|\\\\(?=[\\r\\n])/,\n 'expression': {\n pattern: /\\S[\\s\\S]*/,\n inside: prism.languages.c\n }\n }\n }\n});\nprism.languages.insertBefore('c', 'function', {\n // highlight predefined macros as constants\n 'constant': /\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/\n});\ndelete prism.languages.c['boolean'];\n/* \"prismjs/components/prism-cpp\" */\n\n(function (Prism) {\n var keyword = /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/;\n var modName = /\\b(?!<keyword>)\\w+(?:\\s*\\.\\s*\\w+)*\\b/.source.replace(/<keyword>/g, function () {\n return keyword.source;\n });\n Prism.languages.cpp = Prism.languages.extend('c', {\n 'class-name': [{\n pattern: RegExp(/(\\b(?:class|concept|enum|struct|typename)\\s+)(?!<keyword>)\\w+/.source.replace(/<keyword>/g, function () {\n return keyword.source;\n })),\n lookbehind: true\n }, // This is intended to capture the class name of method implementations like:\n // void foo::bar() const {}\n // However! The `foo` in the above example could also be a namespace, so we only capture the class name if\n // it starts with an uppercase letter. This approximation should give decent results.\n /\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/, // This will capture the class name before destructors like:\n // Foo::~Foo() {}\n /\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i, // This also intends to capture the class name of method implementations but here the class has template\n // parameters, so it can't be a namespace (until C++ adds generic namespaces).\n /\\b\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/],\n 'keyword': keyword,\n 'number': {\n pattern: /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i,\n greedy: true\n },\n 'operator': />>=?|<<=?|->|--|\\+\\+|&&|\\|\\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n 'boolean': /\\b(?:false|true)\\b/\n });\n Prism.languages.insertBefore('cpp', 'string', {\n 'module': {\n // https://en.cppreference.com/w/cpp/language/modules\n pattern: RegExp(/(\\b(?:import|module)\\s+)/.source + '(?:' + // header-name\n /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|<[^<>\\r\\n]*>/.source + '|' + // module name or partition or both\n /<mod-name>(?:\\s*:\\s*<mod-name>)?|:\\s*<mod-name>/.source.replace(/<mod-name>/g, function () {\n return modName;\n }) + ')'),\n lookbehind: true,\n greedy: true,\n inside: {\n 'string': /^[<\"][\\s\\S]+/,\n 'operator': /:/,\n 'punctuation': /\\./\n }\n },\n 'raw-string': {\n pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n alias: 'string',\n greedy: true\n }\n });\n Prism.languages.insertBefore('cpp', 'keyword', {\n 'generic-function': {\n pattern: /\\b(?!operator\\b)[a-z_]\\w*\\s*<(?:[^<>]|<[^<>]*>)*>(?=\\s*\\()/i,\n inside: {\n 'function': /^\\w+/,\n 'generic': {\n pattern: /<[\\s\\S]+/,\n alias: 'class-name',\n inside: Prism.languages.cpp\n }\n }\n }\n });\n Prism.languages.insertBefore('cpp', 'operator', {\n 'double-colon': {\n pattern: /::/,\n alias: 'punctuation'\n }\n });\n Prism.languages.insertBefore('cpp', 'class-name', {\n // the base clause is an optional list of parent classes\n // https://en.cppreference.com/w/cpp/language/class\n 'base-clause': {\n pattern: /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/,\n lookbehind: true,\n greedy: true,\n inside: Prism.languages.extend('cpp', {})\n }\n });\n Prism.languages.insertBefore('inside', 'double-colon', {\n // All untokenized words that are not namespaces should be class names\n 'class-name': /\\b[a-z_]\\w*\\b(?!\\s*::)/i\n }, Prism.languages.cpp['base-clause']);\n})(prism);\n/* \"prismjs/components/prism-css\" */\n\n\n(function (Prism) {\n var string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n Prism.languages.css = {\n 'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n 'atrule': {\n pattern: /@[\\w-](?:[^;{\\s]|\\s+(?![\\s{]))*(?:;|(?=\\s*\\{))/,\n inside: {\n 'rule': /^@[\\w-]+/,\n 'selector-function-argument': {\n pattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n lookbehind: true,\n alias: 'selector'\n },\n 'keyword': {\n pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n lookbehind: true\n } // See rest below\n\n }\n },\n 'url': {\n // https://drafts.csswg.org/css-values-3/#urls\n pattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n greedy: true,\n inside: {\n 'function': /^url/i,\n 'punctuation': /^\\(|\\)$/,\n 'string': {\n pattern: RegExp('^' + string.source + '$'),\n alias: 'url'\n }\n }\n },\n 'selector': {\n pattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n lookbehind: true\n },\n 'string': {\n pattern: string,\n greedy: true\n },\n 'property': {\n pattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n lookbehind: true\n },\n 'important': /!important\\b/i,\n 'function': {\n pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n lookbehind: true\n },\n 'punctuation': /[(){};:,]/\n };\n Prism.languages.css['atrule'].inside.rest = Prism.languages.css;\n var markup = Prism.languages.markup;\n\n if (markup) {\n markup.tag.addInlined('style', 'css');\n markup.tag.addAttribute('style', 'css');\n }\n})(prism);\n/* \"prismjs/components/prism-css-extras\" */\n\n\n(function (Prism) {\n var string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/;\n var selectorInside;\n Prism.languages.css.selector = {\n pattern: Prism.languages.css.selector.pattern,\n lookbehind: true,\n inside: selectorInside = {\n 'pseudo-element': /:(?:after|before|first-letter|first-line|selection)|::[-\\w]+/,\n 'pseudo-class': /:[-\\w]+/,\n 'class': /\\.[-\\w]+/,\n 'id': /#[-\\w]+/,\n 'attribute': {\n pattern: RegExp('\\\\[(?:[^[\\\\]\"\\']|' + string.source + ')*\\\\]'),\n greedy: true,\n inside: {\n 'punctuation': /^\\[|\\]$/,\n 'case-sensitivity': {\n pattern: /(\\s)[si]$/i,\n lookbehind: true,\n alias: 'keyword'\n },\n 'namespace': {\n pattern: /^(\\s*)(?:(?!\\s)[-*\\w\\xA0-\\uFFFF])*\\|(?!=)/,\n lookbehind: true,\n inside: {\n 'punctuation': /\\|$/\n }\n },\n 'attr-name': {\n pattern: /^(\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+/,\n lookbehind: true\n },\n 'attr-value': [string, {\n pattern: /(=\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+(?=\\s*$)/,\n lookbehind: true\n }],\n 'operator': /[|~*^$]?=/\n }\n },\n 'n-th': [{\n pattern: /(\\(\\s*)[+-]?\\d*[\\dn](?:\\s*[+-]\\s*\\d+)?(?=\\s*\\))/,\n lookbehind: true,\n inside: {\n 'number': /[\\dn]+/,\n 'operator': /[+-]/\n }\n }, {\n pattern: /(\\(\\s*)(?:even|odd)(?=\\s*\\))/i,\n lookbehind: true\n }],\n 'combinator': />|\\+|~|\\|\\|/,\n // the `tag` token has been existed and removed.\n // because we can't find a perfect tokenize to match it.\n // if you want to add it, please read https://github.com/PrismJS/prism/pull/2373 first.\n 'punctuation': /[(),]/\n }\n };\n Prism.languages.css['atrule'].inside['selector-function-argument'].inside = selectorInside;\n Prism.languages.insertBefore('css', 'property', {\n 'variable': {\n pattern: /(^|[^-\\w\\xA0-\\uFFFF])--(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*/i,\n lookbehind: true\n }\n });\n var unit = {\n pattern: /(\\b\\d+)(?:%|[a-z]+(?![\\w-]))/,\n lookbehind: true\n }; // 123 -123 .123 -.123 12.3 -12.3\n\n var number = {\n pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n lookbehind: true\n };\n Prism.languages.insertBefore('css', 'function', {\n 'operator': {\n pattern: /(\\s)[+\\-*\\/](?=\\s)/,\n lookbehind: true\n },\n // CAREFUL!\n // Previewers and Inline color use hexcode and color.\n 'hexcode': {\n pattern: /\\B#[\\da-f]{3,8}\\b/i,\n alias: 'color'\n },\n 'color': [{\n pattern: /(^|[^\\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\\w-])/i,\n lookbehind: true\n }, {\n pattern: /\\b(?:hsl|rgb)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:hsl|rgb)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n inside: {\n 'unit': unit,\n 'number': number,\n 'function': /[\\w-]+(?=\\()/,\n 'punctuation': /[(),]/\n }\n }],\n // it's important that there is no boundary assertion after the hex digits\n 'entity': /\\\\[\\da-f]{1,8}/i,\n 'unit': unit,\n 'number': number\n });\n})(prism);\n/* \"prismjs/components/prism-javascript\" */\n\n\nprism.languages.javascript = prism.languages.extend('clike', {\n 'class-name': [prism.languages.clike['class-name'], {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n lookbehind: true\n }],\n 'keyword': [{\n pattern: /((?:^|\\})\\s*)catch\\b/,\n lookbehind: true\n }, {\n pattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n lookbehind: true\n }],\n // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n 'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n 'number': {\n pattern: RegExp(/(^|[^\\w$])/.source + '(?:' + ( // constant\n /NaN|Infinity/.source + '|' + // binary integer\n /0[bB][01]+(?:_[01]+)*n?/.source + '|' + // octal integer\n /0[oO][0-7]+(?:_[0-7]+)*n?/.source + '|' + // hexadecimal integer\n /0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source + '|' + // decimal bigint\n /\\d+(?:_\\d+)*n/.source + '|' + // decimal number (integer or float) but no bigint\n /(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source) + ')' + /(?![\\w$])/.source),\n lookbehind: true\n },\n 'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\nprism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\nprism.languages.insertBefore('javascript', 'keyword', {\n 'regex': {\n // eslint-disable-next-line regexp/no-dupe-characters-character-class\n pattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/,\n lookbehind: true,\n greedy: true,\n inside: {\n 'regex-source': {\n pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n lookbehind: true,\n alias: 'language-regex',\n inside: prism.languages.regex\n },\n 'regex-delimiter': /^\\/|\\/$/,\n 'regex-flags': /^[a-z]+$/\n }\n },\n // This must be declared before keyword because we use \"function\" inside the look-forward\n 'function-variable': {\n pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n alias: 'function'\n },\n 'parameter': [{\n pattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n lookbehind: true,\n inside: prism.languages.javascript\n }, {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n lookbehind: true,\n inside: prism.languages.javascript\n }, {\n pattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n lookbehind: true,\n inside: prism.languages.javascript\n }, {\n pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n lookbehind: true,\n inside: prism.languages.javascript\n }],\n 'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\nprism.languages.insertBefore('javascript', 'string', {\n 'hashbang': {\n pattern: /^#!.*/,\n greedy: true,\n alias: 'comment'\n },\n 'template-string': {\n pattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n 'interpolation': {\n pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^\\$\\{|\\}$/,\n alias: 'punctuation'\n },\n rest: prism.languages.javascript\n }\n },\n 'string': /[\\s\\S]+/\n }\n },\n 'string-property': {\n pattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n lookbehind: true,\n greedy: true,\n alias: 'property'\n }\n});\nprism.languages.insertBefore('javascript', 'operator', {\n 'literal-property': {\n pattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n lookbehind: true,\n alias: 'property'\n }\n});\n\nif (prism.languages.markup) {\n prism.languages.markup.tag.addInlined('script', 'javascript'); // add attribute support for all DOM events.\n // https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\n prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, 'javascript');\n}\n\nprism.languages.js = prism.languages.javascript;\n/* \"prismjs/components/prism-coffeescript\" */\n\n(function (Prism) {\n // Ignore comments starting with { to privilege string interpolation highlighting\n var comment = /#(?!\\{).+/;\n var interpolation = {\n pattern: /#\\{[^}]+\\}/,\n alias: 'variable'\n };\n Prism.languages.coffeescript = Prism.languages.extend('javascript', {\n 'comment': comment,\n 'string': [// Strings are multiline\n {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n greedy: true\n }, {\n // Strings are multiline\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n greedy: true,\n inside: {\n 'interpolation': interpolation\n }\n }],\n 'keyword': /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n 'class-member': {\n pattern: /@(?!\\d)\\w+/,\n alias: 'variable'\n }\n });\n Prism.languages.insertBefore('coffeescript', 'comment', {\n 'multiline-comment': {\n pattern: /###[\\s\\S]+?###/,\n alias: 'comment'\n },\n // Block regexp can contain comments and interpolation\n 'block-regex': {\n pattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n alias: 'regex',\n inside: {\n 'comment': comment,\n 'interpolation': interpolation\n }\n }\n });\n Prism.languages.insertBefore('coffeescript', 'string', {\n 'inline-javascript': {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n inside: {\n 'delimiter': {\n pattern: /^`|`$/,\n alias: 'punctuation'\n },\n 'script': {\n pattern: /[\\s\\S]+/,\n alias: 'language-javascript',\n inside: Prism.languages.javascript\n }\n }\n },\n // Block strings\n 'multiline-string': [{\n pattern: /'''[\\s\\S]*?'''/,\n greedy: true,\n alias: 'string'\n }, {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: 'string',\n inside: {\n interpolation: interpolation\n }\n }]\n });\n Prism.languages.insertBefore('coffeescript', 'keyword', {\n // Object property\n 'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n });\n delete Prism.languages.coffeescript['template-string'];\n Prism.languages.coffee = Prism.languages.coffeescript;\n})(prism);\n/* \"prismjs/components/prism-yaml\" */\n\n\n(function (Prism) {\n // https://yaml.org/spec/1.2/spec.html#c-ns-anchor-property\n // https://yaml.org/spec/1.2/spec.html#c-ns-alias-node\n var anchorOrAlias = /[*&][^\\s[\\]{},]+/; // https://yaml.org/spec/1.2/spec.html#c-ns-tag-property\n\n var tag = /!(?:<[\\w\\-%#;/?:@&=+$,.!~*'()[\\]]+>|(?:[a-zA-Z\\d-]*!)?[\\w\\-%#;/?:@&=+$.~*'()]+)?/; // https://yaml.org/spec/1.2/spec.html#c-ns-properties(n,c)\n\n var properties = '(?:' + tag.source + '(?:[ \\t]+' + anchorOrAlias.source + ')?|' + anchorOrAlias.source + '(?:[ \\t]+' + tag.source + ')?)'; // https://yaml.org/spec/1.2/spec.html#ns-plain(n,c)\n // This is a simplified version that doesn't support \"#\" and multiline keys\n // All these long scarry character classes are simplified versions of YAML's characters\n\n var plainKey = /(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-]<PLAIN>)(?:[ \\t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g, function () {\n return /[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]/.source;\n });\n var string = /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/.source;\n /**\n *\n * @param {string} value\n * @param {string} [flags]\n * @returns {RegExp}\n */\n\n function createValuePattern(value, flags) {\n flags = (flags || '').replace(/m/g, '') + 'm'; // add m flag\n\n var pattern = /([:\\-,[{]\\s*(?:\\s<<prop>>[ \\t]+)?)(?:<<value>>)(?=[ \\t]*(?:$|,|\\]|\\}|(?:[\\r\\n]\\s*)?#))/.source.replace(/<<prop>>/g, function () {\n return properties;\n }).replace(/<<value>>/g, function () {\n return value;\n });\n return RegExp(pattern, flags);\n }\n\n Prism.languages.yaml = {\n 'scalar': {\n pattern: RegExp(/([\\-:]\\s*(?:\\s<<prop>>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)/.source.replace(/<<prop>>/g, function () {\n return properties;\n })),\n lookbehind: true,\n alias: 'string'\n },\n 'comment': /#.*/,\n 'key': {\n pattern: RegExp(/((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<<prop>>[ \\t]+)?)<<key>>(?=\\s*:\\s)/.source.replace(/<<prop>>/g, function () {\n return properties;\n }).replace(/<<key>>/g, function () {\n return '(?:' + plainKey + '|' + string + ')';\n })),\n lookbehind: true,\n greedy: true,\n alias: 'atrule'\n },\n 'directive': {\n pattern: /(^[ \\t]*)%.+/m,\n lookbehind: true,\n alias: 'important'\n },\n 'datetime': {\n pattern: createValuePattern(/\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?/.source),\n lookbehind: true,\n alias: 'number'\n },\n 'boolean': {\n pattern: createValuePattern(/false|true/.source, 'i'),\n lookbehind: true,\n alias: 'important'\n },\n 'null': {\n pattern: createValuePattern(/null|~/.source, 'i'),\n lookbehind: true,\n alias: 'important'\n },\n 'string': {\n pattern: createValuePattern(string),\n lookbehind: true,\n greedy: true\n },\n 'number': {\n pattern: createValuePattern(/[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)/.source, 'i'),\n lookbehind: true\n },\n 'tag': tag,\n 'important': anchorOrAlias,\n 'punctuation': /---|[:[\\]{}\\-,|>?]|\\.\\.\\./\n };\n Prism.languages.yml = Prism.languages.yaml;\n})(prism);\n/* \"prismjs/components/prism-markdown\" */\n\n\n(function (Prism) {\n // Allow only one line break\n var inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))/.source;\n /**\n * This function is intended for the creation of the bold or italic pattern.\n *\n * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped.\n *\n * _Note:_ Keep in mind that this adds a capturing group.\n *\n * @param {string} pattern\n * @returns {RegExp}\n */\n\n function createInline(pattern) {\n pattern = pattern.replace(/<inner>/g, function () {\n return inner;\n });\n return RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + '(?:' + pattern + ')');\n }\n\n var tableCell = /(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/.source;\n var tableRow = /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))/.source.replace(/__/g, function () {\n return tableCell;\n });\n var tableLine = /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/.source;\n Prism.languages.markdown = Prism.languages.extend('markup', {});\n Prism.languages.insertBefore('markdown', 'prolog', {\n 'front-matter-block': {\n pattern: /(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,\n lookbehind: true,\n greedy: true,\n inside: {\n 'punctuation': /^---|---$/,\n 'front-matter': {\n pattern: /\\S+(?:\\s+\\S+)*/,\n alias: ['yaml', 'language-yaml'],\n inside: Prism.languages.yaml\n }\n }\n },\n 'blockquote': {\n // > ...\n pattern: /^>(?:[\\t ]*>)*/m,\n alias: 'punctuation'\n },\n 'table': {\n pattern: RegExp('^' + tableRow + tableLine + '(?:' + tableRow + ')*', 'm'),\n inside: {\n 'table-data-rows': {\n pattern: RegExp('^(' + tableRow + tableLine + ')(?:' + tableRow + ')*$'),\n lookbehind: true,\n inside: {\n 'table-data': {\n pattern: RegExp(tableCell),\n inside: Prism.languages.markdown\n },\n 'punctuation': /\\|/\n }\n },\n 'table-line': {\n pattern: RegExp('^(' + tableRow + ')' + tableLine + '$'),\n lookbehind: true,\n inside: {\n 'punctuation': /\\||:?-{3,}:?/\n }\n },\n 'table-header-row': {\n pattern: RegExp('^' + tableRow + '$'),\n inside: {\n 'table-header': {\n pattern: RegExp(tableCell),\n alias: 'important',\n inside: Prism.languages.markdown\n },\n 'punctuation': /\\|/\n }\n }\n }\n },\n 'code': [{\n // Prefixed by 4 spaces or 1 tab and preceded by an empty line\n pattern: /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,\n lookbehind: true,\n alias: 'keyword'\n }, {\n // ```optional language\n // code block\n // ```\n pattern: /^```[\\s\\S]*?^```$/m,\n greedy: true,\n inside: {\n 'code-block': {\n pattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,\n lookbehind: true\n },\n 'code-language': {\n pattern: /^(```).+/,\n lookbehind: true\n },\n 'punctuation': /```/\n }\n }],\n 'title': [{\n // title 1\n // =======\n // title 2\n // -------\n pattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,\n alias: 'important',\n inside: {\n punctuation: /==+$|--+$/\n }\n }, {\n // # title 1\n // ###### title 6\n pattern: /(^\\s*)#.+/m,\n lookbehind: true,\n alias: 'important',\n inside: {\n punctuation: /^#+|#+$/\n }\n }],\n 'hr': {\n // ***\n // ---\n // * * *\n // -----------\n pattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'list': {\n // * item\n // + item\n // - item\n // 1. item\n pattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'url-reference': {\n // [id]: http://example.com \"Optional title\"\n // [id]: http://example.com 'Optional title'\n // [id]: http://example.com (Optional title)\n // [id]: <http://example.com> \"Optional title\"\n pattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n inside: {\n 'variable': {\n pattern: /^(!?\\[)[^\\]]+/,\n lookbehind: true\n },\n 'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n 'punctuation': /^[\\[\\]!:]|[<>]/\n },\n alias: 'url'\n },\n 'bold': {\n // **strong**\n // __strong__\n // allow one nested instance of italic text using the same delimiter\n pattern: createInline(/\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\b|\\*\\*(?:(?!\\*)<inner>|\\*(?:(?!\\*)<inner>)+\\*)+\\*\\*/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^..)[\\s\\S]+(?=..$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /\\*\\*|__/\n }\n },\n 'italic': {\n // *em*\n // _em_\n // allow one nested instance of bold text using the same delimiter\n pattern: createInline(/\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\b|\\*(?:(?!\\*)<inner>|\\*\\*(?:(?!\\*)<inner>)+\\*\\*)+\\*/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^.)[\\s\\S]+(?=.$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /[*_]/\n }\n },\n 'strike': {\n // ~~strike through~~\n // ~strike~\n // eslint-disable-next-line regexp/strict\n pattern: createInline(/(~~?)(?:(?!~)<inner>)+\\2/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /~~?/\n }\n },\n 'code-snippet': {\n // `code`\n // ``code``\n pattern: /(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,\n lookbehind: true,\n greedy: true,\n alias: ['code', 'keyword']\n },\n 'url': {\n // [example](http://example.com \"Optional title\")\n // [example][id]\n // [example] [id]\n pattern: createInline(/!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)|[ \\t]?\\[(?:(?!\\])<inner>)+\\])/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'operator': /^!/,\n 'content': {\n pattern: /(^\\[)[^\\]]+(?=\\])/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'variable': {\n pattern: /(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,\n lookbehind: true\n },\n 'url': {\n pattern: /(^\\]\\()[^\\s)]+/,\n lookbehind: true\n },\n 'string': {\n pattern: /(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,\n lookbehind: true\n }\n }\n }\n });\n ['url', 'bold', 'italic', 'strike'].forEach(function (token) {\n ['url', 'bold', 'italic', 'strike', 'code-snippet'].forEach(function (inside) {\n if (token !== inside) {\n Prism.languages.markdown[token].inside.content.inside[inside] = Prism.languages.markdown[inside];\n }\n });\n });\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'markdown' && env.language !== 'md') {\n return;\n }\n\n function walkTokens(tokens) {\n if (!tokens || typeof tokens === 'string') {\n return;\n }\n\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (token.type !== 'code') {\n walkTokens(token.content);\n continue;\n }\n /*\n * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token\n * is optional. But the grammar is defined so that there is only one case we have to handle:\n *\n * token.content = [\n * <span class=\"punctuation\">```</span>,\n * <span class=\"code-language\">xxxx</span>,\n * '\\n', // exactly one new lines (\\r or \\n or \\r\\n)\n * <span class=\"code-block\">...</span>,\n * '\\n', // exactly one new lines again\n * <span class=\"punctuation\">```</span>\n * ];\n */\n\n\n var codeLang = token.content[1];\n var codeBlock = token.content[3];\n\n if (codeLang && codeBlock && codeLang.type === 'code-language' && codeBlock.type === 'code-block' && typeof codeLang.content === 'string') {\n // this might be a language that Prism does not support\n // do some replacements to support C++, C#, and F#\n var lang = codeLang.content.replace(/\\b#/g, 'sharp').replace(/\\b\\+\\+/g, 'pp'); // only use the first word\n\n lang = (/[a-z][\\w-]*/i.exec(lang) || [''])[0].toLowerCase();\n var alias = 'language-' + lang; // add alias\n\n if (!codeBlock.alias) {\n codeBlock.alias = [alias];\n } else if (typeof codeBlock.alias === 'string') {\n codeBlock.alias = [codeBlock.alias, alias];\n } else {\n codeBlock.alias.push(alias);\n }\n }\n }\n }\n\n walkTokens(env.tokens);\n });\n Prism.hooks.add('wrap', function (env) {\n if (env.type !== 'code-block') {\n return;\n }\n\n var codeLang = '';\n\n for (var i = 0, l = env.classes.length; i < l; i++) {\n var cls = env.classes[i];\n var match = /language-(.+)/.exec(cls);\n\n if (match) {\n codeLang = match[1];\n break;\n }\n }\n\n var grammar = Prism.languages[codeLang];\n\n if (!grammar) {\n if (codeLang && codeLang !== 'none' && Prism.plugins.autoloader) {\n var id = 'md-' + new Date().valueOf() + '-' + Math.floor(Math.random() * 1e16);\n env.attributes['id'] = id;\n Prism.plugins.autoloader.loadLanguages(codeLang, function () {\n var ele = document.getElementById(id);\n\n if (ele) {\n ele.innerHTML = Prism.highlight(ele.textContent, Prism.languages[codeLang], codeLang);\n }\n });\n }\n } else {\n env.content = Prism.highlight(textContent(env.content), grammar, codeLang);\n }\n });\n var tagPattern = RegExp(Prism.languages.markup.tag.pattern.source, 'gi');\n /**\n * A list of known entity names.\n *\n * This will always be incomplete to save space. The current list is the one used by lowdash's unescape function.\n *\n * @see {@link https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/unescape.js#L2}\n */\n\n var KNOWN_ENTITY_NAMES = {\n 'amp': '&',\n 'lt': '<',\n 'gt': '>',\n 'quot': '\"'\n }; // IE 11 doesn't support `String.fromCodePoint`\n\n var fromCodePoint = String.fromCodePoint || String.fromCharCode;\n /**\n * Returns the text content of a given HTML source code string.\n *\n * @param {string} html\n * @returns {string}\n */\n\n function textContent(html) {\n // remove all tags\n var text = html.replace(tagPattern, ''); // decode known entities\n\n text = text.replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi, function (m, code) {\n code = code.toLowerCase();\n\n if (code[0] === '#') {\n var value;\n\n if (code[1] === 'x') {\n value = parseInt(code.slice(2), 16);\n } else {\n value = Number(code.slice(1));\n }\n\n return fromCodePoint(value);\n } else {\n var known = KNOWN_ENTITY_NAMES[code];\n\n if (known) {\n return known;\n } // unable to decode\n\n\n return m;\n }\n });\n return text;\n }\n\n Prism.languages.md = Prism.languages.markdown;\n})(prism);\n/* \"prismjs/components/prism-graphql\" */\n\n\nprism.languages.graphql = {\n 'comment': /#.*/,\n 'description': {\n pattern: /(?:\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")(?=\\s*[a-z_])/i,\n greedy: true,\n alias: 'string',\n inside: {\n 'language-markdown': {\n pattern: /(^\"(?:\"\")?)(?!\\1)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: prism.languages.markdown\n }\n }\n },\n 'string': {\n pattern: /\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n 'number': /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n 'boolean': /\\b(?:false|true)\\b/,\n 'variable': /\\$[a-z_]\\w*/i,\n 'directive': {\n pattern: /@[a-z_]\\w*/i,\n alias: 'function'\n },\n 'attr-name': {\n pattern: /\\b[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i,\n greedy: true\n },\n 'atom-input': {\n pattern: /\\b[A-Z]\\w*Input\\b/,\n alias: 'class-name'\n },\n 'scalar': /\\b(?:Boolean|Float|ID|Int|String)\\b/,\n 'constant': /\\b[A-Z][A-Z_\\d]*\\b/,\n 'class-name': {\n pattern: /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+|&\\s*|:\\s*|\\[)[A-Z_]\\w*/,\n lookbehind: true\n },\n 'fragment': {\n pattern: /(\\bfragment\\s+|\\.{3}\\s*(?!on\\b))[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: 'function'\n },\n 'definition-mutation': {\n pattern: /(\\bmutation\\s+)[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: 'function'\n },\n 'definition-query': {\n pattern: /(\\bquery\\s+)[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: 'function'\n },\n 'keyword': /\\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\\b/,\n 'operator': /[!=|&]|\\.{3}/,\n 'property-query': /\\w+(?=\\s*\\()/,\n 'object': /\\w+(?=\\s*\\{)/,\n 'punctuation': /[!(){}\\[\\]:=,]/,\n 'property': /\\w+/\n};\nprism.hooks.add('after-tokenize', function afterTokenizeGraphql(env) {\n if (env.language !== 'graphql') {\n return;\n }\n /**\n * get the graphql token stream that we want to customize\n *\n * @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n * @type {Token[]}\n */\n\n\n var validTokens = env.tokens.filter(function (token) {\n return typeof token !== 'string' && token.type !== 'comment' && token.type !== 'scalar';\n });\n var currentIndex = 0;\n /**\n * Returns whether the token relative to the current index has the given type.\n *\n * @param {number} offset\n * @returns {Token | undefined}\n */\n\n function getToken(offset) {\n return validTokens[currentIndex + offset];\n }\n /**\n * Returns whether the token relative to the current index has the given type.\n *\n * @param {readonly string[]} types\n * @param {number} [offset=0]\n * @returns {boolean}\n */\n\n\n function isTokenType(types, offset) {\n offset = offset || 0;\n\n for (var i = 0; i < types.length; i++) {\n var token = getToken(i + offset);\n\n if (!token || token.type !== types[i]) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Returns the index of the closing bracket to an opening bracket.\n *\n * It is assumed that `token[currentIndex - 1]` is an opening bracket.\n *\n * If no closing bracket could be found, `-1` will be returned.\n *\n * @param {RegExp} open\n * @param {RegExp} close\n * @returns {number}\n */\n\n\n function findClosingBracket(open, close) {\n var stackHeight = 1;\n\n for (var i = currentIndex; i < validTokens.length; i++) {\n var token = validTokens[i];\n var content = token.content;\n\n if (token.type === 'punctuation' && typeof content === 'string') {\n if (open.test(content)) {\n stackHeight++;\n } else if (close.test(content)) {\n stackHeight--;\n\n if (stackHeight === 0) {\n return i;\n }\n }\n }\n }\n\n return -1;\n }\n /**\n * Adds an alias to the given token.\n *\n * @param {Token} token\n * @param {string} alias\n * @returns {void}\n */\n\n\n function addAlias(token, alias) {\n var aliases = token.alias;\n\n if (!aliases) {\n token.alias = aliases = [];\n } else if (!Array.isArray(aliases)) {\n token.alias = aliases = [aliases];\n }\n\n aliases.push(alias);\n }\n\n for (; currentIndex < validTokens.length;) {\n var startToken = validTokens[currentIndex++]; // add special aliases for mutation tokens\n\n if (startToken.type === 'keyword' && startToken.content === 'mutation') {\n // any array of the names of all input variables (if any)\n var inputVariables = [];\n\n if (isTokenType(['definition-mutation', 'punctuation']) && getToken(1).content === '(') {\n // definition\n currentIndex += 2; // skip 'definition-mutation' and 'punctuation'\n\n var definitionEnd = findClosingBracket(/^\\($/, /^\\)$/);\n\n if (definitionEnd === -1) {\n continue;\n } // find all input variables\n\n\n for (; currentIndex < definitionEnd; currentIndex++) {\n var t = getToken(0);\n\n if (t.type === 'variable') {\n addAlias(t, 'variable-input');\n inputVariables.push(t.content);\n }\n }\n\n currentIndex = definitionEnd + 1;\n }\n\n if (isTokenType(['punctuation', 'property-query']) && getToken(0).content === '{') {\n currentIndex++; // skip opening bracket\n\n addAlias(getToken(0), 'property-mutation');\n\n if (inputVariables.length > 0) {\n var mutationEnd = findClosingBracket(/^\\{$/, /^\\}$/);\n\n if (mutationEnd === -1) {\n continue;\n } // give references to input variables a special alias\n\n\n for (var i = currentIndex; i < mutationEnd; i++) {\n var varToken = validTokens[i];\n\n if (varToken.type === 'variable' && inputVariables.indexOf(varToken.content) >= 0) {\n addAlias(varToken, 'variable-input');\n }\n }\n }\n }\n }\n }\n});\n/* \"prismjs/components/prism-sql\" */\n\nprism.languages.sql = {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n lookbehind: true\n },\n 'variable': [{\n pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n greedy: true\n }, /@[\\w.$]+/],\n 'string': {\n pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n greedy: true,\n lookbehind: true\n },\n 'identifier': {\n pattern: /(^|[^@\\\\])`(?:\\\\[\\s\\S]|[^`\\\\]|``)*`/,\n greedy: true,\n lookbehind: true,\n inside: {\n 'punctuation': /^`|`$/\n }\n },\n 'function': /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i,\n // Should we highlight user defined functions too?\n 'keyword': /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i,\n 'boolean': /\\b(?:FALSE|NULL|TRUE)\\b/i,\n 'number': /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n 'operator': /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n 'punctuation': /[;[\\]()`,.]/\n};\n/* \"prismjs/components/prism-js-templates\" */\n\n(function (Prism) {\n var templateString = Prism.languages.javascript['template-string']; // see the pattern in prism-javascript.js\n\n var templateLiteralPattern = templateString.pattern.source;\n var interpolationObject = templateString.inside['interpolation'];\n var interpolationPunctuationObject = interpolationObject.inside['interpolation-punctuation'];\n var interpolationPattern = interpolationObject.pattern.source;\n /**\n * Creates a new pattern to match a template string with a special tag.\n *\n * This will return `undefined` if there is no grammar with the given language id.\n *\n * @param {string} language The language id of the embedded language. E.g. `markdown`.\n * @param {string} tag The regex pattern to match the tag.\n * @returns {object | undefined}\n * @example\n * createTemplate('css', /\\bcss/.source);\n */\n\n function createTemplate(language, tag) {\n if (!Prism.languages[language]) {\n return undefined;\n }\n\n return {\n pattern: RegExp('((?:' + tag + ')\\\\s*)' + templateLiteralPattern),\n lookbehind: true,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n 'embedded-code': {\n pattern: /[\\s\\S]+/,\n alias: language\n }\n }\n };\n }\n\n Prism.languages.javascript['template-string'] = [// styled-jsx:\n // css`a { color: #25F; }`\n // styled-components:\n // styled.h1`color: red;`\n createTemplate('css', /\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source), // html`<p></p>`\n // div.innerHTML = `<p></p>`\n createTemplate('html', /\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=/.source), // svg`<path fill=\"#fff\" d=\"M55.37 ...\"/>`\n createTemplate('svg', /\\bsvg/.source), // md`# h1`, markdown`## h2`\n createTemplate('markdown', /\\b(?:markdown|md)/.source), // gql`...`, graphql`...`, graphql.experimental`...`\n createTemplate('graphql', /\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)/.source), // sql`...`\n createTemplate('sql', /\\bsql/.source), // vanilla template string\n templateString].filter(Boolean);\n /**\n * Returns a specific placeholder literal for the given language.\n *\n * @param {number} counter\n * @param {string} language\n * @returns {string}\n */\n\n function getPlaceholder(counter, language) {\n return '___' + language.toUpperCase() + '_' + counter + '___';\n }\n /**\n * Returns the tokens of `Prism.tokenize` but also runs the `before-tokenize` and `after-tokenize` hooks.\n *\n * @param {string} code\n * @param {any} grammar\n * @param {string} language\n * @returns {(string|Token)[]}\n */\n\n\n function tokenizeWithHooks(code, grammar, language) {\n var env = {\n code: code,\n grammar: grammar,\n language: language\n };\n Prism.hooks.run('before-tokenize', env);\n env.tokens = Prism.tokenize(env.code, env.grammar);\n Prism.hooks.run('after-tokenize', env);\n return env.tokens;\n }\n /**\n * Returns the token of the given JavaScript interpolation expression.\n *\n * @param {string} expression The code of the expression. E.g. `\"${42}\"`\n * @returns {Token}\n */\n\n\n function tokenizeInterpolationExpression(expression) {\n var tempGrammar = {};\n tempGrammar['interpolation-punctuation'] = interpolationPunctuationObject;\n /** @type {Array} */\n\n var tokens = Prism.tokenize(expression, tempGrammar);\n\n if (tokens.length === 3) {\n /**\n * The token array will look like this\n * [\n * [\"interpolation-punctuation\", \"${\"]\n * \"...\" // JavaScript expression of the interpolation\n * [\"interpolation-punctuation\", \"}\"]\n * ]\n */\n var args = [1, 1];\n args.push.apply(args, tokenizeWithHooks(tokens[1], Prism.languages.javascript, 'javascript'));\n tokens.splice.apply(tokens, args);\n }\n\n return new Prism.Token('interpolation', tokens, interpolationObject.alias, expression);\n }\n /**\n * Tokenizes the given code with support for JavaScript interpolation expressions mixed in.\n *\n * This function has 3 phases:\n *\n * 1. Replace all JavaScript interpolation expression with a placeholder.\n * The placeholder will have the syntax of a identify of the target language.\n * 2. Tokenize the code with placeholders.\n * 3. Tokenize the interpolation expressions and re-insert them into the tokenize code.\n * The insertion only works if a placeholder hasn't been \"ripped apart\" meaning that the placeholder has been\n * tokenized as two tokens by the grammar of the embedded language.\n *\n * @param {string} code\n * @param {object} grammar\n * @param {string} language\n * @returns {Token}\n */\n\n\n function tokenizeEmbedded(code, grammar, language) {\n // 1. First filter out all interpolations\n // because they might be escaped, we need a lookbehind, so we use Prism\n\n /** @type {(Token|string)[]} */\n var _tokens = Prism.tokenize(code, {\n 'interpolation': {\n pattern: RegExp(interpolationPattern),\n lookbehind: true\n }\n }); // replace all interpolations with a placeholder which is not in the code already\n\n\n var placeholderCounter = 0;\n /** @type {Object<string, string>} */\n\n var placeholderMap = {};\n\n var embeddedCode = _tokens.map(function (token) {\n if (typeof token === 'string') {\n return token;\n } else {\n var interpolationExpression = token.content;\n var placeholder;\n\n while (code.indexOf(placeholder = getPlaceholder(placeholderCounter++, language)) !== -1) {\n /* noop */\n }\n\n placeholderMap[placeholder] = interpolationExpression;\n return placeholder;\n }\n }).join(''); // 2. Tokenize the embedded code\n\n\n var embeddedTokens = tokenizeWithHooks(embeddedCode, grammar, language); // 3. Re-insert the interpolation\n\n var placeholders = Object.keys(placeholderMap);\n placeholderCounter = 0;\n /**\n *\n * @param {(Token|string)[]} tokens\n * @returns {void}\n */\n\n function walkTokens(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n if (placeholderCounter >= placeholders.length) {\n return;\n }\n\n var token = tokens[i];\n\n if (typeof token === 'string' || typeof token.content === 'string') {\n var placeholder = placeholders[placeholderCounter];\n var s = typeof token === 'string' ? token :\n /** @type {string} */\n token.content;\n var index = s.indexOf(placeholder);\n\n if (index !== -1) {\n ++placeholderCounter;\n var before = s.substring(0, index);\n var middle = tokenizeInterpolationExpression(placeholderMap[placeholder]);\n var after = s.substring(index + placeholder.length);\n var replacement = [];\n\n if (before) {\n replacement.push(before);\n }\n\n replacement.push(middle);\n\n if (after) {\n var afterTokens = [after];\n walkTokens(afterTokens);\n replacement.push.apply(replacement, afterTokens);\n }\n\n if (typeof token === 'string') {\n tokens.splice.apply(tokens, [i, 1].concat(replacement));\n i += replacement.length - 1;\n } else {\n token.content = replacement;\n }\n }\n } else {\n var content = token.content;\n\n if (Array.isArray(content)) {\n walkTokens(content);\n } else {\n walkTokens([content]);\n }\n }\n }\n }\n\n walkTokens(embeddedTokens);\n return new Prism.Token(language, embeddedTokens, 'language-' + language, code);\n }\n /**\n * The languages for which JS templating will handle tagged template literals.\n *\n * JS templating isn't active for only JavaScript but also related languages like TypeScript, JSX, and TSX.\n */\n\n\n var supportedLanguages = {\n 'javascript': true,\n 'js': true,\n 'typescript': true,\n 'ts': true,\n 'jsx': true,\n 'tsx': true\n };\n Prism.hooks.add('after-tokenize', function (env) {\n if (!(env.language in supportedLanguages)) {\n return;\n }\n /**\n * Finds and tokenizes all template strings with an embedded languages.\n *\n * @param {(Token | string)[]} tokens\n * @returns {void}\n */\n\n\n function findTemplateStrings(tokens) {\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n continue;\n }\n\n var content = token.content;\n\n if (!Array.isArray(content)) {\n if (typeof content !== 'string') {\n findTemplateStrings([content]);\n }\n\n continue;\n }\n\n if (token.type === 'template-string') {\n /**\n * A JavaScript template-string token will look like this:\n *\n * [\"template-string\", [\n * [\"template-punctuation\", \"`\"],\n * (\n * An array of \"string\" and \"interpolation\" tokens. This is the simple string case.\n * or\n * [\"embedded-code\", \"...\"] This is the token containing the embedded code.\n * It also has an alias which is the language of the embedded code.\n * ),\n * [\"template-punctuation\", \"`\"]\n * ]]\n */\n var embedded = content[1];\n\n if (content.length === 3 && typeof embedded !== 'string' && embedded.type === 'embedded-code') {\n // get string content\n var code = stringContent(embedded);\n var alias = embedded.alias;\n var language = Array.isArray(alias) ? alias[0] : alias;\n var grammar = Prism.languages[language];\n\n if (!grammar) {\n // the embedded language isn't registered.\n continue;\n }\n\n content[1] = tokenizeEmbedded(code, grammar, language);\n }\n } else {\n findTemplateStrings(content);\n }\n }\n }\n\n findTemplateStrings(env.tokens);\n });\n /**\n * Returns the string content of a token or token stream.\n *\n * @param {string | Token | (string | Token)[]} value\n * @returns {string}\n */\n\n function stringContent(value) {\n if (typeof value === 'string') {\n return value;\n } else if (Array.isArray(value)) {\n return value.map(stringContent).join('');\n } else {\n return stringContent(value.content);\n }\n }\n})(prism);\n/* \"prismjs/components/prism-typescript\" */\n\n\n(function (Prism) {\n Prism.languages.typescript = Prism.languages.extend('javascript', {\n 'class-name': {\n pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n lookbehind: true,\n greedy: true,\n inside: null // see below\n\n },\n 'builtin': /\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/\n }); // The keywords TypeScript adds to JavaScript\n\n Prism.languages.typescript.keyword.push(/\\b(?:abstract|declare|is|keyof|readonly|require)\\b/, // keywords that have to be followed by an identifier\n /\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/, // This is for `import type *, {}`\n /\\btype\\b(?=\\s*(?:[\\{*]|$))/); // doesn't work with TS because TS is too complex\n\n delete Prism.languages.typescript['parameter'];\n delete Prism.languages.typescript['literal-property']; // a version of typescript specifically for highlighting types\n\n var typeInside = Prism.languages.extend('typescript', {});\n delete typeInside['class-name'];\n Prism.languages.typescript['class-name'].inside = typeInside;\n Prism.languages.insertBefore('typescript', 'function', {\n 'decorator': {\n pattern: /@[$\\w\\xA0-\\uFFFF]+/,\n inside: {\n 'at': {\n pattern: /^@/,\n alias: 'operator'\n },\n 'function': /^[\\s\\S]+/\n }\n },\n 'generic-function': {\n // e.g. foo<T extends \"bar\" | \"baz\">( ...\n pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n greedy: true,\n inside: {\n 'function': /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n 'generic': {\n pattern: /<[\\s\\S]+/,\n // everything after the first <\n alias: 'class-name',\n inside: typeInside\n }\n }\n }\n });\n Prism.languages.ts = Prism.languages.typescript;\n})(prism);\n/* \"prismjs/components/prism-js-extras\" */\n\n\n(function (Prism) {\n Prism.languages.insertBefore('javascript', 'function-variable', {\n 'method-variable': {\n pattern: RegExp('(\\\\.\\\\s*)' + Prism.languages.javascript['function-variable'].pattern.source),\n lookbehind: true,\n alias: ['function-variable', 'method', 'function', 'property-access']\n }\n });\n Prism.languages.insertBefore('javascript', 'function', {\n 'method': {\n pattern: RegExp('(\\\\.\\\\s*)' + Prism.languages.javascript['function'].source),\n lookbehind: true,\n alias: ['function', 'property-access']\n }\n });\n Prism.languages.insertBefore('javascript', 'constant', {\n 'known-class-name': [{\n // standard built-ins\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\n pattern: /\\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\\b/,\n alias: 'class-name'\n }, {\n // errors\n pattern: /\\b(?:[A-Z]\\w*)Error\\b/,\n alias: 'class-name'\n }]\n });\n /**\n * Replaces the `<ID>` placeholder in the given pattern with a pattern for general JS identifiers.\n *\n * @param {string} source\n * @param {string} [flags]\n * @returns {RegExp}\n */\n\n function withId(source, flags) {\n return RegExp(source.replace(/<ID>/g, function () {\n return /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/.source;\n }), flags);\n }\n\n Prism.languages.insertBefore('javascript', 'keyword', {\n 'imports': {\n // https://tc39.es/ecma262/#sec-imports\n pattern: withId(/(\\bimport\\b\\s*)(?:<ID>(?:\\s*,\\s*(?:\\*\\s*as\\s+<ID>|\\{[^{}]*\\}))?|\\*\\s*as\\s+<ID>|\\{[^{}]*\\})(?=\\s*\\bfrom\\b)/.source),\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n 'exports': {\n // https://tc39.es/ecma262/#sec-exports\n pattern: withId(/(\\bexport\\b\\s*)(?:\\*(?:\\s*as\\s+<ID>)?(?=\\s*\\bfrom\\b)|\\{[^{}]*\\})/.source),\n lookbehind: true,\n inside: Prism.languages.javascript\n }\n });\n Prism.languages.javascript['keyword'].unshift({\n pattern: /\\b(?:as|default|export|from|import)\\b/,\n alias: 'module'\n }, {\n pattern: /\\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\\b/,\n alias: 'control-flow'\n }, {\n pattern: /\\bnull\\b/,\n alias: ['null', 'nil']\n }, {\n pattern: /\\bundefined\\b/,\n alias: 'nil'\n });\n Prism.languages.insertBefore('javascript', 'operator', {\n 'spread': {\n pattern: /\\.{3}/,\n alias: 'operator'\n },\n 'arrow': {\n pattern: /=>/,\n alias: 'operator'\n }\n });\n Prism.languages.insertBefore('javascript', 'punctuation', {\n 'property-access': {\n pattern: withId(/(\\.\\s*)#?<ID>/.source),\n lookbehind: true\n },\n 'maybe-class-name': {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])[A-Z][$\\w\\xA0-\\uFFFF]+/,\n lookbehind: true\n },\n 'dom': {\n // this contains only a few commonly used DOM variables\n pattern: /\\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\\b/,\n alias: 'variable'\n },\n 'console': {\n pattern: /\\bconsole(?=\\s*\\.)/,\n alias: 'class-name'\n }\n }); // add 'maybe-class-name' to tokens which might be a class name\n\n var maybeClassNameTokens = ['function', 'function-variable', 'method', 'method-variable', 'property-access'];\n\n for (var i = 0; i < maybeClassNameTokens.length; i++) {\n var token = maybeClassNameTokens[i];\n var value = Prism.languages.javascript[token]; // convert regex to object\n\n if (Prism.util.type(value) === 'RegExp') {\n value = Prism.languages.javascript[token] = {\n pattern: value\n };\n } // keep in mind that we don't support arrays\n\n\n var inside = value.inside || {};\n value.inside = inside;\n inside['maybe-class-name'] = /^[A-Z][\\s\\S]*/;\n }\n})(prism);\n/* \"prismjs/components/prism-jsx\" */\n\n\n(function (Prism) {\n var javascript = Prism.util.clone(Prism.languages.javascript);\n var space = /(?:\\s|\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))\\*\\/)/.source;\n var braces = /(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})/.source;\n var spread = /(?:\\{<S>*\\.{3}(?:[^{}]|<BRACES>)*\\})/.source;\n /**\n * @param {string} source\n * @param {string} [flags]\n */\n\n function re(source, flags) {\n source = source.replace(/<S>/g, function () {\n return space;\n }).replace(/<BRACES>/g, function () {\n return braces;\n }).replace(/<SPREAD>/g, function () {\n return spread;\n });\n return RegExp(source, flags);\n }\n\n spread = re(spread).source;\n Prism.languages.jsx = Prism.languages.extend('markup', javascript);\n Prism.languages.jsx.tag.pattern = re(/<\\/?(?:[\\w.:-]+(?:<S>+(?:[\\w.:$-]+(?:=(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s{'\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\\/?)?>/.source);\n Prism.languages.jsx.tag.inside['tag'].pattern = /^<\\/?[^\\s>\\/]*/;\n Prism.languages.jsx.tag.inside['attr-value'].pattern = /=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/;\n Prism.languages.jsx.tag.inside['tag'].inside['class-name'] = /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/;\n Prism.languages.jsx.tag.inside['comment'] = javascript['comment'];\n Prism.languages.insertBefore('inside', 'attr-name', {\n 'spread': {\n pattern: re(/<SPREAD>/.source),\n inside: Prism.languages.jsx\n }\n }, Prism.languages.jsx.tag);\n Prism.languages.insertBefore('inside', 'special-attr', {\n 'script': {\n // Allow for two levels of nesting\n pattern: re(/=<BRACES>/.source),\n alias: 'language-javascript',\n inside: {\n 'script-punctuation': {\n pattern: /^=(?=\\{)/,\n alias: 'punctuation'\n },\n rest: Prism.languages.jsx\n }\n }\n }, Prism.languages.jsx.tag); // The following will handle plain text inside tags\n\n var stringifyToken = function (token) {\n if (!token) {\n return '';\n }\n\n if (typeof token === 'string') {\n return token;\n }\n\n if (typeof token.content === 'string') {\n return token.content;\n }\n\n return token.content.map(stringifyToken).join('');\n };\n\n var walkTokens = function (tokens) {\n var openedTags = [];\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var notTagNorBrace = false;\n\n if (typeof token !== 'string') {\n if (token.type === 'tag' && token.content[0] && token.content[0].type === 'tag') {\n // We found a tag, now find its kind\n if (token.content[0].content[0].content === '</') {\n // Closing tag\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].tagName === stringifyToken(token.content[0].content[1])) {\n // Pop matching opening tag\n openedTags.pop();\n }\n } else {\n if (token.content[token.content.length - 1].content === '/>') ; else {\n // Opening tag\n openedTags.push({\n tagName: stringifyToken(token.content[0].content[1]),\n openedBraces: 0\n });\n }\n }\n } else if (openedTags.length > 0 && token.type === 'punctuation' && token.content === '{') {\n // Here we might have entered a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces++;\n } else if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces > 0 && token.type === 'punctuation' && token.content === '}') {\n // Here we might have left a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces--;\n } else {\n notTagNorBrace = true;\n }\n }\n\n if (notTagNorBrace || typeof token === 'string') {\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces === 0) {\n // Here we are inside a tag, and not inside a JSX context.\n // That's plain text: drop any tokens matched.\n var plainText = stringifyToken(token); // And merge text with adjacent text\n\n if (i < tokens.length - 1 && (typeof tokens[i + 1] === 'string' || tokens[i + 1].type === 'plain-text')) {\n plainText += stringifyToken(tokens[i + 1]);\n tokens.splice(i + 1, 1);\n }\n\n if (i > 0 && (typeof tokens[i - 1] === 'string' || tokens[i - 1].type === 'plain-text')) {\n plainText = stringifyToken(tokens[i - 1]) + plainText;\n tokens.splice(i - 1, 1);\n i--;\n }\n\n tokens[i] = new Prism.Token('plain-text', plainText, null, plainText);\n }\n }\n\n if (token.content && typeof token.content !== 'string') {\n walkTokens(token.content);\n }\n }\n };\n\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'jsx' && env.language !== 'tsx') {\n return;\n }\n\n walkTokens(env.tokens);\n });\n})(prism);\n/* \"prismjs/components/prism-diff\" */\n\n\n(function (Prism) {\n Prism.languages.diff = {\n 'coord': [// Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n /^(?:\\*{3}|-{3}|\\+{3}).*$/m, // Match \"@@ ... @@\" coord lines in unified diff.\n /^@@.*@@$/m, // Match coord lines in normal diff (starts with a number).\n /^\\d.*$/m] // deleted, inserted, unchanged, diff\n\n };\n /**\n * A map from the name of a block to its line prefix.\n *\n * @type {Object<string, string>}\n */\n\n var PREFIXES = {\n 'deleted-sign': '-',\n 'deleted-arrow': '<',\n 'inserted-sign': '+',\n 'inserted-arrow': '>',\n 'unchanged': ' ',\n 'diff': '!'\n }; // add a token for each prefix\n\n Object.keys(PREFIXES).forEach(function (name) {\n var prefix = PREFIXES[name];\n var alias = [];\n\n if (!/^\\w+$/.test(name)) {\n // \"deleted-sign\" -> \"deleted\"\n alias.push(/\\w+/.exec(name)[0]);\n }\n\n if (name === 'diff') {\n alias.push('bold');\n }\n\n Prism.languages.diff[name] = {\n pattern: RegExp('^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+', 'm'),\n alias: alias,\n inside: {\n 'line': {\n pattern: /(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,\n lookbehind: true\n },\n 'prefix': {\n pattern: /[\\s\\S]/,\n alias: /\\w+/.exec(name)[0]\n }\n }\n };\n }); // make prefixes available to Diff plugin\n\n Object.defineProperty(Prism.languages.diff, 'PREFIXES', {\n value: PREFIXES\n });\n})(prism);\n/* \"prismjs/components/prism-git\" */\n\n\nprism.languages.git = {\n /*\n * A simple one line comment like in a git status command\n * For instance:\n * $ git status\n * # On branch infinite-scroll\n * # Your branch and 'origin/sharedBranches/frontendTeam/infinite-scroll' have diverged,\n * # and have 1 and 2 different commits each, respectively.\n * nothing to commit (working directory clean)\n */\n 'comment': /^#.*/m,\n\n /*\n * Regexp to match the changed lines in a git diff output. Check the example below.\n */\n 'deleted': /^[-–].*/m,\n 'inserted': /^\\+.*/m,\n\n /*\n * a string (double and simple quote)\n */\n 'string': /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\n /*\n * a git command. It starts with a random prompt finishing by a $, then \"git\" then some other parameters\n * For instance:\n * $ git add file.txt\n */\n 'command': {\n pattern: /^.*\\$ git .*$/m,\n inside: {\n /*\n * A git command can contain a parameter starting by a single or a double dash followed by a string\n * For instance:\n * $ git diff --cached\n * $ git log -p\n */\n 'parameter': /\\s--?\\w+/\n }\n },\n\n /*\n * Coordinates displayed in a git diff command\n * For instance:\n * $ git diff\n * diff --git file.txt file.txt\n * index 6214953..1d54a52 100644\n * --- file.txt\n * +++ file.txt\n * @@ -1 +1,2 @@\n * -Here's my tetx file\n * +Here's my text file\n * +And this is the second line\n */\n 'coord': /^@@.*@@$/m,\n\n /*\n * Match a \"commit [SHA1]\" line in a git log output.\n * For instance:\n * $ git log\n * commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09\n * Author: lgiraudel\n * Date: Mon Feb 17 11:18:34 2014 +0100\n *\n * Add of a new line\n */\n 'commit-sha1': /^commit \\w{40}$/m\n};\n/* \"prismjs/components/prism-go\" */\n\nprism.languages.go = prism.languages.extend('clike', {\n 'string': {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|`[^`]*`/,\n lookbehind: true,\n greedy: true\n },\n 'keyword': /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n 'boolean': /\\b(?:_|false|iota|nil|true)\\b/,\n 'number': [// binary and octal integers\n /\\b0(?:b[01_]+|o[0-7_]+)i?\\b/i, // hexadecimal integers and floats\n /\\b0x(?:[a-f\\d_]+(?:\\.[a-f\\d_]*)?|\\.[a-f\\d_]+)(?:p[+-]?\\d+(?:_\\d+)*)?i?(?!\\w)/i, // decimal integers and floats\n /(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?[\\d_]+)?i?(?!\\w)/i],\n 'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n 'builtin': /\\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\\b/\n});\nprism.languages.insertBefore('go', 'string', {\n 'char': {\n pattern: /'(?:\\\\.|[^'\\\\\\r\\n]){0,10}'/,\n greedy: true\n }\n});\ndelete prism.languages.go['class-name'];\n/* \"prismjs/components/prism-markup-templating\" */\n\n(function (Prism) {\n /**\n * Returns the placeholder for the given language id and index.\n *\n * @param {string} language\n * @param {string|number} index\n * @returns {string}\n */\n function getPlaceholder(language, index) {\n return '___' + language.toUpperCase() + index + '___';\n }\n\n Object.defineProperties(Prism.languages['markup-templating'] = {}, {\n buildPlaceholders: {\n /**\n * Tokenize all inline templating expressions matching `placeholderPattern`.\n *\n * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns\n * `true` will be replaced.\n *\n * @param {object} env The environment of the `before-tokenize` hook.\n * @param {string} language The language id.\n * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders.\n * @param {(match: string) => boolean} [replaceFilter]\n */\n value: function (env, language, placeholderPattern, replaceFilter) {\n if (env.language !== language) {\n return;\n }\n\n var tokenStack = env.tokenStack = [];\n env.code = env.code.replace(placeholderPattern, function (match) {\n if (typeof replaceFilter === 'function' && !replaceFilter(match)) {\n return match;\n }\n\n var i = tokenStack.length;\n var placeholder; // Check for existing strings\n\n while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) {\n ++i;\n } // Create a sparse array\n\n\n tokenStack[i] = match;\n return placeholder;\n }); // Switch the grammar to markup\n\n env.grammar = Prism.languages.markup;\n }\n },\n tokenizePlaceholders: {\n /**\n * Replace placeholders with proper tokens after tokenizing.\n *\n * @param {object} env The environment of the `after-tokenize` hook.\n * @param {string} language The language id.\n */\n value: function (env, language) {\n if (env.language !== language || !env.tokenStack) {\n return;\n } // Switch the grammar back\n\n\n env.grammar = Prism.languages[language];\n var j = 0;\n var keys = Object.keys(env.tokenStack);\n\n function walkTokens(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n // all placeholders are replaced already\n if (j >= keys.length) {\n break;\n }\n\n var token = tokens[i];\n\n if (typeof token === 'string' || token.content && typeof token.content === 'string') {\n var k = keys[j];\n var t = env.tokenStack[k];\n var s = typeof token === 'string' ? token : token.content;\n var placeholder = getPlaceholder(language, k);\n var index = s.indexOf(placeholder);\n\n if (index > -1) {\n ++j;\n var before = s.substring(0, index);\n var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t);\n var after = s.substring(index + placeholder.length);\n var replacement = [];\n\n if (before) {\n replacement.push.apply(replacement, walkTokens([before]));\n }\n\n replacement.push(middle);\n\n if (after) {\n replacement.push.apply(replacement, walkTokens([after]));\n }\n\n if (typeof token === 'string') {\n tokens.splice.apply(tokens, [i, 1].concat(replacement));\n } else {\n token.content = replacement;\n }\n }\n } else if (token.content\n /* && typeof token.content !== 'string' */\n ) {\n walkTokens(token.content);\n }\n }\n\n return tokens;\n }\n\n walkTokens(env.tokens);\n }\n }\n });\n})(prism);\n/* \"prismjs/components/prism-handlebars\" */\n\n\n(function (Prism) {\n Prism.languages.handlebars = {\n 'comment': /\\{\\{![\\s\\S]*?\\}\\}/,\n 'delimiter': {\n pattern: /^\\{\\{\\{?|\\}\\}\\}?$/,\n alias: 'punctuation'\n },\n 'string': /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n 'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][+-]?\\d+)?/,\n 'boolean': /\\b(?:false|true)\\b/,\n 'block': {\n pattern: /^(\\s*(?:~\\s*)?)[#\\/]\\S+?(?=\\s*(?:~\\s*)?$|\\s)/,\n lookbehind: true,\n alias: 'keyword'\n },\n 'brackets': {\n pattern: /\\[[^\\]]+\\]/,\n inside: {\n punctuation: /\\[|\\]/,\n variable: /[\\s\\S]+/\n }\n },\n 'punctuation': /[!\"#%&':()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n 'variable': /[^!\"#%&'()*+,\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n };\n Prism.hooks.add('before-tokenize', function (env) {\n var handlebarsPattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/g;\n Prism.languages['markup-templating'].buildPlaceholders(env, 'handlebars', handlebarsPattern);\n });\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'handlebars');\n });\n Prism.languages.hbs = Prism.languages.handlebars;\n})(prism);\n/* \"prismjs/components/prism-json\" */\n// https://www.json.org/json-en.html\n\n\nprism.languages.json = {\n 'property': {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n lookbehind: true,\n greedy: true\n },\n 'string': {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n lookbehind: true,\n greedy: true\n },\n 'comment': {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n 'number': /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n 'punctuation': /[{}[\\],]/,\n 'operator': /:/,\n 'boolean': /\\b(?:false|true)\\b/,\n 'null': {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n }\n};\nprism.languages.webmanifest = prism.languages.json;\n/* \"prismjs/components/prism-less\" */\n\n/* FIXME :\n :extend() is not handled specifically : its highlighting is buggy.\n Mixin usage must be inside a ruleset to be highlighted.\n At-rules (e.g. import) containing interpolations are buggy.\n Detached rulesets are highlighted as at-rules.\n A comment before a mixin usage prevents the latter to be properly highlighted.\n */\n\nprism.languages.less = prism.languages.extend('css', {\n 'comment': [/\\/\\*[\\s\\S]*?\\*\\//, {\n pattern: /(^|[^\\\\])\\/\\/.*/,\n lookbehind: true\n }],\n 'atrule': {\n pattern: /@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n 'punctuation': /[:()]/\n }\n },\n // selectors and mixins are considered the same\n 'selector': {\n pattern: /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n // mixin parameters\n 'variable': /@+[\\w-]+/\n }\n },\n 'property': /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/,\n 'operator': /[+\\-*\\/]/\n});\nprism.languages.insertBefore('less', 'property', {\n 'variable': [// Variable declaration (the colon must be consumed!)\n {\n pattern: /@[\\w-]+\\s*:/,\n inside: {\n 'punctuation': /:/\n }\n }, // Variable usage\n /@@?[\\w-]+/],\n 'mixin-usage': {\n pattern: /([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,\n lookbehind: true,\n alias: 'function'\n }\n});\n/* \"prismjs/components/prism-makefile\" */\n\nprism.languages.makefile = {\n 'comment': {\n pattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n lookbehind: true\n },\n 'string': {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n 'builtin-target': {\n pattern: /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n alias: 'builtin'\n },\n 'target': {\n pattern: /^(?:[^:=\\s]|[ \\t]+(?![\\s:]))+(?=\\s*:(?!=))/m,\n alias: 'symbol',\n inside: {\n 'variable': /\\$+(?:(?!\\$)[^(){}:#=\\s]+|(?=[({]))/\n }\n },\n 'variable': /\\$+(?:(?!\\$)[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n // Directives\n 'keyword': /-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/,\n 'function': {\n pattern: /(\\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \\t])/,\n lookbehind: true\n },\n 'operator': /(?:::|[?:+!])?=|[|@]/,\n 'punctuation': /[:;(){}]/\n};\n/* \"prismjs/components/prism-objectivec\" */\n\nprism.languages.objectivec = prism.languages.extend('c', {\n 'string': {\n pattern: /@?\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n greedy: true\n },\n 'keyword': /\\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n 'operator': /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\ndelete prism.languages.objectivec['class-name'];\nprism.languages.objc = prism.languages.objectivec;\n/* \"prismjs/components/prism-ocaml\" */\n// https://ocaml.org/manual/lex.html\n\nprism.languages.ocaml = {\n 'comment': {\n pattern: /\\(\\*[\\s\\S]*?\\*\\)/,\n greedy: true\n },\n 'char': {\n pattern: /'(?:[^\\\\\\r\\n']|\\\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,\n greedy: true\n },\n 'string': [{\n pattern: /\"(?:\\\\(?:[\\s\\S]|\\r\\n)|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n }, {\n pattern: /\\{([a-z_]*)\\|[\\s\\S]*?\\|\\1\\}/,\n greedy: true\n }],\n 'number': [// binary and octal\n /\\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\\b/i, // hexadecimal\n /\\b0x[a-f0-9][a-f0-9_]*(?:\\.[a-f0-9_]*)?(?:p[+-]?\\d[\\d_]*)?(?!\\w)/i, // decimal\n /\\b\\d[\\d_]*(?:\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?(?!\\w)/i],\n 'directive': {\n pattern: /\\B#\\w+/,\n alias: 'property'\n },\n 'label': {\n pattern: /\\B~\\w+/,\n alias: 'property'\n },\n 'type-variable': {\n pattern: /\\B'\\w+/,\n alias: 'function'\n },\n 'variant': {\n pattern: /`\\w+/,\n alias: 'symbol'\n },\n // For the list of keywords and operators,\n // see: http://caml.inria.fr/pub/docs/manual-ocaml/lex.html#sec84\n 'keyword': /\\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\\b/,\n 'boolean': /\\b(?:false|true)\\b/,\n 'operator-like-punctuation': {\n pattern: /\\[[<>|]|[>|]\\]|\\{<|>\\}/,\n alias: 'punctuation'\n },\n // Custom operators are allowed\n 'operator': /\\.[.~]|:[=>]|[=<>@^|&+\\-*\\/$%!?~][!$%&*+\\-.\\/:<=>?@^|~]*|\\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\\b/,\n 'punctuation': /;;|::|[(){}\\[\\].,:;#]|\\b_\\b/\n};\n/* \"prismjs/components/prism-python\" */\n\nprism.languages.python = {\n 'comment': {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true,\n greedy: true\n },\n 'string-interpolation': {\n pattern: /(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n greedy: true,\n inside: {\n 'interpolation': {\n // \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n pattern: /((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,\n lookbehind: true,\n inside: {\n 'format-spec': {\n pattern: /(:)[^:(){}]+(?=\\}$)/,\n lookbehind: true\n },\n 'conversion-option': {\n pattern: /![sra](?=[:}]$)/,\n alias: 'punctuation'\n },\n rest: null\n }\n },\n 'string': /[\\s\\S]+/\n }\n },\n 'triple-quoted-string': {\n pattern: /(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n greedy: true,\n alias: 'string'\n },\n 'string': {\n pattern: /(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n greedy: true\n },\n 'function': {\n pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n lookbehind: true\n },\n 'class-name': {\n pattern: /(\\bclass\\s+)\\w+/i,\n lookbehind: true\n },\n 'decorator': {\n pattern: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,\n lookbehind: true,\n alias: ['annotation', 'punctuation'],\n inside: {\n 'punctuation': /\\./\n }\n },\n 'keyword': /\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n 'builtin': /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n 'boolean': /\\b(?:False|None|True)\\b/,\n 'number': /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,\n 'operator': /[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n 'punctuation': /[{}[\\];(),.:]/\n};\nprism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = prism.languages.python;\nprism.languages.py = prism.languages.python;\n/* \"prismjs/components/prism-reason\" */\n\nprism.languages.reason = prism.languages.extend('clike', {\n 'string': {\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n },\n // 'class-name' must be matched *after* 'constructor' defined below\n 'class-name': /\\b[A-Z]\\w*/,\n 'keyword': /\\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\\b/,\n 'operator': /\\.{3}|:[:=]|\\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\\-*\\/]\\.?|\\b(?:asr|land|lor|lsl|lsr|lxor|mod)\\b/\n});\nprism.languages.insertBefore('reason', 'class-name', {\n 'char': {\n pattern: /'(?:\\\\x[\\da-f]{2}|\\\\o[0-3][0-7][0-7]|\\\\\\d{3}|\\\\.|[^'\\\\\\r\\n])'/,\n greedy: true\n },\n // Negative look-ahead prevents from matching things like String.capitalize\n 'constructor': /\\b[A-Z]\\w*\\b(?!\\s*\\.)/,\n 'label': {\n pattern: /\\b[a-z]\\w*(?=::)/,\n alias: 'symbol'\n }\n}); // We can't match functions property, so let's not even try.\n\ndelete prism.languages.reason.function;\n/* \"prismjs/components/prism-sass\" */\n\n(function (Prism) {\n Prism.languages.sass = Prism.languages.extend('css', {\n // Sass comments don't need to be closed, only indented\n 'comment': {\n pattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t].+)*/m,\n lookbehind: true,\n greedy: true\n }\n });\n Prism.languages.insertBefore('sass', 'atrule', {\n // We want to consume the whole line\n 'atrule-line': {\n // Includes support for = and + shortcuts\n pattern: /^(?:[ \\t]*)[@+=].+/m,\n greedy: true,\n inside: {\n 'atrule': /(?:@[\\w-]+|[+=])/\n }\n }\n });\n delete Prism.languages.sass.atrule;\n var variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/;\n var operator = [/[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|not|or)\\b/, {\n pattern: /(\\s)-(?=\\s)/,\n lookbehind: true\n }];\n Prism.languages.insertBefore('sass', 'property', {\n // We want to consume the whole line\n 'variable-line': {\n pattern: /^[ \\t]*\\$.+/m,\n greedy: true,\n inside: {\n 'punctuation': /:/,\n 'variable': variable,\n 'operator': operator\n }\n },\n // We want to consume the whole line\n 'property-line': {\n pattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s].*)/m,\n greedy: true,\n inside: {\n 'property': [/[^:\\s]+(?=\\s*:)/, {\n pattern: /(:)[^:\\s]+/,\n lookbehind: true\n }],\n 'punctuation': /:/,\n 'variable': variable,\n 'operator': operator,\n 'important': Prism.languages.sass.important\n }\n }\n });\n delete Prism.languages.sass.property;\n delete Prism.languages.sass.important; // Now that whole lines for other patterns are consumed,\n // what's left should be selectors\n\n Prism.languages.insertBefore('sass', 'punctuation', {\n 'selector': {\n pattern: /^([ \\t]*)\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*)*/m,\n lookbehind: true,\n greedy: true\n }\n });\n})(prism);\n/* \"prismjs/components/prism-scss\" */\n\n\nprism.languages.scss = prism.languages.extend('css', {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n 'atrule': {\n pattern: /@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,\n inside: {\n 'rule': /@[\\w-]+/ // See rest below\n\n }\n },\n // url, compassified\n 'url': /(?:[-a-z]+-)?url(?=\\()/i,\n // CSS selector regex is not appropriate for Sass\n // since there can be lot more things (var, @ directive, nesting..)\n // a selector must start at the end of a property or after a brace (end of other rules or nesting)\n // it can contain some characters that aren't used for defining rules or end of selector, & (parent selector), or interpolated variable\n // the end of a selector is found when there is no rules in it ( {} or {\\s}) or if there is a property (because an interpolated var\n // can \"pass\" as a selector- e.g: proper#{$erty})\n // this one was hard to do, so please be careful if you edit this one :)\n 'selector': {\n // Initial look-ahead is used to prevent matching of blank selectors\n pattern: /(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]))/,\n inside: {\n 'parent': {\n pattern: /&/,\n alias: 'important'\n },\n 'placeholder': /%[-\\w]+/,\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n },\n 'property': {\n pattern: /(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,\n inside: {\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n }\n});\nprism.languages.insertBefore('scss', 'atrule', {\n 'keyword': [/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\\b/i, {\n pattern: /( )(?:from|through)(?= )/,\n lookbehind: true\n }]\n});\nprism.languages.insertBefore('scss', 'important', {\n // var and interpolated vars\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n});\nprism.languages.insertBefore('scss', 'function', {\n 'module-modifier': {\n pattern: /\\b(?:as|hide|show|with)\\b/i,\n alias: 'keyword'\n },\n 'placeholder': {\n pattern: /%[-\\w]+/,\n alias: 'selector'\n },\n 'statement': {\n pattern: /\\B!(?:default|optional)\\b/i,\n alias: 'keyword'\n },\n 'boolean': /\\b(?:false|true)\\b/,\n 'null': {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n },\n 'operator': {\n pattern: /(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|not|or)(?=\\s)/,\n lookbehind: true\n }\n});\nprism.languages.scss['atrule'].inside.rest = prism.languages.scss;\n/* \"prismjs/components/prism-stylus\" */\n\n(function (Prism) {\n var unit = {\n pattern: /(\\b\\d+)(?:%|[a-z]+)/,\n lookbehind: true\n }; // 123 -123 .123 -.123 12.3 -12.3\n\n var number = {\n pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n lookbehind: true\n };\n var inside = {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n 'url': {\n pattern: /\\burl\\(([\"']?).*?\\1\\)/i,\n greedy: true\n },\n 'string': {\n pattern: /(\"|')(?:(?!\\1)[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\\1/,\n greedy: true\n },\n 'interpolation': null,\n // See below\n 'func': null,\n // See below\n 'important': /\\B!(?:important|optional)\\b/i,\n 'keyword': {\n pattern: /(^|\\s+)(?:(?:else|for|if|return|unless)(?=\\s|$)|@[\\w-]+)/,\n lookbehind: true\n },\n 'hexcode': /#[\\da-f]{3,6}/i,\n 'color': [/\\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\\b/i, {\n pattern: /\\b(?:hsl|rgb)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:hsl|rgb)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n inside: {\n 'unit': unit,\n 'number': number,\n 'function': /[\\w-]+(?=\\()/,\n 'punctuation': /[(),]/\n }\n }],\n 'entity': /\\\\[\\da-f]{1,8}/i,\n 'unit': unit,\n 'boolean': /\\b(?:false|true)\\b/,\n 'operator': [// We want non-word chars around \"-\" because it is\n // accepted in property names.\n /~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.{2,3}|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/],\n 'number': number,\n 'punctuation': /[{}()\\[\\];:,]/\n };\n inside['interpolation'] = {\n pattern: /\\{[^\\r\\n}:]+\\}/,\n alias: 'variable',\n inside: {\n 'delimiter': {\n pattern: /^\\{|\\}$/,\n alias: 'punctuation'\n },\n rest: inside\n }\n };\n inside['func'] = {\n pattern: /[\\w-]+\\([^)]*\\).*/,\n inside: {\n 'function': /^[^(]+/,\n rest: inside\n }\n };\n Prism.languages.stylus = {\n 'atrule-declaration': {\n pattern: /(^[ \\t]*)@.+/m,\n lookbehind: true,\n inside: {\n 'atrule': /^@[\\w-]+/,\n rest: inside\n }\n },\n 'variable-declaration': {\n pattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:\\{[^{}]*\\}|\\S.*|$)/m,\n lookbehind: true,\n inside: {\n 'variable': /^\\S+/,\n rest: inside\n }\n },\n 'statement': {\n pattern: /(^[ \\t]*)(?:else|for|if|return|unless)[ \\t].+/m,\n lookbehind: true,\n inside: {\n 'keyword': /^\\S+/,\n rest: inside\n }\n },\n // A property/value pair cannot end with a comma or a brace\n // It cannot have indented content unless it ended with a semicolon\n 'property-declaration': {\n pattern: /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)(?!\\s)[^{\\r\\n]*(?:;|[^{\\r\\n,]$(?!(?:\\r?\\n|\\r)(?:\\{|\\2[ \\t])))/m,\n lookbehind: true,\n inside: {\n 'property': {\n pattern: /^[^\\s:]+/,\n inside: {\n 'interpolation': inside.interpolation\n }\n },\n rest: inside\n }\n },\n // A selector can contain parentheses only as part of a pseudo-element\n // It can span multiple lines.\n // It must end with a comma or an accolade or have indented content.\n 'selector': {\n pattern: /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t])))/m,\n lookbehind: true,\n inside: {\n 'interpolation': inside.interpolation,\n 'comment': inside.comment,\n 'punctuation': /[{},]/\n }\n },\n 'func': inside.func,\n 'string': inside.string,\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true,\n greedy: true\n },\n 'interpolation': inside.interpolation,\n 'punctuation': /[{}()\\[\\];:.]/\n };\n})(prism);\n/* \"prismjs/components/prism-tsx\" */\n\n\n(function (Prism) {\n var typescript = Prism.util.clone(Prism.languages.typescript);\n Prism.languages.tsx = Prism.languages.extend('jsx', typescript); // doesn't work with TS because TS is too complex\n\n delete Prism.languages.tsx['parameter'];\n delete Prism.languages.tsx['literal-property']; // This will prevent collisions between TSX tags and TS generic types.\n // Idea by https://github.com/karlhorky\n // Discussion: https://github.com/PrismJS/prism/issues/2594#issuecomment-710666928\n\n var tag = Prism.languages.tsx.tag;\n tag.pattern = RegExp(/(^|[^\\w$]|(?=<\\/))/.source + '(?:' + tag.pattern.source + ')', tag.pattern.flags);\n tag.lookbehind = true;\n})(prism);\n/* \"prismjs/components/prism-wasm\" */\n\n\nprism.languages.wasm = {\n 'comment': [/\\(;[\\s\\S]*?;\\)/, {\n pattern: /;;.*/,\n greedy: true\n }],\n 'string': {\n pattern: /\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n greedy: true\n },\n 'keyword': [{\n pattern: /\\b(?:align|offset)=/,\n inside: {\n 'operator': /=/\n }\n }, {\n pattern: /\\b(?:(?:f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))?|memory\\.(?:grow|size))\\b/,\n inside: {\n 'punctuation': /\\./\n }\n }, /\\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\\b/],\n 'variable': /\\$[\\w!#$%&'*+\\-./:<=>?@\\\\^`|~]+/,\n 'number': /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/,\n 'punctuation': /[()]/\n};\n\nexport default prism;\n","// Duotone Dark\n// Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes)\n// Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-evening-dark.css)\n// Generated with Base16 Builder (https://github.com/base16-builder/base16-builder)\nvar theme = {\n plain: {\n backgroundColor: \"#2a2734\",\n color: \"#9a86fd\"\n },\n styles: [{\n types: [\"comment\", \"prolog\", \"doctype\", \"cdata\", \"punctuation\"],\n style: {\n color: \"#6c6783\"\n }\n }, {\n types: [\"namespace\"],\n style: {\n opacity: 0.7\n }\n }, {\n types: [\"tag\", \"operator\", \"number\"],\n style: {\n color: \"#e09142\"\n }\n }, {\n types: [\"property\", \"function\"],\n style: {\n color: \"#9a86fd\"\n }\n }, {\n types: [\"tag-id\", \"selector\", \"atrule-id\"],\n style: {\n color: \"#eeebff\"\n }\n }, {\n types: [\"attr-name\"],\n style: {\n color: \"#c4b9fe\"\n }\n }, {\n types: [\"boolean\", \"string\", \"entity\", \"url\", \"attr-value\", \"keyword\", \"control\", \"directive\", \"unit\", \"statement\", \"regex\", \"atrule\", \"placeholder\", \"variable\"],\n style: {\n color: \"#ffcc99\"\n }\n }, {\n types: [\"deleted\"],\n style: {\n textDecorationLine: \"line-through\"\n }\n }, {\n types: [\"inserted\"],\n style: {\n textDecorationLine: \"underline\"\n }\n }, {\n types: [\"italic\"],\n style: {\n fontStyle: \"italic\"\n }\n }, {\n types: [\"important\", \"bold\"],\n style: {\n fontWeight: \"bold\"\n }\n }, {\n types: [\"important\"],\n style: {\n color: \"#c4b9fe\"\n }\n }]\n};\n\nexport default theme;\n","import prism from '../prism/index.js';\nexport { default as Prism } from '../prism/index.js';\nimport theme from '../themes/duotoneDark';\nimport { Component } from 'react';\n\nvar defaultProps = {\n // $FlowFixMe\n Prism: prism,\n theme: theme\n};\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar newlineRe = /\\r\\n|\\r|\\n/; // Empty lines need to contain a single empty token, denoted with { empty: true }\n\nvar normalizeEmptyLines = function (line) {\n if (line.length === 0) {\n line.push({\n types: [\"plain\"],\n content: \"\\n\",\n empty: true\n });\n } else if (line.length === 1 && line[0].content === \"\") {\n line[0].content = \"\\n\";\n line[0].empty = true;\n }\n};\n\nvar appendTypes = function (types, add) {\n var typesSize = types.length;\n\n if (typesSize > 0 && types[typesSize - 1] === add) {\n return types;\n }\n\n return types.concat(add);\n}; // Takes an array of Prism's tokens and groups them by line, turning plain\n// strings into tokens as well. Tokens can become recursive in some cases,\n// which means that their types are concatenated. Plain-string tokens however\n// are always of type \"plain\".\n// This is not recursive to avoid exceeding the call-stack limit, since it's unclear\n// how nested Prism's tokens can become\n\n\nvar normalizeTokens = function (tokens) {\n var typeArrStack = [[]];\n var tokenArrStack = [tokens];\n var tokenArrIndexStack = [0];\n var tokenArrSizeStack = [tokens.length];\n var i = 0;\n var stackIndex = 0;\n var currentLine = [];\n var acc = [currentLine];\n\n while (stackIndex > -1) {\n while ((i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]) {\n var content = void 0;\n var types = typeArrStack[stackIndex];\n var tokenArr = tokenArrStack[stackIndex];\n var token = tokenArr[i]; // Determine content and append type to types if necessary\n\n if (typeof token === \"string\") {\n types = stackIndex > 0 ? types : [\"plain\"];\n content = token;\n } else {\n types = appendTypes(types, token.type);\n\n if (token.alias) {\n types = appendTypes(types, token.alias);\n }\n\n content = token.content;\n } // If token.content is an array, increase the stack depth and repeat this while-loop\n\n\n if (typeof content !== \"string\") {\n stackIndex++;\n typeArrStack.push(types);\n tokenArrStack.push(content);\n tokenArrIndexStack.push(0);\n tokenArrSizeStack.push(content.length);\n continue;\n } // Split by newlines\n\n\n var splitByNewlines = content.split(newlineRe);\n var newlineCount = splitByNewlines.length;\n currentLine.push({\n types: types,\n content: splitByNewlines[0]\n }); // Create a new line for each string on a new line\n\n for (var i$1 = 1; i$1 < newlineCount; i$1++) {\n normalizeEmptyLines(currentLine);\n acc.push(currentLine = []);\n currentLine.push({\n types: types,\n content: splitByNewlines[i$1]\n });\n }\n } // Decreate the stack depth\n\n\n stackIndex--;\n typeArrStack.pop();\n tokenArrStack.pop();\n tokenArrIndexStack.pop();\n tokenArrSizeStack.pop();\n }\n\n normalizeEmptyLines(currentLine);\n return acc;\n};\n\nvar themeToDict = function (theme, language) {\n var plain = theme.plain; // $FlowFixMe\n\n var base = Object.create(null);\n var themeDict = theme.styles.reduce(function (acc, themeEntry) {\n var languages = themeEntry.languages;\n var style = themeEntry.style;\n\n if (languages && !languages.includes(language)) {\n return acc;\n }\n\n themeEntry.types.forEach(function (type) {\n // $FlowFixMe\n var accStyle = _extends({}, acc[type], style);\n\n acc[type] = accStyle;\n });\n return acc;\n }, base); // $FlowFixMe\n\n themeDict.root = plain; // $FlowFixMe\n\n themeDict.plain = _extends({}, plain, {\n backgroundColor: null\n });\n return themeDict;\n};\n\nfunction objectWithoutProperties(obj, exclude) {\n var target = {};\n\n for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n\n return target;\n}\n\nvar Highlight = /*@__PURE__*/function (Component) {\n function Highlight() {\n var this$1 = this;\n var args = [],\n len = arguments.length;\n\n while (len--) args[len] = arguments[len];\n\n Component.apply(this, args);\n\n _defineProperty(this, \"getThemeDict\", function (props) {\n if (this$1.themeDict !== undefined && props.theme === this$1.prevTheme && props.language === this$1.prevLanguage) {\n return this$1.themeDict;\n }\n\n this$1.prevTheme = props.theme;\n this$1.prevLanguage = props.language;\n var themeDict = props.theme ? themeToDict(props.theme, props.language) : undefined;\n return this$1.themeDict = themeDict;\n });\n\n _defineProperty(this, \"getLineProps\", function (ref) {\n var key = ref.key;\n var className = ref.className;\n var style = ref.style;\n var rest$1 = objectWithoutProperties(ref, [\"key\", \"className\", \"style\", \"line\"]);\n var rest = rest$1;\n\n var output = _extends({}, rest, {\n className: \"token-line\",\n style: undefined,\n key: undefined\n });\n\n var themeDict = this$1.getThemeDict(this$1.props);\n\n if (themeDict !== undefined) {\n output.style = themeDict.plain;\n }\n\n if (style !== undefined) {\n output.style = output.style !== undefined ? _extends({}, output.style, style) : style;\n }\n\n if (key !== undefined) {\n output.key = key;\n }\n\n if (className) {\n output.className += \" \" + className;\n }\n\n return output;\n });\n\n _defineProperty(this, \"getStyleForToken\", function (ref) {\n var types = ref.types;\n var empty = ref.empty;\n var typesSize = types.length;\n var themeDict = this$1.getThemeDict(this$1.props);\n\n if (themeDict === undefined) {\n return undefined;\n } else if (typesSize === 1 && types[0] === \"plain\") {\n return empty ? {\n display: \"inline-block\"\n } : undefined;\n } else if (typesSize === 1 && !empty) {\n return themeDict[types[0]];\n }\n\n var baseStyle = empty ? {\n display: \"inline-block\"\n } : {}; // $FlowFixMe\n\n var typeStyles = types.map(function (type) {\n return themeDict[type];\n });\n return Object.assign.apply(Object, [baseStyle].concat(typeStyles));\n });\n\n _defineProperty(this, \"getTokenProps\", function (ref) {\n var key = ref.key;\n var className = ref.className;\n var style = ref.style;\n var token = ref.token;\n var rest$1 = objectWithoutProperties(ref, [\"key\", \"className\", \"style\", \"token\"]);\n var rest = rest$1;\n\n var output = _extends({}, rest, {\n className: \"token \" + token.types.join(\" \"),\n children: token.content,\n style: this$1.getStyleForToken(token),\n key: undefined\n });\n\n if (style !== undefined) {\n output.style = output.style !== undefined ? _extends({}, output.style, style) : style;\n }\n\n if (key !== undefined) {\n output.key = key;\n }\n\n if (className) {\n output.className += \" \" + className;\n }\n\n return output;\n });\n\n _defineProperty(this, \"tokenize\", function (Prism, code, grammar, language) {\n var env = {\n code: code,\n grammar: grammar,\n language: language,\n tokens: []\n };\n Prism.hooks.run(\"before-tokenize\", env);\n var tokens = env.tokens = Prism.tokenize(env.code, env.grammar, env.language);\n Prism.hooks.run(\"after-tokenize\", env);\n return tokens;\n });\n }\n\n if (Component) Highlight.__proto__ = Component;\n Highlight.prototype = Object.create(Component && Component.prototype);\n Highlight.prototype.constructor = Highlight;\n\n Highlight.prototype.render = function render() {\n var ref = this.props;\n var Prism = ref.Prism;\n var language = ref.language;\n var code = ref.code;\n var children = ref.children;\n var themeDict = this.getThemeDict(this.props);\n var grammar = Prism.languages[language];\n var mixedTokens = grammar !== undefined ? this.tokenize(Prism, code, grammar, language) : [code];\n var tokens = normalizeTokens(mixedTokens);\n return children({\n tokens: tokens,\n className: \"prism-code language-\" + language,\n style: themeDict !== undefined ? themeDict.root : {},\n getLineProps: this.getLineProps,\n getTokenProps: this.getTokenProps\n });\n };\n\n return Highlight;\n}(Component);\n\nexport default Highlight;\nexport { defaultProps };\n","// Original: https://github.com/sdras/night-owl-vscode-theme\n// Converted automatically using ./tools/themeFromVsCode\nvar theme = {\n plain: {\n color: \"#d6deeb\",\n backgroundColor: \"#011627\"\n },\n styles: [{\n types: [\"changed\"],\n style: {\n color: \"rgb(162, 191, 252)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"deleted\"],\n style: {\n color: \"rgba(239, 83, 80, 0.56)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"inserted\", \"attr-name\"],\n style: {\n color: \"rgb(173, 219, 103)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"comment\"],\n style: {\n color: \"rgb(99, 119, 119)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"string\", \"url\"],\n style: {\n color: \"rgb(173, 219, 103)\"\n }\n }, {\n types: [\"variable\"],\n style: {\n color: \"rgb(214, 222, 235)\"\n }\n }, {\n types: [\"number\"],\n style: {\n color: \"rgb(247, 140, 108)\"\n }\n }, {\n types: [\"builtin\", \"char\", \"constant\", \"function\"],\n style: {\n color: \"rgb(130, 170, 255)\"\n }\n }, {\n // This was manually added after the auto-generation\n // so that punctuations are not italicised\n types: [\"punctuation\"],\n style: {\n color: \"rgb(199, 146, 234)\"\n }\n }, {\n types: [\"selector\", \"doctype\"],\n style: {\n color: \"rgb(199, 146, 234)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"class-name\"],\n style: {\n color: \"rgb(255, 203, 139)\"\n }\n }, {\n types: [\"tag\", \"operator\", \"keyword\"],\n style: {\n color: \"rgb(127, 219, 202)\"\n }\n }, {\n types: [\"boolean\"],\n style: {\n color: \"rgb(255, 88, 116)\"\n }\n }, {\n types: [\"property\"],\n style: {\n color: \"rgb(128, 203, 196)\"\n }\n }, {\n types: [\"namespace\"],\n style: {\n color: \"rgb(178, 204, 214)\"\n }\n }]\n};\n\nexport default theme;\n","// Original: https://github.com/sdras/night-owl-vscode-theme\n// Converted automatically using ./tools/themeFromVsCode\nvar theme = {\n plain: {\n color: \"#403f53\",\n backgroundColor: \"#FBFBFB\"\n },\n styles: [{\n types: [\"changed\"],\n style: {\n color: \"rgb(162, 191, 252)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"deleted\"],\n style: {\n color: \"rgba(239, 83, 80, 0.56)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"inserted\", \"attr-name\"],\n style: {\n color: \"rgb(72, 118, 214)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"comment\"],\n style: {\n color: \"rgb(152, 159, 177)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"string\", \"builtin\", \"char\", \"constant\", \"url\"],\n style: {\n color: \"rgb(72, 118, 214)\"\n }\n }, {\n types: [\"variable\"],\n style: {\n color: \"rgb(201, 103, 101)\"\n }\n }, {\n types: [\"number\"],\n style: {\n color: \"rgb(170, 9, 130)\"\n }\n }, {\n // This was manually added after the auto-generation\n // so that punctuations are not italicised\n types: [\"punctuation\"],\n style: {\n color: \"rgb(153, 76, 195)\"\n }\n }, {\n types: [\"function\", \"selector\", \"doctype\"],\n style: {\n color: \"rgb(153, 76, 195)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"class-name\"],\n style: {\n color: \"rgb(17, 17, 17)\"\n }\n }, {\n types: [\"tag\"],\n style: {\n color: \"rgb(153, 76, 195)\"\n }\n }, {\n types: [\"operator\", \"property\", \"keyword\", \"namespace\"],\n style: {\n color: \"rgb(12, 150, 155)\"\n }\n }, {\n types: [\"boolean\"],\n style: {\n color: \"rgb(188, 84, 84)\"\n }\n }]\n};\n\nexport default theme;\n","'use strict'\n\nvar normalize = require('./normalize')\nvar DefinedInfo = require('./lib/util/defined-info')\nvar Info = require('./lib/util/info')\n\nvar data = 'data'\n\nmodule.exports = find\n\nvar valid = /^data[-\\w.:]+$/i\nvar dash = /-[a-z]/g\nvar cap = /[A-Z]/g\n\nfunction find(schema, value) {\n var normal = normalize(value)\n var prop = value\n var Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === data && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n prop = datasetToProperty(value)\n } else {\n value = datasetToAttribute(value)\n }\n\n Type = DefinedInfo\n }\n\n return new Type(prop, value)\n}\n\nfunction datasetToProperty(attribute) {\n var value = attribute.slice(5).replace(dash, camelcase)\n return data + value.charAt(0).toUpperCase() + value.slice(1)\n}\n\nfunction datasetToAttribute(property) {\n var value = property.slice(4)\n\n if (dash.test(value)) {\n return property\n }\n\n value = value.replace(cap, kebab)\n\n if (value.charAt(0) !== '-') {\n value = '-' + value\n }\n\n return data + value\n}\n\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","'use strict'\n\nvar merge = require('./lib/util/merge')\nvar xlink = require('./lib/xlink')\nvar xml = require('./lib/xml')\nvar xmlns = require('./lib/xmlns')\nvar aria = require('./lib/aria')\nvar html = require('./lib/html')\n\nmodule.exports = merge([xml, xlink, xmlns, aria, html])\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\n\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\n\nmodule.exports = create({\n transform: ariaTransform,\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n\nfunction ariaTransform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n}\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform')\n\nvar boolean = types.boolean\nvar overloadedBoolean = types.overloadedBoolean\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\n\nmodule.exports = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: commaSeparated,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextMenu: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: commaSeparated,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n }\n})\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\nvar caseSensitiveTransform = require('./util/case-sensitive-transform')\n\nvar boolean = types.boolean\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\nvar commaOrSpaceSeparated = types.commaOrSpaceSeparated\n\nmodule.exports = create({\n space: 'svg',\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n transform: caseSensitiveTransform,\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n }\n})\n","'use strict'\n\nvar caseSensitiveTransform = require('./case-sensitive-transform')\n\nmodule.exports = caseInsensitiveTransform\n\nfunction caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","'use strict'\n\nmodule.exports = caseSensitiveTransform\n\nfunction caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","'use strict'\n\nvar normalize = require('../../normalize')\nvar Schema = require('./schema')\nvar DefinedInfo = require('./defined-info')\n\nmodule.exports = create\n\nfunction create(definition) {\n var space = definition.space\n var mustUseProperty = definition.mustUseProperty || []\n var attributes = definition.attributes || {}\n var props = definition.properties\n var transform = definition.transform\n var property = {}\n var normal = {}\n var prop\n var info\n\n for (prop in props) {\n info = new DefinedInfo(\n prop,\n transform(attributes, prop),\n props[prop],\n space\n )\n\n if (mustUseProperty.indexOf(prop) !== -1) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n\n return new Schema(property, normal, space)\n}\n","'use strict'\n\nvar Info = require('./info')\nvar types = require('./types')\n\nmodule.exports = DefinedInfo\n\nDefinedInfo.prototype = new Info()\nDefinedInfo.prototype.defined = true\n\nvar checks = [\n 'boolean',\n 'booleanish',\n 'overloadedBoolean',\n 'number',\n 'commaSeparated',\n 'spaceSeparated',\n 'commaOrSpaceSeparated'\n]\nvar checksLength = checks.length\n\nfunction DefinedInfo(property, attribute, mask, space) {\n var index = -1\n var check\n\n mark(this, 'space', space)\n\n Info.call(this, property, attribute)\n\n while (++index < checksLength) {\n check = checks[index]\n mark(this, check, (mask & types[check]) === types[check])\n }\n}\n\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n","'use strict'\n\nmodule.exports = Info\n\nvar proto = Info.prototype\n\nproto.space = null\nproto.attribute = null\nproto.property = null\nproto.boolean = false\nproto.booleanish = false\nproto.overloadedBoolean = false\nproto.number = false\nproto.commaSeparated = false\nproto.spaceSeparated = false\nproto.commaOrSpaceSeparated = false\nproto.mustUseProperty = false\nproto.defined = false\n\nfunction Info(property, attribute) {\n this.property = property\n this.attribute = attribute\n}\n","'use strict'\n\nvar xtend = require('xtend')\nvar Schema = require('./schema')\n\nmodule.exports = merge\n\nfunction merge(definitions) {\n var length = definitions.length\n var property = []\n var normal = []\n var index = -1\n var info\n var space\n\n while (++index < length) {\n info = definitions[index]\n property.push(info.property)\n normal.push(info.normal)\n space = info.space\n }\n\n return new Schema(\n xtend.apply(null, property),\n xtend.apply(null, normal),\n space\n )\n}\n","'use strict'\n\nmodule.exports = Schema\n\nvar proto = Schema.prototype\n\nproto.space = null\nproto.normal = {}\nproto.property = {}\n\nfunction Schema(property, normal, space) {\n this.property = property\n this.normal = normal\n\n if (space) {\n this.space = space\n }\n}\n","'use strict'\n\nvar powers = 0\n\nexports.boolean = increment()\nexports.booleanish = increment()\nexports.overloadedBoolean = increment()\nexports.number = increment()\nexports.spaceSeparated = increment()\nexports.commaSeparated = increment()\nexports.commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return Math.pow(2, ++powers)\n}\n","'use strict'\n\nvar create = require('./util/create')\n\nmodule.exports = create({\n space: 'xlink',\n transform: xlinkTransform,\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n\nfunction xlinkTransform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n}\n","'use strict'\n\nvar create = require('./util/create')\n\nmodule.exports = create({\n space: 'xml',\n transform: xmlTransform,\n properties: {\n xmlLang: null,\n xmlBase: null,\n xmlSpace: null\n }\n})\n\nfunction xmlTransform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n}\n","'use strict'\n\nvar create = require('./util/create')\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform')\n\nmodule.exports = create({\n space: 'xmlns',\n attributes: {\n xmlnsxlink: 'xmlns:xlink'\n },\n transform: caseInsensitiveTransform,\n properties: {\n xmlns: null,\n xmlnsXLink: null\n }\n})\n","'use strict'\n\nmodule.exports = normalize\n\nfunction normalize(value) {\n return value.toLowerCase()\n}\n","'use strict'\n\nvar merge = require('./lib/util/merge')\nvar xlink = require('./lib/xlink')\nvar xml = require('./lib/xml')\nvar xmlns = require('./lib/xmlns')\nvar aria = require('./lib/aria')\nvar svg = require('./lib/svg')\n\nmodule.exports = merge([xml, xlink, xmlns, aria, svg])\n","/** @license React v17.0.2\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),m=require(\"react\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar q=60106,r=60107,u=60108,z=60114,B=60109,aa=60110,ba=60112,D=60113,ca=60120,da=60115,ea=60116,fa=60121,ha=60117,ia=60119,ja=60129,ka=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;q=E(\"react.portal\");r=E(\"react.fragment\");u=E(\"react.strict_mode\");z=E(\"react.profiler\");B=E(\"react.provider\");aa=E(\"react.context\");ba=E(\"react.forward_ref\");D=E(\"react.suspense\");ca=E(\"react.suspense_list\");da=E(\"react.memo\");ea=E(\"react.lazy\");fa=E(\"react.block\");ha=E(\"react.fundamental\");ia=E(\"react.scope\");ja=E(\"react.debug_trace_mode\");ka=E(\"react.legacy_hidden\")}\nfunction F(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case r:return\"Fragment\";case q:return\"Portal\";case z:return\"Profiler\";case u:return\"StrictMode\";case D:return\"Suspense\";case ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case aa:return(a.displayName||\"Context\")+\".Consumer\";case B:return(a._context.displayName||\"Context\")+\".Provider\";case ba:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||\n(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case da:return F(a.type);case fa:return F(a._render);case ea:b=a._payload;a=a._init;try{return F(a(b))}catch(c){}}return null}var la=m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,ma={};function I(a,b){for(var c=a._threadCount|0;c<=b;c++)a[c]=a._currentValue2,a._threadCount=c+1}function na(a,b,c,d){if(d&&(d=a.contextType,\"object\"===typeof d&&null!==d))return I(d,c),d[c];if(a=a.contextTypes){c={};for(var f in a)c[f]=b[f];b=c}else b=ma;return b}\nfor(var J=new Uint16Array(16),K=0;15>K;K++)J[K]=K+1;J[15]=0;var oa=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,pa=Object.prototype.hasOwnProperty,qa={},ra={};\nfunction sa(a){if(pa.call(ra,a))return!0;if(pa.call(qa,a))return!1;if(oa.test(a))return ra[a]=!0;qa[a]=!0;return!1}function ta(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction ua(a,b,c,d){if(null===b||\"undefined\"===typeof b||ta(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function M(a,b,c,d,f,h,t){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=h;this.removeEmptyString=t}var N={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){N[a]=new M(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];N[b]=new M(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){N[a]=new M(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){N[a]=new M(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){N[a]=new M(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){N[a]=new M(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){N[a]=new M(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){N[a]=new M(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){N[a]=new M(a,5,!1,a.toLowerCase(),null,!1,!1)});var va=/[\\-:]([a-z])/g;function wa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(va,\nwa);N[b]=new M(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!1,!1)});\nN.xlinkHref=new M(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!0,!0)});var xa=/[\"'&<>]/;\nfunction O(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=xa.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=\"&quot;\";break;case 38:b=\"&amp;\";break;case 39:b=\"&#x27;\";break;case 60:b=\"&lt;\";break;case 62:b=\"&gt;\";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}\nfunction ya(a,b){var c=N.hasOwnProperty(a)?N[a]:null;var d;if(d=\"style\"!==a)d=null!==c?0===c.type:!(2<a.length)||\"o\"!==a[0]&&\"O\"!==a[0]||\"n\"!==a[1]&&\"N\"!==a[1]?!1:!0;if(d||ua(a,b,c,!1))return\"\";if(null!==c){a=c.attributeName;d=c.type;if(3===d||4===d&&!0===b)return a+'=\"\"';c.sanitizeURL&&(b=\"\"+b);return a+'=\"'+(O(b)+'\"')}return sa(a)?a+'=\"'+(O(b)+'\"'):\"\"}function za(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar Aa=\"function\"===typeof Object.is?Object.is:za,P=null,Q=null,R=null,S=!1,T=!1,U=null,V=0;function W(){if(null===P)throw Error(p(321));return P}function Ba(){if(0<V)throw Error(p(312));return{memoizedState:null,queue:null,next:null}}function Ca(){null===R?null===Q?(S=!1,Q=R=Ba()):(S=!0,R=Q):null===R.next?(S=!1,R=R.next=Ba()):(S=!0,R=R.next);return R}function Da(a,b,c,d){for(;T;)T=!1,V+=1,R=null,c=a(b,d);Ea();return c}function Ea(){P=null;T=!1;Q=null;V=0;R=U=null}\nfunction Fa(a,b){return\"function\"===typeof b?b(a):b}function Ga(a,b,c){P=W();R=Ca();if(S){var d=R.queue;b=d.dispatch;if(null!==U&&(c=U.get(d),void 0!==c)){U.delete(d);d=R.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);R.memoizedState=d;return[d,b]}return[R.memoizedState,b]}a=a===Fa?\"function\"===typeof b?b():b:void 0!==c?c(b):b;R.memoizedState=a;a=R.queue={last:null,dispatch:null};a=a.dispatch=Ha.bind(null,P,a);return[R.memoizedState,a]}\nfunction Ia(a,b){P=W();R=Ca();b=void 0===b?null:b;if(null!==R){var c=R.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!Aa(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();R.memoizedState=[a,b];return a}function Ha(a,b,c){if(!(25>V))throw Error(p(301));if(a===P)if(T=!0,a={action:c,next:null},null===U&&(U=new Map),c=U.get(b),void 0===c)U.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}function Ja(){}\nvar X=null,Ka={readContext:function(a){var b=X.threadID;I(a,b);return a[b]},useContext:function(a){W();var b=X.threadID;I(a,b);return a[b]},useMemo:Ia,useReducer:Ga,useRef:function(a){P=W();R=Ca();var b=R.memoizedState;return null===b?(a={current:a},R.memoizedState=a):b},useState:function(a){return Ga(Fa,a)},useLayoutEffect:function(){},useCallback:function(a,b){return Ia(function(){return a},b)},useImperativeHandle:Ja,useEffect:Ja,useDebugValue:Ja,useDeferredValue:function(a){W();return a},useTransition:function(){W();\nreturn[function(a){a()},!1]},useOpaqueIdentifier:function(){return(X.identifierPrefix||\"\")+\"R:\"+(X.uniqueID++).toString(36)},useMutableSource:function(a,b){W();return b(a._source)}},La={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};function Ma(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nvar Na={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Oa=l({menuitem:!0},Na),Y={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,\ngridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Pa=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(Y).forEach(function(a){Pa.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Y[b]=Y[a]})});\nvar Qa=/([A-Z])/g,Ra=/^ms-/,Z=m.Children.toArray,Sa=la.ReactCurrentDispatcher,Ta={listing:!0,pre:!0,textarea:!0},Ua=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,Va={},Wa={};function Xa(a){if(void 0===a||null===a)return a;var b=\"\";m.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Ya=Object.prototype.hasOwnProperty,Za={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function $a(a,b){if(void 0===a)throw Error(p(152,F(b)||\"Component\"));}\nfunction ab(a,b,c){function d(d,h){var e=h.prototype&&h.prototype.isReactComponent,f=na(h,b,c,e),t=[],g=!1,n={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===t)return null},enqueueReplaceState:function(a,c){g=!0;t=[c]},enqueueSetState:function(a,c){if(null===t)return null;t.push(c)}};if(e){if(e=new h(d.props,f,n),\"function\"===typeof h.getDerivedStateFromProps){var k=h.getDerivedStateFromProps.call(null,d.props,e.state);null!=k&&(e.state=l({},e.state,k))}}else if(P={},e=h(d.props,\nf,n),e=Da(h,d.props,e,f),null==e||null==e.render){a=e;$a(a,h);return}e.props=d.props;e.context=f;e.updater=n;n=e.state;void 0===n&&(e.state=n=null);if(\"function\"===typeof e.UNSAFE_componentWillMount||\"function\"===typeof e.componentWillMount)if(\"function\"===typeof e.componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.UNSAFE_componentWillMount(),t.length){n=t;var v=\ng;t=null;g=!1;if(v&&1===n.length)e.state=n[0];else{k=v?n[0]:e.state;var H=!0;for(v=v?1:0;v<n.length;v++){var x=n[v];x=\"function\"===typeof x?x.call(e,k,d.props,f):x;null!=x&&(H?(H=!1,k=l({},k,x)):l(k,x))}e.state=k}}else t=null;a=e.render();$a(a,h);if(\"function\"===typeof e.getChildContext&&(d=h.childContextTypes,\"object\"===typeof d)){var y=e.getChildContext();for(var A in y)if(!(A in d))throw Error(p(108,F(h)||\"Unknown\",A));}y&&(b=l({},b,y))}for(;m.isValidElement(a);){var f=a,h=f.type;if(\"function\"!==\ntypeof h)break;d(f,h)}return{child:a,context:b}}\nvar bb=function(){function a(a,b,f){m.isValidElement(a)?a.type!==r?a=[a]:(a=a.props.children,a=m.isValidElement(a)?[a]:Z(a)):a=Z(a);a={type:null,domNamespace:La.html,children:a,childIndex:0,context:ma,footer:\"\"};var c=J[0];if(0===c){var d=J;c=d.length;var g=2*c;if(!(65536>=g))throw Error(p(304));var e=new Uint16Array(g);e.set(d);J=e;J[0]=c+1;for(d=c;d<g-1;d++)J[d]=d+1;J[g-1]=0}else J[0]=J[c];this.threadID=c;this.stack=[a];this.exhausted=!1;this.currentSelectValue=null;this.previousWasTextNode=!1;\nthis.makeStaticMarkup=b;this.suspenseDepth=0;this.contextIndex=-1;this.contextStack=[];this.contextValueStack=[];this.uniqueID=0;this.identifierPrefix=f&&f.identifierPrefix||\"\"}var b=a.prototype;b.destroy=function(){if(!this.exhausted){this.exhausted=!0;this.clearProviders();var a=this.threadID;J[a]=J[0];J[0]=a}};b.pushProvider=function(a){var b=++this.contextIndex,c=a.type._context,h=this.threadID;I(c,h);var t=c[h];this.contextStack[b]=c;this.contextValueStack[b]=t;c[h]=a.props.value};b.popProvider=\nfunction(){var a=this.contextIndex,b=this.contextStack[a],f=this.contextValueStack[a];this.contextStack[a]=null;this.contextValueStack[a]=null;this.contextIndex--;b[this.threadID]=f};b.clearProviders=function(){for(var a=this.contextIndex;0<=a;a--)this.contextStack[a][this.threadID]=this.contextValueStack[a]};b.read=function(a){if(this.exhausted)return null;var b=X;X=this;var c=Sa.current;Sa.current=Ka;try{for(var h=[\"\"],t=!1;h[0].length<a;){if(0===this.stack.length){this.exhausted=!0;var g=this.threadID;\nJ[g]=J[0];J[0]=g;break}var e=this.stack[this.stack.length-1];if(t||e.childIndex>=e.children.length){var L=e.footer;\"\"!==L&&(this.previousWasTextNode=!1);this.stack.pop();if(\"select\"===e.type)this.currentSelectValue=null;else if(null!=e.type&&null!=e.type.type&&e.type.type.$$typeof===B)this.popProvider(e.type);else if(e.type===D){this.suspenseDepth--;var G=h.pop();if(t){t=!1;var C=e.fallbackFrame;if(!C)throw Error(p(303));this.stack.push(C);h[this.suspenseDepth]+=\"\\x3c!--$!--\\x3e\";continue}else h[this.suspenseDepth]+=\nG}h[this.suspenseDepth]+=L}else{var n=e.children[e.childIndex++],k=\"\";try{k+=this.render(n,e.context,e.domNamespace)}catch(v){if(null!=v&&\"function\"===typeof v.then)throw Error(p(294));throw v;}finally{}h.length<=this.suspenseDepth&&h.push(\"\");h[this.suspenseDepth]+=k}}return h[0]}finally{Sa.current=c,X=b,Ea()}};b.render=function(a,b,f){if(\"string\"===typeof a||\"number\"===typeof a){f=\"\"+a;if(\"\"===f)return\"\";if(this.makeStaticMarkup)return O(f);if(this.previousWasTextNode)return\"\\x3c!-- --\\x3e\"+O(f);\nthis.previousWasTextNode=!0;return O(f)}b=ab(a,b,this.threadID);a=b.child;b=b.context;if(null===a||!1===a)return\"\";if(!m.isValidElement(a)){if(null!=a&&null!=a.$$typeof){f=a.$$typeof;if(f===q)throw Error(p(257));throw Error(p(258,f.toString()));}a=Z(a);this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"});return\"\"}var c=a.type;if(\"string\"===typeof c)return this.renderDOM(a,b,f);switch(c){case ka:case ja:case u:case z:case ca:case r:return a=Z(a.props.children),this.stack.push({type:null,\ndomNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\"\";case D:throw Error(p(294));case ia:throw Error(p(343));}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case ba:P={};var d=c.render(a.props,a.ref);d=Da(c.render,a.props,d,a.ref);d=Z(d);this.stack.push({type:null,domNamespace:f,children:d,childIndex:0,context:b,footer:\"\"});return\"\";case da:return a=[m.createElement(c.type,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\n\"\";case B:return c=Z(a.props.children),f={type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"},this.pushProvider(a),this.stack.push(f),\"\";case aa:c=a.type;d=a.props;var g=this.threadID;I(c,g);c=Z(d.children(c[g]));this.stack.push({type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"});return\"\";case ha:throw Error(p(338));case ea:return c=a.type,d=c._init,c=d(c._payload),a=[m.createElement(c,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,\ncontext:b,footer:\"\"}),\"\"}throw Error(p(130,null==c?c:typeof c,\"\"));};b.renderDOM=function(a,b,f){var c=a.type.toLowerCase();f===La.html&&Ma(c);if(!Va.hasOwnProperty(c)){if(!Ua.test(c))throw Error(p(65,c));Va[c]=!0}var d=a.props;if(\"input\"===c)d=l({type:void 0},d,{defaultChecked:void 0,defaultValue:void 0,value:null!=d.value?d.value:d.defaultValue,checked:null!=d.checked?d.checked:d.defaultChecked});else if(\"textarea\"===c){var g=d.value;if(null==g){g=d.defaultValue;var e=d.children;if(null!=e){if(null!=\ng)throw Error(p(92));if(Array.isArray(e)){if(!(1>=e.length))throw Error(p(93));e=e[0]}g=\"\"+e}null==g&&(g=\"\")}d=l({},d,{value:void 0,children:\"\"+g})}else if(\"select\"===c)this.currentSelectValue=null!=d.value?d.value:d.defaultValue,d=l({},d,{value:void 0});else if(\"option\"===c){e=this.currentSelectValue;var L=Xa(d.children);if(null!=e){var G=null!=d.value?d.value+\"\":L;g=!1;if(Array.isArray(e))for(var C=0;C<e.length;C++){if(\"\"+e[C]===G){g=!0;break}}else g=\"\"+e===G;d=l({selected:void 0,children:void 0},\nd,{selected:g,children:L})}}if(g=d){if(Oa[c]&&(null!=g.children||null!=g.dangerouslySetInnerHTML))throw Error(p(137,c));if(null!=g.dangerouslySetInnerHTML){if(null!=g.children)throw Error(p(60));if(!(\"object\"===typeof g.dangerouslySetInnerHTML&&\"__html\"in g.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=g.style&&\"object\"!==typeof g.style)throw Error(p(62));}g=d;e=this.makeStaticMarkup;L=1===this.stack.length;G=\"<\"+a.type;b:if(-1===c.indexOf(\"-\"))C=\"string\"===typeof g.is;else switch(c){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":C=\n!1;break b;default:C=!0}for(w in g)if(Ya.call(g,w)){var n=g[w];if(null!=n){if(\"style\"===w){var k=void 0,v=\"\",H=\"\";for(k in n)if(n.hasOwnProperty(k)){var x=0===k.indexOf(\"--\"),y=n[k];if(null!=y){if(x)var A=k;else if(A=k,Wa.hasOwnProperty(A))A=Wa[A];else{var cb=A.replace(Qa,\"-$1\").toLowerCase().replace(Ra,\"-ms-\");A=Wa[A]=cb}v+=H+A+\":\";H=k;x=null==y||\"boolean\"===typeof y||\"\"===y?\"\":x||\"number\"!==typeof y||0===y||Y.hasOwnProperty(H)&&Y[H]?(\"\"+y).trim():y+\"px\";v+=x;H=\";\"}}n=v||null}k=null;C?Za.hasOwnProperty(w)||\n(k=w,k=sa(k)&&null!=n?k+'=\"'+(O(n)+'\"'):\"\"):k=ya(w,n);k&&(G+=\" \"+k)}}e||L&&(G+=' data-reactroot=\"\"');var w=G;g=\"\";Na.hasOwnProperty(c)?w+=\"/>\":(w+=\">\",g=\"</\"+a.type+\">\");a:{e=d.dangerouslySetInnerHTML;if(null!=e){if(null!=e.__html){e=e.__html;break a}}else if(e=d.children,\"string\"===typeof e||\"number\"===typeof e){e=O(e);break a}e=null}null!=e?(d=[],Ta.hasOwnProperty(c)&&\"\\n\"===e.charAt(0)&&(w+=\"\\n\"),w+=e):d=Z(d.children);a=a.type;f=null==f||\"http://www.w3.org/1999/xhtml\"===f?Ma(a):\"http://www.w3.org/2000/svg\"===\nf&&\"foreignObject\"===a?\"http://www.w3.org/1999/xhtml\":f;this.stack.push({domNamespace:f,type:c,children:d,childIndex:0,context:b,footer:g});this.previousWasTextNode=!1;return w};return a}();exports.renderToNodeStream=function(){throw Error(p(207));};exports.renderToStaticMarkup=function(a,b){a=new bb(a,!0,b);try{return a.read(Infinity)}finally{a.destroy()}};exports.renderToStaticNodeStream=function(){throw Error(p(208));};exports.renderToString=function(a,b){a=new bb(a,!1,b);try{return a.read(Infinity)}finally{a.destroy()}};\nexports.version=\"17.0.2\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom-server.browser.development.js');\n}\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict'\n\nconst React = require('react')\nconst ReactIs = require('react-is')\nconst svg = require('property-information/svg')\nconst find = require('property-information/find')\nconst hastToReact = require('property-information/hast-to-react.json')\nconst spaces = require('space-separated-tokens')\nconst commas = require('comma-separated-tokens')\nconst style = require('style-to-object')\n\nexports.hastToReact = toReact\nexports.hastChildrenToReact = childrenToReact\n\n/**\n * @typedef {JSX.IntrinsicElements} IntrinsicElements\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n */\n\n/**\n * @typedef Info\n * @property {string?} space\n * @property {string?} attribute\n * @property {string?} property\n * @property {boolean} boolean\n * @property {boolean} booleanish\n * @property {boolean} overloadedBoolean\n * @property {boolean} number\n * @property {boolean} commaSeparated\n * @property {boolean} spaceSeparated\n * @property {boolean} commaOrSpaceSeparated\n * @property {boolean} mustUseProperty\n * @property {boolean} defined\n *\n * @typedef Schema\n * @property {Object.<string, Info>} property\n * @property {Object.<string, string>} normal\n * @property {string?} space\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {TransformOptions} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array.<Comment|Element|Text>} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array.<Comment|Element|Text>} children\n * @param {string?} title\n * @returns {string|undefined}\n *\n * @typedef {keyof IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef ReactMarkdownProps\n * @property {Element} node\n * @property {string} key\n * @property {ReactNode[]} children\n * @property {Position?} [sourcePosition] Passed when `options.rawSourcePos` is given\n * @property {number} [index] Passed when `options.includeElementIndex` is given\n * @property {number} [siblingCount] Passed when `options.includeElementIndex` is given\n *\n * @callback CodeComponent\n * @param {JSX.IntrinsicElements['code'] & ReactMarkdownProps & {inline?: boolean}} props\n * @returns {ReactNode}\n *\n * @callback HeadingComponent\n * @param {JSX.IntrinsicElements['h1'] & ReactMarkdownProps & {level: number}} props\n * @returns {ReactNode}\n *\n * @callback LiComponent\n * @param {JSX.IntrinsicElements['li'] & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} props\n * @returns {ReactNode}\n *\n * @callback OrderedListComponent\n * @param {JSX.IntrinsicElements['ol'] & ReactMarkdownProps & {depth: number, ordered: true}} props\n * @returns {ReactNode}\n *\n * @callback TableCellComponent\n * @param {JSX.IntrinsicElements['table'] & ReactMarkdownProps & {style?: Object.<string, unknown>, isHeader: boolean}} props\n * @returns {ReactNode}\n *\n * @callback TableRowComponent\n * @param {JSX.IntrinsicElements['tr'] & ReactMarkdownProps & {isHeader: boolean}} props\n * @returns {ReactNode}\n *\n * @callback UnorderedListComponent\n * @param {JSX.IntrinsicElements['ul'] & ReactMarkdownProps & {depth: number, ordered: false}} props\n * @returns {ReactNode}\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableCellComponent|ReactMarkdownNames} td\n * @property {TableCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {{[TagName in keyof IntrinsicElements]: TagName | ((props: IntrinsicElements[TagName] & ReactMarkdownProps) => ReactNode)}} NormalComponents\n * @typedef {Partial<Omit<NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components\n */\n\n/**\n * @typedef TransformOptions\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {string|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nfunction childrenToReact(context, node) {\n /** @type {Array.<ReactNode>} */\n const children = []\n let childIndex = -1\n /** @type {Comment|Doctype|Element|Raw|Text} */\n let child\n\n while (++childIndex < node.children.length) {\n child = node.children[childIndex]\n\n if (child.type === 'element') {\n children.push(toReact(context, child, childIndex, node))\n } else if (child.type === 'text') {\n // React does not permit whitespace text elements as children of table:\n // cf. https://github.com/remarkjs/react-markdown/issues/576\n if (\n node.type !== 'element' ||\n !tableElements.has(node.tagName) ||\n child.value !== '\\n'\n ) {\n children.push(child.value)\n }\n }\n // @ts-expect-error `raw` nodes are non-standard\n else if (child.type === 'raw' && !context.options.skipHtml) {\n // Default behavior is to show (encoded) HTML.\n // @ts-expect-error `raw` nodes are non-standard\n children.push(child.value)\n }\n }\n\n return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n const options = context.options\n const parentSchema = context.schema\n /** @type {ReactMarkdownNames} */\n // @ts-expect-error assume a known HTML/SVG element.\n const name = node.tagName\n /** @type {Object.<string, unknown>} */\n const properties = {}\n let schema = parentSchema\n /** @type {string} */\n let property\n\n if (parentSchema.space === 'html' && name === 'svg') {\n schema = svg\n context.schema = schema\n }\n\n /* istanbul ignore else - types say they’re optional. */\n if (node.properties) {\n for (property in node.properties) {\n /* istanbul ignore else - prototype polution. */\n if (own.call(node.properties, property)) {\n addProperty(properties, property, node.properties[property], context)\n }\n }\n }\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth++\n }\n\n const children = childrenToReact(context, node)\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth--\n }\n\n // Restore parent schema.\n context.schema = parentSchema\n\n // Nodes created by plugins do not have positional info, in which case we use\n // an object that matches the positon interface.\n const position = node.position || {\n start: {line: null, column: null, offset: null},\n end: {line: null, column: null, offset: null}\n }\n const component =\n options.components && own.call(options.components, name)\n ? options.components[name]\n : name\n const basic = typeof component === 'string' || component === React.Fragment\n\n if (!ReactIs.isValidElementType(component)) {\n throw new TypeError(\n `Component for name \\`${name}\\` not defined or is not renderable`\n )\n }\n\n properties.key = [\n name,\n position.start.line,\n position.start.column,\n index\n ].join('-')\n\n if (name === 'a' && options.linkTarget) {\n properties.target =\n typeof options.linkTarget === 'function'\n ? // @ts-expect-error assume `href` is a string\n options.linkTarget(properties.href, node.children, properties.title)\n : options.linkTarget\n }\n\n if (name === 'a' && options.transformLinkUri) {\n properties.href = options.transformLinkUri(\n // @ts-expect-error assume `href` is a string\n properties.href,\n node.children,\n properties.title\n )\n }\n\n if (\n !basic &&\n name === 'code' &&\n parent.type === 'element' &&\n parent.tagName !== 'pre'\n ) {\n properties.inline = true\n }\n\n if (\n !basic &&\n (name === 'h1' ||\n name === 'h2' ||\n name === 'h3' ||\n name === 'h4' ||\n name === 'h5' ||\n name === 'h6')\n ) {\n properties.level = parseInt(name.charAt(1), 10)\n }\n\n if (name === 'img' && options.transformImageUri) {\n properties.src = options.transformImageUri(\n // @ts-expect-error assume `src` is a string\n properties.src,\n properties.alt,\n properties.title\n )\n }\n\n if (!basic && name === 'li' && parent.type === 'element') {\n const input = getInputElement(node)\n properties.checked =\n input && input.properties ? Boolean(input.properties.checked) : null\n properties.index = getElementsBeforeCount(parent, node)\n properties.ordered = parent.tagName === 'ol'\n }\n\n if (!basic && (name === 'ol' || name === 'ul')) {\n properties.ordered = name === 'ol'\n properties.depth = context.listDepth\n }\n\n if (name === 'td' || name === 'th') {\n if (properties.align) {\n if (!properties.style) properties.style = {}\n // @ts-expect-error assume `style` is an object\n properties.style.textAlign = properties.align\n delete properties.align\n }\n\n if (!basic) {\n properties.isHeader = name === 'th'\n }\n }\n\n if (!basic && name === 'tr' && parent.type === 'element') {\n properties.isHeader = Boolean(parent.tagName === 'thead')\n }\n\n // If `sourcePos` is given, pass source information (line/column info from markdown source).\n if (options.sourcePos) {\n properties['data-sourcepos'] = flattenPosition(position)\n }\n\n if (!basic && options.rawSourcePos) {\n properties.sourcePosition = node.position\n }\n\n // If `includeElementIndex` is given, pass node index info to components.\n if (!basic && options.includeElementIndex) {\n properties.index = getElementsBeforeCount(parent, node)\n properties.siblingCount = getElementsBeforeCount(parent)\n }\n\n if (!basic) {\n properties.node = node\n }\n\n // Ensure no React warnings are emitted for void elements w/ children.\n return children.length > 0\n ? React.createElement(component, properties, children)\n : React.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n let index = -1\n\n while (++index < node.children.length) {\n const child = node.children[index]\n\n if (child.type === 'element' && child.tagName === 'input') {\n return child\n }\n }\n\n return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n let index = -1\n let count = 0\n\n while (++index < parent.children.length) {\n if (parent.children[index] === node) break\n if (parent.children[index].type === 'element') count++\n }\n\n return count\n}\n\n/**\n * @param {Object.<string, unknown>} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n /** @type {Info} */\n const info = find(ctx.schema, prop)\n let result = value\n\n // Ignore nullish and `NaN` values.\n // eslint-disable-next-line no-self-compare\n if (result === null || result === undefined || result !== result) {\n return\n }\n\n // Accept `array`.\n // Most props are space-separated.\n if (result && typeof result === 'object' && 'length' in result) {\n // type-coverage:ignore-next-line remove when typed.\n result = (info.commaSeparated ? commas : spaces).stringify(result)\n }\n\n if (info.property === 'style' && typeof result === 'string') {\n result = parseStyle(result)\n }\n\n /* istanbul ignore else - types say they’re optional. */\n if (info.space && info.property) {\n props[\n own.call(hastToReact, info.property)\n ? hastToReact[info.property]\n : info.property\n ] = result\n } else if (info.attribute) {\n props[info.attribute] = result\n }\n}\n\n/**\n * @param {string} value\n * @returns {Object.<string, string>}\n */\nfunction parseStyle(value) {\n /** @type {Object.<string, string>} */\n const result = {}\n\n try {\n style(value, iterator)\n } catch (/** @type {unknown} */ _) {\n // Silent.\n }\n\n return result\n\n /**\n * @param {string} name\n * @param {string} v\n */\n function iterator(name, v) {\n const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n result[k.replace(/-([a-z])/g, styleReplacer)] = v\n }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n return [\n pos.start.line,\n ':',\n pos.start.column,\n '-',\n pos.end.line,\n ':',\n pos.end.column\n ]\n .map((d) => String(d))\n .join('')\n}\n","'use strict'\n\nconst React = require('react')\nconst vfile = require('vfile')\nconst unified = require('unified')\nconst parse = require('remark-parse')\nconst remarkRehype = require('remark-rehype')\nconst PropTypes = require('prop-types')\nconst html = require('property-information/html')\nconst filter = require('./rehype-filter.js')\nconst uriTransformer = require('./uri-transformer.js')\nconst childrenToReact = require('./ast-to-react.js').hastChildrenToReact\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').RehypeFilterOptions} FilterOptions\n * @typedef {import('./ast-to-react.js').TransformOptions} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [plugins=[]] **deprecated**: use `remarkPlugins` instead\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n */\n\nmodule.exports = ReactMarkdown\n\nconst own = {}.hasOwnProperty\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/**\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\n/**\n * @type {Object.<string, Deprecation>}\n */\nconst deprecated = {\n renderers: {to: 'components', id: 'change-renderers-to-components'},\n astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n source: {to: 'children', id: 'change-source-to-children'},\n allowNode: {\n to: 'allowElement',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n allowedTypes: {\n to: 'allowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n disallowedTypes: {\n to: 'disallowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n includeNodeIndex: {\n to: 'includeElementIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n }\n}\n\n/**\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nfunction ReactMarkdown(options) {\n for (const key in deprecated) {\n if (own.call(deprecated, key) && own.call(options, key)) {\n /** @type {Deprecation} */\n const deprecation = deprecated[key]\n console.warn(\n `[react-markdown] Warning: please ${\n deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n )\n delete deprecated[key]\n }\n }\n\n const processor = unified()\n .use(parse)\n // TODO: deprecate `plugins` in v7.0.0.\n .use(options.remarkPlugins || options.plugins || [])\n .use(remarkRehype, {allowDangerousHtml: true})\n .use(options.rehypePlugins || [])\n .use(filter, options)\n\n /** @type {vfile} */\n let file\n\n if (typeof options.children === 'string') {\n file = vfile(options.children)\n } else {\n if (options.children !== undefined && options.children !== null) {\n console.warn(\n `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n )\n }\n\n file = vfile()\n }\n\n /** @type {Root} */\n // @ts-expect-error we’ll throw if it isn’t a root next.\n const hastNode = processor.runSync(processor.parse(file), file)\n\n if (hastNode.type !== 'root') {\n throw new TypeError('Expected a `root` node')\n }\n\n /** @type {ReactElement} */\n let result = React.createElement(\n React.Fragment,\n {},\n childrenToReact({options: options, schema: html, listDepth: 0}, hastNode)\n )\n\n if (options.className) {\n result = React.createElement('div', {className: options.className}, result)\n }\n\n return result\n}\n\nReactMarkdown.defaultProps = {transformLinkUri: uriTransformer}\n\nReactMarkdown.propTypes = {\n // Core options:\n children: PropTypes.string,\n // Layout options:\n className: PropTypes.string,\n // Filter options:\n allowElement: PropTypes.func,\n allowedElements: PropTypes.arrayOf(PropTypes.string),\n disallowedElements: PropTypes.arrayOf(PropTypes.string),\n unwrapDisallowed: PropTypes.bool,\n // Plugin options:\n // type-coverage:ignore-next-line\n remarkPlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))\n ])\n ),\n // type-coverage:ignore-next-line\n rehypePlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))\n ])\n ),\n // Transform options:\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n skipHtml: PropTypes.bool,\n includeElementIndex: PropTypes.bool,\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n components: PropTypes.object\n}\n\nReactMarkdown.uriTransformer = uriTransformer\n","const visit = require('unist-util-visit')\n\nmodule.exports = rehypeFilter\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef RehypeFilterOptions\n * @property {Array.<string>} [allowedElements]\n * @property {Array.<string>} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[RehypeFilterOptions]>}\n */\nfunction rehypeFilter(options) {\n if (options.allowedElements && options.disallowedElements) {\n throw new TypeError(\n 'Only one of `allowedElements` and `disallowedElements` should be defined'\n )\n }\n\n if (\n options.allowedElements ||\n options.disallowedElements ||\n options.allowElement\n ) {\n return (tree) => {\n const node = /** @type {Root} */ (tree)\n visit(node, 'element', onelement)\n }\n }\n\n /**\n * @param {Node} node_\n * @param {number|null|undefined} index\n * @param {Node|null|undefined} parent_\n * @returns {number|void}\n */\n function onelement(node_, index, parent_) {\n const node = /** @type {Element} */ (node_)\n const parent = /** @type {Element|Root} */ (parent_)\n /** @type {boolean|undefined} */\n let remove\n\n if (options.allowedElements) {\n remove = !options.allowedElements.includes(node.tagName)\n } else if (options.disallowedElements) {\n remove = options.disallowedElements.includes(node.tagName)\n }\n\n if (!remove && options.allowElement && typeof index === 'number') {\n remove = !options.allowElement(node, index, parent)\n }\n\n if (remove && typeof index === 'number') {\n if (options.unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n\n return undefined\n }\n}\n","const protocols = ['http', 'https', 'mailto', 'tel']\n\nmodule.exports = uriTransformer\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nfunction uriTransformer(uri) {\n const url = (uri || '').trim()\n const first = url.charAt(0)\n\n if (first === '#' || first === '/') {\n return url\n }\n\n const colon = url.indexOf(':')\n if (colon === -1) {\n return url\n }\n\n let index = -1\n\n while (++index < protocols.length) {\n const protocol = protocols[index]\n\n if (\n colon === protocol.length &&\n url.slice(0, protocol.length).toLowerCase() === protocol\n ) {\n return url\n }\n }\n\n index = url.indexOf('?')\n if (index !== -1 && colon > index) {\n return url\n }\n\n index = url.indexOf('#')\n if (index !== -1 && colon > index) {\n return url\n }\n\n // eslint-disable-next-line no-script-url\n return 'javascript:void(0)'\n}\n","'use strict'\n\nvar hastUtilRaw = require('hast-util-raw')\n\nmodule.exports = rehypeRaw\n\nfunction rehypeRaw(options) {\n return transform\n function transform(tree, file) {\n return hastUtilRaw(tree, file, options)\n }\n}\n","'use strict'\n\nvar clean = require('hast-util-sanitize')\n\nmodule.exports = sanitize\n\nfunction sanitize(options) {\n return transformer\n function transformer(tree) {\n return clean(tree, options)\n }\n}\n","'use strict'\n\nvar syntax = require('micromark-extension-gfm')\nvar fromMarkdown = require('mdast-util-gfm/from-markdown')\nvar toMarkdown = require('mdast-util-gfm/to-markdown')\n\nvar warningIssued\n\nmodule.exports = gfm\n\nfunction gfm(options) {\n var data = this.data()\n\n /* istanbul ignore next - old remark. */\n if (\n !warningIssued &&\n ((this.Parser &&\n this.Parser.prototype &&\n this.Parser.prototype.blockTokenizers) ||\n (this.Compiler &&\n this.Compiler.prototype &&\n this.Compiler.prototype.visitors))\n ) {\n warningIssued = true\n console.warn(\n '[remark-gfm] Warning: please upgrade to remark 13 to use this plugin'\n )\n }\n\n add('micromarkExtensions', syntax(options))\n add('fromMarkdownExtensions', fromMarkdown)\n add('toMarkdownExtensions', toMarkdown(options))\n\n function add(field, value) {\n /* istanbul ignore if - other extensions. */\n if (data[field]) data[field].push(value)\n else data[field] = [value]\n }\n}\n","'use strict'\n\nmodule.exports = parse\n\nvar fromMarkdown = require('mdast-util-from-markdown')\n\nfunction parse(options) {\n var self = this\n\n this.Parser = parse\n\n function parse(doc) {\n return fromMarkdown(\n doc,\n Object.assign({}, self.data('settings'), options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n )\n }\n}\n","'use strict'\n\nvar mdast2hast = require('mdast-util-to-hast')\n\nmodule.exports = remark2rehype\n\n// Attacher.\n// If a destination is given, runs the destination with the new hast tree\n// (bridge mode).\n// Without destination, returns the tree: further plugins run on that tree\n// (mutate mode).\nfunction remark2rehype(destination, options) {\n if (destination && !destination.process) {\n options = destination\n destination = null\n }\n\n return destination ? bridge(destination, options) : mutate(options)\n}\n\n// Bridge mode.\n// Runs the destination with the new hast tree.\nfunction bridge(destination, options) {\n return transformer\n\n function transformer(node, file, next) {\n destination.run(mdast2hast(node, options), file, done)\n\n function done(error) {\n next(error)\n }\n }\n}\n\n// Mutate-mode.\n// Further transformers run on the hast tree.\nfunction mutate(options) {\n return transformer\n\n function transformer(node) {\n return mdast2hast(node, options)\n }\n}\n","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n // cover common, quick use cases\n if (num === 1) return str;\n if (num === 2) return str + str;\n\n var max = str.length * num;\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar empty = ''\nvar space = ' '\nvar whiteSpace = /[ \\t\\n\\r\\f]+/g\n\nfunction parse(value) {\n var input = String(value || empty).trim()\n return input === empty ? [] : input.split(whiteSpace)\n}\n\nfunction stringify(values) {\n return values.join(space).trim()\n}\n","'use strict';\nmodule.exports = require('./spdx.json');\n","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param {String} style - The inline style.\n * @param {Function} [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n var output = null;\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n var declaration;\n var declarations = parse(style);\n var hasIterator = typeof iterator === 'function';\n var property;\n var value;\n\n for (var i = 0, len = declarations.length; i < len; i++) {\n declaration = declarations[i];\n property = declaration.property;\n value = declaration.value;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n output || (output = {});\n output[property] = value;\n }\n }\n\n return output;\n}\n\nmodule.exports = StyleToObject;\n","'use strict'\n\nvar wrap = require('./wrap.js')\n\nmodule.exports = trough\n\ntrough.wrap = wrap\n\nvar slice = [].slice\n\n// Create new middleware.\nfunction trough() {\n var fns = []\n var middleware = {}\n\n middleware.run = run\n middleware.use = use\n\n return middleware\n\n // Run `fns`. Last argument must be a completion handler.\n function run() {\n var index = -1\n var input = slice.call(arguments, 0, -1)\n var done = arguments[arguments.length - 1]\n\n if (typeof done !== 'function') {\n throw new Error('Expected function as last argument, not ' + done)\n }\n\n next.apply(null, [null].concat(input))\n\n // Run the next `fn`, if any.\n function next(err) {\n var fn = fns[++index]\n var params = slice.call(arguments, 0)\n var values = params.slice(1)\n var length = input.length\n var pos = -1\n\n if (err) {\n done(err)\n return\n }\n\n // Copy non-nully input into values.\n while (++pos < length) {\n if (values[pos] === null || values[pos] === undefined) {\n values[pos] = input[pos]\n }\n }\n\n input = values\n\n // Next or done.\n if (fn) {\n wrap(fn, next).apply(null, input)\n } else {\n done.apply(null, [null].concat(input))\n }\n }\n }\n\n // Add `fn` to the list.\n function use(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Expected `fn` to be a function, not ' + fn)\n }\n\n fns.push(fn)\n\n return middleware\n }\n}\n","'use strict'\n\nvar slice = [].slice\n\nmodule.exports = wrap\n\n// Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\nfunction wrap(fn, callback) {\n var invoked\n\n return wrapped\n\n function wrapped() {\n var params = slice.call(arguments, 0)\n var callback = fn.length > params.length\n var result\n\n if (callback) {\n params.push(done)\n }\n\n try {\n result = fn.apply(null, params)\n } catch (error) {\n // Well, this is quite the pickle.\n // `fn` received a callback and invoked it (thus continuing the pipeline),\n // but later also threw an error.\n // We’re not about to restart the pipeline again, so the only thing left\n // to do is to throw the thing instead.\n if (callback && invoked) {\n throw error\n }\n\n return done(error)\n }\n\n if (!callback) {\n if (result && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n // Invoke `next`, only once.\n function done() {\n if (!invoked) {\n invoked = true\n\n callback.apply(null, arguments)\n }\n }\n\n // Invoke `done` with one value.\n // Tracks if an error is passed, too.\n function then(value) {\n done(null, value)\n }\n}\n","'use strict'\n\nvar bail = require('bail')\nvar buffer = require('is-buffer')\nvar extend = require('extend')\nvar plain = require('is-plain-obj')\nvar trough = require('trough')\nvar vfile = require('vfile')\n\n// Expose a frozen processor.\nmodule.exports = unified().freeze()\n\nvar slice = [].slice\nvar own = {}.hasOwnProperty\n\n// Process pipeline.\nvar pipeline = trough()\n .use(pipelineParse)\n .use(pipelineRun)\n .use(pipelineStringify)\n\nfunction pipelineParse(p, ctx) {\n ctx.tree = p.parse(ctx.file)\n}\n\nfunction pipelineRun(p, ctx, next) {\n p.run(ctx.tree, ctx.file, done)\n\n function done(error, tree, file) {\n if (error) {\n next(error)\n } else {\n ctx.tree = tree\n ctx.file = file\n next()\n }\n }\n}\n\nfunction pipelineStringify(p, ctx) {\n var result = p.stringify(ctx.tree, ctx.file)\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (typeof result === 'string' || buffer(result)) {\n if ('value' in ctx.file) {\n ctx.file.value = result\n }\n\n ctx.file.contents = result\n } else {\n ctx.file.result = result\n }\n}\n\n// Function to create the first processor.\nfunction unified() {\n var attachers = []\n var transformers = trough()\n var namespace = {}\n var freezeIndex = -1\n var frozen\n\n // Data management.\n processor.data = data\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n processor.run = run\n processor.runSync = runSync\n processor.process = process\n processor.processSync = processSync\n\n // Expose.\n return processor\n\n // Create a new processor based on the processor in the current scope.\n function processor() {\n var destination = unified()\n var index = -1\n\n while (++index < attachers.length) {\n destination.use.apply(null, attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n // Freeze: used to signal a processor that has finished configuration.\n //\n // For example, take unified itself: it’s frozen.\n // Plugins should not be added to it.\n // Rather, it should be extended, by invoking it, before modifying it.\n //\n // In essence, always invoke this when exporting a processor.\n function freeze() {\n var values\n var transformer\n\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n values = attachers[freezeIndex]\n\n if (values[1] === false) {\n continue\n }\n\n if (values[1] === true) {\n values[1] = undefined\n }\n\n transformer = values[0].apply(processor, values.slice(1))\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Infinity\n\n return processor\n }\n\n // Data management.\n // Getter / setter for processor-specific informtion.\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n namespace[key] = value\n return processor\n }\n\n // Get `key`.\n return (own.call(namespace, key) && namespace[key]) || null\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen)\n namespace = key\n return processor\n }\n\n // Get space.\n return namespace\n }\n\n // Plugin management.\n //\n // Pass it:\n // * an attacher and options,\n // * a preset,\n // * a list of presets, attachers, and arguments (list of attachers and\n // options).\n function use(value) {\n var settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin.apply(null, arguments)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = extend(namespace.settings || {}, settings)\n }\n\n return processor\n\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = extend(settings || {}, result.settings)\n }\n }\n\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addPlugin.apply(null, value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n }\n\n function addList(plugins) {\n var index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (typeof plugins === 'object' && 'length' in plugins) {\n while (++index < plugins.length) {\n add(plugins[index])\n }\n } else {\n throw new Error('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n function addPlugin(plugin, value) {\n var entry = find(plugin)\n\n if (entry) {\n if (plain(entry[1]) && plain(value)) {\n value = extend(true, entry[1], value)\n }\n\n entry[1] = value\n } else {\n attachers.push(slice.call(arguments))\n }\n }\n }\n\n function find(plugin) {\n var index = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n return attachers[index]\n }\n }\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor.\n function parse(doc) {\n var file = vfile(doc)\n var Parser\n\n freeze()\n Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n return new Parser(String(file), file).parse()\n }\n\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), async.\n function run(node, file, cb) {\n assertNode(node)\n freeze()\n\n if (!cb && typeof file === 'function') {\n cb = file\n file = null\n }\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n transformers.run(node, vfile(file), done)\n\n function done(error, tree, file) {\n tree = tree || node\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(tree)\n } else {\n cb(null, tree, file)\n }\n }\n }\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), sync.\n function runSync(node, file) {\n var result\n var complete\n\n run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n return result\n\n function done(error, tree) {\n complete = true\n result = tree\n bail(error)\n }\n }\n\n // Stringify a unist node representation of a file (in string or vfile\n // representation) into a string using the `Compiler` on the processor.\n function stringify(node, doc) {\n var file = vfile(doc)\n var Compiler\n\n freeze()\n Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n return new Compiler(node, file).compile()\n }\n\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor, then run transforms on that node, and\n // compile the resulting node using the `Compiler` on the processor, and\n // store that result on the vfile.\n function process(doc, cb) {\n freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n var file = vfile(doc)\n\n pipeline.run(processor, {file: file}, done)\n\n function done(error) {\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n cb(null, file)\n }\n }\n }\n }\n\n // Process the given document (in string or vfile representation), sync.\n function processSync(doc) {\n var file\n var complete\n\n freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n file = vfile(doc)\n\n process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n function done(error) {\n complete = true\n bail(error)\n }\n }\n}\n\n// Check if `value` is a constructor.\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\n value.prototype &&\n // A function with keys in its prototype is probably a constructor.\n // Classes’ prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n (keys(value.prototype) || name in value.prototype)\n )\n}\n\n// Check if `value` is an object with keys.\nfunction keys(value) {\n var key\n for (key in value) {\n return true\n }\n\n return false\n}\n\n// Assert a parser is available.\nfunction assertParser(name, Parser) {\n if (typeof Parser !== 'function') {\n throw new Error('Cannot `' + name + '` without `Parser`')\n }\n}\n\n// Assert a compiler is available.\nfunction assertCompiler(name, Compiler) {\n if (typeof Compiler !== 'function') {\n throw new Error('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n// Assert the processor is not frozen.\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot invoke `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n// Assert `node` is a unist node.\nfunction assertNode(node) {\n if (!node || typeof node.type !== 'string') {\n throw new Error('Expected node, got `' + node + '`')\n }\n}\n\n// Assert that `complete` is `true`.\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n","'use strict'\n\nmodule.exports = u\n\nfunction u(type, props, value) {\n var node\n\n if (\n (value === null || value === undefined) &&\n (typeof props !== 'object' || Array.isArray(props))\n ) {\n value = props\n props = {}\n }\n\n node = Object.assign({type: String(type)}, props)\n\n if (Array.isArray(value)) {\n node.children = value\n } else if (value !== null && value !== undefined) {\n node.value = String(value)\n }\n\n return node\n}\n","'use strict'\n\nmodule.exports = generated\n\nfunction generated(node) {\n return (\n !node ||\n !node.position ||\n !node.position.start ||\n !node.position.start.line ||\n !node.position.start.column ||\n !node.position.end ||\n !node.position.end.line ||\n !node.position.end.column\n )\n}\n","'use strict'\n\nmodule.exports = convert\n\nfunction convert(test) {\n if (test == null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return 'length' in test ? anyFactory(test) : allFactory(test)\n }\n\n if (typeof test === 'function') {\n return test\n }\n\n throw new Error('Expected function, string, or object as test')\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction allFactory(test) {\n return all\n\n function all(node) {\n var key\n\n for (key in test) {\n if (node[key] !== test[key]) return false\n }\n\n return true\n }\n}\n\nfunction anyFactory(tests) {\n var checks = []\n var index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return any\n\n function any() {\n var index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, arguments)) {\n return true\n }\n }\n\n return false\n }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n return type\n\n function type(node) {\n return Boolean(node && node.type === test)\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true\n}\n","'use strict'\n\nvar start = factory('start')\nvar end = factory('end')\n\nmodule.exports = position\n\nposition.start = start\nposition.end = end\n\nfunction position(node) {\n return {start: start(node), end: end(node)}\n}\n\nfunction factory(type) {\n point.displayName = type\n\n return point\n\n function point(node) {\n var point = (node && node.position && node.position[type]) || {}\n\n return {\n line: point.line || null,\n column: point.column || null,\n offset: isNaN(point.offset) ? null : point.offset\n }\n }\n}\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = stringify\n\nfunction stringify(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if (own.call(value, 'position') || own.call(value, 'type')) {\n return position(value.position)\n }\n\n // Position.\n if (own.call(value, 'start') || own.call(value, 'end')) {\n return position(value)\n }\n\n // Point.\n if (own.call(value, 'line') || own.call(value, 'column')) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\nfunction point(point) {\n if (!point || typeof point !== 'object') {\n point = {}\n }\n\n return index(point.line) + ':' + index(point.column)\n}\n\nfunction position(pos) {\n if (!pos || typeof pos !== 'object') {\n pos = {}\n }\n\n return point(pos.start) + '-' + point(pos.end)\n}\n\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","module.exports = identity\nfunction identity(d) {\n return d\n}\n","'use strict'\n\nmodule.exports = visitParents\n\nvar convert = require('unist-util-is/convert')\nvar color = require('./color')\n\nvar CONTINUE = true\nvar SKIP = 'skip'\nvar EXIT = false\n\nvisitParents.CONTINUE = CONTINUE\nvisitParents.SKIP = SKIP\nvisitParents.EXIT = EXIT\n\nfunction visitParents(tree, test, visitor, reverse) {\n var step\n var is\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n is = convert(test)\n step = reverse ? -1 : 1\n\n factory(tree, null, [])()\n\n function factory(node, index, parents) {\n var value = typeof node === 'object' && node !== null ? node : {}\n var name\n\n if (typeof value.type === 'string') {\n name =\n typeof value.tagName === 'string'\n ? value.tagName\n : typeof value.name === 'string'\n ? value.name\n : undefined\n\n visit.displayName =\n 'node (' + color(value.type + (name ? '<' + name + '>' : '')) + ')'\n }\n\n return visit\n\n function visit() {\n var grandparents = parents.concat(node)\n var result = []\n var subresult\n var offset\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if (node.children && result[0] !== SKIP) {\n offset = (reverse ? node.children.length : -1) + step\n\n while (offset > -1 && offset < node.children.length) {\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n}\n\nfunction toResult(value) {\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","'use strict'\n\nmodule.exports = visit\n\nvar visitParents = require('unist-util-visit-parents')\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1]\n var index = parent ? parent.children.indexOf(node) : null\n return visitor(node, index, parent)\n }\n}\n","'use strict'\n\nmodule.exports = factory\n\nfunction factory(file) {\n var value = String(file)\n var indices = []\n var search = /\\r?\\n|\\r/g\n\n while (search.exec(value)) {\n indices.push(search.lastIndex)\n }\n\n indices.push(value.length + 1)\n\n return {\n toPoint: offsetToPoint,\n toPosition: offsetToPoint,\n toOffset: pointToOffset\n }\n\n // Get the line and column-based `point` for `offset` in the bound indices.\n function offsetToPoint(offset) {\n var index = -1\n\n if (offset > -1 && offset < indices[indices.length - 1]) {\n while (++index < indices.length) {\n if (indices[index] > offset) {\n return {\n line: index + 1,\n column: offset - (indices[index - 1] || 0) + 1,\n offset: offset\n }\n }\n }\n }\n\n return {}\n }\n\n // Get the `offset` for a line and column-based `point` in the bound\n // indices.\n function pointToOffset(point) {\n var line = point && point.line\n var column = point && point.column\n var offset\n\n if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {\n offset = (indices[line - 2] || 0) + column - 1 || 0\n }\n\n return offset > -1 && offset < indices[indices.length - 1] ? offset : -1\n }\n}\n","'use strict'\n\nvar stringify = require('unist-util-stringify-position')\n\nmodule.exports = VMessage\n\n// Inherit from `Error#`.\nfunction VMessagePrototype() {}\nVMessagePrototype.prototype = Error.prototype\nVMessage.prototype = new VMessagePrototype()\n\n// Message properties.\nvar proto = VMessage.prototype\n\nproto.file = ''\nproto.name = ''\nproto.reason = ''\nproto.message = ''\nproto.stack = ''\nproto.fatal = null\nproto.column = null\nproto.line = null\n\n// Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\nfunction VMessage(reason, position, origin) {\n var parts\n var range\n var location\n\n if (typeof position === 'string') {\n origin = position\n position = null\n }\n\n parts = parseOrigin(origin)\n range = stringify(position) || '1:1'\n\n location = {\n start: {line: null, column: null},\n end: {line: null, column: null}\n }\n\n // Node.\n if (position && position.position) {\n position = position.position\n }\n\n if (position) {\n // Position.\n if (position.start) {\n location = position\n position = position.start\n } else {\n // Point.\n location.start = position\n }\n }\n\n if (reason.stack) {\n this.stack = reason.stack\n reason = reason.message\n }\n\n this.message = reason\n this.name = range\n this.reason = reason\n this.line = position ? position.line : null\n this.column = position ? position.column : null\n this.location = location\n this.source = parts[0]\n this.ruleId = parts[1]\n}\n\nfunction parseOrigin(origin) {\n var result = [null, null]\n var index\n\n if (typeof origin === 'string') {\n index = origin.indexOf(':')\n\n if (index === -1) {\n result[1] = origin\n } else {\n result[0] = origin.slice(0, index)\n result[1] = origin.slice(index + 1)\n }\n }\n\n return result\n}\n","'use strict'\n\nmodule.exports = require('./lib')\n","'use strict'\n\nvar p = require('./minpath')\nvar proc = require('./minproc')\nvar buffer = require('is-buffer')\n\nmodule.exports = VFile\n\nvar own = {}.hasOwnProperty\n\n// Order of setting (least specific to most), we need this because otherwise\n// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n// stem can be set.\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nVFile.prototype.toString = toString\n\n// Access full path (`~/index.min.js`).\nObject.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath})\n\n// Access parent path (`~`).\nObject.defineProperty(VFile.prototype, 'dirname', {\n get: getDirname,\n set: setDirname\n})\n\n// Access basename (`index.min.js`).\nObject.defineProperty(VFile.prototype, 'basename', {\n get: getBasename,\n set: setBasename\n})\n\n// Access extname (`.js`).\nObject.defineProperty(VFile.prototype, 'extname', {\n get: getExtname,\n set: setExtname\n})\n\n// Access stem (`index.min`).\nObject.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem})\n\n// Construct a new file.\nfunction VFile(options) {\n var prop\n var index\n\n if (!options) {\n options = {}\n } else if (typeof options === 'string' || buffer(options)) {\n options = {contents: options}\n } else if ('message' in options && 'messages' in options) {\n return options\n }\n\n if (!(this instanceof VFile)) {\n return new VFile(options)\n }\n\n this.data = {}\n this.messages = []\n this.history = []\n this.cwd = proc.cwd()\n\n // Set path related properties in the correct order.\n index = -1\n\n while (++index < order.length) {\n prop = order[index]\n\n if (own.call(options, prop)) {\n this[prop] = options[prop]\n }\n }\n\n // Set non-path related properties.\n for (prop in options) {\n if (order.indexOf(prop) < 0) {\n this[prop] = options[prop]\n }\n }\n}\n\nfunction getPath() {\n return this.history[this.history.length - 1]\n}\n\nfunction setPath(path) {\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n}\n\nfunction getDirname() {\n return typeof this.path === 'string' ? p.dirname(this.path) : undefined\n}\n\nfunction setDirname(dirname) {\n assertPath(this.path, 'dirname')\n this.path = p.join(dirname || '', this.basename)\n}\n\nfunction getBasename() {\n return typeof this.path === 'string' ? p.basename(this.path) : undefined\n}\n\nfunction setBasename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = p.join(this.dirname || '', basename)\n}\n\nfunction getExtname() {\n return typeof this.path === 'string' ? p.extname(this.path) : undefined\n}\n\nfunction setExtname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.path, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.indexOf('.', 1) > -1) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = p.join(this.dirname, this.stem + (extname || ''))\n}\n\nfunction getStem() {\n return typeof this.path === 'string'\n ? p.basename(this.path, this.extname)\n : undefined\n}\n\nfunction setStem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = p.join(this.dirname || '', stem + (this.extname || ''))\n}\n\n// Get the value of the file.\nfunction toString(encoding) {\n return (this.contents || '').toString(encoding)\n}\n\n// Assert that `part` is not a path (i.e., does not contain `p.sep`).\nfunction assertPart(part, name) {\n if (part && part.indexOf(p.sep) > -1) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + p.sep + '`'\n )\n }\n}\n\n// Assert that `part` is not empty.\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n// Assert `path` exists.\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n","'use strict'\n\nvar VMessage = require('vfile-message')\nvar VFile = require('./core.js')\n\nmodule.exports = VFile\n\nVFile.prototype.message = message\nVFile.prototype.info = info\nVFile.prototype.fail = fail\n\n// Create a message with `reason` at `position`.\n// When an error is passed in as `reason`, copies the stack.\nfunction message(reason, position, origin) {\n var message = new VMessage(reason, position, origin)\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n}\n\n// Fail: creates a vmessage, associates it with the file, and throws it.\nfunction fail() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = true\n\n throw message\n}\n\n// Info: creates a vmessage, associates it with the file, and marks the fatality\n// as null.\nfunction info() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = null\n\n return message\n}\n","'use strict'\n\n// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexports.basename = basename\nexports.dirname = dirname\nexports.extname = extname\nexports.join = join\nexports.sep = '/'\n\nfunction basename(path, ext) {\n var start = 0\n var end = -1\n var index\n var firstNonSlashEnd\n var seenNonSlash\n var extIndex\n\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n index = path.length\n\n if (ext === undefined || !ext.length || ext.length > path.length) {\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n firstNonSlashEnd = -1\n extIndex = ext.length - 1\n\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\nfunction dirname(path) {\n var end\n var unmatchedSlash\n var index\n\n assertPath(path)\n\n if (!path.length) {\n return '.'\n }\n\n end = -1\n index = path.length\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.charCodeAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\nfunction extname(path) {\n var startDot = -1\n var startPart = 0\n var end = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n var preDotState = 0\n var unmatchedSlash\n var code\n var index\n\n assertPath(path)\n\n index = path.length\n\n while (index--) {\n code = path.charCodeAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\nfunction join() {\n var index = -1\n var joined\n\n while (++index < arguments.length) {\n assertPath(arguments[index])\n\n if (arguments[index]) {\n joined =\n joined === undefined\n ? arguments[index]\n : joined + '/' + arguments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n var absolute\n var value\n\n assertPath(path)\n\n absolute = path.charCodeAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n value = normalizeString(path, !absolute)\n\n if (!value.length && !absolute) {\n value = '.'\n }\n\n if (value.length && path.charCodeAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n// Resolve `.` and `..` elements in a path with directory names.\nfunction normalizeString(path, allowAboveRoot) {\n var result = ''\n var lastSegmentLength = 0\n var lastSlash = -1\n var dots = 0\n var index = -1\n var code\n var lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.charCodeAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n result.charCodeAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n /* istanbul ignore else - No clue how to cover it. */\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n","'use strict'\n\n// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexports.cwd = cwd\n\nfunction cwd() {\n return '/'\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","'use strict'\n\nmodule.exports = factory\n\nvar noop = Function.prototype\nvar own = {}.hasOwnProperty\n\n// Handle values based on a property.\nfunction factory(key, options) {\n var settings = options || {}\n\n function one(value) {\n var fn = one.invalid\n var handlers = one.handlers\n\n if (value && own.call(value, key)) {\n fn = own.call(handlers, value[key]) ? handlers[value[key]] : one.unknown\n }\n\n return (fn || noop).apply(this, arguments)\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n return one\n}\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _get.apply(this, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","/**\n * @typedef Emoticon\n * Info on an emoticon.\n * @property {string} name\n * Name of an emoticon (preferred name from `wooorm/gemoji`).\n * @property {string} emoji\n * Corresponding emoji.\n * @property {Array<string>} tags\n * Associated tags (from `wooorm/gemoji`).\n * @property {string} description\n * Associated description (from `wooorm/gemoji`).\n * @property {Array<string>} emoticons\n * ASCII emoticons.\n */\n\n/**\n * List of emoticons.\n *\n * @type {Array<Emoticon>}\n */\nexport const emoticon = [\n {\n name: 'angry',\n emoji: '😠',\n tags: ['mad', 'annoyed'],\n description: 'angry face',\n emoticons: ['>:(', '>:[', '>:-(', '>:-[', '>=(', '>=[', '>=-(', '>=-[']\n },\n {\n name: 'blush',\n emoji: '😊',\n tags: ['proud'],\n description: 'smiling face with smiling eyes',\n emoticons: [\n ':\")',\n ':\"]',\n ':\"D',\n ':-\")',\n ':-\"]',\n ':-\"D',\n '=\")',\n '=\"]',\n '=\"D',\n '=-\")',\n '=-\"]',\n '=-\"D'\n ]\n },\n {\n name: 'broken_heart',\n emoji: '💔',\n tags: [],\n description: 'broken heart',\n emoticons: ['<\\\\3', '</3']\n },\n {\n name: 'confused',\n emoji: '😕',\n tags: [],\n description: 'confused face',\n emoticons: [':/', ':\\\\', ':-/', ':-\\\\', '=/', '=\\\\', '=-/', '=-\\\\']\n },\n {\n name: 'cry',\n emoji: '😢',\n tags: ['sad', 'tear'],\n description: 'crying face',\n emoticons: [\n ':,(',\n ':,[',\n ':,|',\n ':,-(',\n ':,-[',\n ':,-|',\n \":'(\",\n \":'[\",\n \":'|\",\n \":'-(\",\n \":'-[\",\n \":'-|\",\n '=,(',\n '=,[',\n '=,|',\n '=,-(',\n '=,-[',\n '=,-|',\n \"='(\",\n \"='[\",\n \"='|\",\n \"='-(\",\n \"='-[\",\n \"='-|\"\n ]\n },\n {\n name: 'frowning',\n emoji: '😦',\n tags: [],\n description: 'frowning face with open mouth',\n emoticons: [':(', ':[', ':-(', ':-[', '=(', '=[', '=-(', '=-[']\n },\n {\n name: 'heart',\n emoji: '❤️',\n tags: ['love'],\n description: 'red heart',\n emoticons: ['<3']\n },\n {\n name: 'imp',\n emoji: '👿',\n tags: ['angry', 'devil', 'evil', 'horns'],\n description: 'angry face with horns',\n emoticons: [']:(', ']:[', ']:-(', ']:-[', ']=(', ']=[', ']=-(', ']=-[']\n },\n {\n name: 'innocent',\n emoji: '😇',\n tags: ['angel'],\n description: 'smiling face with halo',\n emoticons: [\n 'o:)',\n 'o:]',\n 'o:D',\n 'o:-)',\n 'o:-]',\n 'o:-D',\n 'o=)',\n 'o=]',\n 'o=D',\n 'o=-)',\n 'o=-]',\n 'o=-D',\n 'O:)',\n 'O:]',\n 'O:D',\n 'O:-)',\n 'O:-]',\n 'O:-D',\n 'O=)',\n 'O=]',\n 'O=D',\n 'O=-)',\n 'O=-]',\n 'O=-D',\n '0:)',\n '0:]',\n '0:D',\n '0:-)',\n '0:-]',\n '0:-D',\n '0=)',\n '0=]',\n '0=D',\n '0=-)',\n '0=-]',\n '0=-D'\n ]\n },\n {\n name: 'joy',\n emoji: '😂',\n tags: ['tears'],\n description: 'face with tears of joy',\n emoticons: [\n ':,)',\n ':,]',\n ':,D',\n ':,-)',\n ':,-]',\n ':,-D',\n \":')\",\n \":']\",\n \":'D\",\n \":'-)\",\n \":'-]\",\n \":'-D\",\n '=,)',\n '=,]',\n '=,D',\n '=,-)',\n '=,-]',\n '=,-D',\n \"=')\",\n \"=']\",\n \"='D\",\n \"='-)\",\n \"='-]\",\n \"='-D\"\n ]\n },\n {\n name: 'kissing',\n emoji: '😗',\n tags: [],\n description: 'kissing face',\n emoticons: [':*', ':-*', '=*', '=-*']\n },\n {\n name: 'laughing',\n emoji: '😆',\n tags: ['happy', 'haha'],\n description: 'grinning squinting face',\n emoticons: [\n 'x)',\n 'x]',\n 'xD',\n 'x-)',\n 'x-]',\n 'x-D',\n 'X)',\n 'X]',\n 'X-)',\n 'X-]',\n 'X-D'\n ]\n },\n {\n name: 'man',\n emoji: '👨',\n tags: ['mustache', 'father', 'dad'],\n description: 'man',\n emoticons: [':3', ':-3', '=3', '=-3', ';3', ';-3', 'x3', 'x-3', 'X3', 'X-3']\n },\n {\n name: 'neutral_face',\n emoji: '😐',\n tags: ['meh'],\n description: 'neutral face',\n emoticons: [':|', ':-|', '=|', '=-|']\n },\n {\n name: 'no_mouth',\n emoji: '😶',\n tags: ['mute', 'silence'],\n description: 'face without mouth',\n emoticons: [':-']\n },\n {\n name: 'open_mouth',\n emoji: '😮',\n tags: ['surprise', 'impressed', 'wow'],\n description: 'face with open mouth',\n emoticons: [\n ':o',\n ':O',\n ':0',\n ':-o',\n ':-O',\n ':-0',\n '=o',\n '=O',\n '=0',\n '=-o',\n '=-O',\n '=-0'\n ]\n },\n {\n name: 'rage',\n emoji: '😡',\n tags: ['angry'],\n description: 'pouting face',\n emoticons: [':@', ':-@', '=@', '=-@']\n },\n {\n name: 'smile',\n emoji: '😄',\n tags: ['happy', 'joy', 'laugh', 'pleased'],\n description: 'grinning face with smiling eyes',\n emoticons: [':D', ':-D', '=D', '=-D']\n },\n {\n name: 'smiley',\n emoji: '😃',\n tags: ['happy', 'joy', 'haha'],\n description: 'grinning face with big eyes',\n emoticons: [':)', ':]', ':-)', ':-]', '=)', '=]', '=-)', '=-]']\n },\n {\n name: 'smiling_imp',\n emoji: '😈',\n tags: ['devil', 'evil', 'horns'],\n description: 'smiling face with horns',\n emoticons: [\n ']:)',\n ']:]',\n ']:D',\n ']:-)',\n ']:-]',\n ']:-D',\n ']=)',\n ']=]',\n ']=D',\n ']=-)',\n ']=-]',\n ']=-D'\n ]\n },\n {\n name: 'sob',\n emoji: '😭',\n tags: ['sad', 'cry', 'bawling'],\n description: 'loudly crying face',\n emoticons: [\n \":,'(\",\n \":,'[\",\n \":,'-(\",\n \":,'-[\",\n \":',(\",\n \":',[\",\n \":',-(\",\n \":',-[\",\n \"=,'(\",\n \"=,'[\",\n \"=,'-(\",\n \"=,'-[\",\n \"=',(\",\n \"=',[\",\n \"=',-(\",\n \"=',-[\"\n ]\n },\n {\n name: 'stuck_out_tongue',\n emoji: '😛',\n tags: [],\n description: 'face with tongue',\n emoticons: [\n ':p',\n ':P',\n ':d',\n ':-p',\n ':-P',\n ':-d',\n '=p',\n '=P',\n '=d',\n '=-p',\n '=-P',\n '=-d'\n ]\n },\n {\n name: 'stuck_out_tongue_closed_eyes',\n emoji: '😝',\n tags: ['prank'],\n description: 'squinting face with tongue',\n emoticons: ['xP', 'x-p', 'x-P', 'x-d', 'Xp', 'Xd', 'X-p', 'X-P', 'X-d']\n },\n {\n name: 'stuck_out_tongue_winking_eye',\n emoji: '😜',\n tags: ['prank', 'silly'],\n description: 'winking face with tongue',\n emoticons: [';p', ';P', ';d', ';-p', ';-P', ';-d']\n },\n {\n name: 'sunglasses',\n emoji: '😎',\n tags: ['cool'],\n description: 'smiling face with sunglasses',\n emoticons: [\n '8)',\n '8]',\n '8D',\n '8-)',\n '8-]',\n '8-D',\n 'B)',\n 'B]',\n 'B-)',\n 'B-]',\n 'B-D'\n ]\n },\n {\n name: 'sweat',\n emoji: '😓',\n tags: [],\n description: 'downcast face with sweat',\n emoticons: [\n ',:(',\n ',:[',\n ',:-(',\n ',:-[',\n ',=(',\n ',=[',\n ',=-(',\n ',=-[',\n \"':(\",\n \"':[\",\n \"':-(\",\n \"':-[\",\n \"'=(\",\n \"'=[\",\n \"'=-(\",\n \"'=-[\"\n ]\n },\n {\n name: 'sweat_smile',\n emoji: '😅',\n tags: ['hot'],\n description: 'grinning face with sweat',\n emoticons: [\n ',:)',\n ',:]',\n ',:D',\n ',:-)',\n ',:-]',\n ',:-D',\n ',=)',\n ',=]',\n ',=D',\n ',=-)',\n ',=-]',\n ',=-D',\n \"':)\",\n \"':]\",\n \"':D\",\n \"':-)\",\n \"':-]\",\n \"':-D\",\n \"'=)\",\n \"'=]\",\n \"'=D\",\n \"'=-)\",\n \"'=-]\",\n \"'=-D\"\n ]\n },\n {\n name: 'unamused',\n emoji: '😒',\n tags: ['meh'],\n description: 'unamused face',\n emoticons: [\n ':$',\n ':s',\n ':z',\n ':S',\n ':Z',\n ':-$',\n ':-s',\n ':-z',\n ':-S',\n ':-Z',\n '=$',\n '=s',\n '=z',\n '=S',\n '=Z',\n '=-$',\n '=-s',\n '=-z',\n '=-S',\n '=-Z'\n ]\n },\n {\n name: 'wink',\n emoji: '😉',\n tags: ['flirt'],\n description: 'winking face',\n emoticons: [';)', ';]', ';D', ';-)', ';-]', ';-D']\n }\n]\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record<string, unknown>} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array<string | Props | TestFunctionAnything>} Test\n * Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n * Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | void}\n * Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n * Node type.\n * @typedef {Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind> | Array<Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind>>} PredicateTest\n * Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback TestFunctionPredicate\n * Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n * Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback AssertPredicate\n * Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @param test\n * A check for a specific node.\n * @param index\n * The node’s position in its parent.\n * @param parent\n * The node’s parent.\n * @returns\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n /**\n * @type {(\n * (() => false) &\n * (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index: number, parent: Parent, context?: unknown) => node is Kind) &\n * (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n * ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n * ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function is(node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns\n * An assertion.\n */\nexport const convert =\n /**\n * @type {(\n * (<Kind extends Node>(test: PredicateTest<Kind>) => AssertPredicate<Kind>) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<string | Props | TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array<AssertAnything>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {Array<unknown>} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array<unknown>} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n 'type' in node &&\n // @ts-expect-error: fine.\n Boolean(check.call(this, node, ...parameters))\n )\n }\n}\n\nfunction ok() {\n return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * @typedef {boolean | 'skip'} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<Ancestor>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * Tree type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {Visitor<import('./complex-types.js').Matches<import('./complex-types.js').InclusiveDescendant<Tree>, Check>, Extract<import('./complex-types.js').InclusiveDescendant<Tree>, Parent>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visitParents =\n /**\n * @type {(\n * (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &\n * (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor<Node>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {Node} node\n * @param {number | undefined} index\n * @param {Array<Parent>} parents\n */\n function factory(node, index, parents) {\n /** @type {Record<string, unknown>} */\n // @ts-expect-error: hush\n const value = node && typeof node === 'object' ? node : {}\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<Parent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n }\n )\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {ActionTuple}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","/**\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Text} Text\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Content | Root} Node\n * @typedef {Extract<Node, MdastParent>} Parent\n * @typedef {Exclude<Parent, Root>} ContentParent\n *\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[Root, ...Array<ContentParent>, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) — whole match\n * * `...capture` (`Array<string>`) — matches from regex capture groups\n * * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | undefined | null}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * …or when `false`, do not replace at all\n * * …or when `string`, replace with a text node of that value\n * * …or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {string | RegExp} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n * Several find and replaces, in array form.\n * @typedef {Record<string, Replace>} FindAndReplaceSchema\n * Several find and replaces, in object form.\n * @typedef {[Find, Replace]} FindAndReplaceTuple\n * Find and replace in tuple form.\n * @typedef {string | ReplaceFunction} Replace\n * Thing to replace with.\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n * @typedef {Array<Pair>} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore.\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param tree\n * Tree to change.\n * @param find\n * Patterns to find.\n * @param replace\n * Things to replace with (when `find` is `Find`) or configuration.\n * @param options\n * Configuration (when `find` is not `Find`).\n * @returns\n * Given, modified, tree.\n */\n// To do: next major: remove `find` & `replace` combo, remove schema.\nexport const findAndReplace =\n /**\n * @type {(\n * (<Tree extends Node>(tree: Tree, find: Find, replace?: Replace | null | undefined, options?: Options | null | undefined) => Tree) &\n * (<Tree extends Node>(tree: Tree, schema: FindAndReplaceSchema | FindAndReplaceList, options?: Options | null | undefined) => Tree)\n * )}\n **/\n (\n /**\n * @template {Node} Tree\n * @param {Tree} tree\n * @param {Find | FindAndReplaceSchema | FindAndReplaceList} find\n * @param {Replace | Options | null | undefined} [replace]\n * @param {Options | null | undefined} [options]\n * @returns {Tree}\n */\n function (tree, find, replace, options) {\n /** @type {Options | null | undefined} */\n let settings\n /** @type {FindAndReplaceSchema|FindAndReplaceList} */\n let schema\n\n if (typeof find === 'string' || find instanceof RegExp) {\n // @ts-expect-error don’t expect options twice.\n schema = [[find, replace]]\n settings = options\n } else {\n schema = find\n // @ts-expect-error don’t expect replace twice.\n settings = replace\n }\n\n if (!settings) {\n settings = {}\n }\n\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(schema)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n // To do next major: don’t return the given tree.\n return tree\n\n /** @type {import('unist-util-visit-parents/complex-types.js').BuildVisitor<Root, 'text'>} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parent | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n\n if (\n ignored(\n parent,\n // @ts-expect-error: TS doesn’t understand but it’s perfect.\n grandparent ? grandparent.children.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array<Parent>} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n // @ts-expect-error: TS is wrong, some of these children can be text.\n const index = parent.children.indexOf(node)\n let change = false\n /** @type {Array<PhrasingContent>} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n // @ts-expect-error: stack is fine.\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn’t a match after all.\n if (value !== false) {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n }\n )\n\n/**\n * Turn a schema into pairs.\n *\n * @param {FindAndReplaceSchema | FindAndReplaceList} schema\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(schema) {\n /** @type {Pairs} */\n const result = []\n\n if (typeof schema !== 'object') {\n throw new TypeError('Expected array or object as schema')\n }\n\n if (Array.isArray(schema)) {\n let index = -1\n\n while (++index < schema.length) {\n result.push([\n toExpression(schema[index][0]),\n toFunction(schema[index][1])\n ])\n }\n } else {\n /** @type {string} */\n let key\n\n for (key in schema) {\n if (own.call(schema, key)) {\n result.push([toExpression(key), toFunction(schema[key])])\n }\n }\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function' ? replace : () => replace\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","import emoji from 'node-emoji';\nimport { emoticon } from 'emoticon';\nimport { findAndReplace } from 'mdast-util-find-and-replace';\n\nconst RE_EMOJI = /:\\+1:|:-1:|:[\\w-]+:/g;\nconst RE_SHORT = /[$@|*'\",;.=:\\-)([\\]\\\\/<>038BOopPsSdDxXzZ]{2,5}/g;\nconst RE_UNDERSTORE = /_/g;\nconst RE_PUNCT = /(?:_|-(?!1))/g;\n\nconst DEFAULT_SETTINGS = {\n padSpaceAfter: false,\n emoticon: false,\n accessible: false,\n};\n\nexport default function plugin(options) {\n const settings = Object.assign({}, DEFAULT_SETTINGS, options);\n const pad = !!settings.padSpaceAfter;\n const emoticonEnable = !!settings.emoticon;\n const accessible = !!settings.accessible;\n\n function aria(text, label) {\n // Creating HTML node in Markdown node is undocumented.\n // https://github.com/syntax-tree/mdast-util-math/blob/e70bb824dc70f5423324b31b0b68581cf6698fe8/index.js#L44-L55\n return {\n type: 'text',\n meta: null,\n value: text,\n data: {\n hName: 'span',\n hProperties: {\n role: 'img',\n ariaLabel: label,\n },\n hChildren: [{ type: 'text', value: text }],\n },\n };\n }\n\n function replaceEmoticon(match) {\n // find emoji by shortcode - full match or with-out last char as it could be from text e.g. :-),\n const iconFull = emoticon.find(e => e.emoticons.includes(match)); // full match\n const iconPart = emoticon.find(e => e.emoticons.includes(match.slice(0, -1))); // second search pattern\n const icon = iconFull || iconPart;\n if (!icon) {\n return false;\n }\n const trimmedChar = !iconFull && iconPart ? match.slice(-1) : '';\n const addPad = pad ? ' ' : '';\n const replaced = icon.emoji + addPad + trimmedChar;\n if (accessible) {\n return aria(replaced, icon.name + ' emoticon');\n }\n return replaced;\n }\n\n function replaceEmoji(match) {\n let got = emoji.get(match);\n\n // Workaround for #19. :man-*: and :woman-*: are now :*_man: and :*_woman: on GitHub. node-emoji\n // does not support the new short codes. Convert new to old.\n // TODO: Remove this workaround when this PR is merged and shipped: https://github.com/omnidan/node-emoji/pull/112\n if (match.endsWith('_man:') && got === match) {\n // :foo_bar_man: -> man-foo-bar\n const old = 'man-' + match.slice(1, -5).replace(RE_UNDERSTORE, '-');\n const s = emoji.get(old);\n if (s !== old) {\n got = s;\n }\n } else if (match.endsWith('_woman:') && got === match) {\n // :foo_bar_woman: -> woman-foo-bar\n const old = 'woman-' + match.slice(1, -7).replace(RE_UNDERSTORE, '-');\n const s = emoji.get(old);\n if (s !== old) {\n got = s;\n }\n }\n\n if (got === match) {\n return false;\n }\n\n if (pad) {\n got = got + ' ';\n }\n\n if (accessible) {\n const label = match.slice(1, -1).replace(RE_PUNCT, ' ') + ' emoji';\n return aria(got, label);\n }\n\n return got;\n }\n\n const replacers = [[RE_EMOJI, replaceEmoji]];\n if (emoticonEnable) {\n replacers.push([RE_SHORT, replaceEmoticon]);\n }\n\n function transformer(tree) {\n findAndReplace(tree, replacers);\n }\n\n return transformer;\n}\n"],"names":["isBrowser","React","__DEV__","useBreakpointValue","values","defaultBreakpoint","_theme$__breakpoints","breakpoint","__breakpoints","useTheme","env","useEnvironment","queries","React__default","_breakpoints$details","details","map","_ref","minMaxQuery","query","replace","_React$useState","fallbackBreakpointDetail","find","_ref2","window","matchMedia","matchingBreakpointDetail","_ref3","matches","currentBreakpoint","setCurrentBreakpoint","allUnregisterFns","_ref4","mediaQueryList","handleChange","ev","addEventListener","addListener","removeEventListener","removeListener","forEach","unregister","useBreakpoint","theme","breakpoints","Array","from","keys","breakpoints$1","index","Object","indexOf","stopIndex","getClosestValue","isArray","fromEntries","entries","arrayToObjectNotation","_extends","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutPropertiesLoose","excluded","sourceKeys","_excluded","_excluded2","_excluded3","SelectField","forwardRef","props","ref","children","placeholder","className","rest","chakra","select","cx","value","displayName","Select","styles","useMultiStyleConfig","_omitThemingProps","omitThemingProps","rootProps","icon","color","height","h","minH","minHeight","iconColor","iconSize","isFullWidth","_split","split","layoutPropNames","layoutProps","otherProps","ownProps","useFormControl","rootStyles","width","position","fieldStyles","mergeWith","paddingEnd","field","_focus","zIndex","div","__css","SelectIcon","dataAttr","disabled","fontSize","DefaultIcon","viewBox","fill","d","IconWrapper","baseStyle","display","alignItems","justifyContent","pointerEvents","top","transform","_props$children","clone","role","focusable","style","_excluded4","_excluded5","Table","tableProps","StylesProvider","table","TableCaption","_props$placement","placement","useStyles","caption","captionSide","Thead","thead","Tbody","tbody","Tfoot","tfoot","Th","isNumeric","th","Tr","tr","Td","td","_excluded$1","_excluded2$1","_createDescendantCont","createDescendantContext","TabsDescendantsProvider","useTabsDescendantsContext","useTabsDescendants","useTabsDescendant","_createContext","createContext","name","errorMessage","TabsProvider","useTabsContext","makeTabId","id","makeTabPanelId","Tabs","_useTabs","defaultIndex","onChange","isManual","isLazy","_props$lazyBehavior","lazyBehavior","_props$orientation","orientation","_props$direction","direction","htmlProps","focusedIndex","setFocusedIndex","_useControllableState","useControllableState","defaultValue","selectedIndex","setSelectedIndex","descendants","useId","useTabs","ctx","context","omit","root","Tab","tabProps","isDisabled","isFocusable","_useTabsContext2","_useTabsDescendant","register","isSelected","clickableProps","useClickable","mergeRefs","onClick","callAllHandlers","tabIndex","type","onFocus","undefined","useTab","tabStyles","outline","tab","button","TabList","tablistProps","_useTabsContext","onKeyDown","event","_keyMap","nextTab","next","nextEnabled","focus","node","prevTab","prev","prevEnabled","isHorizontal","isVertical","eventKey","normalizeEventKey","ArrowEnd","action","ArrowDown","ArrowUp","Home","first","firstEnabled","End","last","lastEnabled","preventDefault","useTabList","tablistStyles","tablist","TabPanel","panelProps","_useTabsContext3","hasBeenSelected","current","determineLazyBehavior","hidden","useTabPanel","tabpanel","TabPanels","panelsProps","getValidChildren","child","useTabPanels","tabpanels","TabIndicator","indicatorStyle","_React$useState2","left","rect","setRect","_React$useState3","hasMeasured","setHasMeasured","useSafeLayoutEffect","isUndefined","item","offsetLeft","offsetWidth","offsetTop","offsetHeight","requestAnimationFrame","cancelAnimationFrame","transitionProperty","transitionDuration","transitionTimingFunction","useTabIndicator","indicator","module","exports","err","character","String","count","Error","parse","val","input","empty","comma","lastIndex","end","slice","trim","push","stringify","options","settings","padLeft","space","right","padRight","concat","join","string","TypeError","hasOwn","toStr","toString","defineProperty","gOPD","getOwnPropertyDescriptor","arr","isPlainObject","obj","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","enumerable","configurable","newValue","writable","getProperty","extend","src","copy","copyIsArray","deep","html","require","svg","hastToReact","spaces","commas","ns","convert","element","text","toH","parentSchema","schema","tagName","attributes","nodes","toLowerCase","properties","addAttribute","vdom","toUpperCase","namespace","prefix","prop","subprop","info","vue","hyperscript","boolean","commaSeparated","property","react","result","iterator","error","message","styleReplacer","parseStyle","mustUseProperty","attribute","Boolean","cleanup","$0","$1","r","v","_isVue","vd","s","vfileLocation","ast","file","messages","verbose","own","data","public","publicId","system","systemId","config","fn","nodeName","namespaceURI","childNodes","sourceCodeLocation","location","doc","quirksMode","mode","start","toPoint","pos","attrs","startTag","endTag","content","tail","opening","closing","loc","point","line","startLine","column","startCol","offset","startOffset","endLine","endCol","endOffset","selector","defaultTagName","subvalue","previous","match","search","exec","Parser","visit","fromParse5","toParse5","voids","zwitch","xtend","wrap","tree","stitches","tokenizer","preprocessor","posTracker","locationTracker","parser","parseOptions","one","handlers","all","resetTokenizer","_processToken","createParse5Location","endTagToken","characterToken","chars","comment","doctype","p5","doctypeToken","forceQuirks","raw","token","lastGapPos","lastCharPos","gapStack","skipNextNewLine","lastChunkWritten","endOfChunkHit","isEol","lineStartPos","droppedBufferSize","col","currentAttrLocation","ctLoc","write","_runParsingLoop","currentCharacterToken","unknown","passThrough","stitch","head","documentMode","treeAdapter","createDocument","_bootstrap","__mixins","document","mock","_pushTmplInsertionMode","inTemplateMode","_initTokenizerForFragmentParsing","_insertFakeRootElement","_resetInsertionMode","_findFormInFragmentContext","_adoptNodes","fragment","parent","commentToken","tokenQueue","state","dataState","returnState","charRefCode","tempBuff","lastStartTagName","consumedAfterSnapshot","active","currentToken","currentAttr","startTagToken","sourceCodeLocationInfo","scriptingEnabled","selfClosing","defaults","nodeSchema","allowDoctypes","handleDoctypeName","allowComments","handleCommentValue","handleTagName","stack","definition","reqs","required","allowed","toPropertyValueMap","handlePropertyValues","handlePropertyValue","allow","replacement","strip","results","pop","url","colon","questionMark","numberSign","slash","protocols","handleProtocol","clobber","clobberPrefix","tagNames","ancestors","ignoredSpaces","patch","parentNode","shallow","attr","normalize","parseSelector","caseSensitive","adjust","createAdjustMap","isNode","isChildren","unshift","addProperty","addChild","spaceSeparated","commaOrSpaceSeparated","parsePrimitive","parsePrimitives","number","positiveNumber","isNaN","Number","overloadedBoolean","factory","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","str","lineno","updatePosition","lines","lastIndexOf","Position","whitespace","errorsList","msg","reason","filename","silent","re","m","comments","rules","c","charAt","declaration","ret","decl","decls","declarations","isBuffer","getPrototypeOf","DataView","getNative","Map","Promise","Set","Symbol","WeakMap","baseTimes","isArguments","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","array","iteratee","getRawTag","objectToString","symToStringTag","toStringTag","baseGetTag","isObjectLike","isFunction","isMasked","isObject","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","reIsNative","RegExp","test","isLength","typedArrayTags","isPrototype","nativeKeys","object","n","func","arrayMap","coreJsData","freeGlobal","global","baseIsNative","getValue","nativeObjectToString","isOwn","tag","unmasked","e","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","Ctor","ctorString","reHasUnicode","reIsUint","maskSrcKey","uid","IE_PROTO","done","size","overArg","freeExports","nodeType","freeModule","freeProcess","process","nodeUtil","types","binding","arg","freeSelf","self","set","asciiToArray","hasUnicode","unicodeToArray","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","baseIsArguments","propertyIsEnumerable","stubFalse","Buffer","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeys","isArrayLike","copyArray","isString","iteratorToArray","mapToArray","setToArray","stringToArray","symIterator","baseValues","repeat","cells","columnIndex","columnLength","largest","cell","before","after","code","padding","delimiterStart","delimiterEnd","align","alignDelimiters","alignments","stringLength","defaultStringLength","rowIndex","rowLength","cellMatrix","sizeMatrix","row","sizes","longestCellByColumn","mostCellsPerRow","toAlignment","l","Math","max","dash","splice","verticalBar","trailingWhitespace","lineFeed","x","C","L","R","charCodeAt","cache","getter","identifier","normalise","getterFactory","ondefinition","gather","encoding","extensions","extension","configure","transforms","canContainEols","enter","autolink","opener","link","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","heading","blockQuote","characterEscape","characterReference","codeFenced","codeFlow","codeFencedFenceInfo","buffer","codeFencedFenceMeta","codeIndented","codeText","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreakEscape","hardBreak","hardBreakTrailing","htmlFlow","htmlFlowData","htmlText","htmlTextData","image","label","listItem","listItemValue","onenterlistitemvalue","listOrdered","list","onenterlistordered","listUnordered","paragraph","reference","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","thematicBreak","exit","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","lineEnding","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","resource","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","mdastExtensions","compile","events","handler","tokenStack","listStack","resume","setData","getData","prepareList","sliceSerialize","stringifyPosition","tailIndex","lineIndex","tailEvent","firstBlankLineIndex","atMarker","containerBalance","listSpread","_spread","create","and","open","close","parseInt","lang","meta","normalizeIdentifier","title","depth","siblings","referenceType","alt","safeFromInt","decode","ordered","spread","checked","compiler","postprocess","ccount","findAndReplace","unicodePunctuation","unicodeWhitespace","enterLiteralAutolinkValue","findUrl","protocol","domain","path","parts","isCorrectDomain","closingParenIndex","openingParens","closingParens","trail","splitUrl","findEmail","atext","email","ignore","literalAutolink","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","handlerFactory","pairs","pair","subhandler","toExpression","toFunction","toPairs","escape","ignored","parents","grandparent","inConstruct","notInConstruct","unsafe","strikethrough","phrasing","handleDelete","_","delete","peek","enterCell","_align","tableData","tableHeader","tableRow","defaultInlineCode","markdownTable","tableCellPadding","tablePipeAlign","around","atBreak","serializeData","subexit","handleTableRowAsData","handleTableAsData","tableCell","handleTableCell","inlineCode","matrix","exitCheck","taskListCheckValueChecked","taskListCheckValueUnchecked","firstParaghraph","shift","defaultListItem","autolinkLiteral","taskListItem","def","backReference","footnoteById","footnoteOrder","listItems","hProperties","u","href","footnoteReference","dangerous","augment","revert","blockquote","break","footnote","imageReference","linkReference","toml","yaml","footnoteDefinition","loose","listItemLoose","listLoose","wrapped","items","out","rows","alignLength","allowDangerousHTML","deprecationWarningIssued","console","warn","allowDangerousHtml","definitions","unknownHandler","onfootnotedefinition","hName","hChildren","generated","foot","footer","returnNode","contents","subtype","suffix","base","patternCompile","pattern","expression","sequence","bullet","checkBullet","listItemIndent","checkListItemIndent","incrementListMarker","ceil","indentLines","flow","blank","marker","handle","between","safeOptions","eol","_compiled","encodeCache","encode","exclude","keepEscaped","nextCode","defaultChars","ch","fromCharCode","getEncodeCache","encodeURIComponent","componentChars","asciiAlpha","asciiAlphanumeric","asciiControl","markdownLineEnding","www","tokenize","effects","ok","nok","consume","w2","w3","dot","partial","hasUnderscoreInLastSegment","hasUnderscoreInLastLastSegment","check","namedCharacterReference","punctuationContinuation","punctuation","balance","inPath","continuedPunctuation","parenAtPathEnd","pathEnd","trailingPunctuation","inside","wwwAutolink","previousWww","attempt","httpAutolink","previousHttp","t1","t2","p","slash1","slash2","emailAutolink","hasDot","gfmAtext","previousEmail","dotContinuation","dashOrUnderscoreContinuation","afterDashOrUnderscore","_balanced","single","singleTilde","more","classifyCharacter","_open","_close","resolveAll","nextEvents","chunkedSplice","constructs","insideSpan","null","removeRemainingSequences","seenDelimiter","hasDash","tableHeaderCount","cellDividerHead","inCellContentHead","cellBreakHead","setextUnderlineMini","createSpace","rowStartDelimiter","atRowEndHead","inWhitespaceHead","inCellContentEscapeHead","atDelimiterRowBreak","rowEndDelimiter","inWhitespaceDelimiter","inFillerDelimiter","afterLeftAlignment","afterRightAlignment","tableClose","nextPrefixedOrBlank","tableContinue","bodyStart","rowStartBody","cellDividerBody","inCellContentBody","cellBreakBody","tableBodyClose","tableBodyContinue","atRowEndBody","inWhitespaceBody","inCellContentEscapeBody","inHead","inDelimiterRow","inRow","contentStart","contentEnd","cellStart","contentType","interruptible","markdownLineEndingOrSpace","spaceFactory","prefixSize","tasklistCheck","_gfmTasklistFirstContentOfListItem","spaceThenNonSpace","combine","tasklist","regexCheck","asciiAtext","asciiDigit","asciiHexDigit","asciiPunctuation","unicodePunctuationRegex","text$1","attention","headingAtx","labelEnd","labelStartImage","labelStartLink","setextUnderline","contentInitial","flowInitial","resolver","disable","factorySpace","lineStart","partialBlankLine","inspectResult","childFlow","childToken","continued","inspectConstruct","subcontinued","inspectStart","containerState","continuation","inspectContinue","inspectLess","currentConstruct","concrete","flowContinue","inspectDone","interrupt","containerConstruct","inspectFlowEnd","_closeFlow","lazy","lazyFlowConstruct","inspectLazy","flowEnd","documentContinue","documentContinued","flowStart","containerContinue","exitContainers","now","_tokenizer","continueFlow","documentAfterPeek","defineSkip","sliceStream","initial","afterConstruct","initializeFactory","createResolver","notText","resolveAllLineSuffixes","extraResolver","chunks","chunk","bufferIndex","tabs","eventIndex","_index","_bufferIndex","combineExtensions","createTokenizer","miniflat","defined","initializer","subtokenize","atCarriageReturn","startPosition","endPosition","chunkedPush","movePoint","group","openingSequence","closingSequence","use","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","markdownSpace","_container","decodeEntity","_interopDefaultLegacy","default","decodeEntity__default","numeric","closingFenceConstruct","closingSequenceStart","sizeOpen","closingSequenceEnd","initialPrefix","sequenceOpen","infoOpen","openAfter","infoAfter","contentContinue","indentedContentConstruct","afterPrefix","gap","tailExitIndex","headEnterIndex","continuationConstruct","prefixed","factoryDestination","factoryLabel","factoryWhitespace","factoryTitle","labelAfter","titleConstruct","literalType","literalMarkerType","rawType","stringType","limit","Infinity","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","markerType","labelEscape","atFirstTitleBreak","atTitleBreak","titleEscape","seen","fenceOpenInside","headingBreak","htmlBlockNames","htmlRawNames","kind","declarationStart","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","nextBlankConstruct","htmlContinueStart","continuationRawEndTag","resolveTo","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","commentStart","commentStartDash","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","labelStart","_inactive","balanced","afterLabelEnd","resourceConstruct","fullReferenceConstruct","collapsedReferenceConstruct","media","_used","destinationAfter","afterLabel","sizeChunks","initialSize","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","remove","parameters","chunkStart","hook","existing","add","serializeChunks","sliceChunks","initialize","columnStart","resolveAllConstructs","accountForPotentialSkip","fields","constructFactory","construct","addResult","onsuccessfulcheck","main","chunkIndex","go","restore","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","regex","called","atTab","view","startIndex","startBufferIndex","endIndex","endBufferIndex","subcontent","stream","entered","startPositions","childEvents","jumps","gaps","isInFirstContentOfListItem","otherIndex","otherEvent","subevents","_movePreviousLineEndings","toArray","emojiByName","emojiNameRegex","trimSpaceRegex","stripColons","colonIndex","substring","substr","wrapColons","NON_SPACING_MARK","nonSpacingRegex","stripNSB","emojiByCode","reduce","k","Emoji","emoji","_get","get","nameOrCode","findByName","findByCode","stripped","hasEmoji","hasEmojiByName","hasEmojiByCode","which","emoji_code","includeColons","word","emojify","on_missing","format","isMissing","random","emojiKeys","floor","matcher","filter","unemojify","cleanSpaces","words","replaced","idx","el","characters","char","entity","createElement","innerHTML","textContent","DOCUMENT_MODE","VALID_DOCTYPE_NAME","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","LIMITED_QUIRKS_PUBLIC_ID_PREFIXES","LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES","enquoteDoctypeId","quote","hasPrefix","prefixes","isConforming","getDocumentMode","QUIRKS","LIMITED_QUIRKS","NO_QUIRKS","serializeContent","controlCharacterInInputStream","noncharacterInInputStream","surrogateInInputStream","nonVoidHtmlElementStartTagWithTrailingSolidus","endTagWithAttributes","endTagWithTrailingSolidus","unexpectedSolidusInTag","unexpectedNullCharacter","unexpectedQuestionMarkInsteadOfTagName","invalidFirstCharacterOfTagName","unexpectedEqualsSignBeforeAttributeName","missingEndTagName","unexpectedCharacterInAttributeName","unknownNamedCharacterReference","missingSemicolonAfterCharacterReference","unexpectedCharacterAfterDoctypeSystemIdentifier","unexpectedCharacterInUnquotedAttributeValue","eofBeforeTagName","eofInTag","missingAttributeValue","missingWhitespaceBetweenAttributes","missingWhitespaceAfterDoctypePublicKeyword","missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers","missingWhitespaceAfterDoctypeSystemKeyword","missingQuoteBeforeDoctypePublicIdentifier","missingQuoteBeforeDoctypeSystemIdentifier","missingDoctypePublicIdentifier","missingDoctypeSystemIdentifier","abruptDoctypePublicIdentifier","abruptDoctypeSystemIdentifier","cdataInHtmlContent","incorrectlyOpenedComment","eofInScriptHtmlCommentLikeText","eofInDoctype","nestedComment","abruptClosingOfEmptyComment","eofInComment","incorrectlyClosedComment","eofInCdata","absenceOfDigitsInNumericCharacterReference","nullCharacterReference","surrogateCharacterReference","characterReferenceOutsideUnicodeRange","controlCharacterReference","noncharacterCharacterReference","missingWhitespaceBeforeDoctypeName","missingDoctypeName","invalidCharacterSequenceAfterDoctypeName","duplicateAttribute","nonConformingDoctype","missingDoctype","misplacedDoctype","endTagWithoutMatchingOpenElement","closingOfElementWithOpenChildElements","disallowedContentInNoscriptInHead","openElementsLeftAfterEof","abandonedHeadElementChild","misplacedStartTagForHeadElement","nestedNoscriptInHead","eofInElementThatCanContainOnlyText","_EXITS_FOREIGN_CONTEN","_defineProperty","Tokenizer","HTML","$","TAG_NAMES","NS","NAMESPACES","ATTRS","MIME_TYPES","SVG_ATTRS_ADJUSTMENT_MAP","attributename","attributetype","basefrequency","baseprofile","calcmode","clippathunits","diffuseconstant","edgemode","filterunits","glyphref","gradienttransform","gradientunits","kernelmatrix","kernelunitlength","keypoints","keysplines","keytimes","lengthadjust","limitingconeangle","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","numoctaves","pathlength","patterncontentunits","patterntransform","patternunits","pointsatx","pointsaty","pointsatz","preservealpha","preserveaspectratio","primitiveunits","refx","refy","repeatcount","repeatdur","requiredextensions","requiredfeatures","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","surfacescale","systemlanguage","tablevalues","targetx","targety","textlength","viewbox","viewtarget","xchannelselector","ychannelselector","zoomandpan","XML_ATTRS_ADJUSTMENT_MAP","XLINK","XML","xmlns","XMLNS","SVG_TAG_NAMES_ADJUSTMENT_MAP","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","clippath","feblend","fecolormatrix","fecomponenttransfer","fecomposite","feconvolvematrix","fediffuselighting","fedisplacementmap","fedistantlight","feflood","fefunca","fefuncb","fefuncg","fefuncr","fegaussianblur","feimage","femerge","femergenode","femorphology","feoffset","fepointlight","fespecularlighting","fespotlight","fetile","feturbulence","foreignobject","lineargradient","radialgradient","textpath","EXITS_FOREIGN_CONTENT","B","BIG","BLOCKQUOTE","BODY","BR","CENTER","CODE","DD","DIV","DL","DT","EM","EMBED","H1","H2","H3","H4","H5","H6","HEAD","HR","I","IMG","LI","LISTING","MENU","META","NOBR","OL","P","PRE","RUBY","S","SMALL","SPAN","STRONG","STRIKE","SUB","SUP","TABLE","TT","U","UL","VAR","causesExit","tn","FONT","getTokenAttr","COLOR","SIZE","FACE","adjustTokenMathMLAttrs","adjustTokenSVGAttrs","adjustedAttrName","adjustTokenXMLAttrs","adjustedAttrEntry","adjustTokenSVGTagName","adjustedTagName","isIntegrationPoint","foreignNS","MATHML","ANNOTATION_XML","ENCODING","SVG","FOREIGN_OBJECT","DESC","TITLE","isHtmlIntegrationPoint","MI","MO","MN","MS","MTEXT","isMathMLTextIntegrationPoint","_NS$HTML","_NS$MATHML","_NS$SVG","_exports$SPECIAL_ELEM","TYPE","ACTION","PROMPT","NAME","A","ADDRESS","APPLET","AREA","ARTICLE","ASIDE","BASE","BASEFONT","BGSOUND","BUTTON","CAPTION","COL","COLGROUP","DETAILS","DIALOG","DIR","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAME","FRAMESET","HEADER","HGROUP","IMAGE","INPUT","IFRAME","KEYGEN","LABEL","LINK","MAIN","MALIGNMARK","MARQUEE","MATH","MGLYPH","NAV","NOFRAMES","NOEMBED","NOSCRIPT","OBJECT","OPTGROUP","OPTION","PARAM","PLAINTEXT","RB","RP","RT","RTC","SCRIPT","SECTION","SELECT","SOURCE","STYLE","SUMMARY","TBODY","TEMPLATE","TEXTAREA","TFOOT","TD","TH","THEAD","TR","TRACK","WBR","XMP","SPECIAL_ELEMENTS","UNDEFINED_CODE_POINTS","REPLACEMENT_CHARACTER","CODE_POINTS","EOF","NULL","TABULATION","CARRIAGE_RETURN","LINE_FEED","FORM_FEED","SPACE","EXCLAMATION_MARK","QUOTATION_MARK","NUMBER_SIGN","AMPERSAND","APOSTROPHE","HYPHEN_MINUS","SOLIDUS","DIGIT_0","DIGIT_9","SEMICOLON","LESS_THAN_SIGN","EQUALS_SIGN","GREATER_THAN_SIGN","QUESTION_MARK","LATIN_CAPITAL_A","LATIN_CAPITAL_F","LATIN_CAPITAL_X","LATIN_CAPITAL_Z","RIGHT_SQUARE_BRACKET","GRAVE_ACCENT","LATIN_SMALL_A","LATIN_SMALL_F","LATIN_SMALL_X","LATIN_SMALL_Z","CODE_POINT_SEQUENCES","DASH_DASH_STRING","DOCTYPE_STRING","CDATA_START_STRING","SCRIPT_STRING","PUBLIC_STRING","SYSTEM_STRING","isSurrogate","cp","isSurrogatePair","getSurrogatePairCodePoint","cp1","cp2","isControlCodePoint","isUndefinedCodePoint","_classCallCheck","_createClass","_inherits","_createSuper","ErrorReportingMixinBase","_Mixin","_super","host","opts","_this","onParseError","_setErrorLocation","mxn","_err","_reportError","ErrorReportingTokenizerMixin","LocationInfoTokenizerMixin","Mixin","ErrorReportingParserMixin","_ErrorReportingMixinB","locBeforeToken","orig","fragmentContext","install","_processInputToken","beforeToken","_getPrototypeOf","PositionTrackingPreprocessorMixin","ErrorReportingPreprocessorMixin","lastErrOffset","preprocessorMixin","LocationInfoOpenElementStackMixin","onItemPop","popAllUpToHtmlElement","stackTop","LocationInfoParserMixin","lastStartTagToken","lastFosterParentingLocation","setNodeSourceCodeLocation","closingToken","getNodeSourceCodeLocation","getTagName","endLoc","END_TAG_TOKEN","updateNodeSourceCodeLocation","tokenizerMixin","openElements","_setEndLocation","scriptHandler","_processTokenInForeignContent","hasInScope","_setDocumentType","documentChildren","getChildNodes","cnLength","isDocumentTypeNode","_attachElementToTree","_setStartLocation","_appendElement","_insertElement","_insertTemplate","tmplContent","getTemplateContent","_appendCommentNode","commentNode","_findFosterParentingLocation","_insertCharacters","hasFosterParent","_shouldFosterParentOnInsertion","currentTmplContent","textNodeIdx","beforeElement","textNode","_token$location","methods","_createStartTagToken","_createEndTagToken","_createCommentToken","_createDoctypeToken","initialName","_createCharacterToken","_createEOFToken","_getCurrentLocation","_createAttr","attrNameFirstCh","_leaveAttrName","toState","_attachCurrentAttrLocationInfo","_leaveAttrValue","_emitCurrentToken","EOF_TOKEN","_emitCurrentCharacterToken","MODE","modeName","advance","retreat","dropParsedChunk","prevPos","reduction","FormattingElementList","bookmark","newElement","candidates","neAttrsLength","getAttrList","neTagName","neNamespaceURI","getNamespaceURI","entry","MARKER_ENTRY","elementAttrs","_getNoahArkConditionCandidates","cLength","neAttrs","neAttrsMap","neAttr","j","cAttr","NOAH_ARK_CAPACITY","_ensureNoahArkCondition","ELEMENT_ENTRY","bookmarkIdx","_INSERTION_MODE_RESET","_TEMPLATE_INSERTION_M","_INITIAL_MODE","_BEFORE_HTML_MODE","_BEFORE_HEAD_MODE","_IN_HEAD_MODE","_IN_HEAD_NO_SCRIPT_MO","_AFTER_HEAD_MODE","_IN_BODY_MODE","_TEXT_MODE","_IN_TABLE_MODE","_IN_TABLE_TEXT_MODE","_IN_CAPTION_MODE","_IN_COLUMN_GROUP_MODE","_IN_TABLE_BODY_MODE","_IN_ROW_MODE","_IN_CELL_MODE","_IN_SELECT_MODE","_IN_SELECT_IN_TABLE_M","_IN_TEMPLATE_MODE","_AFTER_BODY_MODE","_IN_FRAMESET_MODE","_AFTER_FRAMESET_MODE","_AFTER_AFTER_BODY_MOD","_AFTER_AFTER_FRAMESET","_TOKEN_HANDLERS","OpenElementStack","defaultTreeAdapter","mergeOptions","foreignContent","ERR","unicode","DEFAULT_OPTIONS","HIDDEN_INPUT_TYPE","AA_OUTER_LOOP_ITER","AA_INNER_LOOP_ITER","INITIAL_MODE","BEFORE_HTML_MODE","BEFORE_HEAD_MODE","IN_HEAD_MODE","IN_HEAD_NO_SCRIPT_MODE","AFTER_HEAD_MODE","IN_BODY_MODE","TEXT_MODE","IN_TABLE_MODE","IN_TABLE_TEXT_MODE","IN_CAPTION_MODE","IN_COLUMN_GROUP_MODE","IN_TABLE_BODY_MODE","IN_ROW_MODE","IN_CELL_MODE","IN_SELECT_MODE","IN_SELECT_IN_TABLE_MODE","IN_TEMPLATE_MODE","AFTER_BODY_MODE","IN_FRAMESET_MODE","AFTER_FRAMESET_MODE","AFTER_AFTER_BODY_MODE","AFTER_AFTER_FRAMESET_MODE","INSERTION_MODE_RESET_MAP","TEMPLATE_INSERTION_MODE_SWITCH_MAP","TOKEN_HANDLERS","CHARACTER_TOKEN","tokenInInitialMode","NULL_CHARACTER_TOKEN","WHITESPACE_CHARACTER_TOKEN","ignoreToken","COMMENT_TOKEN","appendComment","DOCTYPE_TOKEN","setDocumentMode","insertionMode","START_TAG_TOKEN","tokenBeforeHtml","tokenBeforeHead","startTagInBody","headElement","tokenInHead","insertCharacters","startTagInHead","endTagInHead","tokenInHeadNoScript","tokenAfterHead","framesetOk","characterInBody","whitespaceCharacterInBody","endTagInBody","eofInBody","pendingScript","originalInsertionMode","characterInTable","startTagInTable","endTagInTable","pendingCharacterTokens","hasNonWhitespacePendingCharacterToken","tokenInTableText","hasInTableScope","generateImpliedEndTags","popUntilTagNamePopped","activeFormattingElements","clearToLastMarker","tokenInColumnGroup","ackSelfClosing","currentTagName","clearBackToTableBodyContext","_insertFakeElement","hasTableBodyContextInTableScope","clearBackToTableRowContext","insertMarker","_closeTableCell","startTagInSelect","endTagInSelect","newInsertionMode","_popTmplInsertionMode","eofInTemplate","tokenAfterBody","stopParsing","isRootHtmlElementCurrent","tokenAfterAfterBody","appendCommentToDocument","documentMock","rootElement","getFirstChild","createDocumentFragment","stopped","formElement","tmplInsertionModeStack","tmplInsertionModeStackTop","currentTmplInsertionMode","fosterParentingEnabled","_setupTokenizerCDATAMode","getNextToken","HIBERNATION_TOKEN","writeCallback","script","_getAdjustedCurrentElement","allowCDATA","_isIntegrationPoint","nextTokenizerState","getParentNode","RCDATA","RAWTEXT","SCRIPT_DATA","setDocumentType","_fosterParentElement","appendChild","tmpl","setTemplateContent","createCommentNode","_fosterParentText","insertText","donor","recipient","detachNode","isCharacterToken","characterInForeignContent","nullCharacterInForeignContent","currentNs","startTagInForeignContent","popUntilElementPopped","endTagInForeignContent","_shouldProcessTokenInForeignContent","listLength","unopenIdx","contains","popUntilTableCellPopped","generateImpliedEndTagsWithExclusion","_resetInsertionModeForSelect","selectIdx","ancestor","_isElementCausesFosterParenting","openElement","insertBefore","insertTextBefore","aaObtainFormattingElementEntry","formattingElementEntry","getElementEntryInScopeWithTagName","removeEntry","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","_isSpecialElement","aaInnerLoop","formattingElement","lastElement","nextElement","getCommonAncestor","elementEntry","getElementEntry","counterOverflow","aaRecreateElementFromEntry","aaInsertLastNodeInCommonAncestor","commonAncestor","aaReplaceFormattingElement","insertElementAfterBookmark","insertAfter","callAdoptionAgency","_switchToTextParsing","tmplCount","generateImpliedEndTagsThoroughly","errCode","_reconstructActiveFormattingElements","addressStartTagInBody","hasInButtonScope","_closePElement","preStartTagInBody","bStartTagInBody","pushElement","appletStartTagInBody","areaStartTagInBody","paramStartTagInBody","noembedStartTagInBody","optgroupStartTagInBody","rbStartTagInBody","genericStartTagInBody","activeElementEntry","aStartTagInBody","numberedHeaderStartTagInBody","elementTn","closeTn","listItemStartTagInBody","hrStartTagInBody","rtStartTagInBody","xmpStartTagInBody","svgStartTagInBody","adoptAttributes","htmlStartTagInBody","bodyElement","tryPeekProperlyNestedBodyElement","bodyStartTagInBody","inTemplate","formStartTagInBody","nobrStartTagInBody","mathStartTagInBody","menuStartTagInBody","tableStartTagInBody","inputType","inputStartTagInBody","imageStartTagInBody","buttonStartTagInBody","iframeStartTagInBody","selectStartTagInBody","framesetStartTagInBody","textareaStartTagInBody","plaintextStartTagInBody","addressEndTagInBody","appletEndTagInBody","pEndTagInBody","hasInListItemScope","liEndTagInBody","ddEndTagInBody","hasNumberedHeaderInScope","popUntilNumberedHeaderPopped","numberedHeaderEndTagInBody","brEndTagInBody","bodyEndTagInBody","htmlEndTagInBody","formEndTagInBody","curTn","tokenInTable","clearBackToTableContext","tdStartTagInTable","colStartTagInTable","formStartTagInTable","tableStartTagInTable","tbodyStartTagInTable","inputStartTagInTable","captionStartTagInTable","colgroupStartTagInTable","savedFosterParentingState","_processTokenInBodyMode","hasInSelectScope","prevOpenElement","prevOpenElementTn","isImpliedEndTagRequired","isImpliedEndTagRequiredThoroughly","isScopingElement","_isInTemplate","_updateCurrentElement","oldElement","_indexOf","referenceElement","insertionIdx","poppedElement","elementIdx","exclusionTagName","Preprocessor","neTree","$$","C1_CONTROLS_REFERENCE_REPLACEMENTS","DATA_STATE","RCDATA_STATE","RAWTEXT_STATE","SCRIPT_DATA_STATE","PLAINTEXT_STATE","TAG_OPEN_STATE","END_TAG_OPEN_STATE","TAG_NAME_STATE","RCDATA_LESS_THAN_SIGN_STATE","RCDATA_END_TAG_OPEN_STATE","RCDATA_END_TAG_NAME_STATE","RAWTEXT_LESS_THAN_SIGN_STATE","RAWTEXT_END_TAG_OPEN_STATE","RAWTEXT_END_TAG_NAME_STATE","SCRIPT_DATA_LESS_THAN_SIGN_STATE","SCRIPT_DATA_END_TAG_OPEN_STATE","SCRIPT_DATA_END_TAG_NAME_STATE","SCRIPT_DATA_ESCAPE_START_STATE","SCRIPT_DATA_ESCAPE_START_DASH_STATE","SCRIPT_DATA_ESCAPED_STATE","SCRIPT_DATA_ESCAPED_DASH_STATE","SCRIPT_DATA_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE","BEFORE_ATTRIBUTE_NAME_STATE","ATTRIBUTE_NAME_STATE","AFTER_ATTRIBUTE_NAME_STATE","BEFORE_ATTRIBUTE_VALUE_STATE","ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE","ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE","ATTRIBUTE_VALUE_UNQUOTED_STATE","AFTER_ATTRIBUTE_VALUE_QUOTED_STATE","SELF_CLOSING_START_TAG_STATE","BOGUS_COMMENT_STATE","MARKUP_DECLARATION_OPEN_STATE","COMMENT_START_STATE","COMMENT_START_DASH_STATE","COMMENT_STATE","COMMENT_LESS_THAN_SIGN_STATE","COMMENT_LESS_THAN_SIGN_BANG_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE","COMMENT_END_DASH_STATE","COMMENT_END_STATE","COMMENT_END_BANG_STATE","DOCTYPE_STATE","BEFORE_DOCTYPE_NAME_STATE","DOCTYPE_NAME_STATE","AFTER_DOCTYPE_NAME_STATE","AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE","BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE","DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE","BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE","AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE","BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE","DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE","BOGUS_DOCTYPE_STATE","CDATA_SECTION_STATE","CDATA_SECTION_BRACKET_STATE","CDATA_SECTION_END_STATE","CHARACTER_REFERENCE_STATE","NAMED_CHARACTER_REFERENCE_STATE","AMBIGUOUS_AMPERSAND_STATE","NUMERIC_CHARACTER_REFERENCE_STATE","HEXADEMICAL_CHARACTER_REFERENCE_START_STATE","DECIMAL_CHARACTER_REFERENCE_START_STATE","HEXADEMICAL_CHARACTER_REFERENCE_STATE","DECIMAL_CHARACTER_REFERENCE_STATE","NUMERIC_CHARACTER_REFERENCE_END_STATE","isWhitespace","isAsciiDigit","isAsciiUpper","isAsciiLower","isAsciiLetter","isAsciiAlphaNumeric","isAsciiUpperHexDigit","isAsciiLowerHexDigit","toAsciiLowerCodePoint","toChar","toAsciiLowerChar","findNamedEntityTreeBranch","nodeIx","branchCount","lo","hi","mid","midCp","_consume","_unconsume","_ensureHibernation","isLastChunk","insertHtmlAtCurrentPos","startCp","consumedCount","isMatch","patternLength","patternPos","patternCp","ct","_appendCharToCurrentCharacterToken","codePoints","_emitCodePoint","excess","inNode","HAS_DATA_FLAG","withSemicolon","_isCharacterReferenceInAttribute","nextCp","_emitSeveralCodePoints","_emitEOFToken","_emitChars","_reconsumeInState","_isTempBufferEqualToScriptString","_consumeSequenceIfMatch","_flushCodePointsConsumedAsCharacterReference","matchResult","_matchNamedCharacterReference","_isCharacterReferenceAttributeQuirk","_errOnNextCodePoint","isAsciiHexDigit","DATA","attrName","Uint16Array","bufferWaterline","_addGap","_processSurrogate","_checkForProblematicCharacters","createTextNode","newNode","referenceNode","templateElement","contentElement","doctypeNode","prevNode","recipientAttrsMap","getTextNodeContent","getCommentNodeContent","getDocumentTypeNodeName","getDocumentTypeNodePublicId","getDocumentTypeNodeSystemId","isTextNode","isCommentNode","isElementNode","endLocation","merged","optObj","originalMethods","overriddenMethods","_getOverriddenMethods","_i","_Object$keys","mixin","Prism","uniqueId","plainTextGrammar","util","tokens","Token","alias","o","objId","deepClone","visited","getLanguage","parentElement","setLanguage","language","classList","isActive","defaultActivation","no","languages","plain","plaintext","txt","redef","insert","grammar","newToken","old","DFS","callback","propertyType","plugins","highlight","hooks","run","tokenList","LinkedList","addAfter","matchGrammar","callbacks","matchedStr","matchPattern","lookbehind","lookbehindLength","startNode","startPos","rematch","patterns","cause","patternObj","greedy","flags","currentNode","reach","removeCount","to","matchStr","removeFrom","removeRange","nestedRematch","classes","aliases","prism","markup","includedCdataInside","mathml","xml","ssml","atom","rss","envVars","commandAfterHeredoc","insideString","bash","variable","toBeCopied","shell","clike","keyword","modName","cpp","css","addInlined","selectorInside","unit","javascript","js","interpolation","coffeescript","coffee","anchorOrAlias","plainKey","createValuePattern","yml","inner","createInline","tableLine","markdown","walkTokens","codeLang","codeBlock","cls","tagPattern","fromCodePoint","known","KNOWN_ENTITY_NAMES","autoloader","Date","valueOf","loadLanguages","ele","getElementById","md","graphql","validTokens","currentIndex","startToken","inputVariables","isTokenType","getToken","definitionEnd","findClosingBracket","t","addAlias","mutationEnd","varToken","stackHeight","sql","templateString","templateLiteralPattern","interpolationObject","interpolationPunctuationObject","interpolationPattern","createTemplate","getPlaceholder","counter","tokenizeWithHooks","tokenizeInterpolationExpression","tempGrammar","args","tokenizeEmbedded","_tokens","placeholderCounter","placeholderMap","embeddedTokens","interpolationExpression","placeholders","middle","afterTokens","supportedLanguages","stringContent","findTemplateStrings","embedded","typescript","typeInside","ts","withId","maybeClassNameTokens","braces","jsx","stringifyToken","openedTags","notTagNorBrace","openedBraces","plainText","diff","PREFIXES","git","defineProperties","buildPlaceholders","placeholderPattern","replaceFilter","tokenizePlaceholders","handlebars","hbs","json","webmanifest","less","makefile","objectivec","objc","ocaml","python","py","function","sass","atrule","operator","important","scss","stylus","tsx","wasm","backgroundColor","opacity","textDecorationLine","fontStyle","fontWeight","defaultProps","newlineRe","normalizeEmptyLines","appendTypes","typesSize","objectWithoutProperties","Highlight","Component","this$1","len","themeDict","prevTheme","prevLanguage","acc","themeEntry","includes","accStyle","themeToDict","output","getThemeDict","typeStyles","getStyleForToken","__proto__","render","typeArrStack","tokenArrStack","tokenArrIndexStack","tokenArrSizeStack","stackIndex","currentLine","splitByNewlines","newlineCount","i$1","normalizeTokens","getLineProps","getTokenProps","DefinedInfo","Info","normal","Type","valid","camelcase","datasetToProperty","cap","kebab","datasetToAttribute","merge","xlink","aria","booleanish","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","caseInsensitiveTransform","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allowFullScreen","allowPaymentRequest","allowUserMedia","as","async","autoCapitalize","autoComplete","autoFocus","autoPlay","capture","charSet","cite","cols","colSpan","contentEditable","controls","controlsList","coords","crossOrigin","dateTime","decoding","defer","dir","dirName","download","draggable","encType","enterKeyHint","form","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inputMode","integrity","is","isMap","itemId","itemProp","itemRef","itemScope","itemType","loading","loop","low","manifest","maxLength","method","min","minLength","multiple","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforePrint","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onClose","onContextMenu","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFormData","onHashChange","onInput","onInvalid","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","playsInline","poster","preload","readOnly","referrerPolicy","rel","reversed","rowSpan","sandbox","scope","scoped","seamless","selected","shape","slot","span","spellCheck","srcDoc","srcLang","srcSet","step","translate","typeMustMatch","useMap","aLink","archive","axis","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","clear","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","valueType","version","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","caseSensitiveTransform","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSizeAdjust","fontStretch","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeOpacity","strokeWidth","textAnchor","textDecoration","textRendering","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeName","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cy","defaultAction","descent","diffuseConstant","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusHighlight","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","observer","order","orient","origin","overflow","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","rotate","rx","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","viewTarget","visibility","widths","x1","x2","xChannelSelector","y","y1","y2","yChannelSelector","z","zoomAndPan","Schema","checks","checksLength","mark","proto","powers","increment","pow","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xmlLang","xmlBase","xmlSpace","xmlnsxlink","xmlnsXLink","a","b","q","aa","ba","D","ca","da","ea","fa","ha","ia","ja","ka","for","E","F","$$typeof","_context","_render","_payload","_init","la","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ma","_threadCount","_currentValue2","J","K","oa","pa","qa","ra","sa","M","f","acceptsBooleans","attributeNamespace","propertyName","sanitizeURL","removeEmptyString","N","va","wa","xlinkHref","xa","O","ya","ta","ua","Aa","Q","T","V","W","Ba","memoizedState","queue","Ca","Da","Ea","Fa","Ga","dispatch","Ha","bind","Ia","Ja","X","Ka","readContext","threadID","useContext","useMemo","useReducer","useRef","useState","useLayoutEffect","useCallback","useImperativeHandle","useEffect","useDebugValue","useDeferredValue","useTransition","useOpaqueIdentifier","identifierPrefix","uniqueID","useMutableSource","_source","La","Ma","Na","area","br","embed","hr","img","keygen","param","track","wbr","Oa","menuitem","Y","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","orphans","tabSize","widows","zoom","strokeDasharray","strokeDashoffset","strokeMiterlimit","Pa","Qa","Ra","Z","Children","Sa","ReactCurrentDispatcher","Ta","listing","pre","textarea","Ua","Va","Wa","Ya","Za","dangerouslySetInnerHTML","suppressContentEditableWarning","suppressHydrationWarning","$a","ab","isReactComponent","contextType","contextTypes","na","g","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","getDerivedStateFromProps","updater","UNSAFE_componentWillMount","componentWillMount","H","getChildContext","childContextTypes","isValidElement","bb","domNamespace","childIndex","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","destroy","clearProviders","pushProvider","popProvider","read","G","fallbackFrame","then","renderDOM","defaultChecked","Xa","w","cb","__html","renderToNodeStream","renderToStaticMarkup","renderToStaticNodeStream","renderToString","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","ReactIs","childrenToReact","tableElements","toReact","has","skipHtml","listDepth","component","components","basic","linkTarget","transformLinkUri","inline","level","transformImageUri","getInputElement","getElementsBeforeCount","textAlign","isHeader","sourcePos","rawSourcePos","sourcePosition","includeElementIndex","siblingCount","vfile","unified","remarkRehype","PropTypes","uriTransformer","ReactMarkdown","changelog","deprecated","renderers","astPlugins","escapeHtml","allowNode","allowedTypes","disallowedTypes","includeNodeIndex","deprecation","processor","remarkPlugins","rehypePlugins","hastNode","runSync","propTypes","allowElement","allowedElements","arrayOf","disallowedElements","unwrapDisallowed","bool","oneOfType","onelement","node_","parent_","_parent$children","_toConsumableArray","uri","hastUtilRaw","clean","warningIssued","syntax","fromMarkdown","toMarkdown","blockTokenizers","Compiler","visitors","mdast2hast","destination","transformer","bridge","mutate","res","num","ANY","Comparator","comp","debug","semver","COMPARATORLOOSE","COMPARATOR","SemVer","er","cmp","Range","includePrerelease","startsWith","_require","safeRe","range","parseRange","isNullSet","_step","_iterator","_createForOfIteratorHelper","isAny","comps","_this2","memoKey","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","cached","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","comparatorTrimReplace","TILDETRIM","tildeTrimReplace","CARETTRIM","caretTrimReplace","rangeList","parseComparator","replaceGTE0","_step2","rangeMap","comparators","_iterator2","some","thisComparators","isSatisfiable","rangeComparators","every","thisComparator","rangeComparator","intersects","testSet","_require2","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","replaceTilde","TILDELOOSE","TILDE","pr","replaceCaret","CARETLOOSE","CARET","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","tb","prerelease","major","minor","MAX_LENGTH","MAX_SAFE_INTEGER","compareIdentifiers","LOOSE","FULL","build","other","compareMain","comparePre","release","identifierBase","inc","eq","neq","gt","gte","lt","lte","op","rtl","COERCERTL","COERCE","versionA","versionB","compare","compareBuild","version1","version2","v1","v2","comparison","v1Higher","highVersion","lowVersion","highHasPre","throwErrors","parsed","sort","internalRe","constants","identifiers","rcompare","compareLoose","rsort","coerce","satisfies","toComparators","maxSatisfying","minSatisfying","minVersion","validRange","outside","gtr","ltr","simplifyRange","subset","SEMVER_SPEC_VERSION","RELEASE_TYPES","rcompareIdentifiers","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","NODE_DEBUG","_console","_len","_key","anum","bnum","looseOption","freeze","emptyOpts","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","_safeRegexReplacement","_safeRegexReplacement2","_slicedToArray","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","LONETILDE","LONECARET","Yallist","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","LRUCache","lc","stale","maxAge","dispose","noDisposeOnSet","updateAgeOnGet","reset","mL","allowStale","mA","lC","hit","thisp","walker","forEachStep","_this3","isStale","del","Entry","expiresAt","_this4","doUse","unshiftNode","removeNode","r1","r2","versions","maxSV","rangeObj","minSV","minver","_loop","setMin","comparator","compver","hilo","gtfn","ltefn","ltfn","ecomp","_ret","ranges","_set","_set$_i","simplified","original","minimumVersionWithPreRelease","minimumVersion","simpleSubset","sub","dom","_step3","gtltComp","eqSet","_iterator3","higherGT","lowerLT","_step4","higher","lower","hasDomLT","hasDomGT","_iterator4","_step6","_iterator6","needDomLTPre","needDomGTPre","_step5","_iterator5","sawNonNull","OUTER","simpleSub","simpleDom","isSub","whiteSpace","hasIterator","trough","fns","middleware","invoked","params","bail","frozen","attachers","transformers","freezeIndex","assertUnfrozen","addPlugin","addList","addPreset","plugin","assertParser","newable","assertCompiler","assertNode","complete","assertDone","processSync","executor","reject","pipeline","asyncName","typeFactory","tests","any","anyFactory","allFactory","visitParents","CONTINUE","SKIP","EXIT","visitor","reverse","subresult","grandparents","toResult","indices","offsetToPoint","toPosition","toOffset","VMessagePrototype","VMessage","parseOrigin","ruleId","fatal","proc","VFile","history","cwd","assertPart","part","sep","assertNonEmpty","assertPath","dirname","basename","extname","stem","fail","JSON","ext","firstNonSlashEnd","seenNonSlash","extIndex","unmatchedSlash","startDot","startPart","preDotState","joined","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","_regeneratorRuntime","_callee","stop","inserted","Node","pushNode","forEachReverse","getReverse","mapReverse","reduceReverse","toArrayReverse","sliceReverse","deleteCount","invalid","noop","arr2","__esModule","arrayLikeToArray","ReferenceError","instance","Constructor","toPropertyKey","_defineProperties","descriptor","protoProps","staticProps","unsupportedIterableToArray","allowArrayLike","it","_e","normalCompletion","didErr","_e2","isNativeReflectConstruct","possibleConstructorReturn","Derived","hasNativeReflectConstruct","Super","NewTarget","Reflect","superPropBase","receiver","desc","setPrototypeOf","subClass","superClass","sham","Proxy","iter","_s","_x","_r","_arr","_n","_d","_typeof","assertThisInitialized","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","awrap","skipTempReset","rootRecord","rval","exception","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","_setPrototypeOf","arrayWithHoles","iterableToArrayLimit","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","hint","prim","toPrimitive","minLen","_toArray","emoticon","tags","description","emoticons","castFactory","propsFactory","_checks$index","_len2","_key2","pairIndex","change","matchObject","_nodes","RE_EMOJI","RE_SHORT","RE_UNDERSTORE","RE_PUNCT","DEFAULT_SETTINGS","padSpaceAfter","accessible","pad","emoticonEnable","replacers","got","endsWith","iconFull","iconPart","trimmedChar","addPad"],"sourceRoot":""}