"ASIL safety checker"의 두 판 사이의 차이
(새 문서: <p><img src="/data/wiki/2016-06-13/1465797756.png" alt="" style="width: 812px; height: 243px;" width="910" height="279" /></p> <p><span style="font-family: 굴림; font-size: small;">...) |
|||
1번째 줄: | 1번째 줄: | ||
− | <p><img src="/data/wiki/2016-06-13/1465797756.png" alt=" | + | <p><img style="width: 812px; height: 243px;" src="/data/wiki/2016-06-13/1465797756.png" alt="" width="910" height="279" /></p> |
<p><span style="font-family: 굴림; font-size: small;"> </span></p> | <p><span style="font-family: 굴림; font-size: small;"> </span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span style="font-family: 맑은 고딕;">차량 소프트웨어 개발과 안전 요구사항</span></strong></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span style="font-family: 맑은 고딕;">차량 소프트웨어 개발과 안전 요구사항</span></strong></span></p> | ||
11번째 줄: | 11번째 줄: | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>자동차 임베디드 시스템에서 안전과 관련된 사항을 인식하고 예방하는 것이 더욱더 중요해지고 있다</span><span><span lang="EN-US">. ISO 26262</span>에 따른 기능 안전 요구사항의 </span></span><span style="font-family: 맑은 고딕; font-size: small;"><span>핵심은 <span lang="EN-US">“freedom from Interference” </span>이고<span lang="EN-US">, </span>따라서 안전 요구사항에 위반되지 않는다는 증거가 필요하다<span lang="EN-US">. </span>각각의 컨트롤 유닛이 해당 사항을 </span></span><span style="font-family: 맑은 고딕; font-size: small;"><span>위반하지 않는지 증명하는 것은 간단할 수 있는 반면에 여러 어플리케이션이 하나의 컨트롤 유닛에서 병렬로 수행되는 것은 더 높은 난이도를 </span></span><span style="font-family: 맑은 고딕; font-size: small;"><span>요구한다<span lang="EN-US">.</span></span></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>자동차 임베디드 시스템에서 안전과 관련된 사항을 인식하고 예방하는 것이 더욱더 중요해지고 있다</span><span><span lang="EN-US">. ISO 26262</span>에 따른 기능 안전 요구사항의 </span></span><span style="font-family: 맑은 고딕; font-size: small;"><span>핵심은 <span lang="EN-US">“freedom from Interference” </span>이고<span lang="EN-US">, </span>따라서 안전 요구사항에 위반되지 않는다는 증거가 필요하다<span lang="EN-US">. </span>각각의 컨트롤 유닛이 해당 사항을 </span></span><span style="font-family: 맑은 고딕; font-size: small;"><span>위반하지 않는지 증명하는 것은 간단할 수 있는 반면에 여러 어플리케이션이 하나의 컨트롤 유닛에서 병렬로 수행되는 것은 더 높은 난이도를 </span></span><span style="font-family: 맑은 고딕; font-size: small;"><span>요구한다<span lang="EN-US">.</span></span></span></p> | ||
<p><span style="font-family: 굴림; font-size: small;"> </span></p> | <p><span style="font-family: 굴림; font-size: small;"> </span></p> | ||
− | <p style="margin: 0cm 0cm 0pt;" | + | <p style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: small;"><br /></span></p> |
− | + | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕;"><br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕;"><br /></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"> <span style="font-family: 굴림;"> </span></p> | <p style="margin: 0cm 0cm 0pt;"> <span style="font-family: 굴림;"> </span></p> | ||
28번째 줄: | 27번째 줄: | ||
</ul> | </ul> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림;"> </span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림;"> </span></p> | ||
− | <p | + | <p><img src="/data/wiki/2016-06-13/1465798049.png" alt="" /></p> |
− | + | ||
− | + | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 맑은 고딕;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US">IF..</span></strong><span lang="EN-US">.</span></span></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 맑은 고딕;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US">IF..</span></strong><span lang="EN-US">.</span></span></span></p> | ||
36번째 줄: | 33번째 줄: | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>멀티코어 환경에서 모든 어플리케이션을 통합한 이후에 개발 프로세스가 거의 끝나갈 때 안전사항 위반을 발견하게 된다면</span><span lang="EN-US"><span>?</span></span></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>멀티코어 환경에서 모든 어플리케이션을 통합한 이후에 개발 프로세스가 거의 끝나갈 때 안전사항 위반을 발견하게 된다면</span><span lang="EN-US"><span>?</span></span></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | ||
− | <p style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: small;"><span style="font-family: 맑은 고딕;"> </span></span | + | <p style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: small;"><span style="font-family: 맑은 고딕;"> </span></span><span style="font-family: 굴림; font-size: small;"><br /></span></p> |
− | + | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="font-family: 맑은 고딕;">OR...</span></span></strong></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="font-family: 맑은 고딕;">OR...</span></span></strong></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>개발 초기 단계에서 이러한 위반사항을 발견하기 위해 정적 검증과 유닛 테스트에 투자하는 시간을 줄이길 원한다면</span><span lang="EN-US"><span>?</span></span></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>개발 초기 단계에서 이러한 위반사항을 발견하기 위해 정적 검증과 유닛 테스트에 투자하는 시간을 줄이길 원한다면</span><span lang="EN-US"><span>?</span></span></span></p> | ||
− | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> | + | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> </span><span lang="EN-US" style="font-size: small;"><span style="font-family: 맑은 고딕;"> </span></span></p> |
− | + | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="font-family: 맑은 고딕;">THEN...</span></span></strong></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="font-family: 맑은 고딕;">THEN...</span></span></strong></span></p> | ||
48번째 줄: | 43번째 줄: | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>그렇다면 어플리케이션을 실행하기 전에 안전 관련 이슈를 식별하기 위한 도움이 필요한지</span><span><span lang="EN-US">, </span>개발환경 구축에서 당신의 프로세스가 잘 통합되었는지 확인해야 한다<span lang="EN-US">.</span></span></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>그렇다면 어플리케이션을 실행하기 전에 안전 관련 이슈를 식별하기 위한 도움이 필요한지</span><span><span lang="EN-US">, </span>개발환경 구축에서 당신의 프로세스가 잘 통합되었는지 확인해야 한다<span lang="EN-US">.</span></span></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | ||
− | + | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"><br /></span></p> | |
− | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | + | |
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="font-family: 맑은 고딕;">WHAT IF YOU COULD...</span></span></strong></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="font-family: 맑은 고딕;">WHAT IF YOU COULD...</span></span></strong></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | ||
60번째 줄: | 54번째 줄: | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>나중에 기능 안전 전문가가 해야 할 안전 위반 사항 검증을 미리 개발자가 할 수 있다면</span><span lang="EN-US"><span>?</span></span></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>나중에 기능 안전 전문가가 해야 할 안전 위반 사항 검증을 미리 개발자가 할 수 있다면</span><span lang="EN-US"><span>?</span></span></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | ||
− | <p style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: small;"><span style="font-family: 맑은 고딕;"> </span></span | + | <p style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: small;"><span style="font-family: 맑은 고딕;"> </span></span><span style="font-family: 굴림; font-size: small;"><br /></span></p> |
− | + | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="font-family: 맑은 고딕;">WHAT YOU CAN DO</span></span></strong></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="font-family: 맑은 고딕;">WHAT YOU CAN DO</span></span></strong></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 맑은 고딕;">일반적인 정적 분석 도구들을 결합하거나 수동 코드 리뷰를 통해 </span><span><span lang="EN-US" style="color: #262626; font-family: "OpenSans",sans-serif; mso-bidi-font-family: OpenSans; mso-bidi-font-size: 10.0pt; mso-font-kerning: 0pt;">Freedom from Interference </span><span style="color: #262626; mso-ascii-font-family: OpenSans; mso-hansi-font-family: OpenSans; mso-bidi-font-family: OpenSans; mso-bidi-font-size: 10.0pt; mso-font-kerning: 0pt;"><span style="font-family: 맑은 고딕;">를</span></span><span style="color: #262626; font-family: "OpenSans",sans-serif; mso-bidi-font-family: OpenSans; mso-bidi-font-size: 10.0pt; mso-font-kerning: 0pt;"><span style="font-family: Malgun Gothic;"> </span></span><span style="font-family: 맑은 고딕;"><span style="color: #262626; mso-ascii-font-family: OpenSans; mso-hansi-font-family: OpenSans; mso-bidi-font-family: OpenSans; mso-bidi-font-size: 10.0pt; mso-font-kerning: 0pt;">검증하려</span> 애쓰지 마라</span></span><span><span style="font-family: 맑은 고딕;"><span lang="EN-US">. </span>위험상태가 뒤섞여 있는 시스템을 분석하기 위해 개발된 툴의 이점을 살펴보고<span lang="EN-US">, </span>해당 툴을 사용하여 안전 요구 사항을 검증하면 된다<span lang="EN-US">.</span></span></span></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 맑은 고딕;">일반적인 정적 분석 도구들을 결합하거나 수동 코드 리뷰를 통해 </span><span><span lang="EN-US" style="color: #262626; font-family: "OpenSans",sans-serif; mso-bidi-font-family: OpenSans; mso-bidi-font-size: 10.0pt; mso-font-kerning: 0pt;">Freedom from Interference </span><span style="color: #262626; mso-ascii-font-family: OpenSans; mso-hansi-font-family: OpenSans; mso-bidi-font-family: OpenSans; mso-bidi-font-size: 10.0pt; mso-font-kerning: 0pt;"><span style="font-family: 맑은 고딕;">를</span></span><span style="color: #262626; font-family: "OpenSans",sans-serif; mso-bidi-font-family: OpenSans; mso-bidi-font-size: 10.0pt; mso-font-kerning: 0pt;"><span style="font-family: Malgun Gothic;"> </span></span><span style="font-family: 맑은 고딕;"><span style="color: #262626; mso-ascii-font-family: OpenSans; mso-hansi-font-family: OpenSans; mso-bidi-font-family: OpenSans; mso-bidi-font-size: 10.0pt; mso-font-kerning: 0pt;">검증하려</span> 애쓰지 마라</span></span><span><span style="font-family: 맑은 고딕;"><span lang="EN-US">. </span>위험상태가 뒤섞여 있는 시스템을 분석하기 위해 개발된 툴의 이점을 살펴보고<span lang="EN-US">, </span>해당 툴을 사용하여 안전 요구 사항을 검증하면 된다<span lang="EN-US">.</span></span></span></span></p> | ||
− | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small | + | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> </span></p> |
− | + | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="font-family: 맑은 고딕;">TASKING SAFETY CHECKER</span></span></strong></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong style="mso-bidi-font-weight: normal;"><span lang="EN-US"><span style="font-family: 맑은 고딕;">TASKING SAFETY CHECKER</span></span></strong></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>기존의 전통적인 정적 분석 도구들과는 달리</span><span><span lang="EN-US">, TASKING Safety Checker</span>는<span lang="EN-US"> ASIL</span>을 식별하는 정적 분석 도구로 서로 다른<span lang="EN-US"> ASIL </span>요구사항을 가지는 소프트웨어 컴포넌트 사이에서 간섭 현상을 검출한다<span lang="EN-US">. </span>이러한 간섭은<span lang="EN-US"> ASIL</span>을 식별하지 않는 다른 정적 분석 도구에서 소프트웨어 구조가 안전하고 표준에 준수하여 설계되었다고 검증된 경우에도 발견된다<span lang="EN-US">. </span>따라서</span><span lang="EN-US"><span> Safety Checker</span></span><span>는 당신이 사용하고 있는 정적 도구의 이상적인 파트너가 될 것이고 전통적인 소프트웨어 테스트와<span lang="EN-US"> ISO 26262 </span>요구사항 사이에서의 간격을 줄일 것이다<span lang="EN-US">. </span></span></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕; font-size: small;"><span>기존의 전통적인 정적 분석 도구들과는 달리</span><span><span lang="EN-US">, TASKING Safety Checker</span>는<span lang="EN-US"> ASIL</span>을 식별하는 정적 분석 도구로 서로 다른<span lang="EN-US"> ASIL </span>요구사항을 가지는 소프트웨어 컴포넌트 사이에서 간섭 현상을 검출한다<span lang="EN-US">. </span>이러한 간섭은<span lang="EN-US"> ASIL</span>을 식별하지 않는 다른 정적 분석 도구에서 소프트웨어 구조가 안전하고 표준에 준수하여 설계되었다고 검증된 경우에도 발견된다<span lang="EN-US">. </span>따라서</span><span lang="EN-US"><span> Safety Checker</span></span><span>는 당신이 사용하고 있는 정적 도구의 이상적인 파트너가 될 것이고 전통적인 소프트웨어 테스트와<span lang="EN-US"> ISO 26262 </span>요구사항 사이에서의 간격을 줄일 것이다<span lang="EN-US">. </span></span></span></p> | ||
− | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small | + | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> </span></p> |
− | + | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> <br /></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 맑은 고딕;"><span lang="EN-US">TASKING Safety Checker</span>는 코드와 데이터 오브젝트를 안전 클래스로 할당한다.(i.e<span lang="EN-US"> </span>소프트웨어 통합 레벨<span lang="EN-US">). Safety Checker</span>는 관련된 <span lang="EN-US">C </span>소스파일을 검사하고 검증된 데이터를<span lang="EN-US"> ELF object </span>파일이나 별도의 파일에 저장한다<span lang="EN-US">.(DWARF </span>디버그 포맷으로 바이너리 코드와 데이터 섹션에 영향을 주지 않음<span lang="EN-US">). </span>순차적으로 모든 파일의 검증 자료는 취합되고 사용자에게 피드백을 전달한다<span lang="EN-US">. </span>이러한 접근으로 당신의 코드를 검증할 수 있다<span lang="EN-US">.</span></span></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 맑은 고딕;"><span lang="EN-US">TASKING Safety Checker</span>는 코드와 데이터 오브젝트를 안전 클래스로 할당한다.(i.e<span lang="EN-US"> </span>소프트웨어 통합 레벨<span lang="EN-US">). Safety Checker</span>는 관련된 <span lang="EN-US">C </span>소스파일을 검사하고 검증된 데이터를<span lang="EN-US"> ELF object </span>파일이나 별도의 파일에 저장한다<span lang="EN-US">.(DWARF </span>디버그 포맷으로 바이너리 코드와 데이터 섹션에 영향을 주지 않음<span lang="EN-US">). </span>순차적으로 모든 파일의 검증 자료는 취합되고 사용자에게 피드백을 전달한다<span lang="EN-US">. </span>이러한 접근으로 당신의 코드를 검증할 수 있다<span lang="EN-US">.</span></span></span></p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕;"><br /></span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 맑은 고딕;"><br /></span></p> | ||
− | + | <p style="margin: 0cm 0cm 0pt;"><img style="width: 978px; height: 288px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA6QAAAEHCAYAAAC5qIu0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAGJVSURBVHhe7d1ptBxVvfD/8v/mWZcEvTIEwSsgEoMJF0RyA8gggQiKoMllcEGIDzLIIIoMQiAYAY0EZTAYGS7jYwgsGUwERIaEMA95ogKXhMQgAg5IEnDIcNfzyv/57tO/wz6V6j59Tk5On0O+n7V6dXd1Dbt27dpVv9q7q97zzzaFJEmSJEl97P+rvUuSJEmS1KcMSCVJkiRJLbFWl90Ro79f+yRJkiRJUu9YOO/s2qd3VAakVSNKkiRJktQT9eJMu+xKkiRJklrCgFSSJEmS1BIGpJIkSZKkljAglSRJkiS1hAGpJEmSJKklDEglSZIkSS3Rrce+rF69uvZJkiRJkqTOBg0aVPvUmY99kSRJkiT1KwakkiRJkqSWMCCVJEmSJLWEAakkSZIkqSUMSCVJkiRJLWFAKkmSJElqCQNSSZIkSVJLGJBKkiRJklrCgFSSJEmS1BIGpJIkSZKkljAglSRJkiS1hAGpJEmSJKklDEglSZIkSS1hQCpJkiRJagkDUkmSJElSSxiQSpIkSZJawoBUkiRJktQSBqSSJEmSpJYwIJUkSZIktYQBqSRJkiSpJQxIJUmSJEktYUAqSZIkSWoJA1JJkiRJUksYkEqSJEmSWsKAVJIkSZLUEgakkiRJkqSWMCCVJEmSJLVESwPSSy6+NL02RF89+evFHp/8VO1bYxOO/nIa91//9f3FXXfOqg1tjPF2/viuxSPzHi3Gjj08Le/NN9+s/SpJkiRJrdeygJQg6aG5c9OLz6pvxi03FU8/9Wjt2zsI5glWyxg28bxJxeTzzy/2Hf2p4tprpxf/WLmy2GWXkQalkiRJkvqNlgSkBEUf3HLLYvWaNenF597AfKMlkRetg+dN/Fanlkg+E8jxTqvh0I8OL7ba6kMdgRrjM4zpGwXKzHvMmM92jLfwvxd1tEoSEDK8KljMrVmzqiO9111zQxoW30lDDKvCOlx/043F3IfnpGliWazHPffOLs4+48zi0MPGpWFbbLFFCmo3HzKkuOiCKWmYJEmSJLVaSwJSAqSwYsXyYuutt659WzdPPP5U8dqrrxRPPv5k8be//TW1Dp52+qnFS4teSAEkL5Z3zrlntY//9JPF1O+1B2hMS1B51TXT0zCmn/KdC9NvVX44bXoxePDgYsmSxcWby5YVM2feloaz/PduvHEx/sgJxcuvvJKG1bO8bbpjv/SlYuTI3Yvnnn8+DTvrjG+kZR+w/5jip3femYZVYR0YZ5ttt0utpwScYD3w+XEHp/fcTjvuVPy6thxJkiRJarWWddmdfMGk4vprry5m33VnccyxE9IwWgabedVDi+D++40p9tx7z9RqSIBJ8LvvvmNSAMmLIC7QpZVpCOpAUMnnaFkc8e/D03uV+fOfKSYcfVSa/yd23rmY99hjafjHhu9U/PjqK4v99h+dvjfCsk446bhi2NChtSFFMXv23SntD86dk1qPeyoP+gOBsiRJkiT1Fy0LSAmYCPh4RfBEy2Azr3rorkpLIa2WtIReddU1aTgtnY88MicFkQTC9Rxw4JjUwkkg25Xhw3dMwSNodRy9zz7p87qgBZfutrR47j5qt9rQ+qpalncYNiy9V938iHRuMWRI7ZskSZIktVbLAtL1gf9H8n/QAw48KH0/5ZST0jtBL62Ro0btXtlyGOjie8jBY4tPH3hgx3856zn5pK8Uz8x/Ni0P48cfmd7XxceG71BsPmTLtNw3/vKXFFQ3ugsxLcsE0PxvlfSCdaWV9upr/qvjf7EgQKXrMq26kiRJktQfvOefbWqfkxGjv18snHd27Vtnq1evrn1qrXqBYrSe0tJIcBm4OdC3L7qgeOiBBxp2w83RSsq4XS0rxqunq+mrEEgSOHc178D6EsxGsM30BOezfj4rrfPUS36Q/s/K/1OjO7IkSZIk9bZBgwbVPnVWL84ckAFpdxCsnTtpcrp5EP/X3JAQ0G42ZNPipUWLOwXokiRJkrQ+GJBKkiRJklqiuwHpu+o/pJIkSZKkgcOAVJIkSZLUEgM6IOX/oVWPN5EkSZIk9X8DOiDlZkXHHX9s7ZskSZIkaSAZ0AHpxVMuKm64/sbaN0mSJEnSQDKgA1IeZeJzNSVJkiRpYBrQAemEo79c7PFJn68pSZIkSQPRgA5IJUmSJEkD14AOSGfcclPx9FOP1r5JkiRJkgYSW0glSZIkSS1hQCpJkiRJagkD0pJH5j2abpTEi5sm9YaYX1/fgInlsT7d9eabb3bcMOqrJ3+9NrR/iu3V1XpW5X2sY0/zKZaNns6jPyJfLrn40tq3xiL/Ih/6Wr79W5UGSZIk9ZwBaclbb71drFmzqjjrjG8Uxx13TG1o8xb+96K1TuaZF6+XFr1QG1LfXXfO6nitK5bH+nTXtCumFy+/8kpK8+FHHFobOrBV5T3bl3Vke/cknzbfbPOO+fY0r/sjtv3rr79e+9YY+Td6n33Wyt/eKsNdIc9fe/WVTttCkiRJA8d7/tmm9jkZMfr7xcJ5Z9e+dbZ69erap/6BwI8T5x9ffWVtyLrjJPrSy3/Y6WZJDHt47rz0+ZRTTipG/Pvw9Jngc+bM24q///3vxX77j07DZtxya7Fw0cLigP3HpO952v71X99f/O1vf619q8Y4hxw8tnhm/rPF7qN2SzduQqSBAJHnr9KKefONM9L6b7311sUxx04otthiizScgPJ973tfcfElU4obrr8xPas18gr5OpTRIvrg3DnFZm0n+J/Yeec073POPSsNZzrWl3kzLJaF004/NS2f8T7eNt3QYdsXS5e8nN5Jbxnr8/LS36X5xPe3V7xdfH7cwWme5GksO34H4zz3/PMpLffee1/HOkU+R5rK05OvTz7+ZHHVVdestf60rBFYxTNt8zyMfK0ntunQjw4vnnh8Xt1x8+0F0ss22X7oRzqWe97EbxXjxx+Z0sh2fvCBOcWHt922OOGk49Lv5fLW6Bm8zJvxmB/rGvnN8ihHky+YVDet5Edse+bxvanfScOjDJEvsb3BvI87/tiOss14s++5J31mPo3SyrgHH3xQSmP+Oc8v0rHb7v9R3HH7XR3pjvK4eMmSjv21mf1LkiRJ69egQYNqnzqrF2cO6BZSTnpn3jaj9m394QSek/BftwVCp51+ZhpGF8FPH3hg8Yc//jH91psIQglGX3ixvcWHE/WLvvvdYsnSpcXYcWNTYPLSosXF088+m5Z9/U03FnfPujeNO3bcEcX8BQvSb+G6a25I4xAo9hT5PPbQw1KAEsHGLruMLBYtXpyWt9fe7QE5402/5qrihBNPTu/nTpqchpftMGxYCphZF7B+b//1r2m9Ik/z39kGX/v614vHnngiBcwEIiEvA0xPmiJfWPdA+v+xcmWx59571oZUY71Iw7QfTStOPPHU2tBqEQAt/e2ihoErAS7pIbgK5CXrDYK6O352VwrGUl63bWfy9ZsT2wNq8oF0N1Pexoz5bNpGjMs0TEv+kZ8s74mnnywuumBKbexqpOGhuXOLm39yc0ceRnkjnQSLvYF0xrbMP7MNYnngogbpHj/+mBSMsi+SVwS6cfHIYFSSJGngGdABKSeifXESSksMthgypFi9Zk36fMMNNxejRu2egkdakDgx5jXh6KNS6yItYD1tud3547sWcx+eU5x60inpOyfqG200uBg2dGh6p5WME3SWRVADWg1pVaLb4rQrLitmz74jDQetjqtXrSxu/MlPUmsVJ/L1kOZoHeVztDDi7DPOTMPI9whSWM6cOb8sli97o+M/lJHuyeefn96rkIaRI3dPrYFMt2bN/6RlsV777LVXWq/Nh2zZKfDcf78xKb8J/shrxi/nMdN/7jOf6ZQvgRZMpme+0eJaxnrRhfe9G29cDB++Y2rt7g0HHDgmbQOCrGhNp5Vx+bJlKS20rEerOn4w9dKUr2HqJT9I+ZWXtyqUgQULnikunnJRGvdjw3dK5QXbbLtd8fxzvyr22qNxQA5a6Vk+00QefuO0U1O+Uj6ipbcK24XyE2WoXlrr4QLMoMEbp7LFukYZnHbF5cWiRS8Ws34+q7j+2qvTMEmSJA1s/oe0C5zg07JGS83wHXaoDW23atWq2qfeRUBHULTJZpuk73yOro8/uvLK1A2TIGbieZPSsI02+pc03oplb6X36PIYaLl76IEHiu232y51reSEvyciPV1hPIKWrnzxsMNScPHDadM7gjFavyJwjvUKBIldIaCkZbZq+mjBJHjedNP660LAyvQnn/SVYur3GrckNotAmW1AmWEbEISTHoJsWi3nz38mdUcNzeZ1d3Axo1nlvKa80epNKzsXZnoT3bAprytWLK8NaYz9YXmT40qSJKl/G9ABKf91439jZc0OawZBHgHMiwsXFr+4/750AxW6QHJDHFqi4o6kEeTRFZVx8mHdxX8GTznp1NRFlWUd9cUjU3dFTtx/teDXqdWQd8yefXdqZaM772ZDNk3B1Nixh3d0oQXpoCVyxxEjUlDC/wjXVfyvkWXRRZTlEnR1B/OgJeyRR+Z0BGN/euON9E6LIetFV9Pu+P2rr6bW1jxfIjinvLC9GqWVNNGSyXL5z2V3l18Py2UbjBo5Mn3nJjyYeM43U3mhtb1Rl1/Go7yR343KFvOgJZWu0iyTFnMuYKwr8gJ0mabVOM/XKnRNpsxygSBa0+vhAgLllXwHLaJ8Zl35Xy3ryrJOO/2M4pgvHVPsu++YFBw3Wr4kSZIGhgEdkI495JBi/JETat/WD1obuTEQLUa3zphRnPa101JASEDDTXI+9G//lrovbvL+9oCX8S+cfEEa1qhbYz2xPnRV5OSbZXGCTndFuk7SZZLWPbp7Hv6fh6bl0/JGd16C59l33Vl8cMsti+uuvTrNiwCZG8KA9JC2rrpQkq+0EOZiXrnf/GZBajUmyKI7LGI85hHvjdAN+Nxz3rnBzrXXTk93bd1jt93SegXSU05TyMtAvXxhHG5cxPBIa4i0BtaLgIr8yv/z2QwufFS9xo79fPqd7Ud5im7TXETgIsGU71yYviPP61g3xqe8kd9R3qqWw4uutqwTZZZpmJa8i20ReVk1LS/Gi7yOz5TB4798bMo/yhjbPFrkSWu+DcDNoD73mYNSmeW/wVXL4UXXYroQU17Zt2K92QaUgeh6zX+DmR/7BWWEFvUnHn8q/SZJkqSBa0DfZXd9oCtl3IiHLq78D29d5c9HzO/eqw0bLX/c6Ci/m7IkSZI0kHX3LrsGpFKLxB2Eo7VUkiRJGug2qMe+SAMZgajBqCRJkjZkBqQl3E00/t+Wd7Ut4zfuCFvGdGUxv6rfmlFvWc1i2kbrMlBwg5uhHx2e8pHP/Uk5j3s7z6Nc0qU83t8NyCPWrRmxD/FqBbYpj2SKbdEMWsG5OVN5HZkXL3BzJj6Xb/7Ed4bnN29iftysKt/+dP1mGVXjkr+kdautPlQbWo155NNzo7J6N87qDpYf61lPM+P0VCvrjCirzZaVdVXeho0wXl/kC/On7K/PbdzXWA/Wpxmx/0U+NMI+x6s784+8DVEX5HVJ1BlVdVB52zMO40bvHVCeytMzjGmZR7m8UTfl2zqWn9dblL2u8qMZzeQr+dMby6rCOlG3NpOO3hblqtmysi7YxmzT3jgmSPUYkFbg2Y0837S3/u/JvJp9Xio7Pjs9lQwHp/zAsKG742d3pcewkJfc3KY/y28i1Jvi7sDdvaPxuwHbnRtClXFS0BcHSh55051H55CmTx94YLo5U6Pnxu6yy8j0WKlf3H9/WhfwzneG8zvjccLD/HhOL3cczk86efbur59/vjjxxFNrQ4r0/NlBG22U8u3Pf/5DbejaqGt4Pi7L4m7HLItnGT80d24KwPneU/kNskJfnEAF6gxunNZVncG2irzvLSyTV1+o2oaN8LgtbiTWVb6sK+5oHrp7g7h3g3rPSicwK5c3bsDHi23YDKbn0W/crA+U4Vt/eluqb7458ax07pDXGTxeLAJQ9mtw07j4zG+Mw7g86o5pmQf1D8Ouvua/OtJMPTN/wYLiHytXdtRPgbpp5m0zat/4fmbtU1F8d8rU9E7ZY1mc46yL/AaAqMrX9YV1vufe2ekGfGzjRjeLZNv09jGKZVYdD3sb60mdQrmkjlnXbSbVM6ADUiqevji5iSt8VNwsL67y8YgSdk6GlwNHKveeVIwHHHhQOhE89ktfKj69//61oe3LYtksLyp/KjiGcUU00lQvrWA6pm/0GA5+Yzqmz6+esqxY11ivWBZXO5kGLIMraQzLr5Iyr0hTVMykje/59FViPB6/c+nlP0yfGcaLdWf6vLInTbEejeYLfufAm68X3xnO+kb+kX6GMV4sK9aVYQQDiLSSTh4VFJg348Z8YxvG9KxHLL/KXnt/sjjk4LHpMxdMGiENsa1YHiJPwLIZHu8MZ9zYXgyv2l5VyCuWlY/HO9OzTswj8rAeHmHE9JEvlKtIf55XVVivuQ/PSTeH6iqt/B5pyT8zTSwv8onfSQcvPpOGocO2Tzc6y7dFI9N+NC3dOZg7FIN5lMvLtCumt520D0lBwTdOOzWd4IB3vjOc3xmPRyHx3FoeTcSjoHheL5g/w0hbPCuZ9SAYe+3111L6o2yxvWKfYRjrx6OBuHNxBCbcvZiu5NytGSy7ntjWrBvzBstjOO+z77mn45FBsW+wPN55xTZoVJfmGJ/x8jojthHTsm6IZVFn8FghPpOmfBtEeWc45YdyxHjkS5TrwDoyXj2Rr8w30lWFtMZ65vPP693YVvm4Xc2zahtWiXzhWb7cvI/PDOPFclnHqE/zvIqywnA+Mx3rzG8Mr4cbtnFXeJ6jHXd7ryfPP9JDnsT2BGlhGMuP/CJ/SCdim+V5WIXx+Z3xmCffI1+i3mu0rUH+xTyYFpFXkTf1MG+Ctry8gYCd1wEHjkn51QjLpI7gjud5IMSjzrgD+zbbbpf24XKdwaPrSBuPGvvx1VemF5+ZH7/xDHTGHTF8RHp0Go8qY14M47ncpBk8N/v8SRPTzfjIiyhv5AFpyK1es6ZYWXtmOwE3uKD64AP3pUeZsS3riW1NGSONvBjGi7yjHo1nUpfzlVfgGMO2yfe5KlGuGDe2C/kVw1g/sCzO1TB23BHpd9JGOqMcx3oxH+qX/BjFK+YFpumqzDRTtvO05uNVHc9JL9+7Ov+6e9a96Z26hTqGbRb7nNSbbCFtAlf43vjLX9JjX7ga+bHh7Sd9VMo8/oLnXlJxB3b4m39yc3HpZe1XA5tFBcHBYebMm9MBgBPN+I8hy6K1YdGiF1PlT8XHCS/p4bmQP5zWftI46VvfLl5+5ZW10orx448pBg8enOZdDyfdPIqDgxfrAJZ18SVTUoDMfHkGK44/8eR0oOGgGFdpOXnlIMEjQrhKSgVJ5XXVNdPTwY55H3xwe0XO1dIt2k62eQxLTF+FdYjfeY/14oRq47b1oQWEvCD/wPpzEtponoETOQ7arC9I63HHH5suCCxfsazjiu6Ht922I184sODmG2cUD86dU0w+//z0HRxouSrOCQXpCHymVSLfhuQN0/NInxinHh6LE3fi7arlnrJA2jngRx7wDNrvX35Z+sw2ouWMebL+6Tmge+zZcVWb9SKYYb3y7VWFK/ScZLAcyghlhcfSsL15/BDuuP2u9F4P5Yx84UAXJzZfPOywVNZYD9JTD2WRgI0TKNLQKK2s61tvvd3pM2WGdMfymF/sH0dNmJDKONuSvGLbsg3ybVEP25YTNR5/E2LfiO0NWiii1TVavX807cfpPb7zO+O92Xaix6N8wLOEWQewDpxsPDP/2Y6AhPUgTyJf+E7Z5tnGBK3sswzjsVJgnbDZZpt3evbuTjvuVMx77LHat7Vx8svvF10wJe03bH9Qd0U5jcdf1duPkdeltOzWE/Vcuc5gf6W8Mx/yPl8WjwviM2XjrDMnpmfoMozyTt4xnHyiHDEe+cJJPvspJ5XkG2W0q/2Auijq3UairHGxgLSCfZMLCnn9yjGFcZ5/7lcN59nVNszV2wbsCwQ4lDMeqYSo3yivHP84trAtOeGn3qYsUTYbbS/2E8oxgU+U5yrkA8+jZv2pc0jTJ/fcIw2jTPGi/vz8uINTPfntiy7oVJdGvc0xinIQeViFMsD6sF7t6zc9rT/7E61+lHkupDTCcZp9kfWP+o2eAKSfvKE1sR7KEeUvL29gn+EV+dXIgw/MaZt+y073IGBa0DrK/FGuM0g38ouaBJysP79tstkmaRh1dxyPIjhmn6BOA2lnvaP8Ut7Yl9hGXITLsY5sR8pXPG8clFfSwaPB6iHt/M45GMHm0iUvp+GUK+qXvE4v5yuvwPGMYzfHmEhzlar9EMyL8hLHyFgWYlmUWdJJ3lGG2A5gPnldzLS8mFeUbeqtei2s/F51/lVPpJX8Ztr8/Ov6a69OywZ1aTPnX+Q/dQqijonjtNSbBnRAGpXS+kYlxtVBKn8qjdgpx31hXDoBjJ01UHlQKcd4zYqDTNV0LIsDDgcPxEkALXHgwAMqNiqXclqpuFmP/HmXVajcCcII8OLgw7JYLstnvhwwqeiYJ/OLZYGT0xUrlqcDOgdrDlSk4ZSTTk0VdAR44Aor6aU7SLSiVGH6mD/vsV4sn8qZAGL48B07BT4EU4zXTPmYPfuOtG6UJ07CSHe0PnHCAw7UkS+0uoDuK5y8sZyurmijvA3JGw5S5OeEo49Kw3oDVzG5Sk2+cmUYBEarV61MB2MOzpTnwAlvfgJECz0tG6wXactPenKcgJAXTMu4rFeUS7pSMZxAtys/uvLKlC9xksSzWR974okUEHKSFAFNFdLH9uIkgDTUS2s9lBmWSxmKso3Zs25Py6Ysd3Vy2Ei+L7Nv8IxdltGovGyzTXNdG6M7JPPjRGWbrbdJV8JjGHkS+cJ3yvagwRunOitf17K8y2CczNbDBSzyiUCb7T/1kh+kE7oq9fZj5HVpPHu2Cq3G7JN5nUF5oXszw6LOype168hPpM+sM0E7QR7bgnJDnctw8onvjBf5QpqoB8g31q1e2WKfYj+g/mCcWG6VvGxHPQL+isAJJMPjBJuT9402+pfUglEvwKynXrfPRtuA/YBtQHlnf6QeoH4jPwiiqatBvpBfvFOOG22vZqV833dM6l4aFx1SGW0bRiBMuaKlL9IadUbUpbGNGMY49co2KAOsD+OwfgShIT3DufbM6EbIK/Ip348pj1zAIviiVbAe1osyWS5v3UGel887uHhCHpBnBCDUz/XEfgIuAjVCt1xwzA8EPOzzXMwFLbscHwkGOS4iWuIIzjkekLZoVQwERI0wX5bDPks62Xe4uFqlnK+8AvsXZaMrVfshLfzpovX4o9N3xLIQy6LcpYuqTz/ZEcxTN7B987qYaXlRhrjoRPlmX6qn6vyrnkjrCW3lEFysIl1x/kXAHC3K1KXNnH9JfWVAB6RUuFVXu/ijd1nVsGZx4tedHZYDQt5i16zTTj81naREV49GPrzttu2Vf1vAtfS3izoCL4ZFEJKjQuOV/5+jClf6OVjzv4jAssrdcKgYyZd7772vNqQdBxgO8qSH/63FyTwnOk8+/mRq8Yo0ULGyHMaP1rXuYPlxxZT59sZ/lOhWxkk76SdQi//ekS8EcZwI5eJgTatLd3HS+Pu2k3muYMaBvTdwACLdh//noR0nJgzjoNfeqvEvnQ7WZVt+4AOpBaErXBFGbDfKCN3N1hUtFhzQyf8IUhuhtbc78v2LMkPQWUYaKF/sj42uqNcT/2vK64BIJ9s7ygv/S43lky5Opj4/9pD0Hunkd8Yj0KNrK+hORwAa2B/Zb6NXQxWujLM++X5G92PEMILLfBuSzkb5yz7MyS1ppMWAk7l6J4y9IeoMynbUGbR4gXqQOq4R8ozeG1E/US+hKoA75ZST0kUvekQ0akGIPGymvqclmX0ryvbbK9pPetkflyxZ3FbXbpf2UbDPMh7ppeWpXjnsahv2FPVAlLffv/pqOrasT1wYpH7lJJl8Ahfq+E6r7MRzvpmGVaHeZr3Zt7pCGWB9wPqxnuuKvKc8ciHrB1Mbd/ftDdRblM0crXu0GpOP1F1cbMnrDM4LKHPUTZFXvKgTGMZvcZ7Dfk+wzXJeeLF9OU89+XSaL9gP2YfiAjd1Cy145QuQ5AtBGucBXCRmuTl6d9W7eILYrmwzLt5Sv3TV9TsPtruraj+kJxa9SuJcoFEZI39YT/Kmq/+VUqewX3MBI285Lqs6/6qHiwIEvtSFufz8KxoFqurSKrT8x3aLcRqtl9RTAzogpaKgm876xgkBASb97Hl1deLBAWHUqN3TVapmDpCBExCuJNIdKfr75/8zyEW3QsbhvwVcRUd0tWVYnlZOcOnKROtC/r+cMq66pi6ce49O09DiwrI40WMZzDf+mxAVWZ4vnECkrqlty2AY03MixbTp6lxbxRr/jeUiAf+/4IoiB0NOqruD5UdecfU07x7ZU1TS5AHzZB0iX8FNGAhMI19YV06UGIeKvrvGjz8ypXvYsB2KVbX/2PSG2B78J4gDJOsETrA5WEf35Ho48eOKdGzvuNJdRnmNVg3GpYzEstYFJygcANkGBDqUj3oHS9DVk653bK96aQVljJMMynfgqnO0QpFnlG3KMfsQN95gf2Sa7uzHiCvgN9zwToBIuWe+tBJEeUn7VtvJFvlMa1x0d+Od7wznd8Zju3ABgzRykkgPA/CddeeEtNGVdtI0cuTu7TdaqpURtiFXz2kRYFm0QsU2JM+pLwh0G0n7btvJYrQYdHXCSDlh27K8ZoK4HGmmzoiyzTrRikvQEvsq+2k9rAsBZtRPUb+yL3KCH8PBvCnfaHQCRh7yn2JaUFinmL4KJ/jkKWllX6QsUra4UyfrxQk6xw4wH160VCICz7JG23Bd0PuE9LCtKLdd1Rvrgu3AcqKra9wIi3ynvJAnjY4PrC/lcJddRna5DeLCDeNQbrrqAtkMWr7BNmQ/pP5qdCGLAJDy1lVa6+FYF8ehwIVdyjbzpDcMF7jzOoN9JnpPUV5JK3URnxnGb9wUiXFp4eV4Ecthv6Csci4ExmE53PyIOpLpqUsJPKO3T7TosZ+yjvTmov4J5A/BMPtePWxX9hPq+Ph/fKOyTXkh70kbr+6q2g+5yE6vIvZZ1iW/cVwZ5yQcL6IeiTLAfs95EWki70BaufhNHcM+XE+cf5G2fPoq/CWLYyH7Emllf8rPv9L5Ru1/vHH+ldelVUgnecGy6QFAXSOtD+/5Z5va56TeA0uxevXq2qf+gZMZulWUTxbY0cp3tqsaVoWdl6CDyp1KJO/mwW90iaBCZNmbtwUu7MT5Z8aJ9PCZA0/8v5T/DDSTBjAtmFd5WbRMRQXGSSPdMjhZySu1fHrGoZsG6Y7xy3mWi3XgROmlRYs7DgAxLesUlRfj8H+CyJeQLx+xrZqZtp5IV66cRpTzqJGqeaJqXWPccn6GGIZ8HFRtw8BNAziJIfCIG8k0o16rP1d44z8e+brR4sZy8qun+fqX8yK2GWWLoLkK5bm8rpEnrGt83nPv6q67s2fN7thW+XbL50G6onxHmSlvM8aP7VVvWZEvTJvPE/n0yNenPG6zmGd7F6llqUttnh8hylZVma0q2yinJ7ZTXlaR52EuX9f4jWH5OnOiy0kYJ6B5HViF5VfVf8h/yzEeWA/WMd83qsYP9eqMemmot+1i+XlaY96I4ZzYEYh1lQeol7ZGeRLpW7HsrbRNuqpHGylvw0bKaapX1hBpJA/L5TfU215l9eos6hHyJeqb2F6ka5e2IJOW00gv41XVGcjLdr16gGXFtop55t8jL8aOq75xWXtLU3s+R36w/nke5sOR52GIZaKZ7VvGunNRnh4McdyI9S/Pr2r55TSinC+hnM9V2ypUzYPl52WboIqu03SR7WrdI+0ol9Fm8jVPe9X4uci/qv0w0pCXk6q8iuHleZTnzXi7tJXthx54oKn9J6bP623mUc6TWF9E+mJ7laetSmc9zKNR3SyVDRo0qPaps3px5oAOSNcHdvoIIMsBaU/lrZzRhVWigqdVhSvAXDmmxauZA0NPUAZpaYz/1qrvcDJTDhb7Oy5ecAOZeidu73ZsM1o6aG3kv6Hqe2yDuDjscbM+eoX0xnlKXxqIae5NUbZpUY2/DUjvNgakA9T/2+HjtU+SJElS//O/Fj9X+yTV192A1Me+9AMGo5IkServPGfV+mBAKkmSJElqCQNSSZIkSVJLGJD2Ef7EXu8RLvbHlyRJUn/nOavWB29q1EcISB+eO6/X7hbI3YC5rT2PzWj2zqzccv+G629Md1klPTzDlWdK8eBlnnnIw5wRv+WPqIlgOk8/43EnynhgdI7ncPFsza4eY8I8uNtc+UHOPG6hqzvCsj48e47b3seztXiG5bzHHkvrQpp5wHejNJTXi/TwvDSmL39mXW+deUu6fTpIW1W+kC6ezcaz9CIfyY+NBw9Oz7zjzroXTr4gPV+MZ5XxnDOeXcu8uiofzW5D5suDzWN+3Gb/5VdeSb/zmYfzky8sk7vv8ozam2+ckR5wTrlinjyr75gvHdORn9wmHjy7LJ93nqYcaeDZdgyPOwrzIG5uNR/lhnHAA+W5BX7+eAdJkiQNPN7UqJ8haOCEncCB55DymSCA9/ILVcOq3Htv+8OM1/UxIdxyfJPNNql963szbrm142HbgTzjYdzNBCYXT7moWLDgmRRUYf6CBSlYAgEhv/UWHk5NfpOurtJWDix50PYLL76QnhvHfN7+6zvBfjxIvKtgtJ5mtiHBaOTLPnvtVbz2+mvpM/baY8/0eA9uwx+PJtl15CdSOnkHwSgPUScY7Yk7br8rzY/lkHc86oYgFQStDOd3SZIkbVgMSNczTr5pIaMFiVYzPhN48F5+oWpYFVqyli97IwVvoMV0faLl8dfPP1/71o4HKueBRY4AbNTIkbVv1Ugz45WfR0arJEFKMwgQydfXXn0lfWeZBKcEUAS7PN+zu5gX+XrRd79bG1If+fKPlStr3+obMXxE8eG2gIuWRl5sv740ep990vYjX35x//0pPd0x7Yrp6Z2WTFqkc1wY6crhRxxavLTohbTNeQZdb1xMkSRJ0sBnQDpA0ZJ17jmTUtBES+pREybUflk/xo8/MgWfLCu6WRJQ0GX2u1OmdnTnBC3Aq1etLE47/dTakGqTvvXtytZRltNM62iYfMGkjqCIdBL4DRu2Q/HmsmXFySd9JQ1v1l57fzK90414px13Sp8bOeDAManlM8+XKlO+c2F632qrD6UXLdx9iXyhazD5Qlfqb5zWeNuUtW///2nLn9HFlh/4QDHr57M6Lobw4Hq64JIHMayMsnLIwWOLTx94YHH9TTcWZ59xZu0XSZIkbcj8D2k/V6/bblXraXfG7U3nTfxWccfP7iquu/bqFJwOHjy4uPba6akbZj20lBGclP9/SlA39pBD1mo1lSRJktT/dfc/pAak6hV5C2mjQDQQkC5fsXytbpu0sHWndVSSJElS/+FNjdQSBKHxagZdjqv+Q2gwKkmSJG04DEj7UL0utZIkSZK0ITIglSRJkiS1hAGpJEmSJKklDEglSZIkSS1hQCpJkiRJagkDUkmSJElSSxiQSpIkSZJawoBUkiRJktQSBqSSJEmSpJYwIO1Df/vbX2ufJEmSJEkGpJIkSZKkljAg7UP/+q/vr32S+sZ5E79VPDLv0eKSiy8t7rpzVm2oJEmS1D+8559tap+TEaO/Xyycd3btW2erV6+ufVJPEJC+m7vtLvzvRcVVV11T+/aOH199ZXr/6slfLw4/4tBi39GfSt8Zf+bM24q///3vxfve977ie1O/0xE0HXrYuOK6a24o3v7rX4tzzj0rDatCsPXgA3PStGD6h+fOS5+x9dZbp+lZNljOaaefWmyxxRadxo3xAoHcAQeO6UgrWNYdt9+VPu+3/+iUxnoIALcf+pGOcd58881i2hXT07pi8gWTiicef6oyrUx78MEHFSP+fXjtl2rl9B9z7IS0XiCtJ5x4cjFi+Iji2munFyuWvVUc3/Yds2fd3jGeJEmS1JsGDRpU+9RZvTjTFlKthUCRoKin/vTGG8XM22bUvrUjQGLYD6dNrw0pUoA077HHUjD1hz/+MQ0jwOLF+N++6IJit93/Iw2v57tTphZXXTM9jZ9jWaQjRHrmL1hQjB13RPrMcn79/PPp88WXTOlYZ+bFPJl3mHD0l1OAR1rx8tLfpfcqBJ/Mb+J5k2pDiuKsMycWd/zsrjT9P1auLF5atLj2y9ppnX3PPcXiJUtq3+oj/Q/OnZPmd/1NN7YF0AfVfimKcydNLnYftVsxe/YdKfgkuH36qUeLNWtWFRddMKU2liRJktRaBqRaC8EQQVF3EfTQGjrh6KPSdz5H6yiB6CEHjy0eeWROCtiwYsXyYtBGG6XWwBm33JSGYcnSpcVR448ufnTllZ1aKMsInBcterHYd98xHYEuLZKxTNKRt3oyfNTIkWm54RM775xabTcfsmVH8HvDDTentC5Y8ExaBumd+/Cc4rprr07zYz75fMtoCSVNq1et7GjxXblqVbHZZpunZbCurFejtDaLeTI/0vbaq690LO+lRS8UY8d+Pn3O7bXHnh1BuCRJktRqBqTqQPBF19YZt9yagjY+02pIV+PyC1XDqhDQzZ//THHpZVOLbbbdLgVsIIjCnnvvmVogA4HgoMEbF3vt/cnakGp0Dx41avcUzDH/rmy11YdSy+fU773TQkgLI8FvjuBz4jnfLEaO3D0tg661tCwSRJLOPT75qYYtyL+4/76UJtJGXmLKdy4sthgypBg7bmwxZsxn07DeVBW4V+UfXY0JViVJkqT+wIBUHTYbsmkKWIbvsEOx0Ub/kj7Tosf/XssvVA2rcvONM1JAN2zYDqkVj66rIIiaM+eXxZOPP1k8M//ZjtY9WidZ/oknnpq+10MwSYvrcccfm+bfVTfj3/xmQdt8Bxe/WvDr2pCiOGD/McWf//yH1NJIF13mwbwIkgmMWQYtmUzHf1qPO+6YFFi+/vrrtTl0Rndf1pE0kbZoEab1mO6zS5YsLpavWJb+o9qbWC5pzP/Xevese2uf3jF79t3Fx4bvVPsmSZIktZYBqTrwX0MCml1HfqIjuGnUZbZZt/70tuIHUy9NQSsBWXRlHfrR4anFceolP0jDokXvvRtvXDz4wH3F79sCu7FjD0/DyggOCVojGD7lpFNTN2PmGzcwonUyD1JZP7oB00oawS/dV1kGQeSn998/zePccyZ1zJd0saxxXxhXfHPiWSlofXPZsjRtFboOk5aYPlqEWQYv/r+5vG168rhRWvnOb7xoua6HlmxaXGl53X+/MbWhRWrd/cX999e+tSMwfuHFF1I3ZUmSJKk/8C67fYhurQQp/R2BCzfd6WkwyvR0c43WOgKvvOWO1rzNN9s8/VeV1krufBt3lY3gi88xH1obq9CyyniIcXcYNqzTDYE23XSTtB55GuIGSJEGVI2HSGukh+CS9HLTonoIuuMutqzP8tp/VrkbMOLuvfxWlVaW+dZbb9eGFnXXHzdcf2N6j2kD887vqsv2zO+66112JUmStD509y67BqR9aKAEpHr3oHV36LDti6VLXk7vedAqSZIk9TYDUkmSJElSS/gcUkmSJEnSgGBA2ocaPRqlvxlIaZUkSZI0MBmQSpIkSZJawoBUfYZW13jMiSRJkiQZkKrPfGz4TsXWW29d+yZJkiRpQ2dAqj7z9FOPFuece1btmyRJkqQNnQGp+gzdde+6c1btmyRJkqQNnQGp+szM22YUD8+dV/smSZIkaUNnQKo+87e//bX48dVX1r5JkiRJ2tAZkEqSJEmSWsKAtA/RQjhQDKS0SpIkSRqYDEj7EM/hHCgGSlofmfdoulESrzfffLM2tOeYR8yPefemmHdvpHMgaGZdyePyOAv/e1HHNuBzT8SymX8z82hmWVVp7Uu9kS/NYj1ZDiIvJUmS1gcDUg1o506aXMy45dZ0s6QVy96qDe055sG8mCfz7k1PPP5Ucdzxx6b3DUEz60oel8dZvGRJ2gaXXv7D4qqrrqkN7Z5YNvNvZh6M39V4VWntS5EvE8+b1ON8aRbrSZ6A95cWLU6fJUmSepsBqfrM+mrZmXD0UelmSSP+fXj6Hi1JVctieN7yuccnP5UeRxOYB/Nino0wj50/vmvtWzvmFcvlFa1M0VKHG66/sTj0sHHpM1g205Xl04SYH6+uRFrKIj31xDJC/j0+5/nKsEhnzDvyn3Xda+9Ppt8Q05fXCwzjd5A/bINP7Lxz+p7Ll9fIx4bvVPtUFB/P5sO0sT7I0zr5gkntA9tUbcOQpxUxTp4viHmUxy/j93xZofw98mWzzTavDXlHLCdXXtfAMF7ldcin32HYsNqndvuOXruMSpIk9Yb3/LNN7XMyYvT3i4Xzzq5962z16tW1T+oJusEOlP9mro+0Ms/xR07o1TvtEniddcY3OoI8TrRpQeKk/aVFLxSzZ81OJ9OXXHxpMe1H04pttt2uWLNmVTH5/POL2bPvLuY+PKcYNHjjNP7YQw4pzjn3rI750EL39FP1gx/WZ8mSxcXYcUcUF0+5qDjhxJOLpb9dlILMJ55+Mo2zfNmy4kdXXpmW9fIrr6Q0Rb6SputvurFYvWplStf2221XzLjlpuK8id8q7vjZXR3DSQMBx6cPPDB9B8urFySQJ6+9+kqx+ZAhxUYbDU7jgvRttNG/pDRdOPmC4oSTjkvDcwQmu+wysrh15i0d+fbQ3LnFnDm/LLba6kNp+cw7po/8Zr5r1vxPMfV7U4qXl/6umH3PPWk81j22TT79MV86pvje1O90BONsE9L10AMPdFxYiAsFUV74/uDcOSlfhg/fMaWpHoKrjw3fIbV4bzZk02KLLbbotKzNNxuSpmf9qtJatQ0pD1ixYnlKA3n01ltvd5Q35hH5FmkF4+bzLiNdpAks689//kNx3TU3FN+//LI0DJSrwPgE61X5MmrU7m1l7Y5O6We7xPRDPzq8I6CN8p6XN8rM88/9Kv1OHrIubON6aZckSSobNGhQ7VNn9eJMW0jVZ2iFOuWUk2rf1g9OnDn5Jkgl+Lnj9rvScAK/0752WgruOOFmPII/xjlg/zFpeASjzdp8yJbFtCumpyDzwQfag4/cgw/cl5ZJaxPLKge3LI9lkwZ+YxwQHBz+n4cW474wLs2bIPGpJ59OvxFEzJ51e91gFMyLeRJ085lxb7jh5mLE8BFp3QkGf3rnnbWxOyNwI6j54bTp6Tv5dvJJX0mfCZQiX597/vk0LLCuBKOsK+sVacgxPcEx85+/YEFtaJGCK9JFkDlz5m21oWub9fNZKV/2329MsWDBM51a+MpYZ9aF4JZ3kKbrr726+NxnDkrTo15aQ74NwUUDyhfrwDbPyxvBXJQ3nrk7+647iycen9cRbDZCgEwesCxMv+aqYvdRu6X1Xb7sjRQUViEPyJfjv3xsStMjj7SXQ4JV0k4ZYHqCS8Yl6CS/yYco75Q3yiHlgqCaix+IMmYwKkmS1icDUvUZTmyj9Wt94WSaljhaJGkZCpyUbz/0I7VvvYOWpnmPPZaCGU7qo+UJe+2xZwqEOOnvzjoTNJBW5vvrtqCPrqf8f4/WSFolCRB32WVkR9DQLFpnP7jllunzh7fdtnjt9dfS5yrfOO3UFNjQSge2G+midY18LWO9Wdeuti/TE+i+uWxZsXrNmtrQothv/9G1T0Xx97//vfapMwIqAjvyhXWJfOmOsWMPL44/8eRi0eLmpqvahmPHfj69g7RWlbcIHvNguCvDhg5N7xEk0lL6wosvpPVlXWl1rkIekC+08pKvjEte0ep5wIEHpf+cgpZc0kIL7pKlS4s9994zjQPKG62psazlK5an4ZIkSX3BgFR9hq6GdJEsq7qjb9WwZnCzFwLEffbaqzak3ciRuxdXX/NfKYCI1iLQ4vWnN95In7uLaWnBPPWkU9oD3rbv3cX/GwkoIj0EDaSfVixa7mh5o+spQc4mm22SWtzoYnzvvfel8RvJg5jR++yTunWy7rSO0vpWDy1jBCbfvuiC1PIGWoLplhsB2T9WrkzvzYogreq/uQRzpGvRoheLw484tDa0M9JUlS/dQZBNC/PGgwfXhnRfpHXhooUpkKa80TKalzcCc7pKTzj6yx3dhLuL1s4Pt60v60qr8sEHH1T7pTPyhZZ61ivPl1/cf18KqLfeeuvamO0Xa5YuebmYOfPmtD9EKzWfGTeW1d18lSRJWhcGpHpXoUvwoI02SkEXwRStjAQQ0664rNjyAx8ojpowId0tNVrXjjvumNSyRCsXAUR37DhiRArcaL3kpJ7vIAjIA4Ec4+eYlsCDVs8IXqZdcXkKkmlR5H+LpJXgks977T06db2NlrR6CExu/eltaR5cBDjt9FNTt8zTTj+jGNwWkE0855u1Masd+6UvpQDwmGMnpO/jxx+ZupUS1BPc0kpJvm666SZ1A3GG8ztS62lbulkHgie2EelinJWrVqX/t9JlNLqJopyP5Xzp7l2VTznp1NSS+N6NNy4OOXhsp+2dpxVV2zBPK3nJOlHeyJdyeeM/o2/85S8pgAZ3quUiS9WL+ZaXNeU7F6bAmXWlvEaXbZTHp6v0088+2ylfuEhCWhjO/7bZbrR83viTn6QyhPMnTex4j3zN9w1JkqS+4E2N+hAnnxvyTY3Wh7ghTNy8Jw9oeoJggpPymCetRlJ3EWzTpffmn9ycWrTzmxJJkiS9m3X3pkYGpJLUywhIX3/99eJ973tfal1e3/+dliRJ6i8MSCVJkiRJLeFjX/oxusEOFAMlrXHjGF50t62n6uYytGLxyjGPmF93/1MaqpbVHSy30boMFNzFdcyYz6ZXd+8K3BvIx2a3IdusXBbWBcvlWaDMs5k0NJPWqvLal3pj3+gOlsMyWVaz6005i7sHcyOt/BW4gVjV/sWwuLlYYH5VZTefX6iavt6y8un5vTe2K/Ppqu5pZpx1Qd4zf+5o3ZfIP5bLa33vI5SHvFxVbd8cZaAv8oX1Zl9Z39tY3RPbg3LDe1flJVC24k73qCprVfUT5Y1xy5i2qn6rSk+U8XzejFdvvgxn3qS3apzuavZ4uL6OQ6w382Z7xfGkr8Ryu1NWeiq2XbzKZamvGZBqQOPmOtxkp6u7rnI33DK6VPLKMQ/mFTfuaQY7MsFHVMRVy+oOlstjOgYyKjr+P8kzTOM5pv0B26kvK13KV7PlqCtV5bUvxb6xxZAhvbZOjfBMVPYDltXMerNtP33ggemxRuAGT/HiplLgJIabOvH4IQ74nETx4jPP6uW32I85EeEmaDwqKE58KNc7f3zXYsYtt6b3KEtcdPnulKnpUTsREPHOd4bzOxif6bhbM+/Mj3x9aO7c9XICEicagfxc1/qpHk5GefwVZeRzn/lMbWi13t4PuQt1lM31vY9wh/MoVxPPm5TuOdDIzTfOaDpf1kXUNWzjFbVHN8X2z18RlFDWytuA39k2bMvYN6JM8pnfG4lxYhnxPX+Becb3SEN53BzjVO0b7GPsp13tN1XT8z3Wld/rpZXfIo2N1Et/7HP8bYP3zbPHw1VhPtQFlK+hw7ZPw7jhHDemO2r80R31C3USdRN1VNRPLJc6h/qFecR68Zk6j/otpiffmJ76Kb9QwmfqUZYXd/NnGOWc8h7jMm/my40SSSs3wyO9MQ7L7U3lOiPK+/ow6VvfTjclZJ/ddeQnakPXRnoiP3sLN9pkuZSV9X0eyDEv6rKvff3r6akBrWRAqj5DhZJX1L2FCoM7nsYzH6kIqSRYXl5ZMDwOQGVUzqSNeTCvRpVQoDKKO5si3sFv5WUxf4blB8Z6aUWkt1HFHtOS/ny8ONjyiko8X1aeLoaVp4/xeIV8no22I+Nx8ONxKIGDMelgOcw7lhX5FO/15ss0sR7gM8PAdMwv5h3z4m66+XNDmffM22YUM2felj4zTWwT7oabP1olT1NVXvFqlAcsG9wNl7vigvkxXT7PemmN9Yvf82Uxbaw7Yh2YN+OHSCvjN0orvzFubN+YRyw70hr7RjzPNhdpiLKdl7U8rcwz8qA8nGF5OrnLM7gjc/6s2irMi8ca/eY3C9Kdq8ENyXixbbkLNniO79lnnNl2wnZHunEZjzPixTJm3HJTulPyRd/9bkrPVddML26dMaOYPev24p57Z6d14+SNR+QwPXfHnnrJD1L+8FzfOXN+me5uPO1H09KyeOc7w/md8Rif6VjWTjvulOZHvjIO6eQOzo2QRznyK/L+jtvvSnewDqSXwJkX48R2ReR3bK96Yt75tsmHxTyZzy/uv7/YZutt0vc4kc73y9jnmb68H+bzAt8bifTzYtnUL1VlsyqtiLKZD2c+MSzWtQp3OI+yxaOwuCN5PcyTO11zh3FEvrB8lhvpQOwz5FfkFb8xD16Un9gXq/AIMcox4pnYPIeYFxdkKAd8jruTU9bGHnpY+gyWzUkpj/TiruEEGE88/lQKREhP/lzjegi+WRbvYFlMQ5DC8TGmZ56kh32NNDB/lsV4DCcdkS9gnHzfYPtwZ3wu5Pzhj39MJ9aNnHb6mcXYcWM78pXp+c7dxSm3BF6R1jhBj7Rykt7MiTrpj3wm/ZwbsLy99v5kejRX6Op+AuPHH5MurFC+uEkj5YTHynE39OHDd0zjUB6ok6ibHnzgvvSZ8Uj3UV88si0NN6WyQLrZFulZ1W11FnUfdSCo37gRJHXP/PnPpDyhDPCZepThcTf/37/afuH/8P88tFi1alUaRtCG55/7VUdaeXEDP8a/6IIp6fcqUfZzfL979j1puzdz7A58Z5p8WBm/MX/Gy8tVDOM9Lxukf9TIken7DsOGpXfSzLj8Ht9JD08zYBivGCewncrrWcY+HekiDeQhdVlZpDWvH3iP42m+3HyepKkeygnb7vprr07fJ18wKb23igGp+gwVSlcHtN6wyy4j00kAN5TJMZxHYXxzYudHprDTpuc2th04uoPKiBMwdugfX31leg8cQFkWz/IElQkH3yVLl6YDYVQSpImDajmtb694O50AcMCMQLtKTEv6ObEGy+JKao6Ka9iwHVK+4O2/tt9BmZYb5sH0LA9Mz0Erf7QI0zPPcjqrPPvM/02P0lmz5n/S9ubF9HvuvWc6eeDRK7GsxUuWpHLBlVryq175IN0cXLnyylVZHoMS68L0Y8cdUSxavDjNO5TnF58Zj8/5Y2MIZkhLSPMsbUOuQnPwYR1o/a2XVlAeeHFAp9IHJz1MSx5SBuOggnJaSQsBTTlfZv18Vnp0C+mIq+L8xjznPfZYx0kCZTrSSvobpZXfWBbBEcti2RxIuUrOySlpbXQizAExL9usFyezsQ8y75ie9SGdeTniN5bF9JzQxQGf/YkDMydGVQfoHGWYk/7yvkJayDMe+wRO7CIoICDkTsg8j3XY0KFp2PZDP5JaZqMscPLIPHlcE1ereVZuBMcEP1yhf64tzyIAIBjm5O+xR59I7xEc8zvjMX4ETZxwEagGnsFL+sj7elgXfudknHzn5Je6AtQVefmP/ZAX2zgv35Rt8pvWjXqoo9ge5UcSRXmjrER5i2WtXrMm/c537NJWv1EGKQMnnnhqGhZlMd8PSXvMi/qHedcT5SU0akXI00pQgqr6DdRvlPe8bDbCfLgTe2zjKuVtEPnCdmIdXly4MNU1oE6kHJMv5Bv4jW1E2tiPp19zVRpehXTEvhLHoqiHwDOg+UyZJg8pk6tXrXxnf2vbX7kIxCPBmE9+x3qCJC6kxLzqoc5hX+EdLItpWBYXXPLpSQ8XfCjz8agpxiNwIvCKZ12TPgJ/RD1C693++41J6aR+jTq2CuWY/ZZ0xTHyVwt+nYJEHq/F8qinI62ks5zW7mB+f/7zH1Lesjzqj7jLejNPLliw4JlOLemka999x6SAfPmKZSmtlHm2FfPmRTlk/6ZVjToM1GmUe1oSqevwyT33SPkd2zy2MfOifDIuF5LZ3nkrJxfWCGA57vEca1CmCXo5HnO8yY9nn/vMQemYWg9ppYyQDv4exjaijvjIR9rTTrqjnkB8Lh+7WV+OPdSLjQJgtkPVPh/HKH67e9a9aRjz59wllkVaSWccD6kTKYcMZ5z8PIdtxXpTN4AL8+RpPeTx9y+/rKPOyc9JyiKt9LaICz7UqRxP8/UirRyzm63HQN047gvvNOq0igGp+gyVcU8r+WZREfCYDQ4K35v6nY4rfLh15i3pimLuiaefTJUZVxm7uzNSEcSJbNnsu+5M3S44KU3f205AOGgwPu8EJ3Fw5aBaTiuVFM+3ZD0a4aopJ9XMk3dQ0fNMT/KaF5UkFRgHYObHMJbFQYCDH89nZVmvtZ2Ic1DZbff/SAdTKsA4+SZvOGgRuFL5NQoQmDcHdE4uIg0sn+k5ceBqHMuKoBxslwjsq3ASz0nrwkUL07Sc3A/f4Z0u2kzPujGP/MQiF/POT8xYDz6T1rLyNnxm/rPpwMw6sC7dxTNd99lrr47txBX1emlFKselfBk1avf0nXS88GJ710sCGXBywEkCKNdxpbyZtHISQjlk3uQJLQ4M40o1ZeuxJ56ojbk2ygTlh3IEDuyc6JDPrCvrwfYCV9nZfgyPZ9zSGkMaY9/gwN5dBEJ5eQgcsMkz8jlEl7loxWbaZkVZ6Mrzz9UPqHLsZyFODhsFWOQTLaEgkGZ7c5JJ+SC/c7Efxsl1vs8+8fi81JWebVHPZkM2Tcuj7sr3eZ69C1pxoryVl8X3qN/IZ+bDvosoy/l+SGDwyCNzUp1A/dWo1ZHyQjDCtOX1KsvTGtuZnhB5/RZlg3LCPo5G8wycxFI/NFKVL4E6mv2T4yLrzbbgZJ96jH0m8o9jE+XuwskXNNxe3UEe0ppOPnJRA984rf2CARcO42IXOOnnOHHtte3BXD2sAyfn1Fmks9GFFRBIcJJPsBVln2URoBBARgsZ6aMu233UbindID38zsk3wVAEAFW4kMl6sr6czIPncnMBi3UloMqDqd5CmY+6vrvYp3PsZ1z8Jl+jXFBXhrw3UpWo69inu7K8bVmcV9ASGheRqL/jGeoxDOxTtLIShEWQBHqYEfjWw/7FulDXc17CNmId6h0PGYa8zgB5TAstwVQjBxw4Zq1zGsQxigsecYxi/pwPxLJIK2WwfDxkOOPk5zngGeXUmewPtDbXa3WkzPH7dW3nQ5z/5etVhf2TtLK8CHL32G23lI9c2Iq6LlrkOT/N67d62IfY31rdOgoDUm0wOOiVg05OpJFXps2iK2a9K/nlSoATCipZKogfXXllp+6hVaggqSQaHdSp8LhyTlctTrh6igM7J6c3XN/elYd8euiBB9IBiauBkQZONLjyyZXM+B9Jb+nqYgD5xgktlTEHIQ6Aebfq9XFlr7wN8+Ch2cAkxxVcWjfzA2IjrGt5vaJ17fevvpoOjBzUouU6uhiBE8PQTFrzkxusbNv2tIhEeeV/LfWwLIJJyhFliJMpTpo44WT6aN0AB97TvnZaCpj5P1NgX4plxYG1u2iJy7F/EOQQ7ATWM1oKaSEE+yUXO0BrIwfzTTfdJH0PHPTBSdnLS3+XPnO1nP0uvxId+8rXTvtqeicNYBswHhcNouWH+VCWQ4xbXnaOfOICGidgtK6Srq5OOKo0s78wDsEQ+cM+H60gtK6yLlUXAHL0wiCwYrsSuE39Xv0WDNaBvOVKPeWpUatjd5BW5GllWdRvGw8e3NHaAQJBumzTChT/+a2HvKBcNxO41tPM30IQ22qTzeqXi+6gnBHQEfhzUYt9hO1Kvc8FqScffzINZx3BdiFopAW3UeBGd3TqSHqrsJ911Y2WY0k5kGJZBOhcHKD7LssjfZFW0k362W/iwlW5Z0AZxwqmZR7ROkiesr1ZV/bhPMjqLeybHJt7gh5AgWCb+iO1WrdtB44hIHgPLIt6g7or7zERfxeJ8xQugrJtojdYbE/mH2klbykLn95//xQIk9+01HP8p+5mewTmz7hcLMhbAqMFuhF+Z74EcBwPON50V/m4VU/VOQ3lgDLGejez7HrHw/LxlcCO7UFvIMpxV3VtM/8TJa20kJfP9bjARXroecPFHbZnKtt33Zm2Deva6GIN6ObdH1pHYUCqPsOVzzjI5aru6NvTu/yyg6aDYlvAxI7Y1c7IiTSV7MWXTOly3DK6NnFQiC4r+VXlMg6+VLocLKisOSmOky5Oflh2njeTzz8/VWZUQvVOAuKgxZU9gjXmz7hcTeakii59vKjMaI3iYEy+MIzlcWLGwYfuT6SLAzxdRlgPrlhyQIoKnwr8rDMnphPR/CS6WSyfSpp15KSTeXTnRJoDKOmnhY0TZD735GSQEx6udpInvLqD7UHLNTej4Spyd0UAFC0SPWkJJBghD2mVJC/YXhwQORlgGDcz4QSCEwRacHqaVq78cvWWoInyGl0Nq/C/oijbrBNlm4A5tZbMvjstn5MjymZcyMhPAChncx+e07GsCBi7g7yI1q1AGS6XM1pKKO8EIVzwIfjlJIP9h2F0ieQEiRMYpmVfIL85caa80crCiS3jkmbyiefMUrbZr+iidcjBY9OyeKcbKsPJA1pluPDDdExfbgmk1wQnaSy7nh1HjEjbm1ZxAqKu9kX2V7YNy+PVHdQR7PO0jkbgQHlj3yuXtypRF1MmomyEfD+M6ckLAg6CwkaivLBdon6rwnxJKxcqaC1gGzGM9aJskJfUbwR61G9RNsnTwW3BaiPkKXV6b4m6mK6SrBf51ltBeRnrTmBDyxIvlkuXxijrcVzJuwESvIH01cM24aSfoJbWXL6T38yTckJQxOdAQD7tistTPRPHXsZjHAIhLsiRrjytlBvSzzGOYIYyVP7fcI4yz34S0zMvpmF5rC/7XLTyR1pJZzmt8Z1XV8cNxqHe5WJMT7Yh65j3SKELLvUHaSatHP+oi9hukSY+U29Qd1GHsd7UaVwkpI6j7DMsujoTfLAcAvGonz4/7uBUF3JOw7II8qlXaVVlP+GCKi1xLAtR5zIu79FTB/TeiP9N10OLL/VdpK+rC1zcB6Cnx+7yOQ29ZDjWgLwmrzg+1zvXogt11fGQ8xLSTh7wAnnLuQL5mF8MLYvxCIqZlu0YdWFZXAQtp5VzR9JDmQjMK+q3ri4KsDzSmW+7VjIgVZ8Zf+SEVOGtb/whn64M+RU7lh3iM2nhxYnTD6Ze2mn8ZnASsWTJ4nSSygn3h/7t39LwmD9/ho/PtAxx8CV4pNtFtIKQVipJlh0tLcyPaTkJ4GQ//ttQxsGOYJrpuCKWgt7Hn0rrQ/dklhPLovLjajCVPsMCLSAsn3QxHw4+0VWKNHH1jQMddwKluwrDSF9X3bfIV8YLsXyWwfJYLvI8aoTpGY+Tfw5gp5z0zhXtetPH9s3RXZgTmHIwGHkeqrZhtKDEiWh53l3hf4wcOCibs2fNrg1tV04ry83zD/zOiR55yAkZZYoyeO457V1t+D8W5YWAjq6AeVo5ueQiT9WL+ZaXxQkPZYjtTXnZ5P3vXCAqj0866EIcXZ4obwRfpIV9gpNU8pxghvLHPPlOmUWU11hWoxbCelgeJ7Bx51qwzqQrR74QFHIjE/Y98o91JS0c7LkQFF2vOIGNfZrPIK2Mw7isF9MyD+ZF4MO2ZRngne8M53fKMOMzHctnPnHCyskIrZCNWhFBzwrKI/sk65Z3Ga0qM+QLZYBtQ4tlXp7zz1VYVuzzlDeu/LOu0ZOC8kYZiwsI5TIM1pXyGvVLqNoP+W8vJ4vRlbueKC/I6zLkaYi0sg50K6SuJK38JQGsF/sT24T6LcomJ9pd1W/c2Iq6qBlV+VKub0CdSC8H8ol8Q2wf3rvaXo3E9GC/yE+UKYcsk78TgLJJ2SKfmSbKFOnjAm5VHcKLLsjkOSjXtLr87nftJ9IESvlJc6w/5ZhtwHbkO+OBcSkjpCu6EoPyTvpJG8cTyhA9DphfVZr4Lx3rF1hvpqEMUC7owsm0+fZm2Xla2Xb5d1Qti9ao2D7sL3SL7wnKKgEeF0gIOiif5FGkNbpWRp1EHsVn6q6on6jT8vqJ7frFww7rqJ+4cED9RN7n9RP5Gsuibmc4+xv5TJ6x34PfqK8Yl3e2JQEOF+jpytsoGAP1MPUH6SPf8v2pap/h+JnXGfxOGuNzefxc+ZyGZebHKPKKsh3/4WS+sb+A8pwfo+J/uuRNnDvyCqSTix+xP9TDOQU3mopp8y7V+T5LeSevIq3UE6SVc6moA0kf6cnrN6Zh2kZYDtuuP3jPP9vUPif1HliK1atX1z6pJ6i0mvlTe38wUNLKla+49TcV+bruWJzMxm386fIQlbfEleRoaeHqNyccHAD6o4GU1t7ElXNOWCKoHAioc/hfKCeaG8I2qkI9zkl4MydQ0oaAOpxgcyDtD9FKuCHvwwTkHHcJEPtLoNcqgwYNqn3qrF6caUAqSU3g6i8tLLTg9fcDDVfWaS0fCGmVCMrpRtdVi4Ik9WdcFKWlWQakkiRJkqQW6W5A6n9I+xDdYAeKgZRWSZIkSQOTAakkSZIkqSXsstuHvKnRu8P/2+HjtU+SJEnSu9P/Wvxc7VP32GVXWo8MRiVJkrQh6KvzXgNSSZIkSVJLGJBKkiRJklrCgFTqhp72pZckSZIGkr467/WmRn3ImxpJkiRJejfzpkaSJEmSpAHBgLQPDaQWR1tHJUmSJK1vBqR9iG6w0rvBwv9elN7ffPPN9C5JkiT1hAGppKYRgE44+svF2EMPS9/32nt08dWTv54+S5IkSd1lQLqBorW2/IrAgvehHx2ePoMgZI9PfiqNs9VWHyouufjSNJzvuOvOWWl4tJqV8Xu+HOYFPvMbGMbn8ri8EGna+eO7Ftddc0P6Xh4vxiUdfI50omq8fJwxYz7bKV1V47JcMN55EyevNR6vWJ8y0kQgRz4xHsvlPcc65WkuY/lMk+fz2LGHd8yT+SO2VbwiX2P9mhHpy1tA+bzLLiOL9268cfHE4/PSMN6XLF3arXlLkiRJwYB0gOtpIMB/RHl9bPhOxQ3X35g+//jqK9NvD86dk94jAJt2xfRixYrlxZIli4vf/GZBcfDBB6XheGTeo8XXvv714taZtxQj/v2dIDZ36GHjOi3r6acerf1SFBPPm7RWt0/Gi/TxIpgiTbPvurOYfP75xbcvuiClld+YXz4+rrrqmmKjjQYXs++5J30Hv40/ckJ6xXi49ae3peUvWPBMbUi7mF8+7vcvv6wjrbuO3KXT7/GZda0y6VvfLt74y19S/pGP5CFpJLgkGGYdf/3888X2Qz9Sm2JtP73zzmLzIVsWUy/5QfpO3j/yyJyU9yz7uOOOScPJ3zxf6qWpEfKF9LHtw803zkjv5P0WW2yRPvM+7YrLipcWvZDSI0mSJHWHAak6IQjdbLPNiwP2H5MCIBxw4Jhi9aqVxdhxRxR3z7q3U+B5woknF6d97bRi39E9byG76IIptU/t1qxZ1dGqR8A2e/bdxYjhI9JyCa4GDd64I1iuQvB64eQLUpCUtyaWEbAtX7YsLZ9AL0drJS/SkDvrzIm1T80jiCVwPH/SxBTA8WJdttl2u+Lee+9LwfDDc+eloL9e8Mg8Fi16sTj+y8cWcx9uv2BAnpNutsF5E7+1TtsgR56tWfM/abve8bO7akOL4vXXXy+GD9+x9u0drAvpePCB9nRJkiRJzTIgHaCiWyZBV3TNRHxuNCyGVyEI3X677Yqtt946BUoEJwQ6tOx9YuedU+tk3q10o43+pXj62Wdr37rv7DPOLGbeNiMFY4FgiACN1+IlS2pDmxMB5CabbZICvmhNrGfUqN2LWT+fVew+arfakHb77T86vXYYNqw2pCimfm9Kcc+9s4vXXn2lNqT7yDu6HrP9yGdaIkknraME/fXQUsl40YIa22DpbxelIJXAke67vYE822brbYpN3v/+toD9jbWCckmSJKm3GJAOUHTLpDtmubtqfG40LIaXEXzSCsd/BGkNIwCi+yvDVyx7K3XVPOZLxxTX33RjbYqiePCB+4rftwVoPQ2GTjjpuGLkyN1T4BNooWVZvGgxHDv288XCRQtTOgiOGJfpqsy45dbUmkow++G29D8zv3GwPOHoo1KrH8vIsVxeeWsw3/fdd0xqwe0OWkSZ7txJk1NXXVqfQT4T3B71xSPThQXyux4CTgJY1ov0PjR3bnvL67xHi3POPau47tqri/nzO3c77ilaYIcNHVo81xYkU77IU7zvfe9L5aOM7cI2oSVdkiRJ6g4DUnWYOfO21GIYwSCBEt1f6Vb66QMPTC2rv7j/vtSqGdr/Q3h5CoboNlqFIJJpCbqOO/7Ytf73OnPmzen/ivUQCBLEkQb+c/qDqdU3/omusddeOz2lf/bsO1KrY9wMiJZYXnkLMfOeM+eXtW/vYJx45S2EzLtRWuuZ8p0Liy2GDEnrQBr4TAssCFJT62dbwFkl/ps545ab0nrxn01arx+476HUXZc08s7FApC/5HO0nkf689b0ev89puWVtEQZuHjKRR2B7mmnn5re6cocyPPTTj8zBa691WVYkiRJG473/LNN7XMyYvT3i4Xzzq5962z16tW1T+oJAoF6rZPvBqxfPe/m9c7Vy4Nm139dp++OniyLAPTEE09NreLPP/er1P2YiwWTL5iULk5IkiRpwzZo0KDap87qxZkGpH3o3R6QasNBN126MxOgGohKkiQpdDcgtctuHzIY1btF/LfWYFSSJEnrwoC0DzXq0tpT62OekiRJktQXDEglSZIkSS1hQKq1xONVJEmSJGl9MiDVWnj2KI8NkSRJkqT1yYBUaznllJOKG66/sfZNkiRJktYPA1KthTuoHnrYuNo3SZIkSVo/DEi1lq+e/HXv3itJkiRpvTMg1Vq23nrr4mPDd6p9kyRJkqT1w4BUaznn3LOKp596tPZNkiRJktYPA9I+9Le//bX2qfesj3lKkiRJUl8wIJUkSZIktYQBqSRJkiSpJQxIJUmSJEktYUAqSZIkSWoJA1JJkiRJUksYkEqSJEmSWsKAVJIkSZLUEgakkiRJkqSWMCCVJEmSJLWEAakkSZIkqSUMSCVJkiRJLWFAKkmSJElqCQNSSZIkSVJLGJBKkiRJklrCgFSSJEmS1BIGpJIkSZKkljAglSRJkiS1hAGpJEmSJKklDEglSZIkSS1hQCpJkiRJagkDUkmSJElSSxiQSpIkSZJawoBUkiRJktQSBqSSJEmSpJYwIJUkSZIktYQBqSRJkiSpJQxIJUmSJEkt8Z5/tql9TkaM/n6xcN7ZtW+SJEmSJK2benGmLaSSJEmSpJYwIJUkSZIktYQBqSRJkiSpJQxIJUmSJEktYUAqSZIkSWoJA1JJkiRJUktUPvZFkiRJkqTeVPXYl7UCUkmSJEmS+oJddiVJkiRJLWFAKkmSJElqCQNSSZIkSVJLGJBKkiRJklrCgFSSJEmS1BIGpJIkSZKkljAglSRJkiS1hAGpJG1A7rn77uLggz+XXkcdeWRtaP/2zbPOKk468cTat/Vv9erVKX+u+6//qg3ZcJkXkqT1zYBUkvopgkcCsQggeV1+2WXFsmXLamN0z8MPP1xc+1/XFmeccWZx772/KH44bVrtl9YhTRddeGGndWSdGR7+9Kc/FR/96Edr39a/3//+9+n9Ax/4QHrfkPVFXlCmB8rFEUlS7zMglaR+iCCN4PGIL34xBY+8Jk/+dvGBLbcshgwZUhure554/PHiYzt8rNhvv/3S957OpzfQ8sY6Xn/ddcUuu+zSsY68Pve5zxU77rhjGu/FF18s/rHyH8XQoUPT977w+1deSe8f3m679L4h64u8eOONN4oPfvCDtW+SpA2NAakk9TPz588v5v/f+cVRR43vCB4xatSotmFH1b513+LFi3vc0njrrbf2arfNyy69tPjzn/+cWmkP+fzna0Pb8T2C5WgN3qIPWyuXLl1avHfj93YExRuyv/zlL2vlBeWzN7tQ/6CtLPCSJG2YDEglqZ95+eWX0/v222+f3ntDtDR+pAfzfPXVV9sC0pk9mrYKwS0B97HHHddlK+3vanmx7bbbpve+8Nvf/rZ473vfW/u2YfvVr361VuvljTfcUOy66661b5IkrRsDUknqZzYePDi9r1q1Kr03QrCY/weTYA/8J4//YdLCyO8TJ56Thl9++WVpvPw/mvmNjvJ50K2WGwqdeupX0/eYNpZX1WJK6xm/Mc8qzPPee+5JXYdp8e0KAdG/ffDfikGDBqX/GkYaSUMV1iv/3y3jscxcOc94RXrJrz/+6Y+dAi6GMU+myf+/29WyuAjAcN7zPOZ7PWw3xo1WSMbP87KcdrYPw0Js7/idV54u3hlWte1YHq8QeRGt6pH/DPv53T9Pn+v995P5kLYyls80zAuRL+U8abSeVf85jXJXXibbiOF5HkqS+hcDUknqZ/59p53S++0//WmnYKOMk/AIFuP/ly8vXZpOymkNpZslLZCTv/3tYr/R+6WulzFedAXmpP+xxx4rpk//cRp+4ldOTK2hBAgEgXSlHPUfozpNy/z4zn//yu64/fYUQJa74YZnn302pe2zBx1UG9LYP/7xjxQQXdC2zI/X/ms6deolqYW1HGQQSPOf1PjfbYz38Ny5tTHeybPBbUH/T396exqPdY88j4AzWoP5Pvlb3yq22mqrtN7RotvMsmJeDz7wQOoGzHi86nUFZnzyhnHv/+Uvi4u+8500fuRlpH37oUPTcNK/cuXK4if/5/+k30FaGRbrxjv/0WVbIm5SVNXaTV6XA3HEuGeceWYqH2B9mf+tt92WvpeRX9yMquzWmTPTOv7noYem7/W6BHe1nmWUO+bDeLlf3ndfw/IoSWo9A1JJ6mfonsqdcGmJ4sS8qjWLlqYfXnFFChYJlMKX/vf/Ll5a/FI6Cc+7w9INdYcddqh9a0dQxf9KL2gLSht1iWWc8rR04+Q/oDkCCZbNTYnqee43v0nvzfw/k6CY4GXBggXFV089tSOI/vCHP5zeCdwCyyaQ/sbpp3eMR9CZI8CKPCO4iiCNdY/1j5v4kHflYDQ0syxEd+ONN944La8r0UpIoJ8Hv4jtzf+K43/Ekf7A9JSZffbZp+M33vNgLF+/XOR1HqjGuNtlNzT6Tdv2KweQVbbccss0v2iZBRdXaFn9wue/0JHftIDnZauZ9SQ/c8yXcjd69OgUVIdmyqMkqfUMSCWpHyLQufHGm1LwxEk8rZ7RYoWf//zn6YSfADS30UYbpXeCqMB0BCoECYETf7rOHnzIIemEn+8EqLfddltaZgQcTMtyaGXL0WqZn/yD/xbSFbdRaxTBFgFNOSCqEgERacwD5ghyuONwoIUs7wZM6+mPp09Pgfl++++fhv189uzKPMtFwEWAWRWMopllgWCLeR01fnxtSGMRwB5+xBHpPcf2xhe+8IX0TldUWrfZrtHaGHnKOtRTL6CsCj7j5k553nMRonxxoko8Jmb58uXpHT+7665O+VFVLptZz0Ft2yYPdpkvZbb8aBpamW0dlaT+z4BUkvopAgyCIbpJ0tJzzdVX134piscefTSdbOfBAiJozQPIGJa3fkXXWVr6+I/dF794RLF61ari+BNO6BSARasdQUCOk3+mj3kTlBE0VAVTuapunPXQnRNjxoxJ7yHSFAEIaSB/eMV/Dgm8aCm85tprO1rYCBAJXMp5liPg4oZGUy++OK3PSSefXPulXbPLYjymp9Wu3MJXT/xftuq/tWxv8pvtxDLpikqXVrqzRnBJeaGs0HWY/3BW/W+yqrUbVcFnuVU91ikPIOuJ8hL/g6a18uF5D3dcAEFsx7xcNrOeOVpHme9nPvvZ9D0CVYaTD/t86lNpuCSp/zIglaR+jhYeAhWCCXDCTWBQ9QiXaOnKnxsZw/IT+miNi/8a8jrhK1/p6IIaYrxyMBABRwSkv/jFL5q6UVF37l4bAVq5NbWcpghseE5rrAtBdd4y1kwwFePwiv9SzpkzJ72HZpaFyJeq/2rWU/4PZ4h00Y01lsl/e+nSWg52SQct67Ts8hzbuHkQCNII2AjwyugW3VXwWRVA1hPbLPIh/lucP7aICyCI7did9Qy0jka5yx8N9NCDD6YAO1paJUn9lwGpJA0A+f/mohtk3mU1EBiWu2RG61ce2JVv/lIPrWRVQWEecDTbOgoCpbxltZ4IuqsCtHK33whsGlmzZk16L7f05gjYQCtjCs5H75e6NUfXUDSzLFRdBGiEYI98qQr2Iu3NIl8IkvmvJq2HEUi+UktTuWsr249l563qkRd5eqLFupl1iv/Ukl/1/ssZ3YdjOza7nnEXavYD1q9c7rhx07x58zq1xkqS+i8DUknq5wgOOKGPFqz4n2g5OOLmRwRx5VbIqhsaDa21ki1cuDC910MX2/z/qCFuLEQaCIIJ3rpqHcVee++d3sstj2VxN9hy8IRyt9NoDY7nt1ahKyrBD3chrufNWsAVd9w94MADU6AW/2tEM8tCOdjqStV/OEOk/Te//nVtSHMimIxAL8pLvgyCbbYf8mA98iIPPv/Sjf//br755ul9Zdsy4z+35Vbk8nbs7nrSCpq3ysd+wV2NYeuoJA0MBqSS1E8QHHBjobxFjtYlbpjDiXr8n5GAgBNxurRGSyPT0XJIa2b50R0EqeVumrvtvnuaJ8FCzCOWH61jILitak2l5SkFD22BF/OPG850hS7B/I+T/66yrBwtdZGWqq7HiJbEvDWPoIn8oDWT/ArML//O/znTo1kefucZrHyOZUYQGf+jzOcb26TZZdX7r2Y9Vf/hzJF2LkqwnEDa4zvbLP+NdYpHnowYMSINi4Dzv194Ib0zDY/TifKSB59VAXW00kd+NdJRPtqCS9JdbsVk2eXtiK7WM0crKP/dDdEqS/fj7vx3V5LUWgakktSPcAIfN3ThddFFFxa7fOITxXXXX98pOPjm2Wenlstjj/1yGo9ujHTT5H+IeTfLCB7KLY3M63sXX5yCjJhH3NgoWrdw7HHHpVbSSE8eLPPoFwI8WkfrBVJVSCfdYrmBTcyXF89DDVXPp0S9QJVH14wcOTLlV8yPoCrPM7rhstzLL7+sYxyCtlAVRBJIlVtJu1oWeV4VbDVS1Yqdi7Tzv9A87XmrJvkXv7FN+f8nzzKNwIyLAXTjjXnwXE/KEfMod8uuyosvjB2btnmUlzwAr8K4BJd5K2aI7sPl7djMesZ/RblYkre6Rgspef/pAw5InyVJ/d97/tmm9lmS9C5DyxIn99zoJg84egNdhGml+uG0ab0+b0mStGGwhVSS3sWqbmjUG2gpjRvHGIxKkqSeMiCVpHcxuoLSvbS3RRdWbxwjSZLWhQGpJL1LcTMYbjgUd7btLcyXmxIdf8IJ3jhGkiStE/9DKknvMvG/UZxxxpnpZja94agjj0w3jKELMMFob81XkiRtuAxIJUmSJEktYZddSZIkSVJLGJBKkiRJklrCgFSSJEmS1BIGpJIkSZKkljAglSRJkiS1hAGpJEmSJKklDEglSZIkSS1hQCpJkiRJagkDUkmSJElSSxiQSpIkSZJawoBUkiRJktQSBqSSJEmSpJYwIJUkSZIktYQBqSRJkiSpJQxIJUmSJEktYUAqSZIkSWoJA1JJkiRJUksYkEqSJEmSWsKAVJIkSZLUEgakkiRJkqSWMCCVJEmSJLWEAakkSZIkqQWK4v8HzW7YydVyBwYAAAAASUVORK5CYII=" alt="" width="935" height="263" /></p> | |
− | <p><span lang="EN-US"> </span | + | <p><span lang="EN-US"> </span><span lang="EN-US">Safety Check</span>는 <span lang="EN-US">TASKING VX-toolset for TriCore</span>에서 완전히 통합되어 사용 가능하고<span lang="EN-US"> VX-toolset for RH850-</span>에서 곧 사용 가능하다<span lang="EN-US">. </span>추가적으로 <span lang="EN-US">standalone </span>제품으로도 출시 될 계획이다<span lang="EN-US">.</span></p> |
− | + | ||
− | + | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림;"> </span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림;"> </span></p> | ||
<p> </p> | <p> </p> | ||
88번째 줄: | 77번째 줄: | ||
<p style="margin: 0cm 0cm 0pt;"> </p> | <p style="margin: 0cm 0cm 0pt;"> </p> | ||
<p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> </span></p> | <p style="margin: 0cm 0cm 0pt;"><span style="font-family: 굴림; font-size: small;"> </span></p> | ||
− |
2016년 6월 13일 (월) 15:54 기준 최신판
차량 소프트웨어 개발과 안전 요구사항
오늘날 자동차의 제조 비용의 30%는 전자시스템이 차지하며 비중은 더 늘어날 것이다. 동시에 소프트웨어는 ADAS 및 차량 주변의 다른 기능들을 지원하기 위한 소프트웨어 역시 증가하고 있다. 멀티코어 마이크로컨트롤러를 사용가능 함에 따라 비용을 절감하기 위해 자동차 제조업체는 서로 다른 소프트웨어를 하나의 제어기에 통합하고 있다. 더 적은 하드웨어에 더 많은 소프트웨어가 들어가는 지금의 상황은 잠재적으로 간섭현상을 야기할 수 있기 때문에 소프트웨어 안전에 대한 도전이라고 볼수 있다.
무슨 의미인가 ??
자동차 임베디드 시스템에서 안전과 관련된 사항을 인식하고 예방하는 것이 더욱더 중요해지고 있다. ISO 26262에 따른 기능 안전 요구사항의 핵심은 “freedom from Interference” 이고, 따라서 안전 요구사항에 위반되지 않는다는 증거가 필요하다. 각각의 컨트롤 유닛이 해당 사항을 위반하지 않는지 증명하는 것은 간단할 수 있는 반면에 여러 어플리케이션이 하나의 컨트롤 유닛에서 병렬로 수행되는 것은 더 높은 난이도를 요구한다.
<Freedom from interference>
Absence of cascading Failures (1.13) between two or more elements (1.32) that could lead to the violation of a safety requirement
-
element = „system or part of a system including components, hardware, software, hardware parts, and software units“ (ISO 26262, Part 1, Definition 1.32)
-
cascading failure = „failure of an element of an item causing another element or elements of the same item to fail“ (ISO 26262, Part 1, Definition 1.13)
IF...
멀티코어 환경에서 모든 어플리케이션을 통합한 이후에 개발 프로세스가 거의 끝나갈 때 안전사항 위반을 발견하게 된다면?
OR...
개발 초기 단계에서 이러한 위반사항을 발견하기 위해 정적 검증과 유닛 테스트에 투자하는 시간을 줄이길 원한다면?
THEN...
그렇다면 어플리케이션을 실행하기 전에 안전 관련 이슈를 식별하기 위한 도움이 필요한지, 개발환경 구축에서 당신의 프로세스가 잘 통합되었는지 확인해야 한다.
WHAT IF YOU COULD...
프로젝트를 빌드하는 중에 안전사항 위반을 컴파일러 경고처럼 확인 할 수 있다면?
일반적인 메시지 대신 영향을 끼치는 코드가 무엇이고 그에 대한 설명을 볼 수 있다면?
V-model에서 요구되는 사양에 대해 서로 다른 ASIL 등급간에 읽기/쓰기 위반사항이 있는지 확인할 수 있는 프로토콜이 있다면?
나중에 기능 안전 전문가가 해야 할 안전 위반 사항 검증을 미리 개발자가 할 수 있다면?
WHAT YOU CAN DO
일반적인 정적 분석 도구들을 결합하거나 수동 코드 리뷰를 통해 Freedom from Interference 를 검증하려 애쓰지 마라. 위험상태가 뒤섞여 있는 시스템을 분석하기 위해 개발된 툴의 이점을 살펴보고, 해당 툴을 사용하여 안전 요구 사항을 검증하면 된다.
TASKING SAFETY CHECKER
기존의 전통적인 정적 분석 도구들과는 달리, TASKING Safety Checker는 ASIL을 식별하는 정적 분석 도구로 서로 다른 ASIL 요구사항을 가지는 소프트웨어 컴포넌트 사이에서 간섭 현상을 검출한다. 이러한 간섭은 ASIL을 식별하지 않는 다른 정적 분석 도구에서 소프트웨어 구조가 안전하고 표준에 준수하여 설계되었다고 검증된 경우에도 발견된다. 따라서 Safety Checker는 당신이 사용하고 있는 정적 도구의 이상적인 파트너가 될 것이고 전통적인 소프트웨어 테스트와 ISO 26262 요구사항 사이에서의 간격을 줄일 것이다.
TASKING Safety Checker는 코드와 데이터 오브젝트를 안전 클래스로 할당한다.(i.e 소프트웨어 통합 레벨). Safety Checker는 관련된 C 소스파일을 검사하고 검증된 데이터를 ELF object 파일이나 별도의 파일에 저장한다.(DWARF 디버그 포맷으로 바이너리 코드와 데이터 섹션에 영향을 주지 않음). 순차적으로 모든 파일의 검증 자료는 취합되고 사용자에게 피드백을 전달한다. 이러한 접근으로 당신의 코드를 검증할 수 있다.
Safety Check는 TASKING VX-toolset for TriCore에서 완전히 통합되어 사용 가능하고 VX-toolset for RH850-에서 곧 사용 가능하다. 추가적으로 standalone 제품으로도 출시 될 계획이다.