From ff8af5eb8629cb023d797a63e8e13f861909bce4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:12:20 +0000 Subject: [PATCH] Deployed 76ada13 with MkDocs version: 1.6.1 --- .nojekyll | 0 404.html | 1 + CNAME | 1 + CTF/index.html | 1 + Courses/index.html | 1 + DevSecOps/index.html | 1 + FTE/index.html | 1 + HowTOBEContrib/index.html | 30 + Labs/index.html | 1 + MlSecOps/index.html | 1 + TEO/index.html | 1 + appsec_plan_func/index.html | 1 + .../u/120268163.fe356448.png | Bin 0 -> 1583 bytes .../u/129667548.fe356448.jpg | Bin 0 -> 2011 bytes .../u/145837283.fe356448.png | Bin 0 -> 1570 bytes .../u/38507289.fe356448.png | Bin 0 -> 1538 bytes .../u/38857203.fe356448.jpg | Bin 0 -> 1883 bytes .../u/55030430.fe356448.jpg | Bin 0 -> 2385 bytes .../u/76488689.fe356448.jpg | Bin 0 -> 1193 bytes .../u/99257179.fe356448.jpg | Bin 0 -> 1734 bytes .../fonts.googleapis.com/css.0159f15c.css | 179 + .../fonts.googleapis.com/css.49ea35f2.css | 594 ++ .../fonts.googleapis.com/css.8c9ccb55.css | 672 ++ ...yH6cAwhX9RFD48TE63OOYKtrwEIJkLpynSEg.woff2 | Bin 0 -> 12056 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJl-pynSEg.woff2 | Bin 0 -> 24032 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJl0pynSEg.woff2 | Bin 0 -> 82608 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJl1pynSEg.woff2 | Bin 0 -> 9908 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJl3pynSEg.woff2 | Bin 0 -> 43692 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJl4pynSEg.woff2 | Bin 0 -> 34332 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJl5pynSEg.woff2 | Bin 0 -> 34836 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJl6pynSEg.woff2 | Bin 0 -> 9808 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJl8pynSEg.woff2 | Bin 0 -> 24664 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlGpynSEg.woff2 | Bin 0 -> 11624 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlhpynSEg.woff2 | Bin 0 -> 9648 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlkpynSEg.woff2 | Bin 0 -> 29432 bytes ...3SAyH6cAwhX9RFD48TE63OOYKtrwEIJllpyk.woff2 | Bin 0 -> 21324 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlmpynSEg.woff2 | Bin 0 -> 5688 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlnpynSEg.woff2 | Bin 0 -> 8212 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlopynSEg.woff2 | Bin 0 -> 9636 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlqpynSEg.woff2 | Bin 0 -> 5252 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlrpynSEg.woff2 | Bin 0 -> 12464 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlspynSEg.woff2 | Bin 0 -> 9668 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlupynSEg.woff2 | Bin 0 -> 33364 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlxpynSEg.woff2 | Bin 0 -> 9416 bytes ...yH6cAwhX9RFD48TE63OOYKtrwEIJlzpynSEg.woff2 | Bin 0 -> 13312 bytes .../googlesymbols/close/default/24px.svg | 1 + .../v32/KFOiCnqEu92Fr1Mu51QrEz0dL_nz.woff2 | Bin 0 -> 16220 bytes .../v32/KFOiCnqEu92Fr1Mu51QrEz4dL_nz.woff2 | Bin 0 -> 13100 bytes .../v32/KFOiCnqEu92Fr1Mu51QrEz8dL_nz.woff2 | Bin 0 -> 5972 bytes .../v32/KFOiCnqEu92Fr1Mu51QrEzAdLw.woff2 | Bin 0 -> 19720 bytes .../v32/KFOiCnqEu92Fr1Mu51QrEzMdL_nz.woff2 | Bin 0 -> 7564 bytes .../v32/KFOiCnqEu92Fr1Mu51QrEzQdL_nz.woff2 | Bin 0 -> 10128 bytes .../v32/KFOiCnqEu92Fr1Mu51QrEzwdL_nz.woff2 | Bin 0 -> 1480 bytes .../v32/KFOjCnqEu92Fr1Mu51S7ACc-CsTKlA.woff2 | Bin 0 -> 10788 bytes .../v32/KFOjCnqEu92Fr1Mu51S7ACc0CsTKlA.woff2 | Bin 0 -> 13376 bytes .../v32/KFOjCnqEu92Fr1Mu51S7ACc1CsTKlA.woff2 | Bin 0 -> 6220 bytes .../v32/KFOjCnqEu92Fr1Mu51S7ACc2CsTKlA.woff2 | Bin 0 -> 1548 bytes .../v32/KFOjCnqEu92Fr1Mu51S7ACc3CsTKlA.woff2 | Bin 0 -> 16612 bytes .../v32/KFOjCnqEu92Fr1Mu51S7ACc5CsTKlA.woff2 | Bin 0 -> 7636 bytes .../v32/KFOjCnqEu92Fr1Mu51S7ACc6CsQ.woff2 | Bin 0 -> 20160 bytes .../v32/KFOjCnqEu92Fr1Mu51TLBCc-CsTKlA.woff2 | Bin 0 -> 10836 bytes .../v32/KFOjCnqEu92Fr1Mu51TLBCc0CsTKlA.woff2 | Bin 0 -> 13352 bytes .../v32/KFOjCnqEu92Fr1Mu51TLBCc1CsTKlA.woff2 | Bin 0 -> 6104 bytes .../v32/KFOjCnqEu92Fr1Mu51TLBCc2CsTKlA.woff2 | Bin 0 -> 1520 bytes .../v32/KFOjCnqEu92Fr1Mu51TLBCc3CsTKlA.woff2 | Bin 0 -> 16896 bytes .../v32/KFOjCnqEu92Fr1Mu51TLBCc5CsTKlA.woff2 | Bin 0 -> 7656 bytes .../v32/KFOjCnqEu92Fr1Mu51TLBCc6CsQ.woff2 | Bin 0 -> 20356 bytes .../v32/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 | Bin 0 -> 10656 bytes .../v32/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 | Bin 0 -> 13360 bytes .../v32/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2 | Bin 0 -> 6144 bytes .../v32/KFOjCnqEu92Fr1Mu51TjASc2CsTKlA.woff2 | Bin 0 -> 1536 bytes .../v32/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 | Bin 0 -> 16756 bytes .../v32/KFOjCnqEu92Fr1Mu51TjASc5CsTKlA.woff2 | Bin 0 -> 7708 bytes .../v32/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 | Bin 0 -> 20216 bytes .../v32/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 | Bin 0 -> 10356 bytes .../v32/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 | Bin 0 -> 13104 bytes .../v32/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2 | Bin 0 -> 6148 bytes .../v32/KFOjCnqEu92Fr1Mu51TzBic2CsTKlA.woff2 | Bin 0 -> 1468 bytes .../v32/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 | Bin 0 -> 16080 bytes .../v32/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2 | Bin 0 -> 7464 bytes .../v32/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 | Bin 0 -> 19780 bytes .../v32/KFOkCnqEu92Fr1MmgVxEIzIFKw.woff2 | Bin 0 -> 1432 bytes .../v32/KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2 | Bin 0 -> 14704 bytes .../v32/KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2 | Bin 0 -> 12300 bytes .../v32/KFOkCnqEu92Fr1MmgVxHIzIFKw.woff2 | Bin 0 -> 5600 bytes .../roboto/v32/KFOkCnqEu92Fr1MmgVxIIzI.woff2 | Bin 0 -> 18540 bytes .../v32/KFOkCnqEu92Fr1MmgVxLIzIFKw.woff2 | Bin 0 -> 7040 bytes .../v32/KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2 | Bin 0 -> 9348 bytes .../v32/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2 | Bin 0 -> 1516 bytes .../v32/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 | Bin 0 -> 16688 bytes .../v32/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 | Bin 0 -> 13224 bytes .../v32/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2 | Bin 0 -> 6144 bytes .../roboto/v32/KFOkCnqEu92Fr1Mu51xIIzI.woff2 | Bin 0 -> 20144 bytes .../v32/KFOkCnqEu92Fr1Mu51xLIzIFKw.woff2 | Bin 0 -> 7724 bytes .../v32/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 | Bin 0 -> 10492 bytes .../v32/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 | Bin 0 -> 9964 bytes .../roboto/v32/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 | Bin 0 -> 18588 bytes .../v32/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2 | Bin 0 -> 7028 bytes .../v32/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2 | Bin 0 -> 1520 bytes .../v32/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 | Bin 0 -> 14988 bytes .../v32/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 | Bin 0 -> 12280 bytes .../v32/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2 | Bin 0 -> 5864 bytes .../v32/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 | Bin 0 -> 9684 bytes .../roboto/v32/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 | Bin 0 -> 18492 bytes .../v32/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 | Bin 0 -> 7180 bytes .../v32/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 | Bin 0 -> 1500 bytes .../v32/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 | Bin 0 -> 15028 bytes .../v32/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 | Bin 0 -> 12324 bytes .../v32/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 | Bin 0 -> 5688 bytes .../v32/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 | Bin 0 -> 9780 bytes .../roboto/v32/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 | Bin 0 -> 18596 bytes .../v32/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 | Bin 0 -> 6904 bytes .../v32/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 | Bin 0 -> 1456 bytes .../v32/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 | Bin 0 -> 14740 bytes .../v32/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 | Bin 0 -> 12304 bytes .../v32/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 | Bin 0 -> 5708 bytes .../v32/KFOlCnqEu92Fr1MmYUtfABc4EsA.woff2 | Bin 0 -> 9916 bytes .../roboto/v32/KFOlCnqEu92Fr1MmYUtfBBc4.woff2 | Bin 0 -> 18436 bytes .../v32/KFOlCnqEu92Fr1MmYUtfBxc4EsA.woff2 | Bin 0 -> 6992 bytes .../v32/KFOlCnqEu92Fr1MmYUtfCBc4EsA.woff2 | Bin 0 -> 1472 bytes .../v32/KFOlCnqEu92Fr1MmYUtfCRc4EsA.woff2 | Bin 0 -> 14932 bytes .../v32/KFOlCnqEu92Fr1MmYUtfChc4EsA.woff2 | Bin 0 -> 12276 bytes .../v32/KFOlCnqEu92Fr1MmYUtfCxc4EsA.woff2 | Bin 0 -> 5708 bytes .../roboto/v32/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 | Bin 0 -> 7096 bytes .../s/roboto/v32/KFOmCnqEu92Fr1Mu4mxK.woff2 | Bin 0 -> 18536 bytes .../roboto/v32/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 | Bin 0 -> 9852 bytes .../roboto/v32/KFOmCnqEu92Fr1Mu72xKOzY.woff2 | Bin 0 -> 15336 bytes .../roboto/v32/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 | Bin 0 -> 12456 bytes .../roboto/v32/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 | Bin 0 -> 5796 bytes .../roboto/v32/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 | Bin 0 -> 1496 bytes ...wgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 | Bin 0 -> 24792 bytes ...wgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2 | Bin 0 -> 16296 bytes ...wgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2 | Bin 0 -> 7528 bytes ...5mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 | Bin 0 -> 22736 bytes ...wgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 | Bin 0 -> 10096 bytes ...wgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2 | Bin 0 -> 13036 bytes ...euFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2 | Bin 0 -> 7972 bytes ...euFoqFrlnAIe2Imhk1T8rbociImtEleUlYIw.woff2 | Bin 0 -> 17428 bytes ...euFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2 | Bin 0 -> 26644 bytes ...q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2 | Bin 0 -> 24652 bytes ...euFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2 | Bin 0 -> 10704 bytes ...euFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2 | Bin 0 -> 14288 bytes .../236cd3f4-bce8-4659-b43f-8d4002df65a5.png | Bin 0 -> 228521 bytes .../0079c134-be60-42b0-afaa-a5df9bb7ece3.png | Bin 0 -> 337770 bytes .../0adcabdf-1afb-4ab2-aa8c-eef75c229842.png | Bin 0 -> 123806 bytes .../2cc30071-7ec2-4f09-bf80-29d6b1a008ba.png | Bin 0 -> 745598 bytes .../367a50da-c93d-4c91-a69f-9a6de8d48f91.png | Bin 0 -> 123806 bytes .../434c0ee3-d8c9-44fe-a842-e31f8b51f2c7.png | Bin 0 -> 3992743 bytes .../43a56dad-ddad-4097-a57e-aa035247810d.png | Bin 0 -> 140889 bytes .../596da613-0169-41d6-b06b-69986d722a3a.png | Bin 0 -> 1137784 bytes .../82d8895d-0a8a-4383-ab7e-5890fc568bc7.png | Bin 0 -> 23995 bytes .../8ce8400b-804b-4ce0-9241-30ad5b42b55f.png | Bin 0 -> 305856 bytes .../90133c33-ee58-4ec8-a9cb-c14fe529eb2f.png | Bin 0 -> 521575 bytes .../9f366c92-3e5a-4375-b967-ac35801151c1.png | Bin 0 -> 544401 bytes .../a0b7bbd1-d262-48f3-a111-820e5dd350b0.png | Bin 0 -> 123665 bytes .../a57330be-461f-48c6-a547-cc19bef9bbab.png | Bin 0 -> 120233 bytes .../bd971212-bde9-4d2e-98bc-cae1fda1a29b.png | Bin 0 -> 68640 bytes .../c929bab0-ece4-43cc-b63b-a0b2c387b633.png | Bin 0 -> 743758 bytes .../ca732f32-268a-4ac7-9831-c805be53ffdc.png | Bin 0 -> 126224 bytes .../db78c3e7-8e41-4097-8f71-30b69eb70e55.png | Bin 0 -> 529063 bytes .../e0df02b1-9d7d-40ac-ba1b-b6f69ae68073.png | Bin 0 -> 184166 bytes .../eae84861-945b-4a2e-8037-f5ccfc92e5d0.png | Bin 0 -> 257010 bytes .../ed4340ad-ee95-47b3-8661-2660a2b0472e.png | Bin 0 -> 257010 bytes assets/external/i.postimg.cc/G2QdqnK6/map.png | Bin 0 -> 630284 bytes .../uploads/images/249721/form/1362301115.jpg | Bin 0 -> 177544 bytes .../github/stars/Azure/PyRIT.42b47dfa.svg | 1 + .../stars/HKU-TASR/Imperio.42b47dfa.svg | 1 + .../llm-hallucination-survey.42b47dfa.svg | 1 + .../LLMs-Finetuning-Safety.42b47dfa.svg | 1 + .../llm-confidentiality.42b47dfa.svg | 1 + .../github/stars/Mindgard/cli.42b47dfa.svg | 1 + .../github/stars/MiracleHH/CBA.42b47dfa.svg | 1 + .../stars/NVIDIA/NeMo-Guardrails.42b47dfa.svg | 1 + .../Hallucination-Attack.42b47dfa.svg | 1 + .../Repello-AI/whistleblower.42b47dfa.svg | 1 + .../stars/RobustNLP/CipherChat.42b47dfa.svg | 1 + .../stars/ShreyaR/guardrails.42b47dfa.svg | 1 + .../stars/ThuCCSLab/FigStep.42b47dfa.svg | 1 + .../UCF-ML-Research/TrojText.42b47dfa.svg | 1 + ...ilbreak-Large-Language-Models.42b47dfa.svg | 1 + .../XuandongZhao/weak-to-strong.42b47dfa.svg | 1 + .../stars/ZrW00/MuScleLoRA.42b47dfa.svg | 1 + .../clearloveclearlove/BadActs.42b47dfa.svg | 1 + .../stars/deadbits/vigil-llm.42b47dfa.svg | 1 + ...tealing-part-lm-supplementary.42b47dfa.svg | 1 + .../stars/euanong/image-hijacks.42b47dfa.svg | 1 + .../stars/laiyer-ai/llm-guard.42b47dfa.svg | 1 + .../github/stars/leondz/garak.42b47dfa.svg | 1 + .../meng-wenlong/LMSanitator.42b47dfa.svg | 1 + .../stars/meta-llama/PurpleLlama.42b47dfa.svg | 1 + .../msoedov/agentic_security.42b47dfa.svg | 1 + ...r_attacks_on_fine-tuned_llama.42b47dfa.svg | 1 + .../stars/pasquini-dario/LLMmap.42b47dfa.svg | 1 + .../prompt-security/ps-fuzz.42b47dfa.svg | 1 + .../stars/protectai/llm-guard.42b47dfa.svg | 1 + .../stars/protectai/rebuff.42b47dfa.svg | 1 + .../stars/safellama/plexiglass.42b47dfa.svg | 1 + .../github/stars/sail-sg/AnyDoor.42b47dfa.svg | 1 + .../virtual-prompt-injection.42b47dfa.svg | 1 + .../github/stars/whylabs/langkit.42b47dfa.svg | 1 + .../external/owasp.org/assets/images/logo.png | Bin 0 -> 11091 bytes .../docs/common/branding_sprite1.svg | 13 + .../docs/common/checkboard.png | Bin 0 -> 188 bytes .../common/material_common_sprite676_blue.svg | 2838 +++++++ ...erial_common_sprite676_gm3_grey_medium.svg | 2838 +++++++ .../material_common_sprite676_green.svg | 2838 +++++++ .../material_common_sprite676_grey_dark.svg | 2838 +++++++ .../material_common_sprite676_grey_medium.svg | 2838 +++++++ .../docs/common/menu_feature_sprite12.svg | 1829 +++++ .../docs/common/revisions_sprite1.svg | 4 + .../unpkg.com/mermaid@11/dist/mermaid.min.js | 2186 ++++++ assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.56dfad97.min.js | 16 + assets/javascripts/bundle.56dfad97.min.js.map | 7 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.el.min.js | 1 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.he.min.js | 1 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.hy.min.js | 1 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.kn.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + assets/javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.te.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.6ce7567c.min.js | 42 + .../workers/search.6ce7567c.min.js.map | 7 + assets/stylesheets/main.06209087.min.css | 1 + assets/stylesheets/main.06209087.min.css.map | 1 + assets/stylesheets/palette.06af60db.min.css | 1 + .../stylesheets/palette.06af60db.min.css.map | 1 + .../index.html" | 1 + blog/archive/2024/index.html | 1 + blog/index.html | 1 + des_sec/index.html | 1 + dev_material/index.html | 1 + edu_plan/index.html | 1 + frame_sec/index.html | 1 + frameworks/index.html | 1 + img/llm_security.webp | Bin 0 -> 360282 bytes img/marketmap.png | Bin 0 -> 216467 bytes img/mm.png | Bin 0 -> 1481426 bytes ...urity_for_ai_market_map-012624-scaled.webp | Bin 0 -> 122196 bytes index.html | 1 + index_llmsecops/index.html | 1 + jailbreaks/index.html | 1 + javascripts/consent.js | 6 + javascripts/feedback.js | 19 + javascripts/shortcuts.js | 5 + job_hunt/index.html | 1 + job_search/index.html | 1 + llm_architecture/index.html | 1 + llm_best_practices/index.html | 1 + llm_blogs/index.html | 1 + llm_books/index.html | 1 + llm_community/index.html | 1 + llm_companies/index.html | 1 + llm_datasets/index.html | 1 + llm_defense/index.html | 1 + llm_frameworks/index.html | 1 + llm_ops_security/index.html | 1 + llm_research/index.html | 1 + llm_study_resources/index.html | 1 + llm_threat_modeling/index.html | 1 + llm_tools/index.html | 1 + llm_tutorials/index.html | 1 + llm_vulnerabilities/index.html | 1 + m1s3c0p3_tools/index.html | 1 + methodology/index.html | 1 + mlsecops_framework_pt/index.html | 1 + mlsecops_frameworks/index.html | 1 + mlsecops_phdays_paper/index.html | 1 + mob_sec/index.html | 1 + pdf/HLAITLR.pdf | Bin 0 -> 4057743 bytes pdf/google_secure_ai_framework_approach.pdf | Bin 0 -> 651536 bytes poc/index.html | 1 + rag_security/index.html | 1 + search/search_index.json | 1 + sitemap.xml | 3 + sitemap.xml.gz | Bin 0 -> 127 bytes source/MlSecOps_Process_Framework.html | 2 + source/resources/sheet.css | 2 + standards/index.html | 1 + stylesheets/extra.css | 134 + tables/AppSec_Cons.xlsx | Bin 0 -> 24134 bytes tables/MlSecOps_Process_Framework.xlsx | Bin 0 -> 41358 bytes tables/frame.xlsx | Bin 0 -> 237410 bytes tables/rasch_tt_cc.xlsx | Bin 0 -> 12019 bytes web_sec/index.html | 1 + ...\261\320\276\321\202\320\272\320\270.docx" | Bin 0 -> 17228 bytes 313 files changed, 27231 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 CNAME create mode 100644 CTF/index.html create mode 100644 Courses/index.html create mode 100644 DevSecOps/index.html create mode 100644 FTE/index.html create mode 100644 HowTOBEContrib/index.html create mode 100644 Labs/index.html create mode 100644 MlSecOps/index.html create mode 100644 TEO/index.html create mode 100644 appsec_plan_func/index.html create mode 100644 assets/external/avatars.githubusercontent.com/u/120268163.fe356448.png create mode 100644 assets/external/avatars.githubusercontent.com/u/129667548.fe356448.jpg create mode 100644 assets/external/avatars.githubusercontent.com/u/145837283.fe356448.png create mode 100644 assets/external/avatars.githubusercontent.com/u/38507289.fe356448.png create mode 100644 assets/external/avatars.githubusercontent.com/u/38857203.fe356448.jpg create mode 100644 assets/external/avatars.githubusercontent.com/u/55030430.fe356448.jpg create mode 100644 assets/external/avatars.githubusercontent.com/u/76488689.fe356448.jpg create mode 100644 assets/external/avatars.githubusercontent.com/u/99257179.fe356448.jpg create mode 100644 assets/external/fonts.googleapis.com/css.0159f15c.css create mode 100644 assets/external/fonts.googleapis.com/css.49ea35f2.css create mode 100644 assets/external/fonts.googleapis.com/css.8c9ccb55.css create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJkLpynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl-pynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl0pynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl1pynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl3pynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl4pynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl5pynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl6pynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJl8pynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlGpynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlhpynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlkpynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJllpyk.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlmpynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlnpynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlopynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlqpynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlrpynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlspynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlupynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlxpynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/googlesans/v61/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIJlzpynSEg.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/i/short-term/release/googlesymbols/close/default/24px.svg create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOiCnqEu92Fr1Mu51QrEz0dL_nz.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOiCnqEu92Fr1Mu51QrEz4dL_nz.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOiCnqEu92Fr1Mu51QrEz8dL_nz.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOiCnqEu92Fr1Mu51QrEzAdLw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOiCnqEu92Fr1Mu51QrEzMdL_nz.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOiCnqEu92Fr1Mu51QrEzQdL_nz.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOiCnqEu92Fr1Mu51QrEzwdL_nz.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51S7ACc-CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51S7ACc0CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51S7ACc1CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51S7ACc2CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51S7ACc3CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51S7ACc5CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51S7ACc6CsQ.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TLBCc-CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TLBCc0CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TLBCc1CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TLBCc2CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TLBCc3CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TLBCc5CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TLBCc6CsQ.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TjASc2CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TjASc5CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TzBic2CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1MmgVxEIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1MmgVxHIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1MmgVxIIzI.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1MmgVxLIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1Mu51xIIzI.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1Mu51xLIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmYUtfABc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmYUtfBBc4.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmYUtfBxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmYUtfCBc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmYUtfCRc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmYUtfChc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmYUtfCxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4mxK.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu72xKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEleUlYIw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2 create mode 100644 assets/external/github.com/RiccardoBiosas/awesome-MLSecOps/assets/65150720/236cd3f4-bce8-4659-b43f-8d4002df65a5.png create mode 100644 assets/external/github.com/user-attachments/assets/0079c134-be60-42b0-afaa-a5df9bb7ece3.png create mode 100644 assets/external/github.com/user-attachments/assets/0adcabdf-1afb-4ab2-aa8c-eef75c229842.png create mode 100644 assets/external/github.com/user-attachments/assets/2cc30071-7ec2-4f09-bf80-29d6b1a008ba.png create mode 100644 assets/external/github.com/user-attachments/assets/367a50da-c93d-4c91-a69f-9a6de8d48f91.png create mode 100644 assets/external/github.com/user-attachments/assets/434c0ee3-d8c9-44fe-a842-e31f8b51f2c7.png create mode 100644 assets/external/github.com/user-attachments/assets/43a56dad-ddad-4097-a57e-aa035247810d.png create mode 100644 assets/external/github.com/user-attachments/assets/596da613-0169-41d6-b06b-69986d722a3a.png create mode 100644 assets/external/github.com/user-attachments/assets/82d8895d-0a8a-4383-ab7e-5890fc568bc7.png create mode 100644 assets/external/github.com/user-attachments/assets/8ce8400b-804b-4ce0-9241-30ad5b42b55f.png create mode 100644 assets/external/github.com/user-attachments/assets/90133c33-ee58-4ec8-a9cb-c14fe529eb2f.png create mode 100644 assets/external/github.com/user-attachments/assets/9f366c92-3e5a-4375-b967-ac35801151c1.png create mode 100644 assets/external/github.com/user-attachments/assets/a0b7bbd1-d262-48f3-a111-820e5dd350b0.png create mode 100644 assets/external/github.com/user-attachments/assets/a57330be-461f-48c6-a547-cc19bef9bbab.png create mode 100644 assets/external/github.com/user-attachments/assets/bd971212-bde9-4d2e-98bc-cae1fda1a29b.png create mode 100644 assets/external/github.com/user-attachments/assets/c929bab0-ece4-43cc-b63b-a0b2c387b633.png create mode 100644 assets/external/github.com/user-attachments/assets/ca732f32-268a-4ac7-9831-c805be53ffdc.png create mode 100644 assets/external/github.com/user-attachments/assets/db78c3e7-8e41-4097-8f71-30b69eb70e55.png create mode 100644 assets/external/github.com/user-attachments/assets/e0df02b1-9d7d-40ac-ba1b-b6f69ae68073.png create mode 100644 assets/external/github.com/user-attachments/assets/eae84861-945b-4a2e-8037-f5ccfc92e5d0.png create mode 100644 assets/external/github.com/user-attachments/assets/ed4340ad-ee95-47b3-8661-2660a2b0472e.png create mode 100644 assets/external/i.postimg.cc/G2QdqnK6/map.png create mode 100644 assets/external/images.stopgame.ru/uploads/images/249721/form/1362301115.jpg create mode 100644 assets/external/img.shields.io/github/stars/Azure/PyRIT.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/HKU-TASR/Imperio.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/HillZhang1999/llm-hallucination-survey.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/LLM-Tuning-Safety/LLMs-Finetuning-Safety.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/LostOxygen/llm-confidentiality.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/Mindgard/cli.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/MiracleHH/CBA.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/NVIDIA/NeMo-Guardrails.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/PKU-YuanGroup/Hallucination-Attack.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/Repello-AI/whistleblower.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/RobustNLP/CipherChat.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/ShreyaR/guardrails.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/ThuCCSLab/FigStep.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/UCF-ML-Research/TrojText.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/Unispac/Visual-Adversarial-Examples-Jailbreak-Large-Language-Models.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/XuandongZhao/weak-to-strong.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/ZrW00/MuScleLoRA.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/clearloveclearlove/BadActs.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/deadbits/vigil-llm.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/dpaleka/stealing-part-lm-supplementary.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/euanong/image-hijacks.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/laiyer-ai/llm-guard.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/leondz/garak.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/meng-wenlong/LMSanitator.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/meta-llama/PurpleLlama.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/msoedov/agentic_security.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/naimul011/backdoor_attacks_on_fine-tuned_llama.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/pasquini-dario/LLMmap.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/prompt-security/ps-fuzz.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/protectai/llm-guard.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/protectai/rebuff.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/safellama/plexiglass.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/sail-sg/AnyDoor.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/wegodev2/virtual-prompt-injection.42b47dfa.svg create mode 100644 assets/external/img.shields.io/github/stars/whylabs/langkit.42b47dfa.svg create mode 100644 assets/external/owasp.org/assets/images/logo.png create mode 100644 assets/external/ssl.gstatic.com/docs/common/branding_sprite1.svg create mode 100644 assets/external/ssl.gstatic.com/docs/common/checkboard.png create mode 100644 assets/external/ssl.gstatic.com/docs/common/material_common_sprite676_blue.svg create mode 100644 assets/external/ssl.gstatic.com/docs/common/material_common_sprite676_gm3_grey_medium.svg create mode 100644 assets/external/ssl.gstatic.com/docs/common/material_common_sprite676_green.svg create mode 100644 assets/external/ssl.gstatic.com/docs/common/material_common_sprite676_grey_dark.svg create mode 100644 assets/external/ssl.gstatic.com/docs/common/material_common_sprite676_grey_medium.svg create mode 100644 assets/external/ssl.gstatic.com/docs/common/menu_feature_sprite12.svg create mode 100644 assets/external/ssl.gstatic.com/docs/common/revisions_sprite1.svg create mode 100644 assets/external/unpkg.com/mermaid@11/dist/mermaid.min.js create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.56dfad97.min.js create mode 100644 assets/javascripts/bundle.56dfad97.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.el.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.he.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.6ce7567c.min.js create mode 100644 assets/javascripts/workers/search.6ce7567c.min.js.map create mode 100644 assets/stylesheets/main.06209087.min.css create mode 100644 assets/stylesheets/main.06209087.min.css.map create mode 100644 assets/stylesheets/palette.06af60db.min.css create mode 100644 assets/stylesheets/palette.06af60db.min.css.map create mode 100644 "blog/2024/01/31/\320\273\320\270\321\202\320\265\321\200\320\260\321\202\321\203\321\200\320\260-\320\264\320\273\321\217-\320\270\320\267\321\203\321\207\320\265\320\275\320\270\321\217/index.html" create mode 100644 blog/archive/2024/index.html create mode 100644 blog/index.html create mode 100644 des_sec/index.html create mode 100644 dev_material/index.html create mode 100644 edu_plan/index.html create mode 100644 frame_sec/index.html create mode 100644 frameworks/index.html create mode 100644 img/llm_security.webp create mode 100644 img/marketmap.png create mode 100644 img/mm.png create mode 100644 img/security_for_ai_market_map-012624-scaled.webp create mode 100644 index.html create mode 100644 index_llmsecops/index.html create mode 100644 jailbreaks/index.html create mode 100644 javascripts/consent.js create mode 100644 javascripts/feedback.js create mode 100644 javascripts/shortcuts.js create mode 100644 job_hunt/index.html create mode 100644 job_search/index.html create mode 100644 llm_architecture/index.html create mode 100644 llm_best_practices/index.html create mode 100644 llm_blogs/index.html create mode 100644 llm_books/index.html create mode 100644 llm_community/index.html create mode 100644 llm_companies/index.html create mode 100644 llm_datasets/index.html create mode 100644 llm_defense/index.html create mode 100644 llm_frameworks/index.html create mode 100644 llm_ops_security/index.html create mode 100644 llm_research/index.html create mode 100644 llm_study_resources/index.html create mode 100644 llm_threat_modeling/index.html create mode 100644 llm_tools/index.html create mode 100644 llm_tutorials/index.html create mode 100644 llm_vulnerabilities/index.html create mode 100644 m1s3c0p3_tools/index.html create mode 100644 methodology/index.html create mode 100644 mlsecops_framework_pt/index.html create mode 100644 mlsecops_frameworks/index.html create mode 100644 mlsecops_phdays_paper/index.html create mode 100644 mob_sec/index.html create mode 100644 pdf/HLAITLR.pdf create mode 100644 pdf/google_secure_ai_framework_approach.pdf create mode 100644 poc/index.html create mode 100644 rag_security/index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz create mode 100644 source/MlSecOps_Process_Framework.html create mode 100644 source/resources/sheet.css create mode 100644 standards/index.html create mode 100644 stylesheets/extra.css create mode 100644 tables/AppSec_Cons.xlsx create mode 100644 tables/MlSecOps_Process_Framework.xlsx create mode 100644 tables/frame.xlsx create mode 100644 tables/rasch_tt_cc.xlsx create mode 100644 web_sec/index.html create mode 100644 "word/\320\237\320\273\320\260\320\275_\320\276\320\261\321\203\321\207\320\265\320\275\320\270\321\217_\320\262_\320\277\321\200\320\276\321\206\320\265\321\201\321\201\320\265_\320\262\320\275\320\265\320\264\321\200\320\265\320\275\320\270\321\217_\320\261\320\265\320\267\320\276\320\277\320\260\321\201\320\275\320\276\320\271_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270.docx" diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..36c5f3a --- /dev/null +++ b/404.html @@ -0,0 +1 @@ +
Уязвимые приложения и платформы, которые доступны онлайн
Учебное пособие по безопасности приложений является частью сервиса IBM AppSec Champion Service. В нем описаны основные шаги для быстрого создания программы Security Champions независимо от размера компании и зрелости существующих процессов безопасности.
Согласно определению OWASP, чемпионы по безопасности - это "активные члены команды, которые могут помочь принять решение о том, когда привлекать команду безопасности". Они выступают в качестве основного элемента процесса обеспечения безопасности в рамках продукта или услуги и выполняют роль единой точки контакта (SPOC) в команде.
Основные преимущества наличия команды чемпионов по безопасности: * Масштабирование безопасности через несколько команд. * Привлечение людей, не связанных с безопасностью. * Создание культуры безопасности
Первым шагом в запуске собственной программы Security Champions является определение масштаба проблемы существующих команд, с которыми вы будете работать. Поскольку мы стремимся к лучшему охвату и распространению безопасности, очень важно записать ее и хранить в общеизвестном и доступном месте. Раунды интервью 1 на 1 с владельцами продуктов и руководителями инженерных отделов будут хорошим началом для этой деятельности.
Типичные вопросы, которые вы хотите задать: - сколько команд работает над одним продуктом - сколько разработчиков работает в каждой команде - какие технологии (языки программирования, фреймворки) они используют - где хранятся код и документация - какие автоматизированные инструменты и внешние/внутренние сервисы используются для разработки и тестирования - каков в настоящее время процесс проверки кода (включая проверку кода на безопасность) и кто в нем участвует - существуют ли другие виды деятельности, связанные с безопасностью продукта, помимо проверки кода - каков календарь релизов / цикл / текущая стадия развития продукта - каковы наиболее часто используемые каналы связи для продукта - как обычно сообщают о проблемах безопасности / ошибках в продукте, и кто этим занимается.
Результатом этого упражнения должна стать страница во внутренней вики с таблицей, например, следующего содержания:
Продукт | Команда | Технологии | Контактное лицо по безопасности (если есть) | Руководитель команды | Менеджер продукта | BTS | Комментарии |
---|---|---|---|---|---|---|---|
Продукт1 | Alpha | Python, Django | Джон Смит | John Smith | Анна Новак | HELO | Использование инструмента Bandit |
Основная цель этого шага - выработать осязаемые цели и подготовить четкие описания ролей для будущих security champions. Частично это уже сделано на предыдущем шаге, но подробное описание построения глобальной стратегии безопасности AppSec выходит за рамки данного руководства - пожалуйста, обратитесь к существующим фреймворкам, таким как OWASP SAMM, который предоставляет простой и понятный способ достижения этой цели.
Когда программа AppSec и глобальные цели определены, важно выделить виды деятельности, которые больше всего подходят чемпионам по безопасности, и соотнести их с этими целями. В зависимости от текущего состояния безопасности в вашей организации, это может включать некоторые или все нижеперечисленные действия: - проводить и/или проверять обзоры безопасности в команде - охрана и продвижение лучших практик - поднимать проблемы для оценки рисков в существующем и новом коде - построение моделей угроз для новых функций - проводить и/или проверять автоматическое сканирование - расследовать сообщения о багах - участвовать в научно-исследовательской деятельности
Итак, роли определены, теперь пришло время назначить чемпионов! Чтобы без проблем пройти этот этап, вам необходимо сначала получить одобрение от руководства на всех уровнях - от топ-менеджеров до владельцев продуктов и непосредственных руководителей команд. Несмотря на то что это классический "подход сверху вниз", это очень важная часть, поскольку она гарантирует, что худший аргумент, который вы можете услышать: "У меня не было времени на безопасность", будет устранен. Проведите презентацию определенных ролей, преимуществ для команды и примерного времени, которое чемпион будет тратить на выполнение задач по безопасности - для начала достаточно 20%.
После того как одобрение получено, следующим шагом будет определение потенциальных чемпионов. Сядьте вместе с менеджером команды, выберите кандидатов и проведите мини-интервью с каждым из них. Помните - это не назначение, а выдвижение! Опишите роль, ожидания и стратегию, а также покажите им личные выгоды от того, что они станут чемпионом: * саморазвитие и способность по-другому смотреть на вещи * повышение своей ценности на рынке * повышение качества продукта * посещение конференций по безопасности * стать важной частью мета-команды безопасности * весело проводить время :)
В худшем случае попросите менеджера команды помочь вам найти чемпиона - хотя, вероятнее всего исход будет в лучшую сторону и вы получите security champion после первой презентации.
Последним шагом здесь будет официальное назначение - добавьте его на мета-страницу команды безопасности, заменив промежуточное "контактное лицо по безопасности" на "Чемпион по безопасности".
Назначенные чемпионы не могут работать сами по себе, и лучше всего, когда они действительно чувствуют командный дух. Поэтому следующим шагом будет создание коммуникационных каналов. В зависимости от корпоративной культуры это может быть, например, следующее следующее:
Чем больше, тем лучше, на самом деле - просто убедитесь, что есть простой способ распространить важную информацию и получать обратную связь. Кроме того, периодически устраивайте синхронизацию, чтобы посмотреть, как идут дела, и вместе скорректировать краткосрочные цели. Для начала достаточно встреч раз в две недели.
Главная идея: внутренняя база знаний должна быть основным источником ответов на вопросы, связанные с безопасностью. Помимо страницы мета-команды, которая позволяет любому человеку быстро найти нужный контакт, следующие страницы окажутся весьма полезными: - Глобальная стратегия безопасности - Четко определенные роли и процедуры безопасности - Лучшие практики безопасной разработки - Рекомендуемые криптоалгоритмы - Описание общих рисков и уязвимостей - Парольные политики
Особое внимание следует уделить простым и легко выполнимым контрольным спискам, поскольку это, как правило, самый простой способ начать работу. Примерные контрольные списки могут включать следующее: - Контрольные списки по веб-безопасности / мобильной безопасности - Контрольный список безопасности сторонних разработчиков - Контрольный список безопасности пользовательского интерфейса - Контрольный список конфиденциальности
Хотя создавать все с нуля может быть утомительной задачей, существует ряд проектов с открытым исходным кодом, которые могут значительно облегчить вам жизнь. Проекты OWASP такие как Security Knowledge Framework, ASVS и MASVS, а также лучшие отраслевые практики (например, CERT secure coding standards) станет отличной отправной точкой для повышения вашего KB и может стать основой для первых нескольких внутренних семинаров.
Для того чтобы экосистема чемпионов по безопасности была непрерывной и успешной, очень важно постоянно поддерживать их и предоставлять обучающие материалы. Ниже приведены несколько способов поддержать интерес чемпионов и помочь им развиваться как профессионалов в области безопасности.
Периодически проводите семинары для команд, объясняйте стратегию, пропагандируйте лучшие практики, или просто делитесь последними новостями из мира безопасности. Организуйте интерактивную викторину, объявите "Хакерский четверг" или начните "Месяц ошибок". Поговорите с чемпионами и вместе решите, какой формат вам больше всего подходит. Независимо от того, какой формат вы выберете, это, вероятно, самый важный момент во всем Playbook. Поддерживайте их мотивацию, и очень скоро вы будете приятно приятно удивлены!
Делитесь свежими новостями в области безопасности через установленные каналы связи (например, Ezine weekly appsec compilations). Кроме того, начните ежемесячные информационные бюллетени по безопасности, содержащие новости от команд, планы, благодарности за хорошую работу и любую другую актуальную и интересную информацию - это не только привлечет чемпионов еще больше, но и станет хорошей контрольной точкой для вашей программы безопасности. программа.
Создайте отдельное пространство в вашей внутренней вики и добавьте туда специальные страницы, такие как: - календарь конференций (начать здесь) - библиотека хороших книг и статей по безопасности (начало здесь) - слайды с посещенных конференций (или начало здесь) - "комнаты для идей и улучшений"
Создайте местное отделение или присоединитесь к существующему, и приглашайте чемпионов учиться и делиться опытом! Это еще один отличный способ пообщаться, встретиться с коллегами и обсудить актуальные проблемы, новости и идеи.
Открытые знания движут миром. И одной из важных миссией этого ресурса - является предоставление знаний в области Application Security. Мы открыты к тому, чтобы любой заинтересованный человек мог сделать вклад в этот ресурс. Это может выражаться в обновлении существующего материала или его доработке, а также в разработке/в публикации новых статей.
При написании статей или дополнении имеющихся материалов, следует обратить внимание, что к публикации не принимаются правки и материалы, несущие в себе следующие особенности:
Для начала необходимо, чтобы вы имели аккаунт на Github, а также базовое представление о его работе. Наш ресурс работает на MkDocs и мы должны придерживаться его гайдлайнов и принципов. Рассмотрим подробнее. Перейдя в репозиторий КиберОрды в GitHub - CyberORDA github, вы можете увидеть следующую структуру.
Для нас имеет значение директория "Docs", которая содержит в себе все документы и статьи, которые загружены на ресурс.
Каждая статья написана в формате Markdown и имеет некоторую структуру:
При написании новой публикации вы также должны использовать его, поменяв теги на те, которые считаете необходимыми.
Заголовки являются необходимым элементом при построенни текста. Они могут разделять контент. Мы используем жирные заголовки:
Будтет отображаться как:Жирный заголовок
В основной части пишется всё необходимое содержимое статьи.
При написании текста можно применять форматирование:
Пример:Будет отображаться как:
Жирный текст
Или вот:
Жирный текст
Пример:Будет отображаться как:
Курсивный текст
Или вот:
Курсивный текст
Тут мы можем импортировать картинки:
 - картинка по центру.
+
+{ align=left } - тег для указания положения картинки.
+
+{ width="300" } - тег для указания размера.
+
к примеру:
{ align=center }{ width="200" }
+
Даст нам вот такую картинку
Однако вы можете также использовать html на странице для загрузки контента:
<img src="https://images.stopgame.ru/uploads/images/249721/form/1362301115.jpg" alt="Орда фото" width="200" style="display:block; margin:auto;"/>
+
Для загрузки картинок вы можете использовать postimages.co, либо скопировать сразу в github.
При составлении контента вам может быть необходимо реализовать таблицу.
В коде это будет отображаться вот так:
| Name | Author | Description |
+| ---- | ------ | ----------- |
+| [APISandbox](https://github.com/API-Security/APISandbox) | [APISecurity Community](https://github.com/API-Security) | Pre-Built Vulnerable Multiple API Scenarios Environments Based on Docker-Compose. |
+| [Bookstore](https://tryhackme.com/room/bookstoreoc) | [sidchn](https://tryhackme.com/p/sidchn) | TryHackMe room - A Beginner level box with basic web enumeration and REST API Fuzzing. |
+
Этот код разделяет таблицу на 3 столбца их может быть больше. Дальше, используются разделители контента для формирования значений в ячейках.
На сайте это будет отображено вот так:
Name | Author | Description |
---|---|---|
APISandbox | APISecurity Community | Pre-Built Vulnerable Multiple API Scenarios Environments Based on Docker-Compose. |
Bookstore | sidchn | TryHackMe room - A Beginner level box with basic web enumeration and REST API Fuzzing. |
Мы включили плагин для использования html в markdown. Вы можете подгружать контент с YouTube или других ресурсов, которые предоставляют эту возможность.
После того как статья была вами создана, необходимо предложить изменения в GitHub.
Для этого необходимо создать файл в директории docs:
Далее внести код markdown файла со статьёй, которую вы написали:
После этого требуется осуществить предпросмотр и нажать на "Commit Changes".
Далее необходимо предоставить краткое описание того, что было сделано, и сделать push.
.
После того как вы предложили изменение, мы рассмотрим вашу статью или правки и опубликуем их в основной ветке.
До встречи и удачи!
Name | Author | Description |
---|---|---|
APISandbox | APISecurity Community | Pre-Built Vulnerable Multiple API Scenarios Environments Based on Docker-Compose. |
Bookstore | sidchn | TryHackMe room - A Beginner level box with basic web enumeration and REST API Fuzzing. |
crAPI | OWASP | completely ridiculous API (crAPI) |
Damn-Vulnerable-GraphQL-Application | dolevf | Damn Vulnerable GraphQL Application is intentionally vulnerable implementation of Facebook's GraphQL technology to learn and practice GraphQL Security. |
Damn Vulnerable Micro Services | ne0z | This is a vulnerable microservice written in many languages to demonstrating OWASP API Top Security Risk (under development) |
Damn Vulnerable Web Services | snoopysecurity | Damn Vulnerable Web Services is a vulnerable web service/API/application that we can use to learn webservices/API vulnerabilities. |
Generic-University | InsiderPhD | Vulnerable API with Laravel App |
node-api-goat | layro01 | A simple Express.JS REST API application that exposes endpoints with code that contains vulnerabilities. |
Pixi | DevSlop | The Pixi module is a MEAN Stack web app with wildly insecure APIs! |
poc-graphql | righettod | Research on GraphQL from an AppSec point of view. |
REST API Goat | optiv | This is a "Goat" project so you can get familiar with REST API testing. |
VAmPI | erev0s | Vulnerable REST API with OWASP top 10 vulnerabilities for APIs |
vAPI | roottusk | vAPI is Vulnerable Adversely Programmed Interface which is Self-Hostable API that mimics OWASP API Top 10 scenarios through Exercises. |
vulnapi | tkisason | Intentionaly very vulnerable API with bonus bad coding practices. |
vulnerable-graphql-api | CarveSystems | A very vulnerable implementation of a GraphQL API. |
Websheep | marmicode | Websheep is an app based on a willingly vulnerable ReSTful APIs. |
VulnerableApp4APISecurity | Erdemstar | This repository was developed using .NET 7.0 API technology based on findings listed in the OWASP 2019 API Security Top 10. |
В этом разделе мы с вами можем рассмотреть, какие opensource решения и PoC существуют для выполнения задачи по защите ML. Конечно, некоторые из них являются не поддерживаемыми или будут возникать трудности с запуском, однако не сказать о них - большое преступление.
Инструмент | Описание |
---|---|
ModelScan(sast) | Защита от атак сериализации ML-моделей |
NB Defense(sast) | Безопасность Jupyter Notebooks |
Garak(dast) | Сканер уязвимостей LLM |
Adversarial Robustness Toolbox | Библиотека методов защиты ML-моделей от состязательных атак |
MLSploit | Облачная платформа для интерактивных экспериментов с исследованиями состязательного машинного обучения |
TensorFlow Privacy | Библиотека алгоритмов и инструментов машинного обучения с сохранением конфиденциальности |
Foolbox | Python-инструментарий для создания и оценки состязательных атак и защит |
Advertorch | Python-инструментарий для исследований состязательной устойчивости |
Artificial Intelligence Threat Matrix | Фреймворк для выявления и снижения угроз системам машинного обучения |
Adversarial ML Threat Matrix | Карта состязательных угроз для AI-систем |
CleverHans | Библиотека состязательных примеров и защит для моделей машинного обучения |
AdvBox | Инструментарий для генерации состязательных примеров, обманывающих нейронные сети в PaddlePaddle, PyTorch, Caffe2, MxNet, Keras, TensorFlow |
Audit AI | Тестирование предвзятости для обобщенных приложений машинного обучения |
Deep Pwning | Легковесный фреймворк для экспериментов с моделями машинного обучения с целью оценки их устойчивости против мотивированного противника |
Privacy Meter | Библиотека с открытым исходным кодом для аудита конфиденциальности данных в статистических алгоритмах и алгоритмах машинного обучения |
TensorFlow Model Analysis | Библиотека для анализа, валидации и мониторинга моделей машинного обучения в продакшене |
PromptInject | Фреймворк для составления состязательных промптов |
TextAttack | Python-фреймворк для состязательных атак, аугментации данных и обучения моделей в NLP |
OpenAttack | Пакет с открытым исходным кодом для текстовых состязательных атак |
TextFooler | Модель для атак на естественный язык в задачах классификации текста и логического вывода |
Flawed Machine Learning Security | Практические примеры "Ошибочной безопасности машинного обучения" вместе с лучшими практиками безопасности ML на всех этапах жизненного цикла модели машинного обучения от обучения до упаковки и развертывания |
Adversarial Machine Learning CTF | Задание CTF, демонстрирующее уязвимость большинства (всех?) обычных искусственных нейронных сетей к состязательным изображениям |
Damn Vulnerable LLM Project | Большая языковая модель, разработанная для взлома |
Gandalf Lakera | Площадка для CTF с инъекцией промптов |
Prompt Airlines | CTF, котоаря похоже на Gandalf |
Vigil(dast) | Сканер инъекций промптов и безопасности LLM |
PALLMs (Payloads for Attacking Large Language Models) | Список различных полезных нагрузок для атак на LLM, собранных в одном месте |
AI-exploits | Эксплойты для систем MLOps. Тут не только prompt injections. |
Offensive ML Playbook | Руководство по наступательному ML. Заметки об атаках на машинное обучение и тестировании на проникновение |
AnonLLM | Анонимизация персональной идентифицируемой информации (PII) для API больших языковых моделей |
AI Goat | Ещё один CTF для LLM |
Pyrit(dast*) | Инструмент идентификации рисков на Python для генеративного ИИ |
Raze to the Ground: Query-Efficient Adversarial HTML Attacks on Machine-Learning Phishing Webpage Detectors | Исходный код статьи "Raze to the Ground: Query-Efficient Adversarial HTML Attacks on Machine-Learning Phishing Webpage Detectors", принятой на AISec '23 |
Giskard | Инструмент тестирования с открытым исходным кодом для приложений LLM |
Safetensors | Конвертация pickle в безопасный вариант сериализации |
Citadel Lens | Тестирование качества моделей в соответствии с отраслевыми стандартами |
Model-Inversion-Attack-ToolBox | Фреймворк для реализации атак инверсии модели |
NeMo-Guardials | NeMo Guardrails позволяет разработчикам, создающим приложения на основе LLM, легко добавлять программируемые ограничения между кодом приложения и LLM |
AugLy | Инструмент для генерации состязательных атак |
Knockoffnets | PoC для реализации атак по краже данных модели методом черного ящика |
Robust Intelligence Continous Validation | Инструмент для непрерывной валидации модели на соответствие стандартам |
VGER | Фреймворк атак для Jupyter |
AIShield Watchtower | Инструмент с открытым исходным кодом от AIShield для изучения AI-моделей и сканирования уязвимостей |
PS-fuzz | Инструмент для сканирования уязвимостей LLM |
Mindgard-cli(dast) | Проверка безопасности вашего AI через CLI |
PurpleLLama3 | Проверка безопасности LLM с помощью бенчмарка Meta LLM |
Model transparency | Генерация подписи модели |
ARTkit | Автоматизированное тестирование и оценка приложений генеративного ИИ на основе промптов |
LangBiTe | Фреймворк для тестирования предвзятости LLM |
OpenDP | Основная библиотека алгоритмов дифференциальной приватности, лежащая в основе проекта OpenDP |
TF-encrypted | Шифрование для TensorFlow |
Инструмент | Описание |
---|---|
Databricks Platform, Azure Databricks | Инструмент управления и внедрения данных в data-lake |
Hidden Layer AI Detection Response | Инструмент для обнаружения инцидентов и реагирования на них |
Guardian(sast) | Защита модели в CI/CD |
Инструмент | Описание |
---|---|
ARX - Data Anonymization Tool | Инструмент для анонимизации наборов данных |
Data-Veil | Инструмент для маскирования и анонимизации данных |
Tool for IMG anonymization | Анонимизация изображений |
Tool for DATA anonymization | Анонимизация данных |
BMW-Anonymization-Api | Этот репозиторий позволяет анонимизировать конфиденциальную информацию на изображениях/видео. Решение полностью совместимо с решениями для обучения/вывода на основе DL |
DeepPrivacy2 | Инструментарий для реалистичной анонимизации изображений |
PPAP | Анонимизация изображений на уровне латентного пространства с использованием сетей защиты от состязательных атак |
Инструмент | Описание |
---|---|
lintML(sast) | Линтер безопасности для ML от Nvidia |
HiddenLayer: Model as Code | Исследование некоторых векторов в библиотеках ML |
Copycat CNN | Proof-of-concept о том, как создать копию сверточной нейронной сети |
differential-privacy-library | Библиотека, предназначенная для дифференциальной приватности и машинного обучения |
Вы можете найти тут перечень ресурсов, которые помогут войти в тему безопасности ИИ: разобраться с тем, какие атаки существуют и как они могут быть использованы злоумышленником.
Полноразмерная карта с кликабельными ссылками
больше в книге Adversarial AI Attacks, Mitigations, and Defense Strategies: A cybersecurity professional's guide to AI attacks, threat modeling, and securing AI with MLSecOps
Тут мы приводим полезный список ресурсов, которые посвящены конкретному вектору атаки.
Полноразмерная классификация тут
🌱 Сообщество в сфере ИИ-безопасности растёт. Появляются новые блоги и исследования. В этом разделе вы можете найти и ознакомиться с примерами блогов в даннойобласти, но это лишь малая часть, их намного больше.
Очень интересные статьи по уязвимостям MlOps инфраструктуры. В некоторых можно найти даже готовые эксплоиты.
Тут мы не стали переводить описания, так как могут возникнуть проблемы с пониманием.
PoC | Описание |
---|---|
AgentPoison | Official implementation of "AgentPoison: Red-teaming LLM Agents via Memory or Knowledge Base Backdoor Poisoning". This project explores methods of data poisoning and backdoor insertion in LLM agents to assess their resilience against such attacks. |
DeepPayload | Research on methods of embedding malicious payloads into deep neural networks. |
backdoor | Investigation of backdoor attacks on deep learning models, focusing on creating undetectable vulnerabilities within models. |
Stealing_DL_Models | Techniques for stealing deep learning models through various attack vectors, enabling adversaries to replicate or access models. |
datafree-model-extraction | Model extraction without using data, allowing for the recovery of models without access to the original data. |
LLMmap | Tool for mapping and analyzing large language models (LLMs), exploring the structure and behavior of various LLMs. |
GoogleCloud-Federated-ML-Pipeline | Federated learning pipeline using Google Cloud infrastructure, enabling model training on distributed data. |
Class_Activation_Mapping_Ensemble_Attack | Attack using ensemble class activation maps to introduce errors in models by manipulating activation maps. |
COLD-Attack | Methods for attacking deep models under various conditions and constraints, focusing on creating more resilient attacks. |
pal | Research on adaptive attacks on machine learning models, enabling the creation of attacks that can adapt to model defenses. |
ZeroShotKnowledgeTransfer | Knowledge transfer in zero-shot scenarios, exploring methods to transfer knowledge between models without prior training on target data. |
GMI-Attack | Attack for generating informative labels, aimed at covertly extracting data from trained models. |
Knowledge-Enriched-DMI | Enhancing DMI (Data Mining and Integration) methods using additional knowledge to improve accuracy and efficiency. |
vmi | Research on methods for visualizing and interpreting machine learning models, providing insights into model workings. |
Plug-and-Play-Attacks | Attacks that can be "plugged and played" without needing model modifications, offering flexible and universal attack methods. |
snap-sp23 | Tool for analyzing and processing snapshot data, enabling efficient handling of data snapshots. |
privacy-vs-robustness | Research on the trade-offs between privacy and robustness in models, aiming to balance these two aspects in machine learning. |
ML-Leaks | Methods for data leakage from trained models, exploring ways to extract private information from machine learning models. |
BlindMI | Research on blind information extraction attacks, enabling data retrieval without access to the model's internal structure. |
python-DP-DL | Differential privacy methods for deep learning, ensuring data privacy during model training. |
MMD-mixup-Defense | Defense methods using MMD-mixup, aimed at improving model robustness against attacks. |
MemGuard | Tools for protecting memory from attacks, exploring ways to prevent data leaks from model memory. |
unsplit | Methods for merging and splitting data to improve training, optimizing the use of heterogeneous data in models. |
face_attribute_attack | Attacks on face recognition models using attributes, exploring ways to manipulate facial attributes to induce errors. |
FVB | Attacks on face verification models, aimed at disrupting authentication systems based on face recognition. |
Malware-GAN | Using GANs to create malware, exploring methods for generating malicious code with generative models. |
Generative_Adversarial_Perturbations | Methods for generating adversarial perturbations using generative models, aimed at introducing errors in deep models. |
Adversarial-Attacks-with-Relativistic-AdvGAN | Adversarial attacks using Relativistic AdvGAN, exploring methods for creating more realistic and effective attacks. |
llm-attacks | Attacks on large language models, exploring vulnerabilities and protection methods for LLMs. |
LLMs-Finetuning-Safety | Safe fine-tuning of large language models, aiming to prevent data leaks and ensure security during LLM tuning. |
DecodingTrust | Methods for evaluating trust in models, exploring ways to determine the reliability and safety of machine learning models. |
promptbench | Benchmark for evaluating prompts, providing tools for testing and optimizing queries to large language models. |
rome | Tool for analyzing and evaluating models based on ROM codes, exploring various aspects of model performance and resilience. |
llmprivacy | Research on privacy in large language models, aiming to protect data and prevent leaks from LLMs. |
Название | Возможности безопасности LLM | URL |
---|---|---|
CalypsoAI Moderator | Фокусируется на предотвращении утечки данных, полной возможности аудита и обнаружении вредоносного кода. | https://calypsoai.com/ |
Giskard | Система управления качеством ИИ для ML-моделей, которая фокусируется на уязвимостях, таких как предвзятость производительности, галлюцинации и инъекции промптов. | (https://www.giskard.ai/)[https://www.giskard.ai/] |
Lakera | Lakera Guard повышает безопасность приложений LLM и противодействует широкому спектру кибер-угроз ИИ. | https://www.lakera.ai/ |
Lasso Security | Фокусируется на LLM, предлагая оценку безопасности, продвинутое моделирование угроз и специализированные программы обучения. | https://www.lasso.security/ |
LLM Guard | Разработан для укрепления безопасности LLM, предлагает санитизацию, обнаружение вредоносного языка, предотвращение утечки данных и устойчивость к инъекциям промптов. | https://llm-guard.com или https://github.com/laiyerai/llm-guard |
LLM Fuzzer | Фреймворк с открытым исходным кодом для фаззинга, специально разработанный для LLM, который фокусируется на интеграции в приложения через API LLM. | https://github.com/llmfuzzer |
Prompt Security | Предоставляет подход к обеспечению безопасности, конфиденциальности данных и безопасности во всех аспектах генеративного ИИ, не зависящий от конкретной LLM. | https://prompt.security |
Rebuff | Самоукрепляющийся детектор инъекций промптов для AI-приложений, использующий многоуровневый механизм защиты. | https://github.com/rebuff |
Robust Intelligence | Предоставляет AI-файрвол и непрерывное тестирование и оценку. Создатели базы данных airisk.io пожертвовали это MITRE. | https://www.robustintelligence.com/ |
WhyLabs | Защищает LLM от угроз безопасности, фокусируясь на предотвращении утечки данных, мониторинге инъекций промптов и предотвращении дезинформации. | https://www.whylabs.ai/ |
OWASP SLACK
Следующие каналы:
Страна | Название документа | Краткое описание | Основные направления | Ссылка |
---|---|---|---|---|
Россия | ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ. ТЕХНИЧЕСКАЯ СТРУКТУРА ФЕДЕРАТИВНОЙ СИСТЕМЫ МАШИННОГО ОБУЧЕНИЯ | Ссылка | ||
Россия | ПНСТ 848-2023 Искусственный интеллект. Большие данные. Обзор и требования по обеспечению сохранности данных. | Ссылка | ||
Россия | ПНСТ 847-2023 Искусственный интеллект. Большие данные. Функциональные требования в отношении происхождения данных | Ссылка | ||
Россия | Оценка качества систем искусственного интеллекта. Общие положения. ГОСТ Р 59898-2021 | |||
Россия | Информационные технологии. Интеллект искусственный. Оценка робастности нейронных сетей. Часть 1. Обзор. ГОСТ Р 70462.1-2022/ISO/IEC TR 24029-1-2021 | |||
Россия | Системы искусственного интеллекта. Способы обеспечения доверия. Общие положения. ГОСТ Р 59276-2020 | |||
США | Biden's AI executive order | Указ устанавливает новые стандарты безопасности ИИ, требуя от разработчиков мощных систем делиться результатами испытаний с правительством. | Министру торговли поручено разработать руководство и лучшие практики по безопасности ИИ в течение 270 дней. Подчеркивается важность безопасности и беспристрастности систем ИИ для национальной обороны и критической инфраструктуры. | Ссылка |
США | FTC: Keep your AI claims in check | Ссылка | ||
США | FAA - Unmanned Aircraft Vehicles | Ссылка | ||
США | NHTSA - Automated Vehicle safety | Ссылка | ||
США | AI Bill of Rights | Ссылка | ||
Япония | Relaxing copyright for AI training | Economic growth takes priority over regulation | Ссылка | |
Великобритания | AI white paper | Principle-based approach, decentralized governance | Ссылка | |
Китай | Rules for GenAI services | Extraterritorial scope, content monitoring | Ссылка | |
Сингапур | Voluntary AI Verify system | Self-assessment against principles, global alignment | ||
Австралия | AI ethics framework | Voluntary principles, considering stricter laws | Ссылка | |
Евросоюз | AI Act | Risk-based framework, banned uses, standards for high-risk AI | Ссылка | |
Международный | ISO/IEC 42001 Artificial intelligence — Management system | Ссылка | ||
Международный | ISO/IEC 22989 — Artificial intelligence — Concepts and terminology | Ссылка | ||
Международный | ISO/IEC 38507 — Governance of IT — Governance implications of the use of artificial intelligence by organizations | Ссылка | ||
Международный | ISO/IEC 23894 — Artificial Intelligence — Guidance on Risk Management | Ссылка | ||
Международный | ANSI/UL 4600 Standard for Safety for the Evaluation of Autonomous Products | Addresses fully autonomous systems that move such as self-driving cars, and other vehicles including lightweight unmanned aerial vehicles (UAVs). | Includes safety case construction, risk analysis, design process, verification and validation, tool qualification, data integrity, human-machine interaction, metrics and conformance assessment. | Ссылка |
!2-@gy(ybb|V#|pGQWs0P(WuJ* zm-ktkhxII-+eoo7=+Z4eUlPZo7#73l2g{Hc<;KyUK+HfWKJprrV8^&u#)qNT_tEg& zkgq?L3J{VQ8mIO8yxXJCsm5(vL(bzdBmy;wCE>u`NhZ*bi%I0>F>`6DK2BJ5w4qgX zy9{|;kJrj*^I5 (Kb{E8G~HfL>cJmD0G<1a%wopJ8(1i$eZ> zCgvHK7f;Z0NY_$&;xy>Va5Dtr>rhkFq{%x1Mvg%+N7RywDBhf(0K!AkmVEt`)r5uP zYFu3TSj|NNUn;_JAbA8DP)Fc&Qg)kmIMQ50jT2f@Yx0nDDBto_N Q(ohxP>lVO z^Ut4W3!}OOj&q)BJe$CDwv8_9_3Fwv@YUBp!VqMwv)BVQW~AVXa4sXdPJspt>I5PJ zkw3XV(R#j_FEH^13ISgUri V{Q16dlTpi2sE_2M%Jy!+KftqhW zX?o^^C=`Cjf{H(zfZmw&x!lRxgj@1 eD)7&g%^jmh1H_1-#gx z`u-YA4~j3Qu(#e$LgPd4?kn#f#Y?Zh+v07z38dqn8=8IXc6p04>;JRLK-<3juY~un zeGNAwW$HIoAyf>$$C*?8?RrA)O&E=aPt?2}6^{3uKlLDbYap*M;dIqQAI0SAKeXs| znamK2mBvdGaT{R`)vJN N0Xv(O>GMHkR3 zW3Y_-lZ``HV1E)Sy#MVV>laRu#pl{L{|mQ1```W8l{ouYJ^LFRySx9o|85T-hvWmG z|9aQVe>z@Nxs$)9|K1nAfi54npZIzrc Db)DQbgldPrX1`|EDZ(w;wftB0y1b$DmZxQ zb8GgL=PDL&W|Wfe@h~X=`Wp#P 2>9DwU+8 z!Du&3!LUye?4h(U3``M*WEccy_}XoeR`rTR0-(U@K3|6nsI5-BYGU}kNk$?yQI{(d zh07%Wz01VFOV&OP^PgXDI|g)h#mEgRcx>DUX^B*PeFX-$-XLj7_CtMCLIj#^mV!km zPa6Z9$KJJ+ggODm0tmQP9*c`<>EwjZqV>yq)vDzI8SGA3RY%K|#;C)h5nb&_%C;N* z8J*kPWUyszn!^VNpx+s(AN6{hx~%|T`+aXT9Lo~W4f??}C_&e#iLrmh#dnf%7nNnn zKqgD6zV~oytkA}a1TPSaKgZndPERN4_w@97KqXdA``vdk7V}to%ieL t&Go=?6<@# zXK%Xq1UG+srt8_WwN-LozYGf*w>>o<=T&`GUisu7<|7K_vq6mCKAFdrM=6zf^2X$9 zzMgd1^v5p@HJ=ex+^pn%$)6wr4yn`;%o6Zh1iY;)9>0*#=l3J<2-&&@TDvk3H#&@8 zdr#iPkEQ?ZF!7Y?lvCx5Qs&a)!&A5s$F-_6%U=FV7U#sGf=JX*d-+8M$>X=i^iL9p zP!JW1qXJ>{8RhAiLN=*QIq_xk!;2SRQtY$F_q&Ir3g@}~kHEgumz}d+b1vC$x=-%3 zwpdzrk-r-0pZE{*`8%p+-iXee8M|>uezjF4IKH!Zd4+stuT0uMQ(oC8c<}!MW!qKR z2bH%g%ipQ0`ntTL7 sZzWxN{_5n0$znBi6bQEX$(!DJfhkbynl~I^YeUE$eBg5J9HFQn z66Zu^f89panQM-bDcs@WQgf7Ys+_05wz~S9Qz0F4SJzjR@50HKCo0<}$rQ2EE^)ML z-^LEm% cV)SAGMrKi?=g|E5o`Z{;G8q8{gA&$JHpS((uUR7jC;m+Yq5ShJ@xbKA zZDXLh&^42!!r^r{RD0!eQ#2ApF9nw~vOTs$qa_&bwAkvMgo?9=o*sVZ$l)WMpqT|) z&_)HFD)BSYuQFj9Oer^NHCsap#GAG|7{A>@`)sP_>79)1gek}oUSF%pUT~mip4 Z^4r?6Yy$eGVNV($7+R17H^Wa$e$TKTeHhk;^|&S+L=0NLg3hV% zS#wym=sjZfZN0b4RoxS&s%Ovj0UUb){^0{Thr5yXkTKTrPh%`-nD^cbH|EQS)@drW zjQkHx*5vcgnN5;uG=v}#3`0U8^d5#$WK2cY? >%ak=kM&7DSOSic2|&V6OLv@e pTUdh%D zAK8=t$$bniC-H!#wb{CoVQec~n(wuQ$yp{16led(x<*qngSknS2xDDjfgZTqA2ze1 zpldXQ5zMAqz$-sc`~d5iy*1B`baZfAw&rHHrQ6d>J^sbnYyyRa7eDdNs|a)*xf3MV z*|xgz_d~Cvv8RHrHFa$)SUcUG>wOg+9o)$F{44?1QTge%; NKk qTC zE(3AOHYNM^@%-L1q3DLm6Q;1~L@f%h=BzU#k?cnH7U8SAd^IPQ!^ &`F$o=Aj?kuVR+J6 oa zf)X(B@BJkQ(*Zv{a8jT_9FCxRRqV-C&m_!qwghLM-}k5j(*`LGSRq2^g=?vx2E`~0 zj;8#T2(}E&{f*&%@ZUE1LlIS|>SK}M LXma(PYH`Nyy|8Tf1G5 2BIXDwl7N5D z!G&vcBAEa20ecW&6|m^>Te>wQeSwGWF<}(`DlNS{%E<@^hZ~Y+^(_8@;kL<_{|nGf zfxqB_%1?cjl+1{lEvCmXL&V`WGiKYpn1(^IPk*MR7Z0SRdV5-<3mZ@!wX$fYGifoI zm;w&6eON%gzW)9+lkO8;9Gw7xKVg>SN+SvJ%e2d4r2-}^Nm=Dr!&$Xf8D{R{?Il7X zN6uu-J6zU$qY>PONQp;BgkczwXP=`8>h}fD2XM=+1Bds5QsuQuGo!~@tKFQdCA>*1 z rBxcYPE8xF`|d{!Bs`->NOw?Ho6IOv$n7u!@_o(JpvS|Ez|GTXin<&*V4*!;8Rz& zkzcPgrLHn#ahSO}!bPM-XGVk}#Odgia(l>UG)l>C2`V5FOe5Ztwy(?O?Q5aq2I$G> z?CWY{jDd2gI!Q7BPG!*3f46}6zOCoP` 4X9@M{ nT@?b*z4e78NF5!lN+igzhP3K^(9z*sQ#U(wR z0m{l~u#f@M`j 3V--|O#A}rGupzG z#S|i~;(Sq!QmybLZ}IjJx~#^UGgxv?hqboR45mQDB_n6}6pTyLRFj={rT-bwy?pI> z{a2e5llm%6454F9HY- c5ky^S#t=EScMhXi095zQcGa|R_MIv6Ii(66QhVX!gvdOK|)ojM)qvIOk9 zN~gIJU!m2k!m)p9v@5_*uIzAY*lJ8&X0G1oBodOf&+>yXE=gsbP8bKQUbWFk`fWsh zunjVqH+ uJm*O7 l}y6645eST^DB9W0WfPXhUfQ7%|xThH-%;y0$eIPai$b-&<#-+P# zRoN&yyT$Gm!>{Se-nOMfrTsf#Qvj3N$Nn |3ftnO`I)#hPy1LVM%aM2BPI$lS n@C4CO8+ToXBa7&FROHVUU%TCQuA(qsSx6^@As z&g`>jkqX}^!cfC*L%j>P>`!IB=}k*3a@|ZvRm8{aaga0ftx5uX(EuMm(x(=5sx#MH z>c|pSj|ycqYk7w=AL8sJuKF`)xtzN7j#Rk-FQeO1*`>Ro&k4GP_%3`ezG koWtW+wg?NZ+-)yMl(J!eu!5|QG()*Yh xq*-$-61wp=j8MAfJgCuZHC8xC)})KQUqrl2fFrHd8bIcuhTsSGs;dmv0Es9 zFDrg0Bhv(vKrnvc_W;U&69|UVDIK^EH{cpv t6)fJI|yCNP$n2Q3YU5~3!|#sTy|5KREA zU?eJ(!~5ee%K&IP0Y !!8d@*}3WL+pGq~{U+{Dbn%Er#Y$;HjXnZXk`4%>pv|!dk04+ zXBYP)B3CF?YK>N>HyBMylqyrMLM5K6FjH9WxDp+ofRO(GDkdQ%Bd4IGqNbq*L!dA? z9X$hrk%^gwm5rT)lZ%^&S2Z8MhNhObj;@}*fuWJHiK&^ng{76Xjjf%%gQHUvT|h*$ zjIfofn>!4SKmsT<28+YT{|J!;dXOnp8lAypu{m5G-_y$*#c+b8Xolr@0g95WsG4q= zmhHG+0eb})Al91&NW&Ol?R2|9;82*_;F6-EaN{S!5SDO+CxWYmHABo|4)a)mn$j9T z&;!Kv8(aT1aL^%#o#`w`9CgeIC!KP(bK37*2L}uEzxh%7ZN ;wSXT>yuVLW*c=~f zE#l-|yT|wO;@C@prvA{bxIVJ4RMqo4ZLr%$d#v5rt)#aSr8?xhy0Nz*pG)3Vd>Ia{ zvz0*OZ~i5qO$>hL w2}24Fu^R6$gD0D=?|2nvGgM1rdY3xx~-0X7081Bw&`AO(bG2d4xK z2OF*M2k@K;?|QR}0)kt8z#4Xo`Q0tGtBjCdBLlfzfP_^4oU;G_lak4ZyIr|$Q;HWr z%-s>zGs8qhD(@(as=`zvvoIhJ)dLw2!e|LQ78y>} s=W z&e#aEXiouvE=;)aCMgOXp;zkb`hS3eS2fL OyIR&!eg*@c{@e7w+{kGL0s{n(khbtrQ(J8Q zVyAVGfR=2Zj&LZe7?@|MeIgIx&0%U?MBdwAs;EkEdUh#fx5K?q5NV)L0s>$*AOL|t zGspfr05s-Jnl|l5LX)o!Xgssl_kX6V()tuaEtq*r9c!4g@b H z_@!2<`>PO0j1fJIcgz|usaryH3&!kvX07wlS(_T;g6LA01RGuuUY1^v9(?u7lxq4Z z?vVY;A37B`V50CsZpR&Tbx2Uy$bgzcQv+o9$KUJh8~?PdpS()uGPaT+P3P@;>{k-h zjz?iTrXv^y&yzRZdN=5zVa5T5RR27Y#KHhW4#WfV7y}M4Kwn25kRI6IXMHCkErSVS zNJqXq$B9ROyc0*^{RxLQm~SHD;w`kL4A!)`y4Kd?2xjMPsUL>emO|XqLtia_`oes& z^jx1CMd9S7AqHb9gxcLBK2Q`8BF@Z7c2Z!4isq-y{|lo@+?}X5bAWghAZkx~{#5 z*ozezQg@K__uFG^)dpTfy;0nvMC%NEUwdcY&T!&i&pZN2h*;6Ei}l_Al@JJW0DyxC z9uNvdfdYi%ghIm&g@-nfw%Vd-uRSC~1|*XeMXr2EfdUj=bcJ-&9Yvu+NRc8GHa5sG z!yqG!fQ&L0GTCIveDfg-QwK#84NBbN2E`*fDBdxk#5cYu;S-ON z;Ti(OSX;*bkki?Gzm;l%n43Zq7#$Y#3deq2p=9u) 5Eyp%%Jq&uQKD+%Dgy&%UKG&=b@;&N#Q0NSiB4k)-qazA-i zJR=>{K!8ZENqnviJhP>JFR5GH2y%5XLL%w=Q{V$4{^5xGp|Zby;SZnoZG)@r=Rw55 z{)2rIepo=nx5$D2!98G}xc34TunE?*FM|=ck#~_>{&ok-y#Pw13tWP@N?!~RhZ{ns zjwo_i30jIoRZHTwAZaUb8Fy$`5uqe;aWpHwm>?2bkw7rKx$e|n19AJ?wF!Vx3;=D! zDL*3Hm7sm@50L@(QV@2ru=z22CQOF0diVkZp*M7e_S7<@RMQnqvRcj{2&etosar4N z+9viM^^H8 `YZ#*#j3vccG% z;b^o5`c5%7MoqX{-4*ri7g{Yxs|)Hvb+_U`35r5~JEuWrNDIj!A;j+StK8*%UkC==XabfAn`V{6I5Kv|Pq{rY>EZ=J87@9@64W!<+F%ipJu1@5M=OOw@$ zI99z45dAaHmpa3qB43Fz^XH&IH@fvjd!dAXEelYyZuTir%Q8p6YBO%C9TBXRlXlQ0 zgP^EEPNY%j+aMRZ-daOPzt#IHr`93Zd-%GRR(bKrsAy}~T^kJa=2^C{C!WQ;ge4<2 zK~XX*v)Rq)Ai|^>C~M!^&H&f(HGZj&YdPb00iMg$rmrVisEK8!hdD!Y4j(^X*~LA* z>be%#7fyl(zDm|wj)s=TK~$Ih>wvf75a=#(B_dJE{;W 2>IP_NDT5{eXFJ0!+???b4!TFc;*e=3Z5ExG zbv+s0=<&gTA13?vTgN>d`?Kjc0f8|wM(>AO^uOpCouh3ukA|OWL$agY%j{E}VRMwU zlKmnT;| QPu?`0C@F}D!LhjjvCxugg&0( zvOtL!;JZE!QgmqU&-ZfvjP`YDzH#=YT;MKThl|yxx73J7!G3nKIj#-uEhmv#cn@T= zUwymh26lmWJR=!g>N}?&56@muYC4Mtxrxp2Ch!)w1<4(<&IK2MH~lmYhPL@B%a3u1 zC_;lzMDGH4{+IdLOfh*rgSR~AVYq#~w+lSyImu!6`t8d3)wA( QoG+4_^hFznv2@la}NpBsPA6y=RhIe>%o)*8(Y4{-*Hj_`>n^ zrrqPyaAU#lak0#WdP% GaLb8c->Js9$Q)8kJdhjq!PeERs~J3z2FoaUe6PR4?&qOMU6|LvEhy6FxFji}Fd> zOQ;=DwW*qXRk>F#9fDr4zmLD}-vj&7KK6Ho2m3l?Q;auH`~9lKw`*3ZZFqOS+DG>j zGPuQ^@SB@8E|+Syn^_%zy>{Po0oV)Y^lItefIS |*PyT381T1#JDBW4zmA%2hzDdEn9@>0yKRA8DH*wi((u1Nqq-^M<-)ILlc z@oH+nfQF}jBEe_K!w8jDrbIZ{9VK@tCs6QB7gAMj4b-l3@JLvuE$nLJhfbyD^TsXu zUprF-&xFl*d#PRpe-Zb{L$xkYu0={0zgVJ-LDg%L0qbNjNaL$_C30?0+-Z7Q8JctW z=y{r5+#{1$7ATjk_$q0T^wgomiApJ!tt$<1(4aWbF?k#5)8yQyfxanQoe3Q)P19U) zJZw_#8GxN!3d*Bin1wf**aOF&~31+H#x_IE(zz&)~1 zTfL;Oofa?1Yy{`{AQq&^zVguVRdaH}ji23V5cbESA?$x9G+_ykB@u}vLI~?x)wlap z_cji~f&7h7js{#?tzi8PfOB(gw0CdU(RF@*b2xijV0YZzugCr4Yn*pFb` 5x>abUuqZYrFR1Kk*gR`itXgF (H9z1}OE1e+z{Bqg7mXzi~b~X~A`P3Xv1o$I~1Z0$Q$r*%Us>C_K zfWi$yq4Tb!KvJGh }rW`JFp0VB8|_P0fiX|69Sieu#izu z>2>N!dYn6>9@P0x4?#&nM2d?*!UbXx1e-v{2xP1vtP#jsLAWB2#{zj?O`_Df?~UU0 zhzrov=oV8=%QK{^K-vhxd_ma12SSqw(A2enk+{@_jrBnE<5P`l#$9*#ZkExm6CiDp zUg!JuqX;&0-V(O9+9~@?=YioFI`TB==yUt?D>mGC6O@^2ULXWd=BuEI6cllSkSv6x z2qaxFv=W5Y0vRtTrU^o+V3;ci^8~V7&} bs-A;BZ*xAiuXUEx@{kj_#F%DCnMHC!bIW;ko zkwUk=IH3cI7~dNvMTQ(jfJva@K0hVZgVr$$`l~+E3i3_=q(s$p>?lflzOE7)PnMqq z)vwzR4Ju!Er~ `oVACO8uk zG=QmozJd670fGbzWf37tj5rCBq)5|JYi+fcAxlR&y@=hpf3WU)>a8!pljlP^;y82R zO6x`DNf@|70FeG6waSDnUWJLjD@X{a$252|@-^tj+wu3Z_pteT`IvJVuQE0 ~i`$RuMDjpiGH0pY9?P-6Enq8gcC_@n@F`qt-yt=zA>Jym^QKp@* z-c!v8#(o^}m?lysi3ek-$Z1(MdKD07_fLUnplbqg0lMXo5!bLozH5nw)tXW4_&{^F zP^B`W4Q(1TrdB3w5`Ac6j#ksIU!KUK@P;J(${yJpT0f3qiVbT;6Nk-pIbJ#9=OwfF zKKdgZ)%G5%j-iuR3?;7_nw_3uk(jCG991vZxY;@~9*n&>Xf8t4FQu!+w%TU9oentY zkh9LY;FjAy_@hRH#^8}fQQzs!Dy+^%4B?gCA_Nynf3S)WIT0eIw*J!}amp)iz4KRf z#-VbA?UiqgY(_Wf;gIsxyMew&N&L+_lyNaV&rjNArK))nrNzLclpu-pP!>$ll17i4 zgO#%?a+9We2vWChqMD)f?_0nUORcoYu2AC~&^*Y)iE=Q!q+6upB9Fg5#UU pKF|H|({Gjj%XpNdqx@ZpGh{-Ogmhk15GiotZoXhhe3L{%;cCys zF#Ew}R;EXr<{Ed+D3MoVb)mGPGws}LBkl?YtuOPUa~8BI$uG@vY#DISttD&T2P8|N zk+41Xc8#Jx&@jk-W 7M%@dF+X2UVG!cx{N`B3RES5Y*_fqib`^oc}9%WB|;JEB=z;5dDPZWRgxFVNb1n4 zNljTnR!Uq%P}3W(xAuzV!U_lH$rg}0Y5bT`tEs%luPL %{_76oTxrc<~F1W*2WKt_QmLWH1+5QQN| z93cskNl4Y2f`t}xve+_eE3Krl&Sq}5+OC-$_R%}w5R)U$;azY=gln#gb<=I}?zu0? zBTuAw=DBpQe9+1dKV|ssuPoJSSk Dt5OG<% zbE2r@v aVJQTnm^@eL-tr7~8dcLaRKvsv`a4qgB` zGDD28><`Zyu1CaEr-`tKZP8QBHp@L9pDCV9lyygN(Yf%&efX@M=bJP0{H|p_d^w%x znKSY{b4E@NMG{d2j q5J5g{KSz%D7oqJ%) zpE_EKHY 8$4?@r}X&kSKAZ7^7Bhd&XULYv~X(NzAfh tVnvKF!hfm8@&zd#Nz zN6x!EiL0)O8*Yd@?&9&!k#NK_63c*t9tX!dcrFrCF9axTmZEHuIK)A4agyU`_0iRV z!jD_=DkSkEKrJpF8LH3hL;4-}9zY12S5Jb_^47vSEyK<8d^K4lgz|WZvon$983a-o zToabudFW)6G{S9L%u_6oyrWwIh;|9h%`i}66_ntl=!SFssjrae!9~QGX0!j k`mRsjYk4vZK!7Hxzx9(%l`>3IH>NN=$hpF9Gl%wJT zqKadT?Klr{Zd=P=f<$Rgg)MvRqr=aF*f5FSd9YH$Q=p@K7TH>oS)&6W_LKWD2@onw zIE!fU52=^7$SSL?vDSK9RM_vl3thWx*5&s-@Nf`MJiWb-KKtsMUuQxmM~6o1QJEWw zFM?Z*`e{hu& 65ur@KFWjqXfbs$Xs+Sv$_I81v(_*5K3pH(KQNKp$! zRy$0Gv>9czF~%m!tIh(77@}Pu>ZlT0n`d9y! 1m&NKvzB`o~))oUm1w@k5E z{*uKwBa)qdpd>8*47_NjoH+KVP%Wb3AmURaVxtmCsdP=41lM<=A{7ZDEMhk_A} >Sn*PiOS1f2!6AvXbaKId$#xQy34T&6}Uc{^GBsNP`N{#F> z)o!F(KVC!sQ?f>&QbhSXx3&LbWd7Xwhr*0=yiSr{al$(h>wQa-7m2js_8hZYnZ~$E zLHEo#R(|%RLZXEU*Oq`Xxodl`cX8A-zZAf&V?te7#zo@B4k5}B@`~rMGtH1tkS9Lh&w}_ zNDsLsB2HXQwW*&}OdF} -c%rV<6GtDsFG*eA6*(BqQGu9ZRjWW^*!woZ( z&A dA)g^d8K)UdAWI+ zd8v7cd2wXXS^|q{C@g5qz_`hTEks<~)b7@CgQl*)yP~Ug2OK}dL+GHUR@Y$D*hmK9 zsw{GBrVP!FR$iKt16mJd4F=HBl>?O7u3PHMj^4|`2d?=iI7nFdyp*{2c8Aks$-bBi z{~rUcG$Z`Z7(4|){?|o7!W>ayF63WdWLBiZo45)h=<&=XL4hTnUmUgaTMOm{YaBJ8 z=h7TFyQ22y (mc=zda}jQW7TAAIUT9p%KK}{UIFqrW zsXX7LV^VT@U5nNo`v#+VjlKQNvHD*WuoeaF{@KRuqaRPrY-rWCOaE}!-nFFo59_o4 zra6Dsv<|LjfsOh8`TJTwU;n|kgO{g=o2!eH&9@cs?F;bW{_P?k!*|$;b@&2&)srzW z8f*|2IWiD*9IgOFQUK^^pgTamJ2 `@&Z7ioJ|xo)khRkAd6h&L_||fKxaam z6X&&jiqV7sfzlX~ux8LjluFz+nn2fpq}VmfHYGx=L@>F8P6Vh$C8_v}a#K9Yl;T(^ zXZmPNbWrXQse!t2tqiOU5~e$ziY5Vw5(rHtPEjl?vbshpT3Ve6v&=*#jxi%9Y@i++ zN1NK2TE{3Qk(Sq5N(riTsoGGtWXP<=*q)_l#E~gNOy%_i1Dx%{_2c71mJ`UB!^j3l zr&;C}UgGYULov&i8>7+B#+1P(XSW_fXkiP6LQ^n(MoQFz_wUD`l+wwEX&RPlCDuqB zQMr3y@7|HzDs&V|?o7H1Q3pp(MWnf$keQXU3^!H{rpN7guO1OvwoIgqvXS=jTNJvB z7qLVFWH1XGaN5i=P9M)ShfOifrKaT&ljfL_%+6x3?z*1~I#^7YrpvP#PuV_q*$CR* zAM=A|xucJ@3!8OjXHk}yZ8Rm`@Dd{>)d%P3>`<{UvZ+iTcgAJ5l8S9)2dOImJ=F%e z7yf^7RC0Fui!8NCle$e+RH>8|Rl-10sfw!2Jyp!ggk`O?v6ih8UDhSE!KBBO_Yx=N z>SNl%tjje1^fIeVFLcXYW>U@@3@B{YKG 5 zH j#@U-=0op{MTq-dgt}>1xNj!%+AXCnuL<)y>6PMVd*$+ z?R-|X;jgBxn#Do5xNdzGzsS$Clah%akaEaEP8Ob_JmrtjWMQ7M$8M5UB2FJef4b)k z)sc7hc(0L*h!zb~-a_*fyZu8^W>F((lH@6zz~s9b%!>JREoZ9C%4mW10=}NFyFXDx zasgCFKCAt2r==N+q@~4E9ZI1kPE%=)XcCi|xVaF1H#fZqRZBBRx8T})$tq8EDdl7Y zN^4gnyNj;DWhYFwnP%*h)vgq6wZ(qAS+ &%?k^8@TILvF)nYpSNr_m2yc{jIa_b-Z7`-RD)@Q*f}Nk$- H2h0)mS!DDH E@BG#Fs8e};GGH#k! zL9O)ocDD73L;k06O<}G2XFScI{zX7$eW&o>B0oz3idFwva8e8+3?|E0m84W5HWkkj z{ZG$wwQ_82Qd=X=I785x0UHW6Jr*#-yVTusKpM{q{MCL@5sTkx2BKaUyEe$G^nqlm zv6X@hNK5NG+_O}tfw7K@gU6Q5Z3U_)OnP#U3=8OR*{a+KiCeNoxVT$^=j5zj^OnL` zs=OK9&h0Lg=gDxrMl1k#>D!AJdHkGSF9P>Oa5*vry@uK@vwFnB1}9@*VLdyYl{jUR z4F;fyUDX^cdqF&`1;j}y8p{=HvSLBi0a#}?yyh~!*xqhn7}Z~(CdG9!m;;g)MdWKv zKSPIH@X7w#`*2<5E}P9HnaUAQ+c2j|Yr<9ElMe zV+5mOYJoJug|3C`S1?_ml>Yeqbat@P+qKt^@y?^1^mX3Q4q|TdFQt=?gV4Om%8;0zY+*Y^Y&7Y)^%0}QA5@g9HCZ+z_wC~lSv@<68Rm&C5 z6sw)X%bjHd@qN6ZzX%=u1cy*1Vx0!Us|FFS#e4V584f{HMx_?@H6S{bk1Ju1FiN+t zPp@lRp%hE`UMrgYroW7&MjOwj?x2v!K}e2_yR^^wV^L*q{bDg3R3;$Cs9jk|yKTiG z1&5yfGGl)cag_rmD+I$lAehGwgh4FYef8WWFZ7_a?7dd8_)v(7Jv;O+ DJjD>tpuNKKJ&gDAHH>;$8cm%h0Zy)tMo*8^#Wn;bDOgUcP&7@> z7T=tA+ Icq{)Fy3WfQ!9j*4CMzi9iTFQ<7 zvWs`hJYc=*(7=_T-aN+e3j_&|rR`hkws-2RJh%K5+Rw_;wLsN=!WE6O8RjL*`l*T) zyt7ag99d(5R46^?LqE>WO=Zd_Ax}$8^X8{hdn5_Fx5LNOWu}(};?(A;Bw$IOtG4|m zAZw+I7|9+@NX4b+YPE6YYo!Xm{EBX@FX8dZWBAfhWq2rfd-5<*^9C3v=YJ?vQE7q( z{NrcCN7Fx)R{5u4!^JoTKHf{bv+P}2dw71mX)9|m-FU9d<&Pkk2SDoA`gsY>n%7U0 zV W09C(DRXq)qNxtM-;T<>-0~}%WB?={w7BE;@hFh&eAZ3St%NMzxJ4-W`A@mZ z?%!pKFcN4SNOh#mL@-6-j2E}iKW}dy7j8}=b&aBcNDmHw1I`ApjJcprUMU1pDG+DV zAZxijZL(<06mON2ZuZ1rO4gXumUZVjUMAaY0mrfVG&3nIW4Pbb9{@W!u^ OQe%d%$f~n z*L%^Y^x}*NwP&Q`;g2=UQUY`h dHX)rKHw_j9r3HOM3*W zRi5JBjC~Z6Q&+f;S%n;!n`(raniX6qJ{+u@Yo1+3Kx0LyoJVNU=V0n!CvU0fiQ=x% ztbCu5ahLe@01;@&+Rmb8kNfCsQXQBjWSSJh?YHG>X hz_Xb&(Tx$|@6gPvXnQ3` z6v3Af&nOOWlmJr`k_e*lE9k_mq+YgrCkRwLO~#W!+pq;@_^W6vhPAmJJ)Z3RvZ^ z6vRQ|ihRF+<1INZ1saSmy3T)|jlkuuYF=-#La45fZD;&5wtk!0AsnMqmoA*qO z5Hnho*RJp>8A7Xa2Ja|#7lwy3BnuoSSiwv3(Th}!x|;s!_k|-;gIakTbF($wqYN|% zPth+UJ5p~sV=(}%Mz}lErTiTC-Zg5z8r|8wMb>zeTF7o3+FbRAZW9ihUUC(WXPlLd zfYcT?KZc%%)!yVP&PV(-a9osbkZE;Nj5$U;2HJ_MGvGtVIyScv&pRcdA>xkJhJSRd zg-ZXXZ=`Lb#GkiOU?GP!$LIC~ZR@BL5UzihQtkFyQWtbK&7hd@w?YV~7ad*4$_|cT z>a5GXe}8w!{}^JA;(1~mh_2dH-;jgg%lcqE2x92-sY6X_LhWxC<*oW@QNfO)5UU &lk-PZR}elPUW<%j!<2ti&L1-%?zaelKikuXQb*=&@i=3we*)(JPh$< zXKC$HZTbfHda17AoX8PRgI#6egk#bi%qpWhry&76t4`ugnR&`T;py8}_MfRm30*dP z{pVc*M1AJCe&)q|5uz9bs0Wq?WP0M7fRaHB57N^-UrJDo1^Pb52;wJ|EIu`E3-8W8 zA)OY_vQl|s?NQ46;W`HrXS*-h55MkxiExcB2--LJ`t;$c>~-QD_VJKC0pTD}v3zZ` zM;ZcMnBAysi)BfMy9_O7XWT&RaxC+yn96C6?~fJ>)GY?J!j4pq`;ID4TvoibbL#9< zgLx41@1W@)l<*PHNJ1p|b4#O>+%Yv>g}p38vX44?sFfNCV||Kx4VR6Ia;Ggi-VboF z0V^CDR8y>r;9pcj =$at_)&fwY%1M;*q$74X(n!{SCSBCAQHFKM~l_+j?AKW&kFo?YL|HCG`AMOv7(|P za4(#7bV%tY{?odr8YMMHFF;|?AcO 2gGT(yOpI(|}7UO(j8n)aUrm#1f~~A8rr}fcaIPt*l&hHKSRW z;Xe-tvndl?kM>ehZz{$(xmcdCqR4(X`}*ke#ZT$rhCcI%#q}@!dXJ=u-zYVan}fd@ z`n6Gc0YMh3SgYpkC95afpys*g>?>=c$E5)WU0aDXIJFaxvMp2{)vMyi>PWNJt}pVQ z;Y+ZOv&8IrUGJfCsF_wMm|<&WQ4ew7*|Pt2TP6y(>i !1Ne_+2^yT-3P=j^7Yp 6WZ(sr)$-_#^Q9)2DyHxF dz(qWUF#D{=Hu>J$;(Nk5fb@vBI)sg4CQ6nG9q~yiIgRh+BD3YNu Xy`InKk2&jyi1aC2g6O?M*sKo9}F 9r9}7pigcK3nk*~OO7QQ^!Eqk%Oxc7HkvPxatlqfAzf27xcq%QM+_a ``<5}76Cmw%~2}A8ST6H r6?ny|}Qx7G#2(1Xka=2m(czm*)ieGbQ{4s~gmg$}CQa{N zK@U?qN!n(m@+Vt79CAR=c@8~S= zXm@23VW;#n+bIQkELR8zl7TXBx>DE96R*|C&t;iylztn{m1IeE|JJtDtBaNt&pg*V z+1^ImBMllNL``8~+P`gJ&+=#IxO`@v9yUUuc*yF}D-{cM)Cb-4@H_8tvfYi57EFo% zLLW9JrZwS~RQGLbOT99GW%t=vx@PrlOJ+8Ajxx8>$#>+TL6Feq)4OQds)bKH|MCmF zRy;eKYN*e+2spNS*iy27x%%H7b3wxq{Ju93Hn;B;D+opS218a8#2-ohjNjjh0?`P| zFY{*dDH0{!&y&*am;2ZIID&UXqB&eHCv$f4W(ECvy@iWtjR~O=RJhx+1>&aZt7*z} zGC4tR%m9ijG8qiG!9m1qg#I6D<+T~?%49^TQF!?fJ{}aRqm8X`ekHh1VyNdb$H=&6 z&WOUk2<5=Hds2IFtm@!=$0Dy$o|2i3PpQ;5&BP7j4a}PK<23wqxmN-AU^!Wk0xRG{ zY_{$(x%@LTZTFqcjGD|-wfK)E0d-&?i^EM#6r0m~1Rrxr7#r~fz {2aO+RYQPP*f;K?G(?uOlNH*BZ9oM%Q}dyeC6H0hc>Ze2^!^o^_A z%=@F>*(e1NjnsA(PsmAK4dE!OY$hX8C6T_`?; zslr+H@+OB|c+x4j%jW1R_1TQSN?0k5RO4ADO6W^0KC{m7u8f&|f)o1qb-pd7Q6-Ib zQ?jUV;h#!8^;Q^ye2I9FrM?LT5(QziYBK!`R@cwgxKn0>Cg>2N16|o9eZ^MM(i};% zMy2?gIpSv9Pimmv*51A$jcsXn>LNzDMk;ppGD8l;EDkI5N;EDvx>Htpo4djO_|Wj< zPTa$4T~wut>I{n3uHJp~7bR4o5oG6JLrxr#$;L_~zo=ZcQ7YdBEk?t@ZyG64D*ar_ z?Oz#GZ+-7$rZ1lg>7xo|NN3W=^D4V%s;Vb)3U@@XOg+;cYiz=;KdnGX*VSd}_jpWc z8`;l2$pae!Lo);#T8hB2Yr;>r@q*U3>s$!x0g<4q>dbXg1m8}9+DxW42*hHW*}P)l zUW2P)-1;3BV6|-@_7cW^M{ZG6THQI?oB%@wjIkct$`?x2e2DU^-aDtr2FwYm8qvBC zES7%S @yTWnzC%Dr-#A>$T9~>q6~vfxzIX zXsazWgv_RFzaf kbC9ZX=NOn9wH%r>Ra%Gk6-^kz7xrHcXpcMWIzGIqOb| z(I4Y9C5DBadawVhFs;ev0XzjLGU1E0pQsOg$g`#bpf8TO4fb%4f{pk}kpGJrKd_hp zi? E0f&YI zaM&PgVo!anZtY%*J00-{l2{ =Ku-z+xY1buTW4;boKGV@4 zH6U8?Uti*%{!D6cqHoHR{oO1+tWJjA3c5)2sxjz~#QB N%gbfl-jzpxDjCV}T%OOzC zhFIdtC+1k3u`lTlj?6rb7EXzVFHYyqh5N-3bpiL=psUel=nbISDfQ^Ll=NRnXDsN9 zS@a?6xy*&emM-&d>?+1y%RqD^`KtL1zO}_gGuQPda*dHmnIYASG6?N%93EWWLom)} z@9tsA)q3o`19rtKq&@5%n`nDPVXDT^iPir1DoHOtDEOGm!Q`_vf92xV`dLLN!o4=n z(D-n3?Eom^&lFG^$`#0C*LVOT7r_c|vOY`QzKaqM2mSTYAV>C|Gng#Mo7J~cUb>WS zH|SU x&BuWH%{rWA|)11*HH To6pMX0!ghbJ z+1Unq9i2UPANj|h?D(0 zW -RtX(H zRFhMB`Hqkt%!Sd@*lXga*mcyloU->m!z0z`f>|l $fJ6PLo zp4a{JviWG=aHde&Kv7Oq9)vt(3+vUeu8b;7t9S&1CW =Wh}Mc-+lMXcQnv@V zqC_s}kR0Z)c&wV=%LM2uWu3|^6nhljLIQW7TMY{(pj;sX5uvs)e 2e7s za~KH@T}qDQ@wiiIAR>`Na kDKth+o(={pZnaHnpm{M=EoX_0`o%qZ3e z?XL16lJS5_mGkUjIa^UnlX7T}u9l;RzCitvjr;#H_t3;`JP+oPzVfBf(u1p7!F!gX z8jR#QdkuO>uYjh0EfdDH%15@SjPq*a7uij}tM*K_fL`N=h*)EO1KyU@D3B#39zZ9$ zzv=la$csD#7bNfmXTNH=vcKMzQEO8ct0tLM+w4!dh1F`&ruJlOOgpO6k7%_cdflkI zFLS{L!o66&(!chxDldW0tEETTWTi&sNq#8O_=OR%DH0BP_^k6U^Ete?!R`?`xJd=E zU{T#i4+RVBMilBp#&8<)PKIY+n?Wiwq!3Tt9xC-09-Dhz3X4$cQyB7HjrM-2fH++O zeIN`=AlAAKB>D+D^HUZp&SsvdqkqBT@13oKUv@OwT!FBSU;Z~ffZ75fCv)$&Jbs8y zl`?53R*QXKddRpVX*tA7@yNHC0#|8=Nbx0LBCp#(VtqzuTxLEilbmzkN^8gp zMN*-dg8S-t1j-3 YMf-Da%Si$?}RYy%+E9!MBVCMHG&$4DAuD|eT zIKDKSMVBwnHBPKa4^@xO>S&)iwTt)KC-gWoP`ToFQu;>&IgPup#1L1iqk4lnvalL} zn3C0?S4Ybm5>kQmF1$Egia;tKmn?r(r_dd_YVohJ)c-o+KeYBc8ukB+*dLPiZ*+iL z{8zwy@T`ebX~6u%D@q)-8lK~r;x*C}GC<#=Qmru6wEcp-NF|?anF`JW>~p-C=T`>1 z@@Z$qIEiJP9R`Q1Z=YNbr*F+c@Y4yV|!Qy_KcWT-gG1GAv1}WJ|OfryrhKUjSRhx}smsS?WpHd*FR?muiEx zJPV5C!pppZWgoUrsk)@q-3CHtILWl-3xZ$~y#g` xMd_0xfUx z)qEfV jhRK_*x4^|y;M z2sDz1ZOsUv4+sxxJ!p$EYuJX}G*3)uOYh^;pA)R)3v@c{T?|qMtYirQ*3(&=EaOIz zQ54prh3NVJHq$}6OOs#6#{h1CeLQ}2h> dISrbB`sz5@Nb9QtmoO&`lhffEJD-^eSl$3tlUIrwF@Ehp23^k5Ks2jPKi zBM0O1H*&Q(Bj)I(uPlyftTATitKozZ%*SCQ9fLH+Pzl1L9+gPvY1p^aKuF1*!Q=Oc zB&w`n*3yQftA~%{2t{uv;B0b7tx+T=+(6T5ENKIEYQczQlnf}%K&)V3wb=mF^9&(Q z$J09XTs!IL-Ob#Z%mykxBZ1_;o DK;LqOECea7ehJ$Vt?FKqrI zL%0w{`I=87|6MdCZ#=C>Tkfd>DyVwbWryHygR`j=68*GxP)~hA!D~;clyQC_UX*#@ zza2I~UMz{Q)E|Z)oJdK(*{%uAydep}?0Uh66Le9zDx}fSsDZo+;l}#QuV~(yv*i^j ztcN&z Sw-p{340(MB3RPXdP7MCsPCdD7SZae#?U=Wv3Ekt^a$Fwk%RZLnmdka^ zLMy$+`A<$u|4^|wI0XI=dkJGrw!rZ}bP(G60#qc+VywxphWKZXS`!w4iK$_Od5;;| zhi9rnfBkSpJ4}Bt3z@J#T2mGR%95FLahnw?G^;%G5 (Irb5p&^ zPX-fn>g;Hb{Nif?^TFe$n B ziuD;ftE@r(=|)v#=&}@D)z0REpKHrY^oT}OdR;Xaehxrkpl@hDM_yl*l)S!47Ytw4 z1nyMqnynLUUiHsI-V)f4pcyz;Z?!&Yb_;g3Z{c4)&KnnOzK3VqsS}IvUmI7h;uxP% z39jOPDI|SD{Z!W%MTq_kQzDPZTAm3>aKEhIZZHBZU|-*oB1!qd&xatl&!m3Dxi|A% zvAe6}upYIXRQSJH1P9{pZkJOUL>b%CNi4+7Q(9&(ZY34H67nxGD2R_4?%}XOz*0fm zBMecLhR%5HKXFNV;Wlk=zWd^VVvpVhd}I)CH9EtYo*ZxE&Q4|pV8?3Sk(l9Fkg;)z z8C2PlUPSip;yLxLb%H1O!Unn47HU@xT!gI`Znc-F&-I+#IqOXvVKCTha(0bJOb7Uc z2oetDB4LW`6K4!7$ll$gj`Y1J3$nT~jTNt pivg}3QQ}(B&>)r#gd!?05JU+HkHrVW _*RzTIx`q1l>NXoD$p7oUV3iCUpr#v>BMm%{ws z<$bCBpFa3(pBnanoWFba4+vbNyNukbFlD$B0V~Opsr;p$dv{^7Ucwh{{{>{_EPg;S z*Dp{i|29^#>gFX{6evxyO4K0WH8U9g$sp?;SIiC-Q(f2O0C-(Q@qpP@9UpOjzf#pC zw_CqZX}s E4rA~X+44nAyhxiZFpy<;gyL1!064>`n&3~R{Bhke9O8p~ z7{&*o9Ecf)pR>nX0zLcovTM-W1vm`nERl5F BK zd>VT>7JVY~nt&gb38)Go{fwn9a-cjZuyjEMa2jO^{6~A86`IV=*t8MV9sl^Z qnv!#Q0jHdk 6pvae*k45DfRfQ95|-6K;?%u4O4w@Fc; zZISrc&Rd0vt+Qe?G~>2p3qq% se(CK?Eat|jfkWqJa z#W^)T0;z+@oTQb6Xfx7B5nGWnB9?=C!2E%X-=_WL;wlQIjKM#4{M3PJ`acZ%=S+FT zG^anBi3+*dyL7j+oqat2e@Tk8NHTvt<;mV1&tz2ubh_FDc`;JW<@tP=&lg5_mwPfE zJ@txCSv_V~zh~Lug5S)#v;zOyO{Pdc1%WbT>W2&m46uHq)sFJb&zVVr7aWW3`I$aD znn9)Q9oGvY(o!-?CQl`cu#aj&()5ZCGas&R_hdZM35+ke)yPtCsSo(GQESremx#O| zUFc_eQ#Q0apLVw?R(PKqltbB`912C#810{3yCTx UGYtNm44&)%>!ZtA~{aRFbq)!kVN zLBhW~Z${l7Ehy@~z?+pC^zY7%x9tTb5HToazJNq+oFY#Q%WWaOQU)gRZY`woG{nNS zmX-AIZ@;OeRxB*&%yGT8U#yJiGx;T<;L^Na4k-mM^SFm^Fj0R^xY6z_q=U9FAjw+` z;Kq?ojPhJ@B};MLXgH$bs17DP nhAI;EWs6Mdurx#7+o2>ZWxkI~%;2`p=@?v;-k=R- z+mk^T5)G5K?_!&LeBDqroYQlN>m46xu6=bgU+|OOHA^x8r}MgYgQ}O|fPN)?PCk={ zyxMK!Oi}F&&qgyC_pmUZAE)*U=gGxiA3HLlMp!Q?{TIV55_6cZ2^zvsw@!)#q& v(-M~{LdHZf|K@-QEi1%=fl`qqTH1r_+S5Y>nfHi!{x4%lr1=@I~XsI=lpJGQ();^6tt zwb1cTg=Wem#LpP9WNhT(`~KuoR%fT`kNbeC9N%VP)zY?I@>Kb2ybhDCA<$^c1APbi zZZBD6eVjsFdec)CCnAu=+7xe}Rb~AxdP{>jO7L3O(5Q=wLej+FnQ#7K;NE4_zE)d{ zeN+>m`uC23GLXvC?3!&TIPV~<$=R-k_+t!fBC^@bTd+Vbm#7I>&lq1*^RtSx?UERM z7$+!WX{Vk2>CVT)HHGKZ#;h$7FL|l<$at0tGkW2u!>qmB%l2B6)3wgDIgpDcs=^a{ z)oZsb4p-&(72a_!;w$lfLnr;nVj3y5M}(U1do7$Mf=$!7)0XapcIe8IwFTkt%-^1p zHrkV{IyS}NiWMb`#h5(sp+d+(XvyhGxv+-26!e%pjc=blGNC6!`g00bvIe$JnaIZ2 zQzlyb`lBIFFccyDxyy|>oM0^CSqT+lDPhhWCwkQEb5BK3-;~*4ax=EE(9s+T7hAJ< zZ7fn8Q`XQ2khD62&I9i7g0_}kBkXpWgDI?|Zw(skCWcUA;|IR&Ey6X`=$J_cciv$) zWm>f0Yc^1=;7)hd4^pYfFE;{_g4BB63EPd9Mt5?Yf$i+8+88>`>^57iC{jxyQexxz z*jrRdo=tcfCVis&9&6Y{-(6FLZjVZk@Rqn=mebg2m?aQf_B*wjdiT#kw(ofE&i;mq zG5WR&=!Wwn^g;$pfyPrn_bxi`C~d(t{vXRj+9~Y49lTdRk@v;R3BP>wIc9zKv47o^ zYde?R+&o9}zpxM~+fJ1}BH;dUAreI69(Ov0JJ0gJ6QD~ I1BY@aEwT`leyC0KzD|oyf zkyPWsM3a}b?B6l@NH4}P-kO5de9ygUifHQDi$sxK!P~R;*hzh?rEp#&(98>tGr#5i zxG1D89DfbHaWpY))uKv*7}w`pK#yJhioW@mNFuM}YkN+n4eO0gYzhZ{naPnJ(COj| zZNiFFK&MMl&y-0}iErnj4{wH>D4dHv&j&k9wxY~XZ=UzVfmd1n7|Qrz<1~~S6n4(; z4{tMmJx8uMe`DmE+0f-p=wp@C+mfw@MoloLXx3>Z-mir6-R@6se1CR6nIRR5SOF`< z6OlL5YGG5M57)<;b@;&0;;_QQF$-m{?$7a*?1|x|=ado0h}!6)5hf!t9+LA;2i z|FM>wucb!bJYW;APVa_U@?X8ZAkzmmQu!5p>t3mN(a@VEKU7wpd1ddOogC4+HEX(8 z(m0qV84f9a706x!&`2 p&ABzrE9P-fqCQxe5^Sf`VwHb)_-TARTV< zI0B2aQmpr@rtH(mu}6}E?z7yRGpV(weQzm1(t+dhUa*`*dhT@20nwhW#^8|6CXjOF z+HRgjotA8?%2R_2Xx9d0d5qtcb3ClewKYFYu&)=z#*bb)9`uxw4lf= ao&CFKZg^H z+d5f>K743Ll^;#@DXtEaZTznmE}rcOT_qc4-uekn+~ohcrBikNKI27&@4@ ULc_is|TG&2Lrr4T~ zIh>4N%q$ rL#^ls3X#hu77JxE>}tB2dDeSXR5Zt~+3_ zSL-v5VwA-dDF7e3KHi{ #w-h7biTkEbA$pdN?h+jp}1fx#$ z`l+(5b#RDqv j)<(8PS*rX}D_wBeGsc)~G-I)RP>;~fxG{*=zQem7} z0c*W`Q3kEXXLR)K$%#T0Y)FkZonf4`F~)s(;VNMxCE}-??AUw+RlJ)E@&bK-eEyGs zHj4a_GKnlkov?b~F&;NmN--p$@6J}Sj&S!6t}I3_Sv|C>ZC~r5iej9%f*Y|1&}&Ji z%fNK}{CzR{gl#*16EH74rT4p1kv7~K&gn=I(RWO!L+%wPXpq&Ez{I9g_P1wL;TkKk z@pfsYHZj}wj!$`jGLuv~^~(ntP|-0}5nt5;Da-LErMk4_-yTx%wFLR3xq>R1hQr8) zZryR(;fcloHn$UM11UV?#!iY!&s)YqMM^Io)Vr{2_ONl91a+MxFm#eT4 ?Y)3jgtaIjF3o;8pzon@&mr8o0xe$rnVDLCi zyV0lRVu^Z3Xt(|T7UHm2>S%#;N?#R=9eNGrX 92{LuG*gUax*k#Yy z87)%C6-NEhe2CPNVYD0TREC @EcIc5CEaiXwU^cCbKR<=1 zYmGL2af9E{-Dmel>mjRp4k}loVV!=!X4smD{pn*X%t^IA9sGOoZz64z0*)n7D4Gco zC&v#qDO`;~n&N-pQg=w|nZvsq&$HWCG)DYWW_z%KS;M^afNhanTVuu#HU5?n${~@& zBXuSsAS?H63$cuILm>Q+Q#!VVy?!0PKXkA<#JSyf1 _hAJl0 z>tLw_(RrgCz%y=Z@q5*|E@nL(BmG!o0gb9m#8c&PW69w{Luc7wq{Q>WCw#)Mf!etE zO`L#*3>sa{F2JEc_M{(?y}#sG8EnyZ#VbZ2B9enrqu=WzZn_p)v3katZ$D{fvCiZb z&r~R$AWVz9Cc&_?cgP-uF_VJ6 NAKXVnJc`p3`o`Yv+3Vq|2*s7uI744 zQWEOkLf!URV!jhx91I1cWlm9cg|Fc5twh|BO CqSu*WfuYak08d~3?AF>4!Dctd%YYW4* zaC#2n2lO{%Tw HfLJy^u$-%{KQq%kSts-ZFn>mUzXb24jgLDOFwYMORrg{ z&l;`P`&}mf!$h@*%WmTm9-R;Wd*U2YOA_&r&-@(k5-N%^($V#>M@oNKSNC6%{D1P_ z=U28LK2|Juy|$)*phn|y=mig3s++kij8n5<(if%o(?B!Po C5|N6#pjzQUQ=Qb>Y0Jh7=7m z{X0X~rZHlv6jpOmem=k_EPZ9sGszWovn>y;VbcqS&c&;89k`nl`M-uuqepG?+n%Pc zvj?>Dyyc2 ijY@Y8q))R|Bw#w--$tU%Y0Tw z&XDH_^{>Z%O|{kQa+YVxsY^&T=gFb>7URf|W*)_vk7kbI>~Ce>@($u)&U9*hn)JkZ zp(m0R8gI~M3fEyCkYlDn+@b@h*l$JF$HwllWqL}CTX6v`?z1ED%igUuM_fK8I+o`o zm!*fP-{B^2;P`tI&tJS |$|- ~JARE*>emqGQ9}To&`UN5XiHfYPQF7P)&{r= zOCIQY?WNie$B~-+>Rr9Hm-6RlztL?Mg~-z8=T~j7Msll&mZi)4c+WF#N9WaK+N(3l z?%MgQkMw&R-l02XBqk4S3m^wA+yNsnAtZ7U9P4vk5}+5ca#`a28pOdq+&&}E^qG~j z@^L>8@j;*6c~r<<_Loxjt`AqG(&e)H$N!((>aQL1>a$-PdP)DmH~8Q+BOri}#PgLe zZf&Y|d@CJCeFkvt>#-&PJos*i{#X0&x&PeP0X75x1o% dJxXxLxEO31ug2f)y)>e({Aj5 FTLtcA!7mSS 6dLJLC(LhD zXjEmyYGm?m@|dxfz6?{lHnh)cw@%RDJDB~nox`O}SfcXE^R_%{|D|yU;4ybUEh4|` zledjKZR5tC?rt99Ryj<8ZcqXbnawyNyIB_6WiF~G3q7Fw)&gGGW2#m%9#!CvX#iJK zVDy!hM=BO$S&MVB!jk!+GS<9FQ%Z~R^4wg7HO9Kvo{>s#sZq>v!Km@&zzt2g-%tv! z9kzZ*6Je|ssMnd(#9C;EWqS%!0JJ==eQ>qa5Gt_xSE7_C<2rMjaT+bQI@kjcwZ!o< z>(%{qIREP~v4OVbn!fl2^jL%1V5YmtyH1ZXc7?`9%E*Ln+6} DU$QnV47@S!o$HGH2wRk#i@q6x%&7;LV#m=Lr_0yy*EW-7 #g+k)V03Gw7D33i(Luy-Ny?i>y_pN#B^yY8(a lAM5qicZ4FbL@JZ(>ggLOe!Sk_v{W%hrc9eL`>V (qL=u@orO_Eo7MsK6@dZMWSR$3l6-t#_qt)r@8yFfHo0yuJTUc6I z+t}K{5l9pogT>(qL=u@orO_Eo7MsK6@dZMWSR$3l6-t#_qt)pRMiWyra|=r=Ya3fT zdk04+XBSsDcMmF!&S0|G00_Yd%Hi_(0-;DOk;>!>rAn>Q>huPq$!xLO><*{P?eY2u zWn4(5jdh;yqyD!5C?qtK#pZBv^YHTVb19E6&=HEn5~)nCtEX?EFf?w$q*BEgnKEt0 ztU2=*ELyT`#i}*yHf-9mZO5)X``DJL+t&Ek+kbD*{%!w}$Y@Kk&-uCk5wKN%-kpfb z`$5+W)O}2y&kX(h=k4q7Utj&J9XicK#;ts;OYD-)u_4zU#^E ;?E{& zw9MXno)3>iH|L$P-Ho`jeZvIP5he?u7*1rBluUMPpfeCA3!oTIu*s})BN|L+AWRm( zaDq){l{>+7gvkOZ!6viHgJ>|Ffv^CI6WQL_R7e_3XR-i_;RKt^Dz645y_ix}PJi)1 zMK$!ZPM1(M-Ef;!HL}U}7+&9pmtX!+yLp}L4x{39{ZN{2xJ{}$+m)Dk^PP6%5^8&? zAyL4^@A6U#!yjB(T>aZiGHKExkWtX4gz}825mTo@LW@8~PC=WJCY0w)orESW!bbJo zcZN{8tx&=P%}X&sJR1Z`D9@SX7fAUZmMXXxWgyf#sIPaiCV^=YfXI>b(tOR8Lpdxg zRJbh7RH7}@#q^AVB9*-Lwrp0^2vEUgtQZ8VucIV6R$F}7N+c@e&9-$e!euHYE-`B& zD5qg75iJ4*ZAz$PT<$9JDYeALln`L!t$8X?o)Ha#xpEgdg-AR*r;@|7W<|Z7j@l8! z-8D(WCghQ 0O zyt9V3lqc~*b@`5lRc1@8IgO9Em A&d7mZ{)0|^yuYJ8$z;SObJrk; g%elR@ zti;qe8W4*5R{i_&9fG54<^pm7g@97HW+kBhyJjt*70?K1g!JA#06O;(k_c&Fo;gnD zg$S8Cgp?jlgkQ1Gc5Jv3!hi3!7}cbcr?=zB%g5#Aa5!@C!}B#99u6;;%jI&oyj*(h z4{|wk7!H3vu0Xk55r6Q{e}DXc&h{*5{_ 7EReED)X91e%W!^4HB_WSIo?rIKbPmv`o599zL zq*x`ESvYiYsL&`N{avaPAmD#wZj6xFOKc_zT)ibGT2{}0PW5YJsbztwalnopV01y! zx2>3>#tAEccFXr+fT)fOz;2&xZTIbP*=dLy`{IjWF=pYv@Ae?R0zFCY@vYhY_p?Ec zBMSb%KWO)!^WMVJf-T_sN(CBFk_S!1sb(Df#W{suQW#S@M57Ne08WMqv7W!dIGAx( z<8A~!U?Aq!=d+o%^LKXQ8OfxRiS{}2^Cet#cMfsaoklB|U5#bQtUVbNT+1Z$IV9Oi z-Wo{e09Hs95O+j9!|T)M^;o7&QC*6n4m|(woA#OBjaL^qw^=nDv>D?|zU3j4KRgsk z5Fe5cqDdmWs&{eu{=-F$Ay$jOSf4Vk)WUFKb#siZ`>Kk3^-#nI(d;h}?CHOL)=gRO zqFFzb$+VOynx#ycLYEuQzb2JSl~0l@RGcbICkW;KZ<_y7Y5iQ&I?D+{{!T9ludYU# z-5E)1Z?WImeZAUgMblJgB)9nd(mGG+EHH=$C9txbFsjG)0rp|w2M{LnZ&O`$3dl|g zV3?AtTtam7 ZxPLWXsz- z5ACpd7&~T~3(x;ssg;YH#7hxuqB*mBZsgBMa1p0GTL}g94;qR>Z@b@)hZpbtAAuh~ z64ex`Qjw@GcNW99$A_d|$kwc0pE2x#r*ElJ&5c_dr^8kVsT5dOo;>%pK9#i1rj x0p_NL2H1$3Bg6Bbme%Lurtnya>dd2FtTD&(f&pZb%3@c~W?0{` zI;F&q&QGEBH}$Sx)@++O9v>or1OtJjnq+M(Rok;|j$v?iX{ sECba^frEogj5``*@VzF@lUik z>mJssF+1mjAUi%CLmghJ0J9R00t^tN{`-Ts>T>}H9()J{LbMQGp;%k?^wZ{cn%S@0 zmV@(`AdNhN1d$-2X+( }S?z*VE9>){H;KXv~YF zIHD0A#c>qH5keSYM8`DFwqDLTedd&He-r)wO#axrxBJ)Q5sH)&L_!b=5~Mewu^IL2 zbo?k1A`ub%I~A*vdCu^LqXZ#BF-ClZF+s!GmSQj2rw&dIBJw;UK@JH|so(kj^M6+Q z{dMm &55)Z2I|iKi_+=j#Y6*#8DAZbyQRx5fN*wF~%5U ztX19XrT@Qae?Q-MJ@c{Fs