commit ce402ef828ec82f1c3f8c53a0fe151b75ebf0f6a Author: bangae1 Date: Thu Dec 18 23:03:26 2025 +0900 first diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c5e7300 --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ +/logs/ diff --git a/api/IntegratedAppr/통합결재 목록(관리자&부서)조회.http b/api/IntegratedAppr/통합결재 목록(관리자&부서)조회.http new file mode 100644 index 0000000..65b0725 --- /dev/null +++ b/api/IntegratedAppr/통합결재 목록(관리자&부서)조회.http @@ -0,0 +1,6 @@ +### GET request to example server +GET http://localhost:8010/api/itg/appr?page=1&row=10 +sabun: psn14020 + + +### \ No newline at end of file diff --git a/api/IntegratedAppr/통합결재 승인목록(본인)조회.http b/api/IntegratedAppr/통합결재 승인목록(본인)조회.http new file mode 100644 index 0000000..ac34ab8 --- /dev/null +++ b/api/IntegratedAppr/통합결재 승인목록(본인)조회.http @@ -0,0 +1,6 @@ +### GET request to example server +GET http://localhost:8010/api/itg/appr/req?page=1&row=10 +sabun: 17131303 + + +### \ No newline at end of file diff --git a/api/approval/가격조사 결재 상태 변경.http b/api/approval/가격조사 결재 상태 변경.http new file mode 100644 index 0000000..5344430 --- /dev/null +++ b/api/approval/가격조사 결재 상태 변경.http @@ -0,0 +1,16 @@ +PUT http://localhost:8010//api/appr +sabun: 17131304 +Content-Type: application/json + +{ + "apprNo": "APPR-0000000040", + "apprOrd": 4, + "sabun": "17131304", + "apprStatCd": "0200", + "reason": "" +} + +### + +#APPR-20250519017,20,17131303,김진형,0000,결재요청 +#APPR-20250519017,30,17131304,손원장,0000,결재요청 diff --git a/api/business/비밀번호 변경.http b/api/business/비밀번호 변경.http new file mode 100644 index 0000000..c420f3f --- /dev/null +++ b/api/business/비밀번호 변경.http @@ -0,0 +1,12 @@ +PUT http://localhost:8010//api/business/password +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OCIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk4IiwiaWF0IjoxNzQ2MDEyNjcyLCJleHAiOjE3NDYwMTI5NzJ9.RaT9wa3_8oPeL6nWv1_uM6QlY1mcHyCN2tC6sP_N03w +Content-Type: application/json + +{ + "bizNo": "999-99-99998", + "oldPwd": "kospo2025!", + "pwd": "kospo2024!", + "rePwd": "kospo2024!" +} + +### \ No newline at end of file diff --git a/api/business/회원가입.http b/api/business/회원가입.http new file mode 100644 index 0000000..30142f8 --- /dev/null +++ b/api/business/회원가입.http @@ -0,0 +1,13 @@ +POST http://localhost:8010//api/business +Content-Type: application/json + +{ + "bizNo": "999-99-99998", + "pwd": "kospo2025!", + "rePwd": "kospo2025!", + "compNm": "테스트2", + "repNm": "테스트2", + "email": "bangae1@gmail.com" +} + +### \ No newline at end of file diff --git a/api/business/회원정보 수정.http b/api/business/회원정보 수정.http new file mode 100644 index 0000000..97cc678 --- /dev/null +++ b/api/business/회원정보 수정.http @@ -0,0 +1,12 @@ +PUT http://localhost:8010//api/business +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OCIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk4IiwiaWF0IjoxNzQ2MDEyNjcyLCJleHAiOjE3NDYwMTI5NzJ9.RaT9wa3_8oPeL6nWv1_uM6QlY1mcHyCN2tC6sP_N03w +Content-Type: application/json + +{ + "bizNo": "999-99-99998", + "compNm": "테스트3", + "repNm": "테스트3", + "email": "bangae3@gmail.com" +} + +### \ No newline at end of file diff --git a/api/business/회원탈퇴.http b/api/business/회원탈퇴.http new file mode 100644 index 0000000..c271610 --- /dev/null +++ b/api/business/회원탈퇴.http @@ -0,0 +1,5 @@ +DELETE http://localhost:8010//api/business/999-99-99998 +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OCIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk4IiwiaWF0IjoxNzQ2MDEyNjcyLCJleHAiOjE3NDYwMTI5NzJ9.RaT9wa3_8oPeL6nWv1_uM6QlY1mcHyCN2tC6sP_N03w +Content-Type: application/json + +### \ No newline at end of file diff --git a/api/contract/계약관리 상세조회.http b/api/contract/계약관리 상세조회.http new file mode 100644 index 0000000..6e05089 --- /dev/null +++ b/api/contract/계약관리 상세조회.http @@ -0,0 +1,4 @@ +### GET request to example server +GET http://localhost:8010/api/cont/CONT-0000000005 + +### \ No newline at end of file diff --git a/api/contract/계약관리 조회(페이징).http b/api/contract/계약관리 조회(페이징).http new file mode 100644 index 0000000..dc69532 --- /dev/null +++ b/api/contract/계약관리 조회(페이징).http @@ -0,0 +1,5 @@ +### GET request to example server +GET http://localhost:8010/api/cont/page + ?cateStatCd=&signSdt=&signEdt=&page=1&row=10 + +### \ No newline at end of file diff --git a/api/contract/계약관리수정.http b/api/contract/계약관리수정.http new file mode 100644 index 0000000..7e124d3 --- /dev/null +++ b/api/contract/계약관리수정.http @@ -0,0 +1,22 @@ +PUT http://localhost:8010/api/cont +Content-Type: application/json + +{ + "contNo": "CONT-20250526009", + "bizNo": "999-99-99999", + "prcsNo": "PRCS-20250522034", + "compNm": "영창피아노", + "contAmt": 100010, + "signDt": "2025-05-26", + "contSdat": "2025-06-01", + "contEdat": "2025-06-06", + "contAtts": [ + { + "logiFnm": "계약서12.pdf", + "fileOrd": 1, + "data": "aWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjA==" + } + ] +} + +### \ No newline at end of file diff --git a/api/contract/계약관리저장.http b/api/contract/계약관리저장.http new file mode 100644 index 0000000..9683918 --- /dev/null +++ b/api/contract/계약관리저장.http @@ -0,0 +1,21 @@ +POST http://localhost:8010/api/cont +Content-Type: application/json + +{ + "bizNo": "999-99-99999", + "prcsNo": "PRCS-20250522034", + "compNm": "영창피아노", + "contAmt": 100000, + "signDt": "2025-05-26", + "contSdat": "2025-06-01", + "contEdat": "2025-06-06", + "contAtts": [ + { + "logiFnm": "계약서.pdf", + "fileOrd": 1, + "data": "aWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjA==" + } + ] +} + +### \ No newline at end of file diff --git a/api/dtlSpec/상세규격 엑셀업로드.http b/api/dtlSpec/상세규격 엑셀업로드.http new file mode 100644 index 0000000..5251053 --- /dev/null +++ b/api/dtlSpec/상세규격 엑셀업로드.http @@ -0,0 +1,8 @@ +POST https://svcm.hmsn.ink/api/dtl/excel +Content-Type: application/json + +{ + "data": "UEsDBBQACAgIAOcctFoAAAAAAAAAAAAAAAAYAAAAeGwvZHJhd2luZ3MvZHJhd2luZzEueG1sndBdbsIwDAfwE+wOVd5pWhgTQxRe0E4wDuAlbhuRj8oOo9x+0Uo2aXsBHm3LP/nvzW50tvhEYhN8I+qyEgV6FbTxXSMO72+zlSg4gtdgg8dGXJDFbvu0GTWtz7ynIu17XqeyEX2Mw1pKVj064DIM6NO0DeQgppI6qQnOSXZWzqvqRfJACJp7xLifJuLqwQOaA+Pz/k3XhLY1CvdBnRz6OCGEFmL6Bfdm4KypB65RPVD8AcZ/gjOKAoc2liq46ynZSEL9PAk4/hr13chSvsrVX8jdFMcBHU/DLLlDesiHsSZevpNlRnfugbdoAx2By8i4OPjj3bEqyTa1KCtssV7ercyzIrdfUEsHCAdiaYMFAQAABwMAAFBLAwQUAAgICADnHLRaAAAAAAAAAAAAAAAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbJ2V3Y6jIBiGr2DvwXBeUaud1qiTnWkmO2eTyc7uMYNYSUUMYG3vftG2pIX9MXsGn+/38AgYs8cja7wDEZLyNgehHwCPtJiXtN3l4OP7y2INPKlQW6KGtyQHJyLBY/ElG7jYy5oQ5WlAK3NQK9WlEEpcE4akzzvS6icVFwwpPRU7KDtBUDk1sQZGQbCCDNEWnAmpmMPgVUUx2XLcM9KqM0SQBimtL2vaySuNHR0co1hwySvlY84uJG2AITliMgmt74QYnmPEkNj33UIjO23xSRuqTpOXwRxy0Is2vTAWRmPsSfX66YE11/AxjOd5O5u5gZs7+2OY/B8pDGAYWqgYuXsxXwthQ2LzMOZELlekyCbkmygy3quGtuRNeLJnevNPT6ThQw70xb0U3umuVmMBFhk0fdPgByWDvBl74zX+5Hw/Tl7Lu6bb7Mt04HpN3EvF2TdyXiIEXkkq1DfqmTc/aalqXYv81dLU3/lgwon/kIz4ibhFChWZ4IMnRk6R4XHwVRPlxNUNUlcPRZDBg1bCl8STmwjvE89uIrpPbN3E0iSgdjJikRGLppbopiW2xNxEYom5iZUldk1MrxX5we+tlsZq6RAfLCs3sbas3IRttbyxiuI/WcXGKnaIG8vKTdhWbsK2imdZJcYq+aeVm7Ct3IRtlfzdCt5c/lKgQf9mPJFS/eWJ1zKcPj7zZyl+AVBLBwi1xQfRDQIAAJ0GAABQSwMEFAAICAgA5xy0WgAAAAAAAAAAAAAAACMAAAB4bC93b3Jrc2hlZXRzL19yZWxzL3NoZWV0MS54bWwucmVsc43PSwrCMBAG4BN4hzB7k9aFiDTtRoRupR5gSKYPbB4k8dHbm42i4MLlzM98w181DzOzG4U4OSuh5AUwssrpyQ4Szt1xvQMWE1qNs7MkYaEITb2qTjRjyjdxnHxkGbFRwpiS3wsR1UgGI3eebE56FwymPIZBeFQXHEhsimIrwqcB9ZfJWi0htLoE1i2e/rFd30+KDk5dDdn044XQAe+5WCYxDJQkcP7avcOSZxZEXYmvivUTUEsHCK2o602zAAAAKgEAAFBLAwQUAAgICADnHLRaAAAAAAAAAAAAAAAAEwAAAHhsL3RoZW1lL3RoZW1lMS54bWzNV9tu3CAQ/YL+A+K9wde9KbtRsptVH1pV6rbqM7HxpcHYAjZp/r4Ye218S6JmI2VfAuMzhzMzwJDLq78ZBQ+EizRna2hfWBAQFuRhyuI1/PVz/3kBgZCYhZjmjKzhExHwavPpEq9kQjIClDsTK7yGiZTFCiERKDMWF3lBmPoW5TzDUk15jEKOHxVtRpFjWTOU4ZTB2p+/xj+PojQguzw4ZoTJioQTiqWSLpK0EBAwnCmNh4QQKeDmJPKWktJDlIaA8kOglQ+w4b1d/hE8vttSDh4wXUNL/yDaXKIGQOUQt9e/GlcDwnvnJT6n4hvienwagINARTFc23MW/t6rsQaoGg65b6891/U7eIPfHWq5udlaXX63xXsDvOtdL3y3g/davD8S62xn2R283+Jnw3hnN7vtrIPXoISm7H6Atm3f325rdAOJcvrlZXiLQsbOqfyZnNpHGf6T870C6OKq7cmAfCpIhAOFu+YppiU9XhE8bg/EmB31iLOUvdMqLTEyA9VhZ92ov+sjqaOOUkoP8omSr0JLEjlNw70y6ol2apJcJGpYL9fBxRzrMeC5/J3K5JDgQi1j6xViUVPHAhS5UIcJTnLrpByzb3l4Kuvp3CkHLFu75Td2lUJZWWfz9pA29HoWC1OAr0lfL8JYrCvCHRExd18nwrbOpWI5omJhP6cCGVVRBwXgsmv4XqUIiABTEpZ1qvxP1T17paeS2Q3bGQlv6Z2t0h0RxnbrijC2YYJD0jefudbL5XipnVEZ88V71BoN7wbKujPwqM6c6yuaABdrGKnrTA2zQvEJFkOAaaweJ4GsE/0/N0vBhdxhkVQw/amKP0sl4YCmmdrrZhkoa7XZztz6uOKW1sfLHOoXmUQRCeSEpZ2qbxXJ6Nc3gstJflSiD0n4CO7okf/AKlH+3C4TGKZCNtkMU25s7jaLveuqPoojLzz9gKFFguuOYl7mFVyPGzlGHFppPyo0lsK7eH+OrvuyU+/SnGgg88lb7P2avKHKHVflj951y4X1fJd4e0MwpC3Gpbnj0qZ6xxkfBMZys4m8OZPVfGM36O9aZLwr9az3T9vJsvkHUEsHCGWjgWEoAwAArQ4AAFBLAwQUAAgICADnHLRaAAAAAAAAAAAAAAAAFAAAAHhsL3NoYXJlZFN0cmluZ3MueG1sZdCxTsMwEAbgJ+AdLO/UaYWqCjnugMQTwANYydFYis8h56CyVkUKsDF1qMQKiAkGGHiiJn0HjGDBGe+7/+6kk/OlLdkV1GQcpnw8SjgDzFxucJHy87PTwxln5DXmunQIKb8G4nN1IIk8C6NIKS+8r46FoKwAq2nkKsDQuXC11T6U9UJQVYPOqQDwthSTJJkKqw1ylrkGfTg75axBc9nAyR8kXEkySnq1f2i7lxspvJLiR35197HdvT3H2t0/9dt1rH276R5vB9nVpl+9xjqzli3ZkbVxA/Rgwbrd333GOp4MZ7v3r39JEZ6nvgFQSwcIOaKSW+wAAAB6AQAAUEsDBBQACAgIAOcctFoAAAAAAAAAAAAAAAANAAAAeGwvc3R5bGVzLnhtbLVUTW+cMBD9Bf0Plu9Zs7ttlERAFKWi6qU9ZCv1aowBK/5AtjeF/vqOMWTZbqMkK5UD2DPj954fY6e3vZLoiVsnjM7wepVgxDUzldBNhn/siosrjJynuqLSaJ7hgTt8m39InR8kf2g59wgQtMtw6313Q4hjLVfUrUzHNWRqYxX1MLUNcZ3ltHJhkZJkkySXRFGhcUS46dcfKTvBUYJZ40ztV8woYupaMH6KdE2uCWUzkjqF+YccRe3jvrsA2I56UQop/DCqwnlaG+0dYmavfYa3UyBP3W/0RCX4lIBRJE+ZkcYi25QZLopkfEJYU8Vj4Z0VVIbQqGMKKqGNDUESUeO7/BsvPmfjRSwfykDwGTDjxwGckPLYCwjkKZjmudUFTNA03g0dcGlolAgz1r1SLUXT+i+WDm9f4owUVdDR3C/92n6++nR/GWDKlxJkgfnMNn5gn6WxFRyEeadrPIfCwikJtnIpH0Lz/6yPSvsaxZqvVYbhFAXQeQg+TkO9V4WaJ7Tr5HAHBmjFI0wMFSbOAu+SLpIveLfn8fb1GwXkKZ2TKBw4uBS+B6pxsWut0I87Uwg/zuES8YKFRiqN90Zh9MvSbsf7MR320tcvy90c5K7fLRcw3if+NTUL8zb/w7yZn0w/dNFWR031HD3QhkOc4W/hHpMYlXshvdAxd9QvgFn1h1aJ2cOtnf8BUEsHCITDsawJAgAA+gUAAFBLAwQUAAgICADnHLRaAAAAAAAAAAAAAAAADwAAAHhsL3dvcmtib29rLnhtbJ2SS07DMBCGT8AdIu9bJ6igNmrSDULqBrGAA7j2pLHiR2S7Ib0CXIGDcCi4A9M0iVS6iVj5Od98sv/1ptUqasB5aU1GknlMIjDcCmn2GXl9eZwtSeQDM4IpayAjR/Bkk9+s36yrdtZWEdYbn5EyhDql1PMSNPNzW4PBk8I6zQIu3Z762gETvgQIWtHbOL6nmklDzoTUTWHYopAcHiw/aDDhDHGgWEB7X8raDzTdXuG05M56W4Q5t7onoQGn0HLohJYXQppPMdLMVYd6hsgaLXZSyXDsvEZMk5GDM2nPmI0ap5oU+6eNVsPlNllM8756zBVdXdi3yd3/SElMk+QPasGu32K6FuMjSU/DjD/SRyQf4/bsaL7u+L4fT+kMGMxGerlTQCLDNC6/Pz5/3r8SDO/p0lZgtknkUokTtxULghg6cAQU0oB4wkKP+5wp3vWhQ9f8F1BLBwhbusWcUwEAACcDAABQSwMEFAAICAgA5xy0WgAAAAAAAAAAAAAAABoAAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsc62SQWrDMBBFT9A7iNnXspNSSomcTShk26YHENLYMrElIU3a+vadNuA6EEIXXon/xfz/0Giz/Rp68YEpd8ErqIoSBHoTbOdbBe+Hl/snEJm0t7oPHhWMmGFb321esdfEM9l1MQsO8VmBI4rPUmbjcNC5CBE93zQhDZpYplZGbY66Rbkqy0eZ5hlQX2SKvVWQ9rYCcRgj/ic7NE1ncBfMaUBPVyok8SxyoE4tkoJfeTargsNAXmdYLcmQaez5DSeIs75Vv1603umE9o0SL3hOMbdvwTwsCfMZ0jE7RPoDmawfVD6mxciLH1d/A1BLBwiWGcFT6gAAALkCAABQSwMEFAAICAgA5xy0WgAAAAAAAAAAAAAAAAsAAABfcmVscy8ucmVsc43PQQ6CMBAF0BN4h2b2UnBhjKGwMSZsDR6gtkMhQKdpq8Lt7VKNC5eT+fN+pqyXeWIP9GEgK6DIcmBoFenBGgHX9rw9AAtRWi0nsihgxQB1tSkvOMmYbkI/uMASYoOAPkZ35DyoHmcZMnJo06YjP8uYRm+4k2qUBvkuz/fcvxtQfZis0QJ8owtg7erwH5u6blB4InWf0cYfFV+JJEtvMApYJv4kP96IxiyhwKuSfzxYvQBQSwcIpG+hILIAAAAoAQAAUEsDBBQACAgIAOcctFoAAAAAAAAAAAAAAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbLVTy07DMBD8Av4h8hU1bjkghJr2wOMISJQPWOxNY9Uved3X37NJWiSqIIHUXry2xzsz67Wn852zxQYTmeArMSnHokCvgjZ+WYmPxfPoThSUwWuwwWMl9khiPruaLvYRqeBkT5Voco73UpJq0AGVIaJnpA7JQeZlWsoIagVLlDfj8a1UwWf0eZRbDjGbPmINa5uLh36/pa4ExGiNgsy+JJOJ4mnHYG+zXcs/5G28PjEzOhgpE9ruDDUm0vWpAKPUKrzyzSSj8V8Soa6NQh3U2nFKSTEhaGoQs7PlNqRVN+813yDlF3BMKndWfoMkuzApD5We3wc1kFC/58SNpiEvPw6c04dOsGXOIc0DRMfJJevPe4vDhXfIOZUzfwsckuqAfrxoqzmWDoz/7c19hrA66svuZ8++AFBLBwhtiLRQNQEAABkEAABQSwECFAAUAAgICADnHLRaB2JpgwUBAAAHAwAAGAAAAAAAAAAAAAAAAAAAAAAAeGwvZHJhd2luZ3MvZHJhd2luZzEueG1sUEsBAhQAFAAICAgA5xy0WrXFB9ENAgAAnQYAABgAAAAAAAAAAAAAAAAASwEAAHhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbFBLAQIUABQACAgIAOcctFqtqOtNswAAACoBAAAjAAAAAAAAAAAAAAAAAJ4DAAB4bC93b3Jrc2hlZXRzL19yZWxzL3NoZWV0MS54bWwucmVsc1BLAQIUABQACAgIAOcctFplo4FhKAMAAK0OAAATAAAAAAAAAAAAAAAAAKIEAAB4bC90aGVtZS90aGVtZTEueG1sUEsBAhQAFAAICAgA5xy0WjmiklvsAAAAegEAABQAAAAAAAAAAAAAAAAACwgAAHhsL3NoYXJlZFN0cmluZ3MueG1sUEsBAhQAFAAICAgA5xy0WoTDsawJAgAA+gUAAA0AAAAAAAAAAAAAAAAAOQkAAHhsL3N0eWxlcy54bWxQSwECFAAUAAgICADnHLRaW7rFnFMBAAAnAwAADwAAAAAAAAAAAAAAAAB9CwAAeGwvd29ya2Jvb2sueG1sUEsBAhQAFAAICAgA5xy0WpYZwVPqAAAAuQIAABoAAAAAAAAAAAAAAAAADQ0AAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzUEsBAhQAFAAICAgA5xy0WqRvoSCyAAAAKAEAAAsAAAAAAAAAAAAAAAAAPw4AAF9yZWxzLy5yZWxzUEsBAhQAFAAICAgA5xy0Wm2ItFA1AQAAGQQAABMAAAAAAAAAAAAAAAAAKg8AAFtDb250ZW50X1R5cGVzXS54bWxQSwUGAAAAAAoACgCaAgAAoBAAAAAA" +} + +### \ No newline at end of file diff --git a/api/estimate/견적서(첨부파일) 삭제.http b/api/estimate/견적서(첨부파일) 삭제.http new file mode 100644 index 0000000..94be556 --- /dev/null +++ b/api/estimate/견적서(첨부파일) 삭제.http @@ -0,0 +1,4 @@ +DELETE http://localhost:8010/api/bid/BID-0000000009/1 +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OSIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk5IiwiaWF0IjoxNzQ1NTkwNjQ3LCJleHAiOjE3NDU1OTA5NDd9.a9nwoQTDV702VbU0HnP1jS8SGhFi_3UjkjdBcjoDzCE + +### \ No newline at end of file diff --git a/api/estimate/견적수정.http b/api/estimate/견적수정.http new file mode 100644 index 0000000..75ecbfc --- /dev/null +++ b/api/estimate/견적수정.http @@ -0,0 +1,24 @@ +PUT http://localhost:8010/api/estimate +Content-Type: application/json +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OSIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk5IiwiaWF0IjoxNzQ3MDQ4NDI5LCJleHAiOjE3NDcwNTAyMjl9.6SzI3eiNVmXOz1s1p8ab26fT80rbSJBfoDlKLQ4z5Sg + +{ + "estimates": [ + { + "estNo": "EST-0000000003", + "mngNm": "조진우", + "unitPrc": 2, + "amt": 40000 + }, + { + "estNo": "EST-0000000004", + "mngNm": "조진우", + "unitPrc": 12, + "amt": 60000 + } + ], + "pbAtts": [] +} + + +### \ No newline at end of file diff --git a/api/estimate/견적저장.http b/api/estimate/견적저장.http new file mode 100644 index 0000000..dc460af --- /dev/null +++ b/api/estimate/견적저장.http @@ -0,0 +1,28 @@ +POST http://localhost:8010/api/estimate +Content-Type: application/json +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6IjExMS0xMS0xMTExMSIsImlwIjoiMTgyLjIyNy4xNS45MiIsInN1YiI6IjExMS0xMS0xMTExMSIsImlhdCI6MTc0NzY0MDcxMCwiZXhwIjoxNzQ3NjQyNTEwfQ.nUFFdX1nZ_-n_TLzZbfHLIOEbt0swKcGPOQ1nR_2MzI + +{ + "estimates": [ + { + "bizNo": "111-11-11111", + "prcsNo": "PRCS-20250519017", + "dtlSpNo": "DTL-0000000036", + "mngNm": "테스트1", + "unitPrc": 2, + "amt": 70000 + } + ], + "pbAtts": [ + { + "logiFnm": "text1.pdf", + "data": "aWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjA==" + }, + { + "logiFnm": "text1.pdf", + "data": "aWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjA==" + } + ] +} + +### \ No newline at end of file diff --git a/api/estimate/견적조회.http b/api/estimate/견적조회.http new file mode 100644 index 0000000..dbdc097 --- /dev/null +++ b/api/estimate/견적조회.http @@ -0,0 +1,6 @@ +### GET request to example server +GET http://localhost:8010/api/estimate + ?prcsNo=PRCS-0000000006 +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OSIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk5IiwiaWF0IjoxNzQ3MDQ4NDI5LCJleHAiOjE3NDcwNTAyMjl9.6SzI3eiNVmXOz1s1p8ab26fT80rbSJBfoDlKLQ4z5Sg + +### \ No newline at end of file diff --git a/api/login/사업자로그인.http b/api/login/사업자로그인.http new file mode 100644 index 0000000..ad04291 --- /dev/null +++ b/api/login/사업자로그인.http @@ -0,0 +1,10 @@ +### GET request to example server +POST http://localhost:8010/api/login +Content-Type: application/json + +{ + "bizNo": "111-11-11111", + "pwd": "kospo2025!" +} + +### \ No newline at end of file diff --git a/api/price_survey/(외부)가격조사_견적관리 조회(페이징).http b/api/price_survey/(외부)가격조사_견적관리 조회(페이징).http new file mode 100644 index 0000000..c8496a1 --- /dev/null +++ b/api/price_survey/(외부)가격조사_견적관리 조회(페이징).http @@ -0,0 +1,6 @@ +### GET request to example server +GET http://localhost:8010/api/prcs/external/page + ?cateCd=&stCd=®Nm=®Sdt=®Edt=&page=1&row=10 +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OSIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk5IiwiaWF0IjoxNzQ2MDEzMjAwLCJleHAiOjE3NDYwMTM1MDB9.2mSDvhpXtvkYHeRr_d1tiKvnSU0OGehBq0ce1AOvXnE + +### \ No newline at end of file diff --git a/api/price_survey/가격조사상세조회.http b/api/price_survey/가격조사상세조회.http new file mode 100644 index 0000000..786861c --- /dev/null +++ b/api/price_survey/가격조사상세조회.http @@ -0,0 +1,4 @@ +### GET request to example server +GET http://localhost:8010/api/prcs/PRCS-20250523052 + +### \ No newline at end of file diff --git a/api/price_survey/가격조사수정.http b/api/price_survey/가격조사수정.http new file mode 100644 index 0000000..5e3c717 --- /dev/null +++ b/api/price_survey/가격조사수정.http @@ -0,0 +1,54 @@ +PUT http://localhost:8010//api/prcs +Content-Type: application/json + +{ + "prcsNo": "PRCS-20250530003", + "cateCd": "0200", + "title": "가격조사 결재 테스트", + "content": "시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n", + "regSdat": "2025-04-01", + "regEdat": "2025-07-30", + "prvYn": false, + "prvRsn": "", + "prvPwd": "", + "aiYn": false, + "prcsAtts": [ + ], + "dtlSpecs": [ + ], + "apprReqs": [ + { + "gubunCd": "", + "apprNo": "APPR-0000000066", + "sabun": "psn14020", + "name": "조진우", + "attendCd": "" + }, + { + "gubunCd": "0100", + "apprNo": "APPR-0000000066", + "sabun": "17131303", + "name": "김진형", + "attendCd": "" + }, + { + "gubunCd": "0200", + "apprNo": "APPR-0000000066", + "sabun": "17131304", + "name": "손원장", + "attendCd": "01" + } + ], + "prcsBizs": [ + { + "bizNo": "999-99-99999", + "email": "bangae2@gmail.com" + }, + { + "bizNo": "111-11-11111", + "email": "bangae1@gmail.com" + } + ] +} + +### \ No newline at end of file diff --git a/api/price_survey/가격조사수정_Test.http b/api/price_survey/가격조사수정_Test.http new file mode 100644 index 0000000..4dcd5c0 --- /dev/null +++ b/api/price_survey/가격조사수정_Test.http @@ -0,0 +1,46 @@ +PUT https://svcm.hmsn.ink//api/prcs +Content-Type: application/json + +{ + "prcsNo": "PRCS-20250521023", + "cateCd": "0000", + "title": "4층 파티션 구매123", + "content": "싼거 찾아요123", + "regSdat": "2025-05-01", + "regEdat": "2025-05-03", + "prvYn": true, + "prvRsn": "", + "prvPwd": "", + "aiYn": true, + "prcsBizs": [ + { + "bizNo": "999-99-99999", + "email": "aa@gmail.com" + }, + { + "bizNo": "111-11-11111", + "email": "bb@gmail.com" + } + ], + "prcsAtts": [], + "apprReqs": [ + { + "gubunCd": "0000", + "sabun": "psn14020", + "name": "조진우", + "apprNo": "APPR-0000000023", + "apprOrd": 1, + "attendCd": null + }, + { + "gubunCd": "0100", + "sabun": "15000007", + "name": "조용식", + "apprNo": "APPR-0000000023", + "apprOrd": 2, + "attendCd": null + } + ] +} + +### \ No newline at end of file diff --git a/api/price_survey/가격조사완료처리.http b/api/price_survey/가격조사완료처리.http new file mode 100644 index 0000000..4fe3f6b --- /dev/null +++ b/api/price_survey/가격조사완료처리.http @@ -0,0 +1,4 @@ +PUT http://localhost:8010/api/prcs/survey/PRCS-20250526039 +Content-Type: application/json + +### \ No newline at end of file diff --git a/api/price_survey/가격조사저장.http b/api/price_survey/가격조사저장.http new file mode 100644 index 0000000..4022c83 --- /dev/null +++ b/api/price_survey/가격조사저장.http @@ -0,0 +1,66 @@ +POST http://localhost:8010//api/prcs +Content-Type: application/json + +{ + "cateCd": "0100", + "title": "가격조사 결재 테스트", + "content": "시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n", + "regSdat": "2025-04-01", + "regEdat": "2025-05-22", + "prvYn": false, + "prvRsn": "", + "prvPwd": "", + "aiYn": false, + "prcsAtts": [ + { + "logiFnm": "text1.pdf", + "data": "aWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjA==" + } + ], + "dtlSpecs": [ + { + "itemNm": "철판", + "spec": "3*6 (914*1829)", + "unit": "1.6T", + "qty": 3 + } + ], + "apprReqs": [ + { + "gubunCd": "", + "sabun": "psn14020", + "name": "조진우", + "attendCd": "" + }, + { + "gubunCd": "0100", + "sabun": "psn25226", + "name": "김건", + "attendCd": "" + }, + { + "gubunCd": "0100", + "sabun": "17131303", + "name": "김진형", + "attendCd": "" + }, + { + "gubunCd": "0200", + "sabun": "17131304", + "name": "손원장", + "attendCd": "" + } + ], + "prcsBizs": [ + { + "bizNo": "999-99-99999", + "email": "aa@gmail.com" + }, + { + "bizNo": "111-11-11111", + "email": "bb@gmail.com" + } + ] +} + +### \ No newline at end of file diff --git a/api/price_survey/가격조사조회(페이징).http b/api/price_survey/가격조사조회(페이징).http new file mode 100644 index 0000000..a15752f --- /dev/null +++ b/api/price_survey/가격조사조회(페이징).http @@ -0,0 +1,5 @@ +### GET request to example server +GET http://localhost:8010/api/prcs/page + ?cateCd=&stCd=®Nm=®Sdt=®Edt=&page=1&row=10 + +### \ No newline at end of file diff --git a/api/price_survey/가격조사회수.http b/api/price_survey/가격조사회수.http new file mode 100644 index 0000000..db2ff1b --- /dev/null +++ b/api/price_survey/가격조사회수.http @@ -0,0 +1,3 @@ +PUT http://localhost:8010/api/prcs/ret/PRCS-20250522037 +Content-Type: application/json +### \ No newline at end of file diff --git a/api/sapAppr/sap결재상태 변경.http b/api/sapAppr/sap결재상태 변경.http new file mode 100644 index 0000000..deed74a --- /dev/null +++ b/api/sapAppr/sap결재상태 변경.http @@ -0,0 +1,10 @@ +PUT http://localhost:8010/api/sap/appr +sabun: 17131303 +Content-Type: application/json + +{ + "wkfid": "FI2025900017", + "wkfsq": 2, + "bname": "17131303", + "wkfst": "A" +} \ No newline at end of file diff --git a/api/sapAppr/sap협조 (신규결재) 저장.http b/api/sapAppr/sap협조 (신규결재) 저장.http new file mode 100644 index 0000000..fe27822 --- /dev/null +++ b/api/sapAppr/sap협조 (신규결재) 저장.http @@ -0,0 +1,33 @@ +POST http://localhost:8010/api/sap/appr +sabun: 15000062 +Content-Type: application/json + +{ + "wkfid": "FI2025900017", + "apprs": [ + { + "label": "협조", + "value": [ + { + "lineclsf": "Q", + "bname": "15000062", + "abscd": "", + "grpid": 2 + }, + { + "lineclsf": "I", + "bname": "15000057", + "abscd": "", + "grpid": 2 + }, + { + "lineclsf": "A", + "bname": "15000056", + "abscd": "", + "grpid": 2 + } + ] + } + ] +} + diff --git a/api/slip/임시전표수정(결재만 수정가능 그외 삭제).http b/api/slip/임시전표수정(결재만 수정가능 그외 삭제).http new file mode 100644 index 0000000..8905579 --- /dev/null +++ b/api/slip/임시전표수정(결재만 수정가능 그외 삭제).http @@ -0,0 +1,47 @@ +PUT http://localhost:8010/api/slip +Content-Type: application/json + +{ + "contNo": "CONT-20250527037", + "zwf0011t": { + "belnr": "0604103229", + "wkfid": "FI2025900014", + "apprs": [ + { + "label": "결재", + "value": [ + { + "lineclsf": "Q", + "bname": "psn14020", + "abscd": "" + }, + { + "lineclsf": "I", + "bname": "17131303", + "abscd": "" + }, + { + "lineclsf": "I", + "bname": "15000004", + "abscd": "A" + }, + { + "lineclsf": "E", + "bname": "15000037", + "abscd": "" + }, + { + "lineclsf": "E", + "bname": "15000062", + "abscd": "" + }, + { + "lineclsf": "A", + "bname": "15000005", + "abscd": "" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/api/slip/임시전표저장.http b/api/slip/임시전표저장.http new file mode 100644 index 0000000..d87509a --- /dev/null +++ b/api/slip/임시전표저장.http @@ -0,0 +1,71 @@ +POST http://localhost:8010/api/slip +Content-Type: application/json + +{ + "contNo": "CONT-20250527037", + "bldat": "20250501", + "budat": "20250502", + "waers": "KRW", + "bktxt": "전표 생성 테스트1", + "lifnr": "999-99-99999", + "wrbtr": "1203", + "mwskz": "V4", + "gsber": "1000", + "bupla": "1000", + "zterm": "PF00", + "banks": "KR", + "bankl": "012", + "bankn": "3510876657453", + "hkont": "5366010", + "wrbtrS": "1102", + "kostl": "12330", + "projk": "", + "trtGubun": "11", + "txBillSeq": "202503231", + "slipAtts": [ + { + "logiFnm": "sapApprTest.pdf", + "data": "4paR4paS4paT4paI4pa6IFdpbmRvd3MgWC1MaXRlIOKXhOKWiOKWk+KWkuKWkQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K4oCiIEN1c3RvbSBXaW5kb3dzIEJ1aWxkcyBkZXNpZ25lZCB0byBCcmVhdGhlIE5ldyBMaWZlIGludG8geW91ciBQQyENCuKAoiBTbWFsbGVyLCBMaWdodGVyLCBGYXN0ZXIgYW5kIE1vcmUgUmVzcG9uc2l2ZS4NCuKAoiBFbmhhbmNlZCBQcml2YWN5LCBBY2Nlc3NpYmlsaXR5IGFuZCBDb250cm9sLg0K4oCiIDEwMCUgQ2xlYW4uIDEwMCUgU2FmZS4gMTAwJSBPcHRpbWl6ZWQuDQrigKIgQXJlIFlvdSBSZWFkeSBUbyBUYWtlIFlvdXIgV2luZG93cyBleHBlcmllbmNlIHRvIHRoZSBOZXh0IExldmVsIT8NCg0KICDimJEgQ09NRSBWSVNJVCBVUyEg4piRDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCuKeoe+4jyBodHRwczovL3dpbmRvd3N4bGl0ZS5jb20NCuKeoe+4jyBodHRwczovL3d3dy55b3V0dWJlLmNvbS9AV2luZG93c1gtTGl0ZQ0K4p6h77iPIGh0dHBzOi8va28tZmkuY29tL3dpbmRvd3N4bGl0ZQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQrinaTvuI8gWW91IGNhbiBIZWxwIFN1cHBvcnQgVGhpcyBQcm9qZWN0IGJ5IERvbmF0aW5nIQ0K4p6h77iPIGh0dHBzOi8va28tZmkuY29tL3dpbmRvd3N4bGl0ZQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQrinaTvuI8gWW91IENhbiBIZWxwIFN1cHBvcnQgVGhpcyBQcm9qZWN0IGJ5IERpc2FibGluZyBBZCBCbG9ja2Vycw0KYW5kIGNsaWNraW5nIGFkcyB0aGF0IGludGVyZXN0IHlvdSB3aGlsZSB2aXNpdGluZyBvdXIgV2Vic2l0ZSBhbmQgb3VyIFlvdVR1YmUgQ2hhbm5lbCENCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K4p6h77iPIFRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0LCBhbmQgZm9yIGJlaW5nIGEgcGFydCBvZiBvdXIgY29tbXVuaXR5IQ0K4p6h77iPIFlvdXJzIFRydWx5IC0gRkJDb25hbiAmIFRoZSBXaW5kb3dzIFgtTGl0ZSBUZWFtDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg==" + } + ], + "zwf0011t": { + "wkftx": "결재 테스트 11", + "apprs": [ + { + "label": "결재", + "value": [ + { + "lineclsf": "Q", + "bname": "psn14020", + "abscd": "" + }, + { + "lineclsf": "I", + "bname": "17131303", + "abscd": "" + }, + { + "lineclsf": "I", + "bname": "15000004", + "abscd": "A" + }, + { + "lineclsf": "E", + "bname": "15000037", + "abscd": "" + }, + { + "lineclsf": "E", + "bname": "15000062", + "abscd": "" + }, + { + "lineclsf": "A", + "bname": "15000005", + "abscd": "" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..83d6923 --- /dev/null +++ b/build.gradle @@ -0,0 +1,94 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '3.3.2' + id 'io.spring.dependency-management' version '1.1.6' +} + +group = 'com.kospo' +version = '0.0.1-SNAPSHOT' + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +configurations { + compileOnly { + extendsFrom annotationProcessor + } +} + +repositories { + mavenCentral() +} +ext['queryDslVersion'] = '5.0.0' + + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-data-rest' + implementation 'org.springframework.boot:spring-boot-starter-web-services' + implementation 'org.springframework.boot:spring-boot-starter-security' + implementation 'org.springframework.boot:spring-boot-starter-reactor-netty' + implementation 'org.springframework.boot:spring-boot-starter-mail' + implementation 'org.springframework.retry:spring-retry:2.0.8' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' + + + implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' + implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5' + implementation 'com.github.ulisesbocchio:jasypt-maven-plugin:3.0.5' + + implementation 'org.jetbrains:annotations:24.0.0' + + implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta" + implementation 'org.springframework.boot:spring-boot-starter-actuator' +// annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}" + annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" + annotationProcessor "jakarta.annotation:jakarta.annotation-api" + annotationProcessor "jakarta.persistence:jakarta.persistence-api" + + implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.3' + implementation 'com.fasterxml.jackson.core:jackson-core:2.15.3' + implementation 'com.fasterxml.jackson.core:jackson-annotations:2.15.3' + implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.3' + + implementation 'io.jsonwebtoken:jjwt-api:0.11.5' + runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5' + runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5' + + implementation 'org.apache.poi:poi:5.4.1' + implementation 'org.apache.poi:poi-ooxml:5.4.1' + + implementation 'javax.xml.bind:jaxb-api:2.3.1' + implementation 'org.modelmapper:modelmapper:3.2.0' + implementation 'org.apache.commons:commons-lang3:3.13.0' + implementation 'commons-codec:commons-codec:1.16.0' + implementation 'org.apache.commons:commons-dbcp2:2.10.0' + implementation 'org.apache.commons:commons-pool2:2.12.0' + implementation 'commons-logging:commons-logging:1.2' + implementation 'commons-io:commons-io:2.19.0' + implementation 'org.apache.commons:commons-email:1.5' + implementation 'org.postgresql:postgresql:42.7.3' + + + // https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc10 + implementation 'com.oracle.database.jdbc:ojdbc10:19.27.0.0' + // https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 + implementation 'com.oracle.database.jdbc:ojdbc8:23.8.0.25.04' + // sockjs + + runtimeOnly group: 'io.netty', name: 'netty-resolver-dns-native-macos', version: '4.1.112.Final' + compileOnly 'org.projectlombok:lombok' + developmentOnly 'org.springframework.boot:spring-boot-devtools' + annotationProcessor 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' +} + +tasks.named('test') { + useJUnitPlatform() +} diff --git a/fileToByte.html b/fileToByte.html new file mode 100644 index 0000000..835dab0 --- /dev/null +++ b/fileToByte.html @@ -0,0 +1,31 @@ + + + + + Title + + + + + + \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e644113 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a441313 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..b740cf1 --- /dev/null +++ b/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..25da30d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/log.config.path_IS_UNDEFINED/err_log.log b/log.config.path_IS_UNDEFINED/err_log.log new file mode 100644 index 0000000..e69de29 diff --git a/log.config.path_IS_UNDEFINED/log.config.filename_IS_UNDEFINED.log b/log.config.path_IS_UNDEFINED/log.config.filename_IS_UNDEFINED.log new file mode 100644 index 0000000..160c9d2 --- /dev/null +++ b/log.config.path_IS_UNDEFINED/log.config.filename_IS_UNDEFINED.log @@ -0,0 +1,1271 @@ +INFO 25-12-18 23:01:34[restartedMain] [Application:50] - Starting Application using Java 17.0.16 with PID 3004 (D:\IdeaProjects\drm\build\classes\java\main started by bangae1 in D:\IdeaProjects\drm) +DEBUG 25-12-18 23:01:34[restartedMain] [Application:51] - Running with Spring Boot v3.3.2, Spring v6.1.11 +INFO 25-12-18 23:01:34[restartedMain] [Application:660] - The following 1 profile is active: "local" +INFO 25-12-18 23:01:35[restartedMain] [EnableEncryptablePropertiesBeanFactoryPostProcessor:44] - Post-processing PropertySource instances +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:105] - Skipping PropertySource configurationProperties [class org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:105] - Skipping PropertySource servletConfigInitParams [class org.springframework.core.env.PropertySource$StubPropertySource +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:105] - Skipping PropertySource servletContextInitParams [class org.springframework.core.env.PropertySource$StubPropertySource +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableSystemEnvironmentPropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource Config resource 'class path resource [application-local.yml]' via location 'optional:classpath:/' [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource Config resource 'class path resource [application.yml]' via location 'optional:classpath:/' [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource devtools [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [DefaultLazyPropertyFilter:45] - Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter +INFO 25-12-18 23:01:35[restartedMain] [DefaultLazyPropertyResolver:46] - Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver +INFO 25-12-18 23:01:35[restartedMain] [DefaultLazyPropertyDetector:44] - Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector +WARN 25-12-18 23:01:35[restartedMain] [PostProcessorRegistrationDelegate$BeanPostProcessorChecker:429] - Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). The currently created BeanPostProcessor [annotationActionEndpointMapping] is declared through a non-static factory method on that class; consider declaring it as static instead. +INFO 25-12-18 23:01:35[restartedMain] [Http11NioProtocol:173] - Initializing ProtocolHandler ["http-nio-0.0.0.0-8010"] +INFO 25-12-18 23:01:35[restartedMain] [StandardService:173] - Starting service [Tomcat] +INFO 25-12-18 23:01:35[restartedMain] [StandardEngine:173] - Starting Servlet engine: [Apache Tomcat/10.1.26] +INFO 25-12-18 23:01:36[restartedMain] [[/]:173] - Initializing Spring embedded WebApplicationContext +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:974] - Driver class net.sf.log4jdbc.sql.jdbcapi.DriverSpy found in Thread context class loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@19a4ef9f +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - log4jdbc-logj2 properties initialization... +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - Using logger: null +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.debug.stack.prefix is not defined +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.sqltiming.warn.threshold is not defined +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.sqltiming.error.threshold is not defined +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.booleanastruefalse is not defined (using default value false) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.maxlinelength is not defined (using default of 90) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.fulldebugstacktrace is not defined (using default value false) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.statement.warn is not defined (using default value false) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.select is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.insert is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.update is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.delete is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.create is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.addsemicolon is not defined (using default value false) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.auto.load.popular.drivers is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.drivers is not defined +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.trim.sql is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.trim.sql.extrablanklines is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.suppress.generated.keys.exception is not defined (using default value false) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - log4jdbc-logj2 properties initialization done. +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - DriverSpy intialization... +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - FOUND DRIVER oracle.jdbc.OracleDriver +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - FOUND DRIVER oracle.jdbc.driver.OracleDriver +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - FOUND DRIVER org.postgresql.Driver +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - DriverSpy intialization done. +INFO 25-12-18 23:01:36[restartedMain] [DefaultLazyEncryptor:41] - Found Custom Encryptor Bean org.jasypt.encryption.pbe.PooledPBEStringEncryptor@19c9ea36 with name: jasyptEncryptorAES +DEBUG 25-12-18 23:01:36[restartedMain] [logging:164] - Logging Provider: org.jboss.logging.Slf4jLoggerProvider found via system property +DEBUG 25-12-18 23:01:36[restartedMain] [LogHelper:102] - PersistenceUnitInfo [ + name: default + persistence provider classname: null + classloader: org.springframework.boot.devtools.restart.classloader.RestartClassLoader@19a4ef9f + excludeUnlistedClasses: true + JTA datasource: null + Non JTA datasource: HikariDataSource (null) + Transaction type: RESOURCE_LOCAL + PU root URL: file:/D:/IdeaProjects/drm/build/classes/java/main/ + Shared Cache Mode: UNSPECIFIED + Validation Mode: AUTO + Jar files URLs [] + Managed classes names [ + com.kospo.drm.model.Token + com.kospo.drm.model.TokenId] + Mapping files names [] + Properties [] +DEBUG 25-12-18 23:01:36[restartedMain] [IntegratorServiceImpl:51] - Adding Integrator [org.hibernate.boot.beanvalidation.BeanValidationIntegrator]. +DEBUG 25-12-18 23:01:36[restartedMain] [IntegratorServiceImpl:51] - Adding Integrator [org.hibernate.cache.internal.CollectionCacheInvalidator]. +INFO 25-12-18 23:01:36[restartedMain] [Version:44] - HHH000412: Hibernate ORM core version 6.5.2.Final +DEBUG 25-12-18 23:01:36[restartedMain] [Environment:163] - HHH000206: 'hibernate.properties' not found +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [uuid2] -> [org.hibernate.id.UUIDGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [guid] -> [org.hibernate.id.GUIDGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [uuid] -> [org.hibernate.id.UUIDHexGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [uuid.hex] -> [org.hibernate.id.UUIDHexGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [assigned] -> [org.hibernate.id.Assigned] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [identity] -> [org.hibernate.id.IdentityGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [select] -> [org.hibernate.id.SelectGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [sequence] -> [org.hibernate.id.enhanced.SequenceStyleGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [increment] -> [org.hibernate.id.IncrementGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [foreign] -> [org.hibernate.id.ForeignGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [enhanced-sequence] -> [org.hibernate.id.enhanced.SequenceStyleGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [enhanced-table] -> [org.hibernate.id.enhanced.TableGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [RegionFactoryInitiator:122] - Cannot default RegionFactory based on registered strategies as `[]` RegionFactory strategies were registered +INFO 25-12-18 23:01:36[restartedMain] [RegionFactoryInitiator:50] - HHH000026: Second-level cache disabled +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@184ab4e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@184ab4e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@184ab4e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@6408227d +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@6408227d +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@36a530bb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@36a530bb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@1e4e2297 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@1e4e2297 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration byte -> org.hibernate.type.BasicTypeReference@3a3424cb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration byte -> org.hibernate.type.BasicTypeReference@3a3424cb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@3a3424cb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration binary -> org.hibernate.type.BasicTypeReference@1f0ae23a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@1f0ae23a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration [B -> org.hibernate.type.BasicTypeReference@1f0ae23a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@353988 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@353988 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration image -> org.hibernate.type.BasicTypeReference@6f00e983 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration blob -> org.hibernate.type.BasicTypeReference@74099ad4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@74099ad4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@3cdaad5d +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@150a2a37 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration short -> org.hibernate.type.BasicTypeReference@7dae95e4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration short -> org.hibernate.type.BasicTypeReference@7dae95e4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@7dae95e4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration integer -> org.hibernate.type.BasicTypeReference@45c96fbf +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration int -> org.hibernate.type.BasicTypeReference@45c96fbf +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@45c96fbf +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration long -> org.hibernate.type.BasicTypeReference@2c90921e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration long -> org.hibernate.type.BasicTypeReference@2c90921e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@2c90921e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration float -> org.hibernate.type.BasicTypeReference@688f4e29 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration float -> org.hibernate.type.BasicTypeReference@688f4e29 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@688f4e29 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration double -> org.hibernate.type.BasicTypeReference@6107e769 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration double -> org.hibernate.type.BasicTypeReference@6107e769 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@6107e769 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@6fbdc861 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@6fbdc861 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@4795a7ea +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@4795a7ea +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration character -> org.hibernate.type.BasicTypeReference@55f95737 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration char -> org.hibernate.type.BasicTypeReference@55f95737 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@55f95737 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@b9bde4e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration string -> org.hibernate.type.BasicTypeReference@ae4f19c +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@ae4f19c +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@60a4addd +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration characters -> org.hibernate.type.BasicTypeReference@7ffb1e11 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@7ffb1e11 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration [C -> org.hibernate.type.BasicTypeReference@7ffb1e11 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@2ac7c60e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration text -> org.hibernate.type.BasicTypeReference@782aadb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@428d35b3 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration clob -> org.hibernate.type.BasicTypeReference@65a1a065 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@65a1a065 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@71c2ed69 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@71c2ed69 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@638455f8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@488fd496 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@2045f76a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@460affae +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@7605902 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@317d061c +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@3e8c49fe +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@3e8c49fe +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@2fea260e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@2fea260e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@2ac7c2b8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@2ac7c2b8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@73d37c1a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@73d37c1a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@2fcc1827 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@2fcc1827 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@51689186 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@452e4b11 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@2d75cc02 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@2d75cc02 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@6237f4ab +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@77c6adca +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@400706e0 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@4311c73e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@4311c73e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@1edef15b +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@5cb4a7b7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration date -> org.hibernate.type.BasicTypeReference@24fc8ac7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@24fc8ac7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration time -> org.hibernate.type.BasicTypeReference@69198151 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@69198151 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@a4f100 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@a4f100 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@a4f100 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@795477bc +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@795477bc +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@795477bc +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@39be70e3 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@1c087d8c +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration instant -> org.hibernate.type.BasicTypeReference@3b83a3fc +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@3b83a3fc +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@6130caa7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@6130caa7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@6130caa7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@2b43870a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@74f86bf3 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration class -> org.hibernate.type.BasicTypeReference@52c2aad3 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@52c2aad3 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration currency -> org.hibernate.type.BasicTypeReference@35c037de +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@35c037de +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@35c037de +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@20c9dbb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@359cd9fa +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@359cd9fa +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@724f69a8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@724f69a8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@4605cef8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@4605cef8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration url -> org.hibernate.type.BasicTypeReference@200272c6 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@200272c6 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration vector -> org.hibernate.type.BasicTypeReference@73022c35 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@7a8909d4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration object -> org.hibernate.type.JavaObjectType@7ff45fa6 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@7ff45fa6 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration null -> org.hibernate.type.NullType@48e04bde +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@464f1fcb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@76a7582a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@219cf9e0 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@6be8e8b6 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@55671347 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@194d77c9 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@5f58def9 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@73d920fc +DEBUG 25-12-18 23:01:36[restartedMain] [BootstrapContextImpl:291] - Injecting JPA temp ClassLoader [org.springframework.instrument.classloading.SimpleThrowawayClassLoader@51c1bfc9] into BootstrapContext; was [null] +DEBUG 25-12-18 23:01:36[restartedMain] [ClassLoaderAccessImpl:45] - ClassLoaderAccessImpl#injectTempClassLoader(org.springframework.instrument.classloading.SimpleThrowawayClassLoader@51c1bfc9) [was null] +DEBUG 25-12-18 23:01:36[restartedMain] [BootstrapContextImpl:301] - Injecting ScanEnvironment [org.hibernate.jpa.boot.internal.StandardJpaScanEnvironmentImpl@46863290] into BootstrapContext; was [null] +DEBUG 25-12-18 23:01:36[restartedMain] [BootstrapContextImpl:296] - Injecting ScanOptions [org.hibernate.boot.archive.scan.internal.StandardScanOptions@7b9c4fcb] into BootstrapContext; was [org.hibernate.boot.archive.scan.internal.StandardScanOptions@108e75d5] +DEBUG 25-12-18 23:01:36[restartedMain] [BootstrapContextImpl:291] - Injecting JPA temp ClassLoader [null] into BootstrapContext; was [org.springframework.instrument.classloading.SimpleThrowawayClassLoader@51c1bfc9] +DEBUG 25-12-18 23:01:36[restartedMain] [ClassLoaderAccessImpl:45] - ClassLoaderAccessImpl#injectTempClassLoader(null) [was org.springframework.instrument.classloading.SimpleThrowawayClassLoader@51c1bfc9] +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1106] - HikariPool-1 - configuration: +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - allowPoolSuspension.............false +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - autoCommit......................true +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - catalog.........................none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - connectionInitSql...............none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - connectionTestQuery.............none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - connectionTimeout...............20000 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - dataSource......................none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - dataSourceClassName.............none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - dataSourceJNDI..................none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - dataSourceProperties............{password=, prepStmtCacheSqlLimit=2048, cachePrepStmts=true, prepStmtCacheSize=200, useServerPrepStmts=true} +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - driverClassName................."net.sf.log4jdbc.sql.jdbcapi.DriverSpy" +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - exceptionOverrideClassName......none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - healthCheckProperties...........{} +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - healthCheckRegistry.............none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - idleTimeout.....................600000 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - initializationFailTimeout.......1 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - isolateInternalQueries..........false +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - jdbcUrl.........................jdbc:log4jdbc:postgresql://hmsn.ink:35432/svcm +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - keepaliveTime...................0 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - leakDetectionThreshold..........0 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - maxLifetime.....................1800000 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - maximumPoolSize.................30 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - metricRegistry..................none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - metricsTrackerFactory...........none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - minimumIdle.....................30 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - password........................ +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - poolName........................"HikariPool-1" +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - readOnly........................false +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - registerMbeans..................false +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - scheduledExecutor...............none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - schema..........................none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - threadFactory...................internal +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - transactionIsolation............default +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - username........................"svcm" +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - validationTimeout...............5000 +INFO 25-12-18 23:01:36[restartedMain] [HikariDataSource:109] - HikariPool-1 - Starting... +INFO 25-12-18 23:01:36[restartedMain] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +1. Connection opened. {executed in 77ms} +open connections: 1 (1) +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +1. Connection.new Connection returned +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.getAndSetNetworkTimeout(PoolBase.java:528) +1. Connection.getNetworkTimeout() returned 0 +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +1. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +1. Connection.getAutoCommit() returned true +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.checkValidationSupport(PoolBase.java:460) +1. Connection.isValid(1) returned true +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.checkDefaultIsolation(PoolBase.java:481) +1. Connection.getTransactionIsolation() returned 2 +INFO 25-12-18 23:01:36[restartedMain] [HikariPool:554] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@6c7d790c +INFO 25-12-18 23:01:36[restartedMain] [HikariDataSource:122] - HikariPool-1 - Start completed. +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:371) +1. Connection.getMetaData() returned org.postgresql.jdbc.PgDatabaseMetaData@44ccd0b0 +DEBUG 25-12-18 23:01:36[restartedMain] [JdbcEnvironmentInitiator:367] - Database -> + name : PostgreSQL + version : 16.10 (Debian 16.10-1.pgdg12+1) + major : 16 + minor : 10 +DEBUG 25-12-18 23:01:36[restartedMain] [JdbcEnvironmentInitiator:378] - Driver -> + name : PostgreSQL JDBC Driver + version : 42.7.3 + major : 42 + minor : 7 +DEBUG 25-12-18 23:01:36[restartedMain] [JdbcEnvironmentInitiator:388] - JDBC version : 4.2 +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.createStatement(ProxyConnection.java:285) +1. Statement.new Statement returned +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.createStatement(ProxyConnection.java:285) +1. Connection.createStatement() returned net.sf.log4jdbc.sql.jdbcapi.StatementSpy@5085cc35 +INFO 25-12-18 23:01:36[restartedMain] [log4j2:243] - com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:110) +1. select version() {executed in 1 ms} +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:110) +1. ResultSet.new ResultSet returned +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:110) +1. Statement.executeQuery(select version()) returned net.sf.log4jdbc.sql.jdbcapi.ResultSetSpy@34923520 +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyResultSet.next(HikariProxyResultSet.java:-1) +1. ResultSet.next() returned true +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyResultSet.getString(HikariProxyResultSet.java:-1) +1. ResultSet.getString(1) returned PostgreSQL 16.10 (Debian 16.10-1.pgdg12+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyStatement.close(ProxyStatement.java:75) +1. Statement.close() returned +DEBUG 25-12-18 23:01:36[restartedMain] [dialect:94] - HHH035001: Using dialect: org.hibernate.dialect.PostgreSQLDialect, version: 16.10 +DEBUG 25-12-18 23:01:36[restartedMain] [IdentifierHelperBuilder:116] - JDBC driver metadata reported database stores quoted identifiers in neither upper, lower nor mixed case +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyConnection.getCatalog(HikariProxyConnection.java:-1) +1. Connection.getCatalog() returned svcm +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyConnection.getSchema(HikariProxyConnection.java:-1) +1. Connection.getSchema() returned public +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyConnection.getSchema(HikariProxyConnection.java:-1) +1. Connection.getSchema() returned public +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:371) +1. Connection.getMetaData() returned org.postgresql.jdbc.PgDatabaseMetaData@44ccd0b0 +DEBUG 25-12-18 23:01:36[restartedMain] [lob:61] - HHH10010004: Disabling contextual LOB creation as Dialect reported it is not supported +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:258) +1. Connection.clearWarnings() returned +DEBUG 25-12-18 23:01:36[restartedMain] [DdlTypeRegistry:64] - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@15cd3674) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@5e516dc6) +DEBUG 25-12-18 23:01:36[restartedMain] [DdlTypeRegistry:64] - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@7d366a48) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@2237b2b7) +DEBUG 25-12-18 23:01:36[restartedMain] [JdbcTypeRegistry:82] - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) +DEBUG 25-12-18 23:01:36[restartedMain] [JdbcTypeRegistry:82] - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@715e5dad +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@715e5dad +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:375] - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@7ff45fa6` +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration Duration -> basicType@1(java.time.Duration,3015) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) +DEBUG 25-12-18 23:01:36[restartedMain] [TypeConfiguration$Scope:196] - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@1a47da57] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@57db098c] +DEBUG 25-12-18 23:01:36[HikariPool-1 housekeeper] [HikariPool:405] - HikariPool-1 - Pool stats (total=1, active=0, idle=1, waiting=0) +DEBUG 25-12-18 23:01:36[restartedMain] [Namespace:64] - Created database namespace [logicalName=Name{catalog=null, schema=null}, physicalName=Name{catalog=null, schema=null}] +INFO 25-12-18 23:01:36[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +2. Connection opened. {executed in 20ms} +open connections: 1 2 (2) +INFO 25-12-18 23:01:36[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +2. Connection.new Connection returned +INFO 25-12-18 23:01:36[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +2. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:36[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +2. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:36[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@48e240e0 +DEBUG 25-12-18 23:01:36[restartedMain] [EntityBinder:222] - Binding entity from annotated class: com.kospo.drm.model.Token +DEBUG 25-12-18 23:01:36[restartedMain] [EntityBinder:1358] - Import with entity name Token +DEBUG 25-12-18 23:01:36[restartedMain] [EntityBinder:1891] - Bind entity com.kospo.drm.model.Token on table token +DEBUG 25-12-18 23:01:36[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedDiscriminatorColumn(column='DTYPE') +DEBUG 25-12-18 23:01:36[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=2, active=0, idle=2, waiting=0) +DEBUG 25-12-18 23:01:36[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn() +DEBUG 25-12-18 23:01:36[restartedMain] [ClassLoaderAccessImpl:60] - Not known whether passed class name [com.kospo.drm.model.Token] is safe +DEBUG 25-12-18 23:01:36[restartedMain] [ClassLoaderAccessImpl:62] - No temp ClassLoader provided; using live ClassLoader for loading potentially unsafe class : com.kospo.drm.model.Token +DEBUG 25-12-18 23:01:36[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn(column='domain') +DEBUG 25-12-18 23:01:36[restartedMain] [PropertyBinder:251] - MetadataSourceProcessor property domain with lazy=false +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractPropertyHolder:106] - Attempting to locate auto-apply AttributeConverter for property [com.kospo.drm.model.Token.id:domain] +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1219] - building BasicValue for domain +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValue:299] - Skipping column re-registration: token.domain +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property domain +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +3. Connection opened. {executed in 18ms} +open connections: 1 2 3 (3) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +3. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +3. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +3. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@52cc6a3e +DEBUG 25-12-18 23:01:37[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn(column='ip') +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:251] - MetadataSourceProcessor property ip with lazy=false +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractPropertyHolder:106] - Attempting to locate auto-apply AttributeConverter for property [com.kospo.drm.model.Token.id:ip] +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1219] - building BasicValue for ip +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValue:299] - Skipping column re-registration: token.ip +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property ip +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property id +DEBUG 25-12-18 23:01:37[restartedMain] [BinderHelper:78] - #makeIdGenerator(Component(com.kospo.drm.model.TokenId), id, assigned, , ...) +DEBUG 25-12-18 23:01:37[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn(column='ins_date') +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:251] - MetadataSourceProcessor property insDate with lazy=false +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractPropertyHolder:106] - Attempting to locate auto-apply AttributeConverter for property [com.kospo.drm.model.Token:insDate] +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1219] - building BasicValue for insDate +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValue:299] - Skipping column re-registration: token.ins_date +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property insDate +DEBUG 25-12-18 23:01:37[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn(column='token') +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:251] - MetadataSourceProcessor property token with lazy=false +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractPropertyHolder:106] - Attempting to locate auto-apply AttributeConverter for property [com.kospo.drm.model.Token:token] +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1219] - building BasicValue for token +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValue:299] - Skipping column re-registration: token.token +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property token +DEBUG 25-12-18 23:01:37[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn(column='token_expire') +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:251] - MetadataSourceProcessor property tokenExpire with lazy=false +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractPropertyHolder:106] - Attempting to locate auto-apply AttributeConverter for property [com.kospo.drm.model.Token:tokenExpire] +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1219] - building BasicValue for tokenExpire +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValue:299] - Skipping column re-registration: token.token_expire +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property tokenExpire +DEBUG 25-12-18 23:01:37[restartedMain] [ClassLoaderServiceImpl:261] - HHH000194: Package not found or no package-info.java: com.kospo.drm.model +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1297] - Starting `BasicValueBinder#fillSimpleValue` for domain +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1297] - Starting `BasicValueBinder#fillSimpleValue` for ip +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1297] - Starting `BasicValueBinder#fillSimpleValue` for insDate +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1297] - Starting `BasicValueBinder#fillSimpleValue` for token +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1297] - Starting `BasicValueBinder#fillSimpleValue` for tokenExpire +DEBUG 25-12-18 23:01:37[restartedMain] [PrimaryKey:41] - Forcing column [domain] to be non-null as it is part of the primary key for table [token] +DEBUG 25-12-18 23:01:37[restartedMain] [PrimaryKey:41] - Forcing column [ip] to be non-null as it is part of the primary key for table [token] +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=3, active=0, idle=3, waiting=0) +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryImpl:220] - Building session factory +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +4. Connection opened. {executed in 16ms} +open connections: 1 2 3 4 (4) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +4. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +4. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +4. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@20609fea +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryServiceRegistryImpl:105] - EventListenerRegistry access via ServiceRegistry is deprecated. Use `sessionFactory.getEventEngine().getListenerRegistry()` instead +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryImpl:238] - Instantiating SessionFactory with settings: {java.specification.version=17, sun.cpu.isalist=amd64, hibernate.resource.beans.container=org.springframework.orm.hibernate5.SpringBeanContainer@31eefe11, hibernate.connection.handling_mode=DELAYED_ACQUISITION_AND_HOLD, sun.jnu.encoding=MS949, hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy, java.class.path=D:\IdeaProjects\drm\build\classes\java\main;D:\IdeaProjects\drm\build\resources\main;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.querydsl\querydsl-apt\5.1.0\3b1cbe05851840b5dc926833908747a193c097cc\querydsl-apt-5.1.0-jakarta.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-data-jpa\3.3.2\2731d74dfc18fb905c29930cf55493980c2cee5a\spring-boot-starter-data-jpa-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-security\3.3.2\13a1d62a33323306fcd4c4cbb6a98322ce633ac0\spring-boot-starter-security-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-mail\3.3.2\51649a6f99d3ea3c2790dc33797cb54ba7f0a389\spring-boot-starter-mail-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.github.ulisesbocchio\jasypt-maven-plugin\3.0.5\7111e20baa556fa2f46119953fb9cb6136a9690f\jasypt-maven-plugin-3.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-actuator\3.3.2\7b70dce8bfd1c81341c1c55fe1cec3613ad6e842\spring-boot-starter-actuator-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-data-jdbc\3.3.2\299ddd4cee2ecdca093be71511392278fcf22203\spring-boot-starter-data-jdbc-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-data-rest\3.3.2\1d33b4a9bec843db78310e3a8d1c6da964e6bbce\spring-boot-starter-data-rest-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web-services\3.3.2\210a7bdae4f67aa8e333b4a7467b0ea23dcd2d4a\spring-boot-starter-web-services-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.annotation\jakarta.annotation-api\2.1.1\48b9bda22b091b1f48b13af03fe36db3be6e1ae3\jakarta.annotation-api-2.1.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.persistence\jakarta.persistence-api\3.1.0\66901fa1c373c6aff65c13791cc11da72060a8d6\jakarta.persistence-api-3.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.projectlombok\lombok\1.18.34\ec547ef414ab1d2c040118fb9c1c265ada63af14\lombok-1.18.34.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-reactor-netty\3.3.2\f4e876a9f1400ce54e8dea3c52a96640ae5944fc\spring-boot-starter-reactor-netty-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.retry\spring-retry\2.0.8\a649465c003aa63432f278b9fb47eb58372e2bfa\spring-retry-2.0.8.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springdoc\springdoc-openapi-starter-webmvc-ui\2.3.0\b4af31e9d40539c94f8debbf760134d961333c24\springdoc-openapi-starter-webmvc-ui-2.3.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.bgee.log4jdbc-log4j2\log4jdbc-log4j2-jdbc4.1\1.16\ce7cd831b2e3e5d428e659a6fdae0fb6b89f3cc7\log4jdbc-log4j2-jdbc4.1-1.16.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.github.ulisesbocchio\jasypt-spring-boot-starter\3.0.5\53d848a8d5be9b29f1768d00562ef51e5e2c21b6\jasypt-spring-boot-starter-3.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.jetbrains\annotations\24.0.0\69b8b443c437fdeefa8d20c18d257b94836a92b9\annotations-24.0.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.querydsl\querydsl-jpa\5.0.0\2a653852848dee41b967d3520be3339f0f92f1ea\querydsl-jpa-5.0.0-jakarta.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.9.0\8a1167e089096758b49f9b34066ef98b2f4b37aa\gson-2.9.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.15.3\4a20a0e104931bfa72f24ef358c2eb63f1ef2aaf\jackson-datatype-jsr310-2.15.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.15.3\60d600567c1862840397bf9ff5a92398edc5797b\jackson-core-2.15.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.15.3\79baf4e605eb3bbb60b1c475d44a7aecceea1d60\jackson-annotations-2.15.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.15.3\a734bc2c47a9453c4efa772461a3aeb273c010d9\jackson-databind-2.15.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.jsonwebtoken\jjwt-api\0.11.5\f742940045619d06383e7df37b21ac422b476cf1\jjwt-api-0.11.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.poi\poi-ooxml\5.4.1\508ed3e7fcc775738415870d0bc6d27196317fe3\poi-ooxml-5.4.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.poi\poi\5.4.1\e4c74c59e13f62d8edd215756d14ce55566c6efe\poi-5.4.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\javax.xml.bind\jaxb-api\2.3.1\8531ad5ac454cc2deb9d4d32c40c4d7451939b5d\jaxb-api-2.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.modelmapper\modelmapper\3.2.0\7664b15466a898625b394af6000439c5799a5d2b\modelmapper-3.2.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.13.0\b7263237aa89c1f99b327197c41d0669707a462e\commons-lang3-3.13.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.16.0\4e3eb3d79888d76b54e28b350915b5dc3919c9de\commons-codec-1.16.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-dbcp2\2.10.0\f48fe03b03c1bacda7f22d16ce328d7897bc5727\commons-dbcp2-2.10.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-pool2\2.12.0\458563f69fbdaebf7daadfe10dc3a22e42a7de50\commons-pool2-2.12.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.2\4bfc12adfe4842bf07b657f0369c4cb522955686\commons-logging-1.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.19.0\1f8d4a99ba72b77aa69101175efc79b0c7dcdd7e\commons-io-2.19.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-email\1.5\e8e677c6362eba14ff3c476ba63ccb83132dbd52\commons-email-1.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.postgresql\postgresql\42.7.3\24f3e9f7231428cd20eb4dde00dd3fce44e05464\postgresql-42.7.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.oracle.database.jdbc\ojdbc10\19.27.0.0\e859099fd25f7a910dffdcccf9d53c6d6548ec5c\ojdbc10-19.27.0.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.oracle.database.jdbc\ojdbc8\23.8.0.25.04\ccb2cb450ba1bc41a6373f2a50357b24c0eb6e49\ojdbc8-23.8.0.25.04.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.querydsl\querydsl-codegen\5.1.0\a8504ea51fbc2258543cedab6a37fe6039b2d20a\querydsl-codegen-5.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-jpa\3.3.2\cfa9cd077f3f15d0657bbb6d7c8e1c7c7da7e6e2\spring-data-jpa-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-jdbc\3.3.2\544775d745288972598ab2e872e5a4816b6d9b39\spring-boot-starter-jdbc-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-aop\3.3.2\26d996e253768d3121bb3ffbef28cefc07fdbddb\spring-boot-starter-aop-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.hibernate.orm\hibernate-core\6.5.2.Final\e9e0cc47f6cd2b2553968aee66bd9e55e7485221\hibernate-core-6.5.2.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aspects\6.1.11\141d92094a460f338aa0999023ca7a25861d49a1\spring-aspects-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\3.3.2\f9377a223dab5c4afe7aead05bf6ac567cf565ab\spring-boot-starter-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.security\spring-security-config\6.3.1\e4f6c1cf4f8969c9e5ed26121f0fbd7ee35a7ca4\spring-security-config-6.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.security\spring-security-web\6.3.1\aff43933f28c808252b2d31f768b92fa61b634f6\spring-security-web-6.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\6.1.11\3503ef99b759b81f8b0b3d5260bf4842e393a581\spring-aop-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context-support\6.1.11\bd903b63a6b74327521d5634d2e07474ce58e695\spring-context-support-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.eclipse.angus\jakarta.mail\2.0.3\3dea6aeee9603f573687b0d4da5dc1316d921bb7\jakarta.mail-2.0.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\2.2\3af797a25458550a16bf89acc8e4ab2b7f2bfce0\snakeyaml-2.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-actuator-autoconfigure\3.3.2\f7bb120c04c0a4dfa83ae4eeff3e1a2ba3833ac0\spring-boot-actuator-autoconfigure-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-jakarta9\1.13.2\c734f3de7e3f1864f77dc8cc278e5cd613357f39\micrometer-jakarta9-1.13.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-observation\1.13.2\a498ee0871596f41a61679a29bc8390defba4245\micrometer-observation-1.13.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-jdbc\3.3.2\7e3eb69abb71ace86dde90edbdcb36a154b346b6\spring-data-jdbc-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web\3.3.2\720418538668a8742d0ae24097811d5250cf5c32\spring-boot-starter-web-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-rest-webmvc\4.3.2\e0b2e405ffe53a473500d502481b624623029b7f\spring-data-rest-webmvc-4.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.ws\spring-ws-core\4.0.11\15ca5af2d749b165951f888b5d4755baf975cabe\spring-ws-core-4.0.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.sun.xml.messaging.saaj\saaj-impl\3.0.4\20e94bac120c14b7a0aa32c0821bab62515fd7dd\saaj-impl-3.0.4.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.xml.ws\jakarta.xml.ws-api\4.0.2\331ecab874ee75b48db661a331319958cb04edec\jakarta.xml.ws-api-4.0.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-oxm\6.1.11\2825740197db37901d09b91704e1be3575a237c1\spring-oxm-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.projectreactor.netty\reactor-netty-http\1.1.21\b83542bb35630ef815b4177e3c670f62e952e695\reactor-netty-http-1.1.21.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springdoc\springdoc-openapi-starter-webmvc-api\2.3.0\e8e6e46e2b7875c1789782d3820536bb2d868b17\springdoc-openapi-starter-webmvc-api-2.3.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.webjars\swagger-ui\5.10.3\744ae2862cc79c137020f2ce6e07de2f1d6a2657\swagger-ui-5.10.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.github.ulisesbocchio\jasypt-spring-boot\3.0.5\b75dd4d668ccaf176e89846b37ef0ba1c80149ec\jasypt-spring-boot-3.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.querydsl\querydsl-core\5.1.0\be322c3fe98de8e7c204afb8860bfabd81a3bafd\querydsl-core-5.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.27.1\a19151084758e2fbb6b41eddaa88e7b8ff4e6599\commons-compress-1.27.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-collections4\4.4\62ebe7544cb7164d87e0637a2a6a2bdc981395e8\commons-collections4-4.4.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.23.1\9c15c29c526d9c6783049c0a77722693c66706e1\log4j-api-2.23.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.poi\poi-ooxml-lite\5.4.1\ed2246f88254ba40fc2e7999c8f8e4e9031208a\poi-ooxml-lite-5.4.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.xmlbeans\xmlbeans\5.3.0\f93c3ba820d7240b7fec4ec5bc35e7223cc6fc1f\xmlbeans-5.3.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.github.virtuald\curvesapi\1.08\3d3d36568154059825089b289dcfca481fe44e2c\curvesapi-1.08.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-math3\3.6.1\e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf\commons-math3-3.6.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.zaxxer\SparseBitSet\1.3\533eac055afe3d5f614ea95e333afd6c2bde8f26\SparseBitSet-1.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\javax.activation\javax.activation-api\1.2.0\85262acf3ca9816f9537ca47d5adeabaead7cb16\javax.activation-api-1.2.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.transaction\jakarta.transaction-api\2.0.1\51a520e3fae406abb84e2e1148e6746ce3f80a1a\jakarta.transaction-api-2.0.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.sun.mail\javax.mail\1.5.6\ab5daef2f881c42c8e280cbe918ec4d7fdfd7efe\javax.mail-1.5.6.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.querydsl\codegen-utils\5.1.0\ba401554d613760617992eafb6cdba175c811e6f\codegen-utils-5.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\javax.inject\javax.inject\1\6975da39a7040257bd51d21a231b76c915872d38\javax.inject-1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.github.classgraph\classgraph\4.8.146\360448a09bfa5689d89cfa97fea53b3fdefa9c23\classgraph-4.8.146.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\6.1.11\8fc69f776333713aa26be8821af8c6355ccad8d8\spring-context-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-orm\6.1.11\b96b83839b970f3a5d2ad2f86845924654a17886\spring-orm-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-commons\3.3.2\5f08fd077c957fd561bef09b08ef6cdf54e1c826\spring-data-commons-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-tx\6.1.11\2e38b3218ae80d0b5401a4ef299c4cfbc3a73ed7\spring-tx-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\6.1.11\266176d132ab2bbf8e69e4aa6d7f47ec746ddc9a\spring-beans-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\6.1.11\90fce4311852c68c1e87c65adf60db9add1a6dcb\spring-core-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\2.0.13\80229737f704b121a318bba5d5deacbcf395bc77\slf4j-api-2.0.13.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.antlr\antlr4-runtime\4.13.0\5a02e48521624faaf5ff4d99afc88b01686af655\antlr4-runtime-4.13.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.zaxxer\HikariCP\5.1.0\8c96e36c14461fc436bb02b264b96ef3ca5dca8c\HikariCP-5.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jdbc\6.1.11\92b9f712206993c56c56903547c6b695a4a70128\spring-jdbc-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.aspectj\aspectjweaver\1.9.22.1\bca243d0af0db4758fbae45c5f4995cb5dabb612\aspectjweaver-1.9.22.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\3.3.2\6a9ab910b00f0b504a5903e3680ac10018da6247\spring-boot-autoconfigure-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\3.3.2\72a257d5518b2b8b9949a26543cdb3a4e67de5f8\spring-boot-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\3.3.2\b685c97f3c24dc30c53ae18151a798f701f2a640\spring-boot-starter-logging-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.security\spring-security-core\6.3.1\598c2461a17c29705ca7fd8c02efd23a1f650ccd\spring-security-core-6.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-web\6.1.11\8910d08f15492273543d2c8032b2b895e08ed9e\spring-web-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\6.1.11\7c12cf1cd39289cfab7c5933eda9e4704a7f2799\spring-expression-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.activation\jakarta.activation-api\2.1.3\fa165bd70cda600368eee31555222776a46b881f\jakarta.activation-api-2.1.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-actuator\3.3.2\a29d4372b12458d43a92ebf08e5628edb98efb9f\spring-boot-actuator-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-core\1.13.2\1e2b777c3cf49f497b42371bd128678cbd732b83\micrometer-core-1.13.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-commons\1.13.2\b2b69f7887f9bf6f5ae42e86a67a62367056aa3c\micrometer-commons-1.13.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-relational\3.3.2\a3b9b56d0d8674707217bf8cbdc6b9dd942134f8\spring-data-relational-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-json\3.3.2\d8b8b73e7820092b4e41d730eeb968add7957c45\spring-boot-starter-json-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-tomcat\3.3.2\37ccb53cd5207fffd7a6fc1b591687f8cb1350df\spring-boot-starter-tomcat-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-webmvc\6.1.11\9ec4c2a5e28bf7b2d60e254e976940b12c8ba32a\spring-webmvc-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-rest-core\4.3.2\4387069f5b1bbee000730e5fb2c9f3a4c838efd\spring-data-rest-core-4.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.ws\spring-xml\4.0.11\317ebb6e4b868260b937760c1fa646ef8741231c\spring-xml-4.0.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.xml.soap\jakarta.xml.soap-api\3.0.2\445830286faf84fe40a3f47ccd7537d69cd58c4\jakarta.xml.soap-api-3.0.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.jvnet.staxex\stax-ex\2.1.0\33160568d70c01da407f8ba982bacf283d00ad4a\stax-ex-2.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.xml.bind\jakarta.xml.bind-api\4.0.2\6cd5a999b834b63238005b7144136379dc36cad2\jakarta.xml.bind-api-4.0.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-http2\4.1.111.Final\f0cca5df75bfb4f858d0435f601d8b1cae1de054\netty-codec-http2-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.projectreactor.netty\reactor-netty-core\1.1.21\acb98bd08107287c454ce74e7b1ed8e7a018a662\reactor-netty-core-1.1.21.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-http\4.1.111.Final\c6ecbc452321e632bf3cea0f9758839b650455c7\netty-codec-http-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver-dns-native-macos\4.1.111.Final\aeef447d930ddfcdc80a8b2c67eb9b5d781d6354\netty-resolver-dns-native-macos-4.1.111.Final-osx-x86_64.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver-dns\4.1.111.Final\5ac6a3d96935129ba45ea768ad30e31cad0d8c4d\netty-resolver-dns-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-transport-native-epoll\4.1.111.Final\e102a0568f4f2cd7d4049c4154f94528cadf646b\netty-transport-native-epoll-4.1.111.Final-linux-x86_64.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.projectreactor\reactor-core\3.6.8\f3d0192db20e929d5a6552990269ae2993a93a58\reactor-core-3.6.8.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springdoc\springdoc-openapi-starter-common\2.3.0\acf3654082b3e000d5b59cc9733227702aa57f75\springdoc-openapi-starter-common-2.3.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.jasypt\jasypt\1.9.3\d99ef9540f51c617f2a293b460f025d2ee563dd\jasypt-1.9.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.mysema.commons\mysema-commons-lang\0.2.4\d09c8489d54251a6c22fbce804bdd4a070557317\mysema-commons-lang-0.2.4.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\javax.activation\activation\1.1\e6cb541461c2834bdea3eb920f1884d1eb508b50\activation-1.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.eclipse.jdt\ecj\3.26.0\4837be609a3368a0f7e7cf0dc1bdbc7fe94993de\ecj-3.26.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\6.1.11\97b34c6b72c8084759e71cd09a7dad16bfb8f1da\spring-jcl-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.23.1\425ad1eb8a39904d2830e907a324e956fb456520\log4j-to-slf4j-2.23.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.5.6\afc75d260d838a3bddfb8f207c2805ed7d1b34f9\logback-classic-1.5.6.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\2.0.13\a3bcd9d9dd50c71ce69f06b1fd05e40fdeff6ba5\jul-to-slf4j-2.0.13.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.security\spring-security-crypto\6.3.1\3e66321782db499cca3884830188a091058121f3\spring-security-crypto-6.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-parameter-names\2.17.2\d27b9f95ccce98984c1ba58d61c5a9c072b1ad95\jackson-module-parameter-names-2.17.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.17.2\efd3dd0e1d0db8bc72abbe71c15e697bb83b4b45\jackson-datatype-jdk8-2.17.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-websocket\10.1.26\3b147d7e5566e9361e86422f9e49fdd56a429637\tomcat-embed-websocket-10.1.26.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-core\10.1.26\5e0fa06ca373ef0ca55e603291ea51b590c377ea\tomcat-embed-core-10.1.26.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-el\10.1.26\5a5cbcb3e51fcd557b164736e9920a3dd2ac1e33\tomcat-embed-el-10.1.26.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.hateoas\spring-hateoas\2.3.1\61ef36f62e49cd888f21b712086a3130e2ca42ae\spring-hateoas-2.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.plugin\spring-plugin-core\3.0.0\d56aa02dd7272dca30aa598dc8b72e823227046a\spring-plugin-core-3.0.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.atteo\evo-inflector\1.3\4cf8b5f363c60e63f8b7688ac053590460f2768e\evo-inflector-1.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-handler\4.1.111.Final\2bc6a58ad2e9e279634b6e55022e8dcd3c175cc4\netty-handler-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec\4.1.111.Final\a6762ec00a6d268f9980741f5b755838bcd658bf\netty-codec-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-transport\4.1.111.Final\24e97cf14ea9d80afe4c5ab69066b587fccc154a\netty-transport-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-buffer\4.1.111.Final\b54863f578939e135d3b3aea610284ae57c188cf\netty-buffer-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-common\4.1.111.Final\58210befcb31adbcadd5724966a061444db91863\netty-common-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-handler-proxy\4.1.111.Final\1e459c8630bb7c942b79a97e62dd728798de6a8c\netty-handler-proxy-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver-dns-classes-macos\4.1.111.Final\c21cc719234e5553c3b65f29defb4b383edc8fd2\netty-resolver-dns-classes-macos-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-dns\4.1.111.Final\f988dbb527efb0e7cf7d444cc50b0fc3f5f380ec\netty-codec-dns-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver\4.1.111.Final\3493179999f211dc49714319f81da2be86523a3b\netty-resolver-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-transport-classes-epoll\4.1.111.Final\8b97d32eb1489043e478deea99bd93ce487b82f6\netty-transport-classes-epoll-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-transport-native-unix-common\4.1.111.Final\acafc128cddafa021bc0b48b0788eb0e118add5e\netty-transport-native-unix-common-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.reactivestreams\reactive-streams\1.0.4\3864a1320d97d7b045f729a326e1e077661f31b7\reactive-streams-1.0.4.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.swagger.core.v3\swagger-core-jakarta\2.2.19\1bbc09fba4c0ac2375da7563cb03dfd0f3e07100\swagger-core-jakarta-2.2.19.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.5.6\41cbe874701200c5624c19e0ab50d1b88dfcc77d\logback-core-1.5.6.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.jayway.jsonpath\json-path\2.9.0\37fe2217f577b0b68b18e62c4d17a8858ecf9b69\json-path-2.9.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-socks\4.1.111.Final\ea52ef6617a9b69b0baaebb7f0b80373527f9607\netty-codec-socks-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.dataformat\jackson-dataformat-yaml\2.17.2\78d2c73dbec62044d7cf3b544b2e0d24a1a093b0\jackson-dataformat-yaml-2.17.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.swagger.core.v3\swagger-models-jakarta\2.2.19\72b8a8ba29654ba31d951311081c33d464cee138\swagger-models-jakarta-2.2.19.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.swagger.core.v3\swagger-annotations-jakarta\2.2.19\c180d87c78d367771bbd954ebceba1b6c576fb52\swagger-annotations-jakarta-2.2.19.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.validation\jakarta.validation-api\3.0.2\92b6631659ba35ca09e44874d3eb936edfeee532\jakarta.validation-api-3.0.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-devtools\3.3.2\ff9e444f433eeafd6bc88025909459f835631038\spring-boot-devtools-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.jsonwebtoken\jjwt-jackson\0.11.5\3b83a06809e98a69402d7333dcf67df6f6ea4579\jjwt-jackson-0.11.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.jsonwebtoken\jjwt-impl\0.11.5\40a599f0e8a8e4e0701596fbb15e67bfda64fdf0\jjwt-impl-0.11.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver-dns-native-macos\4.1.112.Final\3f6f3da55f52b0b361a3f685b14aab38ee3d0e85\netty-resolver-dns-native-macos-4.1.112.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver-dns-native-macos\4.1.112.Final\5abc86fd98561f7bda897efa29bd96483f86f560\netty-resolver-dns-native-macos-4.1.112.Final-osx-x86_64.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.checkerframework\checker-qual\3.42.0\638ec33f363a94d41a4f03c3e7d3dcfba64e402d\checker-qual-3.42.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.jboss.logging\jboss-logging\3.5.3.Final\c88fc1d8a96d4c3491f55d4317458ccad53ca663\jboss-logging-3.5.3.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.hibernate.common\hibernate-commons-annotations\6.0.6.Final\77a5f94b56d49508e0ee334751db5b78e5ccd50c\hibernate-commons-annotations-6.0.6.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.smallrye\jandex\3.1.2\a6c1c89925c7df06242b03dddb353116ceb9584c\jandex-3.1.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml\classmate\1.7.0\e98374da1f2143ac8e6e0a95036994bb19137a3\classmate-1.7.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy\1.14.18\81e9b9a20944626e6757b5950676af901c2485\byte-buddy-1.14.18.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\jaxb-runtime\4.0.5\ca84c2a7169b5293e232b9d00d1e4e36d4c3914a\jaxb-runtime-4.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.inject\jakarta.inject-api\2.0.1\4c28afe1991a941d7702fe1362c365f0a8641d1e\jakarta.inject-api-2.0.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.eclipse.angus\angus-activation\2.0.2\41f1e0ddd157c856926ed149ab837d110955a9fc\angus-activation-2.0.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\jaxb-core\4.0.5\7b4b11ea5542eea4ad55e1080b23be436795b3\jaxb-core-4.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.hdrhistogram\HdrHistogram\2.2.2\7959933ebcc0f05b2eaa5af0a0c8689fa257b15c\HdrHistogram-2.2.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.latencyutils\LatencyUtils\2.0.3\769c0b82cb2421c8256300e907298a9410a2a3d3\LatencyUtils-2.0.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\txw2\4.0.5\f36a4ef12120a9bb06d766d6a0e54b144fd7ed98\txw2-4.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.sun.istack\istack-commons-runtime\4.1.2\18ec117c85f3ba0ac65409136afa8e42bc74e739\istack-commons-runtime-4.1.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\net.minidev\json-smart\2.5.1\4c11d2808d009132dfbbf947ebf37de6bf266c8e\json-smart-2.5.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\net.minidev\accessors-smart\2.5.1\19b820261eb2e7de7d5bde11d1c06e4501dd7e5f\accessors-smart-2.5.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm\9.6\aa205cf0a06dbd8e04ece91c0b37c3f5d567546a\asm-9.6.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2024.3.7\lib\idea_rt.jar, kotlinx.coroutines.debug.enable.mutable.state.flows.stack.trace=true, java.vm.vendor=Microsoft, sun.arch.data.model=64, user.variant=, java.vendor.url=https://www.microsoft.com, catalina.useNaming=false, user.timezone=Asia/Seoul, jakarta.persistence.sharedCache.mode=UNSPECIFIED, org.jboss.logging.provider=slf4j, java.vm.specification.version=17, os.name=Windows 11, jakarta.persistence.nonJtaDataSource=HikariDataSource (HikariPool-1), sun.java.launcher=SUN_STANDARD, user.country=KR, sun.boot.library.path=C:\Users\bangae1\.jdks\ms-17.0.16\bin, sun.java.command=com.kospo.drm.Application, spring.application.admin.enabled=true, javax.persistence.nonJtaDataSource=HikariDataSource (HikariPool-1), hibernate.transaction.jta.platform=org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform@63a4b830, com.sun.management.jmxremote=, jdk.debug=release, spring.liveBeansView.mbeanDomain=, sun.cpu.endian=little, hibernate.cdi.extensions=true, user.home=C:\Users\bangae1, user.language=ko, java.specification.vendor=Oracle Corporation, java.version.date=2025-07-15, java.home=C:\Users\bangae1\.jdks\ms-17.0.16, file.separator=\, spring.output.ansi.enabled=always, java.vm.compressedOopsMode=Zero based, line.separator= +, hibernate.persistenceUnitName=default, java.vm.specification.vendor=Oracle Corporation, java.specification.name=Java Platform API Specification, intellij.debug.agent=true, FILE_LOG_CHARSET=UTF-8, hibernate.transaction.coordinator_class=class org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorBuilderImpl, java.awt.headless=true, jakarta.persistence.validation.mode=AUTO, hibernate.hbm2ddl.auto=validate, user.script=, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, java.runtime.version=17.0.16+8-LTS, user.name=bangae1, spring.jmx.enabled=true, path.separator=;, kotlinx.coroutines.debug.enable.creation.stack.trace=false, management.endpoints.jmx.exposure.include=*, os.version=10.0, java.runtime.name=OpenJDK Runtime Environment, file.encoding=UTF-8, java.vm.name=OpenJDK 64-Bit Server VM, java.vendor.version=Microsoft-11926163, java.vendor.url.bug=https://github.com/microsoft/openjdk/issues, java.io.tmpdir=C:\Users\bangae1\AppData\Local\Temp\, catalina.home=C:\Users\bangae1\AppData\Local\Temp\tomcat.8010.8610591402726081776, java.version=17.0.16, jboss.modules.system.pkgs=com.intellij.rt, hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy, user.dir=D:\IdeaProjects\drm, os.arch=amd64, java.vm.specification.name=Java Virtual Machine Specification, PID=3004, sun.os.patch.level=, CONSOLE_LOG_CHARSET=UTF-8, catalina.base=C:\Users\bangae1\AppData\Local\Temp\tomcat.8010.8610591402726081776, hibernate.boot.CfgXmlAccessService.key=org.hibernate.boot.registry.StandardServiceRegistryBuilder$1@584ff0eb, native.encoding=MS949, kotlinx.coroutines.debug.enable.flows.stack.trace=true, java.library.path=C:\Users\bangae1\.jdks\ms-17.0.16\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files (x86)\Common Files\Oracle\Java\java8path;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files\VanDyke Software\Clients\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\k6\;C:\Program Files\Go\bin;C:\Users\bangae1\develop\flutter\bin;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Users\bangae1\ffmpeg\bin;C:\Users\bangae1\AppData\Roaming\JetBrains\IntelliJIdea2024.3\node\versions\20.15.0;C:\Users\bangae1\AppData\Local\Programs\Python\Python312\Scripts\;C:\Users\bangae1\AppData\Local\Programs\Python\Python312\;C:\Users\bangae1\AppData\Local\Microsoft\WindowsApps;C:\Users\bangae1\go\bin;C:\Users\bangae1\AppData\Local\Python\bin;., java.vendor=Microsoft, java.vm.info=mixed mode, emulated-client, sharing, java.vm.version=17.0.16+8-LTS, java.specification.maintenance.version=1, java.rmi.server.randomIDs=true, sun.io.unicode.encoding=UnicodeLittle, hibernate.archive.scanner=org.hibernate.boot.archive.scan.internal.DisabledScanner, hibernate.connection.datasource=HikariDataSource (HikariPool-1), debugger.agent.enable.coroutines=true, java.class.version=61.0, LOGGED_APPLICATION_NAME=[drm] } +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryImpl:252] - Session factory constructed with filter configurations : {} +DEBUG 25-12-18 23:01:37[restartedMain] [TypeSafeActivator:89] - Unable to acquire Bean Validation ValidatorFactory, skipping activation +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=4, active=0, idle=4, waiting=0) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(max)] under max; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(min)] under min; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(sum)] under sum; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(avg)] under avg; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CountFunction@46eb0dfb] under count; prior registration was null +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +5. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 (5) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +5. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +5. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +5. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@49972dca +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.EveryAnyEmulation@3efda28c] under every; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.EveryAnyEmulation@14ea41fe] under any; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(floor)] under floor; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(ceiling)] under ceiling; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(mod)] under mod; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(abs)] under abs; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(sign)] under sign; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(sqrt)] under sqrt; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(ln)] under ln; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(exp)] under exp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(power)] under power; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(round)] under round; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(sin)] under sin; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(cos)] under cos; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(tan)] under tan; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(asin)] under asin; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(acos)] under acos; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(atan)] under atan; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(atan2)] under atan2; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@113f3dbe] under sinh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@328bcac6] under cosh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@5c1d3ea9] under tanh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@3138506] under pi; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@6b299a17] under log; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(coalesce)] under coalesce; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(nullif)] under nullif; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(left)] under left; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(right)] under right; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(replace)] under replace; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(concat)] under concat; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(lower)] under lower; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(upper)] under upper; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(substring)] under substring; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(locate)] under locate; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(character_length)] under character_length; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : length -> character_length +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.LocatePositionEmulation@75e5b678] under position; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.InsertSubstringOverlayEmulation@47e1d2b] under overlay; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.TrimFunction@2985069a] under trim; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CastFunction@33ec4c4f] under cast; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@25b508c0] under collate; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.ExtractFunction@3acd4752] under extract; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(least)] under least; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(greatest)] under greatest; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CoalesceIfnullEmulation@5cab47c5] under ifnull; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(lpad)] under lpad; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(rpad)] under rpad; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.LpadRpadPadEmulation@55954812] under pad; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CastStrEmulation@61b37df1] under str; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.FormatFunction@7b0be4ea] under format; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.TimestampaddFunction@93e6f1e] under timestampadd; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.TimestampdiffFunction@6b92dd3b] under timestampdiff; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : dateadd -> timestampadd +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : datediff -> timestampdiff +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@1c4f1e3] under current_date; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@32b23fae] under current_time; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@96e7dc7] under current_timestamp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : current date -> current_date +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : current time -> current_time +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : current timestamp -> current_timestamp +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@61460497] under local_date; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@47abbab5] under local_time; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@64c7b2a1] under local_datetime; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@1ebd7bbb] under offset_datetime; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : local date -> local_date +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : local time -> local_time +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : local datetime -> local_datetime +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : offset datetime -> offset_datetime +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@4f0eb647] under instant; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : current_instant -> instant +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.SqlFunction@43f2cec4] under sql; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(cot)] under cot; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(radians)] under radians; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(degrees)] under degrees; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(log)] under log; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@6b299a17 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@4003ef60] under mod; prior registration was NamedSqmFunctionTemplate(mod) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(log10)] under log10; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(tanh)] under tanh; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@5c1d3ea9 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(sinh)] under sinh; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@113f3dbe +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(cosh)] under cosh; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@328bcac6 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(acosh)] under acosh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(asinh)] under asinh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(atanh)] under atanh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(cbrt)] under cbrt; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(pi)] under pi; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@3138506 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(ltrim)] under ltrim; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(rtrim)] under rtrim; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(repeat)] under repeat; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(md5)] under md5; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(initcap)] under initcap; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(substr)] under substr; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(substr)] under substring; prior registration was NamedSqmFunctionTemplate(substring) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(translate)] under translate; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(to_number)] under to_number; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(to_char)] under to_char; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(to_date)] under to_date; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(to_timestamp)] under to_timestamp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.ConcatPipeFunction@11af6b24] under concat; prior registration was NamedSqmFunctionTemplate(concat) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(localtime)] under localtime; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(localtimestamp)] under localtimestamp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(localtime)] under local_time; prior registration was org.hibernate.dialect.function.CurrentFunction@47abbab5 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(localtimestamp)] under local_datetime; prior registration was org.hibernate.dialect.function.CurrentFunction@64c7b2a1 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.LengthFunction@341f35df] under character_length; prior registration was NamedSqmFunctionTemplate(character_length) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : length -> character_length +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.LengthFunction@377676a] under bit_length; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.LengthFunction@18bb6f11] under octet_length; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(ascii)] under ascii; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(chr)] under chr; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : char -> chr +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@5a6177e5] under position; prior registration was org.hibernate.dialect.function.LocatePositionEmulation@75e5b678 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@171d00bb] under bitand; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@2fe96905] under bitor; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@6ce9480e] under bitxor; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@3d66d429] under bitnot; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(bit_and)] under bit_and; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(bit_or)] under bit_or; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(bool_and)] under bool_and; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : every -> bool_and +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(bool_or)] under bool_or; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : any -> bool_or +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@420103e6] under median; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(stddev)] under stddev; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(stddev_pop)] under stddev_pop; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(stddev_samp)] under stddev_samp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(variance)] under variance; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(var_pop)] under var_pop; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(var_samp)] under var_samp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(covar_pop)] under covar_pop; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(covar_samp)] under covar_samp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(corr)] under corr; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_avgx)] under regr_avgx; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_avgy)] under regr_avgy; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_count)] under regr_count; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_intercept)] under regr_intercept; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_r2)] under regr_r2; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_slope)] under regr_slope; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_sxx)] under regr_sxx; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_sxy)] under regr_sxy; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_syy)] under regr_syy; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@cb7e0c] under insert; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.MultipatternSqmFunctionDescriptor@1ba9dc2d] under overlay; prior registration was org.hibernate.dialect.function.InsertSubstringOverlayEmulation@47e1d2b +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(soundex)] under soundex; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.MultipatternSqmFunctionDescriptor@29b140dd] under locate; prior registration was NamedSqmFunctionTemplate(locate) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(row_number)] under row_number; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(lag)] under lag; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(lead)] under lead; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(first_value)] under first_value; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(last_value)] under last_value; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(nth_value)] under nth_value; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.ListaggStringAggEmulation@5ceb146e] under listagg; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayConstructorFunction@6f9395ae] under array; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayConstructorFunction@75163979] under array_list; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayAggFunction@e98c9db] under array_agg; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayPositionFunction@3908af86] under array_position; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayPositionsFunction@1e326515] under array_positions; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayPositionsFunction@4417b88] under array_positions_list; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@87eafa5] under array_length; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayConcatFunction@ff9beb6] under array_concat; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayConcatElementFunction@1a0611d3] under array_prepend; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayConcatElementFunction@905fb24] under array_append; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayContainsOperatorFunction@4617018b] under array_contains; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayContainsOperatorFunction@21965b5b] under array_contains_nullable; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayOverlapsOperatorFunction@23e92670] under array_overlaps; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayOverlapsOperatorFunction@3f152915] under array_overlaps_nullable; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@22edab89] under array_get; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArraySetUnnestFunction@fce83cb] under array_set; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(array_remove)] under array_remove; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayRemoveIndexUnnestFunction@733f30ad] under array_remove_index; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@50948938] under array_slice; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(array_replace)] under array_replace; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@30963120] under array_trim; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayFillFunction@62b85785] under array_fill; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayFillFunction@11d17f2e] under array_fill_list; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayToStringFunction@479c0269] under array_to_string; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(make_date)] under make_date; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(make_time)] under make_time; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(make_timestamp)] under make_timestamp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(make_timestamptz)] under make_timestamptz; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.InverseDistributionFunction@18f0ef84] under mode; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.InverseDistributionFunction@799bf887] under percentile_cont; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.InverseDistributionFunction@7901044a] under percentile_disc; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.HypotheticalSetFunction@3ad13035] under rank; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.HypotheticalSetFunction@40b6a63] under dense_rank; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.HypotheticalSetFunction@3faf3105] under percent_rank; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.HypotheticalSetFunction@6e0fc12d] under cume_dist; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.PostgreSQLMinMaxFunction@541cbca9] under min; prior registration was NamedSqmFunctionTemplate(min) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.PostgreSQLMinMaxFunction@696f7477] under max; prior registration was NamedSqmFunctionTemplate(max) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@32f0706a] under bitxor; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@6ce9480e +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.PostgreSQLTruncRoundFunction@34678252] under round; prior registration was NamedSqmFunctionTemplate(round) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.PostgreSQLTruncFunction@7db0f45c] under trunc; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : truncate -> trunc +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@13829b0e] under date_trunc; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - abs(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double acos(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double acosh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean any(BOOLEAN predicate) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_agg(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_append( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_concat( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean array_contains(ARRAY haystackArray, OBJECT needleElementOrArray) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean array_contains_nullable(ARRAY haystackArray, OBJECT needleElementOrArray) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_fill(OBJECT element, INTEGER elementCount) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_fill_list(OBJECT element, INTEGER elementCount) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_get(ARRAY array, INTEGER index) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer array_length(ARRAY array) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_list( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean array_overlaps(ARRAY array0, OBJECT array1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean array_overlaps_nullable(ARRAY array0, OBJECT array1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer array_position(ARRAY array, OBJECT element[, INTEGER startPosition]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - int[] array_positions(ARRAY array, OBJECT element) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - List array_positions_list(ARRAY array, OBJECT element) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_prepend( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_remove( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_remove_index( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_replace(ARRAY array, OBJECT old, OBJECT new) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_set( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_slice(ARRAY array, INTEGER start, INTEGER end) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String array_to_string( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_trim(ARRAY array, INTEGER elementsToRemove) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer ascii(STRING arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double asin(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double asinh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double atan(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double atan2(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double atanh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - avg(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bit_and(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer bit_length(STRING_OR_CLOB arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bit_or(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bitand(arg0, arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bitnot(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bitor(arg0, arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bitxor(arg0, arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean bool_and(BOOLEAN predicate) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean bool_or(BOOLEAN predicate) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - cast(arg as Type) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double cbrt(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - ceiling(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Character char(INTEGER arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer character_length(STRING_OR_CLOB arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Character chr(INTEGER arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - coalesce(arg0[, arg1[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String collate(STRING string as COLLATION collation) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - (STRING string0[, STRING string1[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double corr(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double cos(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double cosh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double cot(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long count([distinct ]{arg|*}) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double covar_pop(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double covar_samp(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double cume_dist([arg0[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Date current date +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Time current time +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp current timestamp +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Date current_date +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Instant current_instant +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Time current_time +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp current_timestamp +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - date_trunc(STRING field, TEMPORAL datetime) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - dateadd(TEMPORAL_UNIT field, INTEGER magnitude, TEMPORAL datetime) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long|Double datediff(TEMPORAL_UNIT field, TEMPORAL start, TEMPORAL end) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double degrees(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long dense_rank([arg0[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean every(BOOLEAN predicate) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double exp(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - extract(TEMPORAL_UNIT field from TEMPORAL arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - first_valueANY value +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - floor(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String format(TEMPORAL datetime as STRING pattern) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - greatest(COMPARABLE arg0, COMPARABLE arg1[, arg2[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - ifnull(arg0, arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String initcap(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String insert(STRING string, INTEGER start, INTEGER length, STRING replacement) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Instant instant +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - lagANY value[, INTEGER offset[, ANY default]] +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - last_valueANY value +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - leadANY value[, INTEGER offset[, ANY default]] +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - least(COMPARABLE arg0, COMPARABLE arg1[, arg2[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String left(STRING string, INTEGER length) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer length(STRING_OR_CLOB arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String listagg(STRING arg0, STRING arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double ln(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalDate local date +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalDateTime local datetime +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalTime local time +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalDate local_date +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalDateTime local_datetime +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalTime local_time +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Time localtime +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp localtimestamp +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer locate(STRING pattern, STRING string[, INTEGER start]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double log(NUMERIC arg0[, NUMERIC arg1]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double log10(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String lower(STRING string) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String lpad(STRING string, INTEGER length[, STRING padding]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String ltrim(STRING string[, STRING characters]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Date make_date(INTEGER arg0, INTEGER arg1, INTEGER arg2) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Time make_time(INTEGER arg0, INTEGER arg1, INTEGER arg2) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp make_timestamp(INTEGER arg0, INTEGER arg1, INTEGER arg2, INTEGER arg3, INTEGER arg4, INTEGER arg5) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp make_timestamptz(INTEGER arg0, INTEGER arg1, INTEGER arg2, INTEGER arg3, INTEGER arg4, INTEGER arg5[, INTEGER arg6]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - max(COMPARABLE arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String md5(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double median(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - min(COMPARABLE arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer mod(INTEGER arg0, INTEGER arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - mode() +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - nth_valueANY value, INTEGER nth +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - nullif(arg0, arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer octet_length(STRING_OR_CLOB arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - OffsetDateTime offset datetime +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - OffsetDateTime offset_datetime +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String overlay(string placing replacement from start[ for length]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String pad(STRING string with INTEGER length {leading|trailing}[ STRING character]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double percent_rank([arg0[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - percentile_cont(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - percentile_disc(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double pi +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer position(STRING pattern in STRING string) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double power(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double radians(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long rank([arg0[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_avgx(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_avgy(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_count(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_intercept(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_r2(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_slope(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_sxx(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_sxy(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_syy(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String repeat(STRING string, INTEGER times) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String replace(STRING string, STRING pattern, STRING replacement) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String right(STRING string, INTEGER length) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - round(NUMERIC number[, INTEGER places]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long row_number() +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String rpad(STRING string, INTEGER length[, STRING padding]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String rtrim(STRING string[, STRING characters]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer sign(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double sin(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double sinh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String soundex(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Object sql +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double sqrt(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double stddev(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double stddev_pop(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double stddev_samp(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String str(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String substr(STRING string, INTEGER start[, INTEGER length]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String substring(STRING string{ from|,} INTEGER start[{ for|,} INTEGER length]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - sum(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double tan(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double tanh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - timestampadd(TEMPORAL_UNIT field, INTEGER magnitude, TEMPORAL datetime) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long|Double timestampdiff(TEMPORAL_UNIT field, TEMPORAL start, TEMPORAL end) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String to_char(ANY arg0[, STRING arg1, STRING arg2]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Date to_date(STRING arg0[, STRING arg1, STRING arg2]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double to_number(STRING arg0[, STRING arg1, STRING arg2]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp to_timestamp(STRING arg0[, STRING arg1, STRING arg2]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String translate(STRING arg0, STRING arg1, STRING arg2) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String trim([[{leading|trailing|both} ][STRING arg0 ]from] STRING arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - trunc( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - truncate( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String upper(STRING string) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double var_pop(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double var_samp(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double variance(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [cache:48] - Starting QueryInterpretationCache(2048) +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=5, active=0, idle=5, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +6. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 (6) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +6. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +6. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +6. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@35fc8a0f +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryServiceRegistryImpl:105] - EventListenerRegistry access via ServiceRegistry is deprecated. Use `sessionFactory.getEventEngine().getListenerRegistry()` instead +DEBUG 25-12-18 23:01:37[restartedMain] [EntityCopyObserverFactoryInitiator:39] - Configured EntityCopyObserver strategy: disallow +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=6, active=0, idle=6, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +7. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 7 (7) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +7. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +7. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +7. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@2b20e37d +DEBUG 25-12-18 23:01:37[restartedMain] [ClassLoaderAccessImpl:60] - Not known whether passed class name [com.kospo.drm.model.Token] is safe +DEBUG 25-12-18 23:01:37[restartedMain] [ClassLoaderAccessImpl:62] - No temp ClassLoader provided; using live ClassLoader for loading potentially unsafe class : com.kospo.drm.model.Token +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=7, active=0, idle=7, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +8. Connection opened. {executed in 17ms} +open connections: 1 2 3 4 5 6 7 8 (8) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +8. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +8. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +8. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@482f2147 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=8, active=0, idle=8, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +9. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 (9) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +9. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +9. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +9. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@6ab9b32d +DEBUG 25-12-18 23:01:37[restartedMain] [BytecodeProviderImpl:237] - HHH000513: Unable to create the ReflectionOptimizer for [com.kospo.drm.model.Token]: private accessor [insDate] +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=9, active=0, idle=9, waiting=0) +DEBUG 25-12-18 23:01:37[restartedMain] [creation:92] - Starting post-init callbacks +DEBUG 25-12-18 23:01:37[restartedMain] [creation:242] - Starting PostInitCallbackEntry : EmbeddableMappingType(com.kospo.drm.model.Token#{id})#finishInitialization +DEBUG 25-12-18 23:01:37[restartedMain] [creation:242] - Starting PostInitCallbackEntry : Entity(com.kospo.drm.model.Token) `staticFetchableList` generator +DEBUG 25-12-18 23:01:37[restartedMain] [creation:242] - Starting PostInitCallbackEntry : EmbeddableMappingType(com.kospo.drm.model.Token#{id})#initColumnMappings +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +10. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 (10) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +10. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +10. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +10. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@1961016e +DEBUG 25-12-18 23:01:37[restartedMain] [create:32] - Created new SQL alias : t1_0 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=10, active=0, idle=10, waiting=0) +DEBUG 25-12-18 23:01:37[restartedMain] [create:112] - Registration of TableGroup [StandardTableGroup(com.kospo.drm.model.Token)] with identifierForTableGroup [com.kospo.drm.model.Token] for NavigablePath [com.kospo.drm.model.Token] +DEBUG 25-12-18 23:01:37[restartedMain] [create:112] - Registration of TableGroup [StandardVirtualTableGroup(com.kospo.drm.model.Token.{id})] with identifierForTableGroup [com.kospo.drm.model.Token.{id}] for NavigablePath [com.kospo.drm.model.Token.{id}] +DEBUG 25-12-18 23:01:37[restartedMain] [AST:67] - DomainResult Graph: + \-EntityResultImpl [com.kospo.drm.model.Token] + | +-BasicFetch [com.kospo.drm.model.Token.insDate] + | +-BasicFetch [com.kospo.drm.model.Token.token] + | \-BasicFetch [com.kospo.drm.model.Token.tokenExpire] + +DEBUG 25-12-18 23:01:37[restartedMain] [tree:46] - SQL AST Tree: + SelectStatement { + FromClause { + StandardTableGroup (t1 : com.kospo.drm.model.Token) { + primaryTableReference : token as t1_0 + TableGroupJoins { + join StandardVirtualTableGroup (null : com.kospo.drm.model.Token.{id}) { + primaryTableReference : token as t1_0 + } + } + } + } + } + +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +11. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 (11) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +11. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +11. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +11. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@3a81c092 +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractEntityPersister:2939] - Static SQL for entity: com.kospo.drm.model.Token +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractEntityPersister:2944] - Version select: select domain, ip from token where domain=? and ip=? +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractEntityPersister:393] - Insert (0): insert into token (ins_date,token,token_expire,domain,ip) values (?,?,?,?,?) +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractEntityPersister:393] - Update (0): update token set ins_date=?,token=?,token_expire=? where domain=? and ip=? +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractEntityPersister:393] - Delete (0): delete from token where domain=? and ip=? +INFO 25-12-18 23:01:37[restartedMain] [JtaPlatformInitiator:59] - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) +DEBUG 25-12-18 23:01:37[restartedMain] [TypeConfiguration$Scope:208] - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@1a47da57] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@3c96eeaf] +DEBUG 25-12-18 23:01:37[restartedMain] [NamedObjectRepository:243] - Checking 0 named HQL queries +DEBUG 25-12-18 23:01:37[restartedMain] [NamedObjectRepository:267] - Checking 0 named SQL queries +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.isConnectionDead(PoolBase.java:157) +1. Connection.isValid(5) returned true +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java:-1) +1. Connection.getAutoCommit() returned true +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:328) +1. PreparedStatement.new PreparedStatement returned +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:328) +1. Connection.prepareStatement(select * from information_schema.sequences) returned net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy@7f50fd3a +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=11, active=1, idle=10, waiting=0) +INFO 25-12-18 23:01:37[restartedMain] [log4j2:243] - com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) +1. select * from information_schema.sequences {executed in 3 ms} +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) +1. ResultSet.new ResultSet returned +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) +1. PreparedStatement.executeQuery() returned net.sf.log4jdbc.sql.jdbcapi.ResultSetSpy@56ca0598 +INFO 25-12-18 23:01:37[restartedMain] [log4j2:390] - +|-----------------|----------------|--------------|----------|------------------|------------------------|--------------|------------|--------------|--------------|----------|-------------| +|sequence_catalog |sequence_schema |sequence_name |data_type |numeric_precision |numeric_precision_radix |numeric_scale |start_value |minimum_value |maximum_value |increment |cycle_option | +|-----------------|----------------|--------------|----------|------------------|------------------------|--------------|------------|--------------|--------------|----------|-------------| +|-----------------|----------------|--------------|----------|------------------|------------------------|--------------|------------|--------------|--------------|----------|-------------| + +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyResultSet.next(HikariProxyResultSet.java:-1) +1. ResultSet.next() returned false +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyResultSet.close(HikariProxyResultSet.java:-1) +1. ResultSet.close() returned void +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyStatement.close(ProxyStatement.java:75) +1. PreparedStatement.close() returned +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:371) +1. Connection.getMetaData() returned org.postgresql.jdbc.PgDatabaseMetaData@44ccd0b0 +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +12. Connection opened. {executed in 15ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 (12) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +12. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +12. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +12. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@60984f4b +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:258) +1. Connection.clearWarnings() returned +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryRegistry:52] - Initializing SessionFactoryRegistry : org.hibernate.internal.SessionFactoryRegistry@5054d9b3 +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryRegistry:74] - Registering SessionFactory: a91e7f79-01d0-4def-a9a2-d471e506d561 () +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryRegistry:81] - Not binding SessionFactory to JNDI, no JNDI name configured +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryImpl:341] - Instantiated SessionFactory +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=12, active=0, idle=12, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +13. Connection opened. {executed in 17ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 (13) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +13. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +13. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +13. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@3fed9389 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=13, active=0, idle=13, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +14. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (14) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +14. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +14. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +14. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@365cd13c +DEBUG 25-12-18 23:01:37[restartedMain] [StatisticsInitiator:86] - Statistics initialized [enabled=false] +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=14, active=0, idle=14, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +15. Connection opened. {executed in 17ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (15) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +15. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +15. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +15. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@1c602f76 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=15, active=0, idle=15, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +16. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (16) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +16. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +16. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +16. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@606de6c3 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=16, active=0, idle=16, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +17. Connection opened. {executed in 15ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 (17) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +17. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +17. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +17. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@67b1bcd4 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=17, active=0, idle=17, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +18. Connection opened. {executed in 17ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 (18) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +18. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +18. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +18. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@4af3676d +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=18, active=0, idle=18, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +19. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 (19) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +19. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +19. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +19. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@591dca06 +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=19, active=0, idle=19, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +20. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (20) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +20. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +20. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +20. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@10c9c397 +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=20, active=0, idle=20, waiting=0) +INFO 25-12-18 23:01:38[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.isConnectionDead(PoolBase.java:157) +1. Connection.isValid(5) returned true +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +21. Connection opened. {executed in 16ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 (21) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +21. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +21. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +21. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@6469ad72 +INFO 25-12-18 23:01:38[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:371) +1. Connection.getMetaData() returned org.postgresql.jdbc.PgDatabaseMetaData@44ccd0b0 +INFO 25-12-18 23:01:38[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:258) +1. Connection.clearWarnings() returned +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=21, active=0, idle=21, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +22. Connection opened. {executed in 15ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 (22) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +22. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +22. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +22. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@6adda8ec +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=22, active=0, idle=22, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +23. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 (23) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +23. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +23. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +23. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@535a6ca8 +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + c.k.d.c.e.CustomExceptionHandler: + +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=23, active=0, idle=23, waiting=0) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + c.k.d.c.DrmController: + {POST [/api/token]}: search(HttpServletRequest,TokenRequest) + {POST [/api/token/generate]}: generate(HttpServletRequest,TokenRequest) + {POST [/api/drm/decrypt]}: decrypt(HttpServletRequest,DrmRequest) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.b.a.w.s.e.BasicErrorController: + { [/error]}: error(HttpServletRequest) + { [/error], produces [text/html]}: errorHtml(HttpServletRequest,HttpServletResponse) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.w.a.OpenApiWebMvcResource: + {GET [/api-docs.yaml], produces [application/vnd.oai.openapi]}: openapiYaml(HttpServletRequest,String,Locale) + {GET [/api-docs], produces [application/json]}: openapiJson(HttpServletRequest,String,Locale) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.w.u.SwaggerWelcomeWebMvc: + {GET [/swagger-ui.html]}: redirectToUi(HttpServletRequest) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.w.u.SwaggerConfigResource: + {GET [/api-docs/swagger-config], produces [application/json]}: openapiJson(HttpServletRequest) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +24. Connection opened. {executed in 17ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 (24) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +24. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +24. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +24. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@39e22804 +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:86] - 'beanNameHandlerMapping' {} +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=24, active=0, idle=24, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +25. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 (25) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +25. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +25. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +25. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@21ca890d +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:176] - 'resourceHandlerMapping' {/webjars/**=ResourceHttpRequestHandler [classpath [META-INF/resources/webjars/]], /**=ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]], /swagger-ui*/*swagger-initializer.js=ResourceHttpRequestHandler [classpath [META-INF/resources/webjars/]], /swagger-ui*/**=ResourceHttpRequestHandler [classpath [META-INF/resources/webjars/]]} +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=25, active=0, idle=25, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +26. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 (26) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +26. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +26. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +26. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@1d96b002 +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=26, active=0, idle=26, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +27. Connection opened. {executed in 20ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 (27) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +27. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +27. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +27. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@f3d5843 +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.RepositoryController: + {GET [/ || ], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: listRepositories() + {OPTIONS [/ || ], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: optionsForRepositories() + {HEAD [/ || ], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: headForRepositories() +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.RepositoryEntityController: + {GET [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: getItemResource(RootResourceInformation,Serializable,PersistentEntityResourceAssembler,HttpHeaders) + {PATCH [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: patchItemResource(RootResourceInformation,PersistentEntityResource,Serializable,PersistentEntityResourceAssembler,ETag,String) + {PUT [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: putItemResource(RootResourceInformation,PersistentEntityResource,Serializable,PersistentEntityResourceAssembler,ETag,String) + {DELETE [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: deleteItemResource(RootResourceInformation,Serializable,ETag,PersistentEntityResourceAssembler,String) + {HEAD [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: headForItemResource(RootResourceInformation,Serializable,PersistentEntityResourceAssembler) + {POST [/{repository}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: postCollectionResource(RootResourceInformation,PersistentEntityResource,PersistentEntityResourceAssembler,String) + {OPTIONS [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: optionsForItemResource(RootResourceInformation) + {GET [/{repository}], produces [application/x-spring-data-compact+json || text/uri-list]}: getCollectionResourceCompact(RootResourceInformation,DefaultedPageable,Sort,RepresentationModelAssemblers) + {GET [/{repository}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: getCollectionResource(RootResourceInformation,DefaultedPageable,Sort,RepresentationModelAssemblers) + {OPTIONS [/{repository}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: optionsForCollectionResource(RootResourceInformation) + {HEAD [/{repository}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: headCollectionResource(RootResourceInformation,DefaultedPageable) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.RepositoryPropertyReferenceController: + {GET [/{repository}/{id}/{property}], produces [text/uri-list]}: followPropertyReferenceCompact(RootResourceInformation,Serializable,String,HttpHeaders,RepresentationModelAssemblers) + {DELETE [/{repository}/{id}/{property}/{propertyId}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: deletePropertyReferenceId(RootResourceInformation,Serializable,String,String) + {GET [/{repository}/{id}/{property}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: followPropertyReference(RootResourceInformation,Serializable,String,RepresentationModelAssemblers) + {GET [/{repository}/{id}/{property}/{propertyId}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: followPropertyReference(RootResourceInformation,Serializable,String,String,RepresentationModelAssemblers) + {[PATCH, PUT, POST] [/{repository}/{id}/{property}], consumes [application/json || application/x-spring-data-compact+json || text/uri-list], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: createPropertyReference(RootResourceInformation,HttpMethod,CollectionModel,Serializable,String) + {DELETE [/{repository}/{id}/{property}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: deletePropertyReference(RootResourceInformation,Serializable,String) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.RepositorySearchController: + {GET [/{repository}/search], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: listSearches(RootResourceInformation) + {HEAD [/{repository}/search], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: headForSearches(RootResourceInformation) + {OPTIONS [/{repository}/search/{search}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: optionsForSearch(RootResourceInformation,String) + {OPTIONS [/{repository}/search], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: optionsForSearches(RootResourceInformation) + {HEAD [/{repository}/search/{search}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: headForSearch(RootResourceInformation,String) + {GET [/{repository}/search/{search}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: executeSearch(RootResourceInformation,MultiValueMap,String,DefaultedPageable,Sort,HttpHeaders,RepresentationModelAssemblers) + {GET [/{repository}/search/{search}], produces [application/x-spring-data-compact+json]}: executeSearchCompact(RootResourceInformation,HttpHeaders,MultiValueMap,String,String,DefaultedPageable,Sort,RepresentationModelAssemblers) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.RepositorySchemaController: + {GET [/profile/{repository}], produces [application/schema+json]}: schema(RootResourceInformation) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.a.AlpsController: + {GET [/profile/{repository}], produces [application/alps+json || */*]}: descriptor(RootResourceInformation) + {OPTIONS [/profile/{repository}], produces [application/alps+json]}: alpsOptions() +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.ProfileController: + {OPTIONS [/profile]}: profileOptions() + {GET [/profile]}: listAllFormsOfMetadata() +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=27, active=0, idle=27, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +28. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 (28) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +28. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +28. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +28. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@50a79f16 +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=28, active=0, idle=28, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +29. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 (29) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +29. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +29. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +29. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@69b4297 +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/api/token/generate'], Ant [pattern='/api/token/generate']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/api/token'], Ant [pattern='/api/token']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/v2/api-docs/**'], Ant [pattern='/v2/api-docs/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/swagger-resources/**'], Ant [pattern='/swagger-resources/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/v3/api-docs/**'], Ant [pattern='/v3/api-docs/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/swagger-ui/**'], Ant [pattern='/swagger-ui/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/swagger/**'], Ant [pattern='/swagger/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/api-docs/**'], Ant [pattern='/api-docs/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=29, active=0, idle=29, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +30. Connection opened. {executed in 20ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 (30) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +30. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +30. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +30. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@2f62f41c +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=30, active=0, idle=30, waiting=0) +DEBUG 25-12-18 23:01:38[restartedMain] [InternalLoggerFactory:59] - Using SLF4J as the default logging framework +INFO 25-12-18 23:01:39[restartedMain] [Http11NioProtocol:173] - Starting ProtocolHandler ["http-nio-0.0.0.0-8010"] +INFO 25-12-18 23:01:39[restartedMain] [RefreshScopeRefreshedEventListener:70] - Refreshing cached encryptable property sources on ServletWebServerInitializedEvent +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source systemProperties refreshed +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source systemEnvironment refreshed +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source random refreshed +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source Config resource 'class path resource [application-local.yml]' via location 'optional:classpath:/' refreshed +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source Config resource 'class path resource [application.yml]' via location 'optional:classpath:/' refreshed +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source devtools refreshed +INFO 25-12-18 23:01:39[restartedMain] [EncryptablePropertySourceConverter:105] - Skipping PropertySource configurationProperties [class org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource +INFO 25-12-18 23:01:39[restartedMain] [EncryptablePropertySourceConverter:105] - Skipping PropertySource servletConfigInitParams [class org.springframework.core.env.PropertySource$StubPropertySource +INFO 25-12-18 23:01:39[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource servletContextInitParams [org.springframework.web.context.support.ServletContextPropertySource] to EncryptableEnumerablePropertySourceWrapper +INFO 25-12-18 23:01:39[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource Management Server [org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$1] to EncryptablePropertySourceWrapper +INFO 25-12-18 23:01:39[restartedMain] [Application:56] - Started Application in 5.225 seconds (process running for 5.669) +INFO 25-12-18 23:01:39[RMI TCP Connection(3)-192.168.1.227] [[/]:173] - Initializing Spring DispatcherServlet 'dispatcherServlet' +INFO 25-12-18 23:01:39[RMI TCP Connection(5)-192.168.1.227] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.isConnectionDead(PoolBase.java:157) +1. Connection.isValid(5) returned true +INFO 25-12-18 23:01:39[RMI TCP Connection(5)-192.168.1.227] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:371) +1. Connection.getMetaData() returned org.postgresql.jdbc.PgDatabaseMetaData@44ccd0b0 +INFO 25-12-18 23:01:39[RMI TCP Connection(5)-192.168.1.227] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:258) +1. Connection.clearWarnings() returned +INFO 25-12-18 23:01:39[RMI TCP Connection(5)-192.168.1.227] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyConnection.isValid(HikariProxyConnection.java:-1) +1. Connection.isValid(0) returned true +INFO 25-12-18 23:01:39[RMI TCP Connection(5)-192.168.1.227] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:258) +1. Connection.clearWarnings() returned diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..dd5b525 --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +drm api \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..1f76ea7 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'svcm' diff --git a/src/main/java/com/kospo/drm/Application.java b/src/main/java/com/kospo/drm/Application.java new file mode 100644 index 0000000..a2feddc --- /dev/null +++ b/src/main/java/com/kospo/drm/Application.java @@ -0,0 +1,21 @@ +package com.kospo.drm; + +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.servers.Server; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; + +@OpenAPIDefinition(servers = { + @Server(url = "http://localhost:8010", description = "로컬 api"), + @Server(url = "http://hmsn.ink:8010", description = "개발 api"), + @Server(url = "https://svcm.hmsn.ink", description = "외부 api"), +}) +@EnableScheduling +@SpringBootApplication +public class Application { + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/src/main/java/com/kospo/drm/config/CorsPreflightHandler.java b/src/main/java/com/kospo/drm/config/CorsPreflightHandler.java new file mode 100644 index 0000000..a8752be --- /dev/null +++ b/src/main/java/com/kospo/drm/config/CorsPreflightHandler.java @@ -0,0 +1,19 @@ +package com.kospo.drm.config; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@RestControllerAdvice +public class CorsPreflightHandler { + @RequestMapping(method = RequestMethod.OPTIONS, path="/api/**") + public ResponseEntity options() { + return ResponseEntity.ok() + .header(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*") + .header(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "GET, POST, PUT, DELETE, OPTIONS") + .header(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, "*") + .build(); + } +} diff --git a/src/main/java/com/kospo/drm/config/exception/CustomErrorResponse.java b/src/main/java/com/kospo/drm/config/exception/CustomErrorResponse.java new file mode 100644 index 0000000..3caa3d7 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/exception/CustomErrorResponse.java @@ -0,0 +1,21 @@ +package com.kospo.drm.config.exception; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Data +@Schema(name="errorResponse", description = "오류") +public class CustomErrorResponse { + @Schema(name="code", description = "오류 코드", example = "30000") + private String code; + @Schema(name="body", description = "오류 메시지", example = "오류 발생") + private String body; + @Schema(name="errTime", description = "오류 시간", example = "1761000247") + private long errTime; +} diff --git a/src/main/java/com/kospo/drm/config/exception/CustomExceptionHandler.java b/src/main/java/com/kospo/drm/config/exception/CustomExceptionHandler.java new file mode 100644 index 0000000..7ad60e5 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/exception/CustomExceptionHandler.java @@ -0,0 +1,132 @@ +package com.kospo.drm.config.exception; + + +import com.kospo.drm.exception.CustomException; +import com.kospo.drm.exception.CustomMessageException; +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; + +import java.util.Date; + +@Slf4j +@ControllerAdvice +@Controller +public class CustomExceptionHandler extends ResponseEntityExceptionHandler { + + public static final String ANSI_RESET = "\u001B[0m"; + public static final String ANSI_YELLOW_COLOR = "\u001B[33m"; + + + @ExceptionHandler(CustomException.class) + @ResponseBody + public ResponseEntity customException(CustomException e, HandlerMethod method, HttpServletRequest request, WebRequest webRequest) { + + Date errorDate = new Date(); + String exceptionName = e.getClass().getSimpleName(); + String controllerName = method.getMethod().getDeclaringClass().getSimpleName(); + String methodName = method.getMethod().getName(); + int lineNumber = e.getStackTrace()[0].getLineNumber(); + String detail = e.getMessage(); + String requestURI = request.getRequestURI(); + + + + log.error(ANSI_YELLOW_COLOR + "[EVENT_TIME: {} | CONTROLLER_NAME : {} | METHOD_NAME : {} | EXCEPTION_LINE : {} | EXCEPTION_NAME : {} | DETAIL : {} | REQUEST_URI : {}]" + ANSI_RESET + , errorDate + , controllerName + , methodName + , lineNumber + , exceptionName + , detail + , requestURI); + + HttpHeaders resHeaders = new HttpHeaders(); + resHeaders.add("Content-Type", "application/json;charset=UTF-8"); + + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).headers(resHeaders).body( + CustomErrorResponse.builder() + .code(e.getErrorCode().getCode()) + .body(e.getErrorCode().getBody()) + .errTime(System.currentTimeMillis()).build() + ); + } + @ExceptionHandler(CustomMessageException.class) + @ResponseBody + public ResponseEntity customMessageException(CustomMessageException e, HandlerMethod method, HttpServletRequest request, WebRequest webRequest) { + + Date errorDate = new Date(); + String exceptionName = e.getClass().getSimpleName(); + String controllerName = method.getMethod().getDeclaringClass().getSimpleName(); + String methodName = method.getMethod().getName(); + int lineNumber = e.getStackTrace()[0].getLineNumber(); + String detail = e.getMessage(); + String requestURI = request.getRequestURI(); + + + + log.error(ANSI_YELLOW_COLOR + "[EVENT_TIME: {} | CONTROLLER_NAME : {} | METHOD_NAME : {} | EXCEPTION_LINE : {} | EXCEPTION_NAME : {} | DETAIL : {} | REQUEST_URI : {}]" + ANSI_RESET + , errorDate + , controllerName + , methodName + , lineNumber + , exceptionName + , detail + , requestURI); + + HttpHeaders resHeaders = new HttpHeaders(); + resHeaders.add("Content-Type", "application/json;charset=UTF-8"); + + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).headers(resHeaders).body( + CustomErrorResponse.builder() + .code(e.getCusMessage().getCode()) + .body(e.getCusMessage().getMessage()) + .errTime(System.currentTimeMillis()).build() + ); + } + + @ExceptionHandler(Exception.class) + public ResponseEntity handleException(Exception e, HandlerMethod method, HttpServletRequest request, WebRequest webRequest) { + +// Date errorDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime()); + Date errorDate = new Date(); + String exceptionName = e.getClass().getSimpleName(); + String controllerName = method.getMethod().getDeclaringClass().getSimpleName(); + String methodName = method.getMethod().getName(); + int lineNumber = e.getStackTrace()[0].getLineNumber(); + String detail = e.getMessage(); + String requestURI = request.getRequestURI(); + + + + log.error(ANSI_YELLOW_COLOR + "[EVENT_TIME: {} | CONTROLLER_NAME : {} | METHOD_NAME : {} | EXCEPTION_LINE : {} | EXCEPTION_NAME : {} | DETAIL : {} | REQUEST_URI : {}]" + ANSI_RESET + , errorDate + , controllerName + , methodName + , lineNumber + , exceptionName + , detail + , requestURI); + + + HttpHeaders resHeaders = new HttpHeaders(); + resHeaders.add("Content-Type", "application/json;charset=UTF-8"); + return ResponseEntity.status(500).headers(resHeaders).body( + CustomErrorResponse.builder() + .code(ErrorCode.INTERNAL_SERVER_ERROR.getCode()) + .body(ErrorCode.INTERNAL_SERVER_ERROR.getBody()) + .errTime(System.currentTimeMillis()).build() + ); + } + + +} diff --git a/src/main/java/com/kospo/drm/config/exception/ErrorCode.java b/src/main/java/com/kospo/drm/config/exception/ErrorCode.java new file mode 100644 index 0000000..23e7cac --- /dev/null +++ b/src/main/java/com/kospo/drm/config/exception/ErrorCode.java @@ -0,0 +1,65 @@ +package com.kospo.drm.config.exception; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public enum ErrorCode { + /*트랜잭션 관련*/ + FIND_ERR("20000", "조회에 실패했습니다."), + SAVE_ERR("20001", "저장에 실패했습니다."), + UPD_ERR("20002", "수정에 실패했습니다."), + DEL_ERR("20003", "삭제에 실패했습니다."), + APPR_ERR("20004", "결재가 완료 되지 않았습니다.."), + APPR_LOCK("20005", "결재 진행중 이거나 완료 상태로 수정이 불가합니다."), + APPR_SVY_ERR("20006", "조사완료 되어 등록이 불가합니다."), + /*토큰 관련*/ + EXPIRE_TOKEN("30000", "토큰이 만료 되었습니다."), + MALFORMED_JWT("30001", "JWT 문자열은 정확히 2개의 마침표 문자를 포함해야 합니다."), + /*bad request*/ + BIND_ERROR("40001", "파라미터를 다시 확인해주세요."), + /*존재 하지 않음*/ + NO_RESULT("44001", "존재하지 않는 데이터 입니다."), + NO_ACCOUNT("44011", "아이디 또는 비밀번호를 다시 확인해주세요."), + NO_MATCH_ACCOUNT("44012", "일치하는 사용자가 없습니다."), + NO_TOKEN("44021", "헤더에 토큰이 없습니다."), + NO_MATCH_TOKEN("44022", "일치 하지 않는 토큰입니다."), + NO_SAME_IP("44030", "등록된 아이피와 일치 하지 않습니다. 다시 로그인 해주세요"), + NO_SAME_DATA("44031", "사용자가 소유한 데이터가 아닙니다."), + No_SVY_NOT_EXECUTE("44032", "사전조사가 실행 되지 않았거나 등록 기간중 입니다."), + SAME_DATA("44020", "이미 등록된 데이터가 있습니다."), + /*권한 관련*/ + + AUTHENTICATION("43000", "사용자가 정보가 일치하지 않습니다."), + AUTHENTICATION_NOT_SUPPORT("43001", "허용되지 않은 사용자입니다."), + NO_REGISTER("43002", "사용자가 존재하지 않습니다."), + SLEEP_ACCOUNT("43003", "휴면 계정입니다. 개인정보에 약관에 동의해주세요."), + //500 INTERNAL SERVER ERROR + INTERNAL_SERVER_ERROR("50000", "서버 에러입니다. 유지보수관리자에게 연락주세요!"), + + /*로그인 관련*/ + LOGIN_ERR("60000", "사업자번호 또는 비밀번호가 일치 하지 않습니다."), + NOT_REGISTER("60001", "가입된 사업자가 아닙니다."), + ALREADY_REGISTER("60001", "이미 가입된 사업자 입니다."), + OLD_PWD_NOT_MATCH("60002", "현재 비밀번호가 일치 하지 않습니다."), + PWD_NOT_MATCH("60003", "비밀번호가 일치 하지 않습니다."), + EMAIL_VALIDATE_ERR("60004", "정상적인 이메일이 아닙니다."), + + /*결재관련*/ + PASS_APPR_TWO_PERSON("70001", "전결이 두명이상 될수 없습니다."), + PASS_APPR_MANIPULATE_DATA("70002", "변경 대상자 정보가 변조 되었습니다."), + + /*파일 관련*/ + FILE_NOT_FOUND_ERROR("80000", "파일이 존재 하지 않습니다."), + FILE_EXT_UPLOAD_ERROR("80001", "허용되지 않은 확장자 입니다."), + FILE_UPLOAD_ERROR("80002", "파일이 정상적이지 않습니다. 확인해주세요"), + FILE_DELETE_ERROR("80003", "파일 삭제중 오류가 발생했습니다. 확인해주세요"), + FILE_DOWNLOAD_ERROR("80004", "파일 다운로드에 실패 했습니다."), + FILE_REQUIRED("80005", "첨부파일은 필수 항목입니다."), + + NO_SIGNAL("90000", "응답 코드가 없습니다."); + + private final String code; + private final String body; +} diff --git a/src/main/java/com/kospo/drm/config/filter/CustomBasicAuthenticationFilter.java b/src/main/java/com/kospo/drm/config/filter/CustomBasicAuthenticationFilter.java new file mode 100644 index 0000000..b9a0ab2 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/filter/CustomBasicAuthenticationFilter.java @@ -0,0 +1,102 @@ +package com.kospo.drm.config.filter; + +import com.kospo.drm.config.exception.ErrorCode; +import com.kospo.drm.config.jwt.JwtUtil; +import com.kospo.drm.exception.*; +import com.kospo.drm.model.Token; +import com.kospo.drm.model.TokenId; +import com.kospo.drm.repository.TokenRepository; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.MalformedJwtException; +import io.jsonwebtoken.io.DecodingException; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; + +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +public class CustomBasicAuthenticationFilter extends BasicAuthenticationFilter { + private TokenRepository tokenRepository; + private JwtUtil jwtUtil; + + public CustomBasicAuthenticationFilter(AuthenticationManager authenticationManager, TokenRepository tokenRepository, JwtUtil jwtUtil) { + super(authenticationManager); + this.jwtUtil = jwtUtil; + this.tokenRepository = tokenRepository; + } + + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { + final String requestTokenHeader = request.getHeader("Authorization"); + boolean isAnonymous = false; + String jwtToken = null; + try { + jwtToken = requestTokenHeader.substring(7); + } catch (NullPointerException e) { + throw new CustomNoMatchTokenException(e.getMessage()); + } + String domain = ""; + String ip = ""; + try { + domain = jwtUtil.extractDomain(jwtToken); + ip = jwtUtil.extractIp(jwtToken); + } catch(ExpiredJwtException e) { + System.out.println(e.getMessage()); + throw new CustomExpireTokenException(e.getMessage()); + } catch (DecodingException e) { + System.out.println(e.getMessage()); + throw new CustomNoMatchTokenException(e.getMessage()); + } catch(MalformedJwtException e) { + System.out.println(e.getMessage()); + throw new CustomMalformedJwtException(e.getMessage()); + } + + Optional optionalToken = tokenRepository.findById(TokenId.builder() + .domain(domain) + .ip(ip) + .build()); + if(optionalToken.isPresent()) { + if(jwtUtil.validateToken(jwtToken, optionalToken.get())) { + UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(optionalToken.get(), null, null); + usernamePasswordAuthenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + SecurityContext securityContext = SecurityContextHolder.createEmptyContext(); + securityContext.setAuthentication(usernamePasswordAuthenticationToken); + SecurityContextHolder.setContext(securityContext); + SecurityContextHolder.getContext().getAuthentication(); + chain.doFilter(request, response); + SecurityContextHolder.clearContext(); + } + } else { + throw new CustomException(ErrorCode.AUTHENTICATION); + } + + + + } + + public CustomBasicAuthenticationFilter(AuthenticationManager authenticationManager) { + super(authenticationManager); + } + + public CustomBasicAuthenticationFilter(AuthenticationManager authenticationManager, AuthenticationEntryPoint authenticationEntryPoint) { + super(authenticationManager, authenticationEntryPoint); + } +} + diff --git a/src/main/java/com/kospo/drm/config/filter/LoggingFilter.java b/src/main/java/com/kospo/drm/config/filter/LoggingFilter.java new file mode 100644 index 0000000..e67db37 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/filter/LoggingFilter.java @@ -0,0 +1,18 @@ +package com.kospo.drm.config.filter; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.filter.Filter; +import ch.qos.logback.core.spi.FilterReply; + +public class LoggingFilter extends Filter { + @Override + public FilterReply decide(ILoggingEvent iLoggingEvent) { + if(iLoggingEvent.getMessage().contains("locale")) { + return FilterReply.DENY; + } else { + return FilterReply.ACCEPT; + } + } +} + + diff --git a/src/main/java/com/kospo/drm/config/filter/SecurityExceptionFilter.java b/src/main/java/com/kospo/drm/config/filter/SecurityExceptionFilter.java new file mode 100644 index 0000000..8f50f77 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/filter/SecurityExceptionFilter.java @@ -0,0 +1,104 @@ +package com.kospo.drm.config.filter; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.kospo.drm.config.exception.CustomErrorResponse; +import com.kospo.drm.config.exception.ErrorCode; +import com.kospo.drm.exception.*; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.filter.OncePerRequestFilter; + +import java.io.IOException; + +public class SecurityExceptionFilter extends OncePerRequestFilter { + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException { + ObjectMapper om = new ObjectMapper(); + try { + filterChain.doFilter(request, response); + } catch (CustomExpireTokenException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.EXPIRE_TOKEN.getCode()) + .body(ErrorCode.EXPIRE_TOKEN.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomNoAccountException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.NO_ACCOUNT.getCode()) + .body(ErrorCode.NO_ACCOUNT.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomNoMatchTokenException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.NO_MATCH_TOKEN.getCode()) + .body(ErrorCode.NO_MATCH_TOKEN.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomNoResultException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.NO_RESULT.getCode()) + .body(ErrorCode.NO_RESULT.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomNoTokenException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.NO_TOKEN.getCode()) + .body(ErrorCode.NO_TOKEN.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (ServletException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.INTERNAL_SERVER_ERROR.getCode()) + .body(ErrorCode.INTERNAL_SERVER_ERROR.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (IOException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.INTERNAL_SERVER_ERROR.getCode()) + .body(ErrorCode.INTERNAL_SERVER_ERROR.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomMalformedJwtException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.MALFORMED_JWT.getCode()) + .body(ErrorCode.MALFORMED_JWT.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomNoSameIpException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.NO_SAME_IP.getCode()) + .body(ErrorCode.NO_SAME_IP.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } + } +} diff --git a/src/main/java/com/kospo/drm/config/jasypt/JasyptConfigAES.java b/src/main/java/com/kospo/drm/config/jasypt/JasyptConfigAES.java new file mode 100644 index 0000000..0dcf21c --- /dev/null +++ b/src/main/java/com/kospo/drm/config/jasypt/JasyptConfigAES.java @@ -0,0 +1,33 @@ +package com.kospo.drm.config.jasypt; + +import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; +import org.jasypt.encryption.StringEncryptor; +import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; +import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableEncryptableProperties +public class JasyptConfigAES { + @Value("${jasypt.encryptor.key}") + private String key; + + @Bean("jasyptEncryptorAES") + public StringEncryptor stringEncryptor() { + PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); + SimpleStringPBEConfig config = new SimpleStringPBEConfig(); + + config.setPassword(key); // 암호화키 + config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256"); // 알고리즘 + config.setKeyObtentionIterations("1000"); // 반복할 해싱 회수 + config.setPoolSize("1"); // 인스턴스 pool + config.setProviderName("SunJCE"); + config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); // salt 생성 클래스 + config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator"); + config.setStringOutputType("base64"); //인코딩 방식 + encryptor.setConfig(config); + return encryptor; + } +} diff --git a/src/main/java/com/kospo/drm/config/jwt/JwtRequestFilter.java b/src/main/java/com/kospo/drm/config/jwt/JwtRequestFilter.java new file mode 100644 index 0000000..8ff27eb --- /dev/null +++ b/src/main/java/com/kospo/drm/config/jwt/JwtRequestFilter.java @@ -0,0 +1,54 @@ +package com.kospo.drm.config.jwt; + +import com.kospo.drm.config.exception.ErrorCode; +import com.kospo.drm.exception.CustomExpireTokenException; +import com.kospo.drm.exception.CustomMalformedJwtException; +import com.kospo.drm.exception.CustomNoMatchTokenException; +import com.kospo.drm.repository.TokenRepository; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.MalformedJwtException; +import io.jsonwebtoken.io.DecodingException; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.web.filter.OncePerRequestFilter; + +import java.io.IOException; + +@RequiredArgsConstructor +public class JwtRequestFilter extends OncePerRequestFilter { + private final JwtUtil jwtUtil; + private final TokenRepository tokenRepository; + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + final String requestTokenHeader = request.getHeader("Authorization"); + boolean isAnonymous = false; + String domain = null; + String jwtToken = null; + if(requestTokenHeader != null && requestTokenHeader.startsWith("Bearer")) { + jwtToken = requestTokenHeader.substring(7); + try { + domain = jwtUtil.extractDomain(jwtToken); + } catch(ExpiredJwtException e) { + System.out.println(e.getMessage()); + throw new CustomExpireTokenException(e.getMessage()); + } catch (DecodingException e) { + System.out.println(e.getMessage()); + throw new CustomNoMatchTokenException(e.getMessage()); + } catch(MalformedJwtException e) { + System.out.println(e.getMessage()); + throw new CustomMalformedJwtException(e.getMessage()); + } + } else { + System.out.println("noToken"); + isAnonymous = true; + } +// String ip = jwtUtil.extractIp(jwtToken); +// if(!CommonUtils.getClientIp(request).equals(ip)) { +// throw new CustomNoSameIpException(ErrorCode.NO_SAME_IP.getBody()); +// } + filterChain.doFilter(request, response); + } +} diff --git a/src/main/java/com/kospo/drm/config/jwt/JwtUtil.java b/src/main/java/com/kospo/drm/config/jwt/JwtUtil.java new file mode 100644 index 0000000..67654cb --- /dev/null +++ b/src/main/java/com/kospo/drm/config/jwt/JwtUtil.java @@ -0,0 +1,172 @@ +package com.kospo.drm.config.jwt; + + +import com.kospo.drm.config.exception.ErrorCode; +import com.kospo.drm.config.utils.CommonUtils; +import com.kospo.drm.dto.res.TokenResponse; +import com.kospo.drm.exception.CustomException; +import com.kospo.drm.model.Token; +import io.jsonwebtoken.*; +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; + +@Component +public class JwtUtil { + @Value("${jwt.key}") + private String SECRET_KEY; + + /* 토큰 사용자이름을 추출한다. */ + public String extractDomain(String token) { + return extractClaim(token, Claims::getSubject); + } + /* 토큰 IP을 추출한다. */ + public String extractIp(String token) { + return extractClaim(token, claims -> (String)claims.get("ip")); + } + + /* 토큰 만료시간을 추출한다. */ + public Date extractExpirationDate(String token) { + return extractClaim(token, Claims::getExpiration); + } + + + /* 토큰 정보를 추출한다. */ + private T extractClaim(String token, Function claimsResolver) { + final Claims claims = extractAllClaims(token); + return claimsResolver.apply(claims); + } + + /* 토큰 모든 정보를 추출한다. */ + private Claims extractAllClaims(String token) { + return Jwts.parserBuilder().setSigningKey(SECRET_KEY).build().parseClaimsJws(token).getBody(); + } + + /* 토큰 만료여부 확인. */ + private Boolean isTokenExpired(String token) { + return extractExpirationDate(token).before(new Date()); + } + + /* 토큰 엑서스 토큰을 생성한다. */ + public String generateAccessToken(Token token, Date expired) { + RequestAttributes reqAttr = RequestContextHolder.getRequestAttributes(); + ServletRequestAttributes servlReqAttr = (ServletRequestAttributes)reqAttr; + HttpServletRequest req = servlReqAttr.getRequest(); + Map claims = new HashMap<>(); + claims.put("domain", token.getId().getDomain()); + claims.put("ip", token.getId().getIp()); + return createAccessToken(claims, token.getId().getDomain(), expired); + } + + /* 토큰 엑서스 토큰을 생성한다. */ + private String createAccessToken(Map claims, String subject, Date expired) { + return Jwts.builder().setClaims(claims).setSubject(subject) + .setIssuedAt(new Date(System.currentTimeMillis())) + .setExpiration(expired) // 5minutes + .signWith(SignatureAlgorithm.HS256, SECRET_KEY).compact(); + } + + /* 토큰 리플래쉬토큰을 생성한다. */ + public String generateRefreshToken(Token token, Date expired) { + return createRefreshToken(token.getId().getDomain(), expired); + } + + /* 토큰 리플래쉬토큰을 생성한다. */ + private String createRefreshToken(String subject, Date expired) { + return Jwts.builder().setSubject(subject) + .setIssuedAt(new Date(System.currentTimeMillis())) + .setExpiration(expired) // 30minutes + .signWith(SignatureAlgorithm.HS256, SECRET_KEY).compact(); + } + + + /* 토큰 생성(엑서스, 리플레시) 동시 생성. */ + public TokenResponse generateToken(Token token) { + return TokenResponse.builder() + .accessToken(generateAccessToken(token, getAccessDate())) + .accessTokenExpired(getAccessDate().getTime()) +// .refreshToken(generateRefreshToken(token, getRefreshDate())) +// .refreshTokenExpired(getRefreshDate().getTime()) + .domain(token.getId().getDomain()).build(); + } + + /* 토큰 리플레쉬토큰으로 엑서스토큰을 재발급한다. */ + public TokenResponse renewalToken(String accessToken, Token token) { + if(validateToken(accessToken, token)) { + Claims claims = extractAllClaims(accessToken); + return TokenResponse.builder() + .accessToken(generateAccessToken(token, getAccessDate())) + .accessTokenExpired(getAccessDate().getTime()) +// .refreshToken(accessToken) +// .refreshTokenExpired(claims.getExpiration().getTime()) + .domain(token.getId().getDomain()).build(); + } else { + throw new CustomException(ErrorCode.EXPIRE_TOKEN); + } + } + + /*토큰 정보로 jws 정보를 맵핑한다..*/ + private Jws parseToken(String token) { + return Jwts.parserBuilder().setSigningKey(SECRET_KEY).build().parseClaimsJws(token); + } + + /* 토큰 리플레시토큰 만료기간을 연장한다. */ + public TokenResponse extendRefreshToken(String refreshToken) { + Date refreshDate = getRefreshDate(); + Jws jws = parseToken(refreshToken); + jws.getBody().setExpiration(refreshDate).getSubject(); + return TokenResponse.builder() + .refreshToken(refreshToken) + .refreshTokenExpired(refreshDate.getTime()).build(); + } + + + + /* 토큰 액세스토큰 만료기간을 연장한다. */ + public TokenResponse extendAccessToken(String AccessToken) { + Date accessDate = getAccessDate(); + Jws jws = parseToken(AccessToken); + jws.getBody().setExpiration(accessDate).getSubject(); + return TokenResponse.builder() + .accessToken(AccessToken) + .accessTokenExpired(accessDate.getTime()).build(); + } + + + + + /* 토큰 만료 여부 확인. */ + public Boolean validateToken(String accessToken, Token token) { + try { + final String domain = extractDomain(accessToken); + return (domain.equals(token.getId().getDomain()) && !isTokenExpired(accessToken)); + } catch(ExpiredJwtException e) { + return false; + } + + } + + /*리플레시토큰 만료기간 생성 30분*/ + private Date getRefreshDate() { + return new Date(System.currentTimeMillis() + (1000 * 60 * 60 * 4)); + } + + /*엑서스토큰 만료기간 생성 5분*/ + private Date getAccessDate() { + Calendar cal = Calendar.getInstance(); + Date dt = new Date(); + cal.setTime(dt); + cal.add(Calendar.YEAR, 30); + return cal.getTime(); + } +} \ No newline at end of file diff --git a/src/main/java/com/kospo/drm/config/security/PasswordEncoder.java b/src/main/java/com/kospo/drm/config/security/PasswordEncoder.java new file mode 100644 index 0000000..8dc53e6 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/security/PasswordEncoder.java @@ -0,0 +1,40 @@ +package com.kospo.drm.config.security; + +import org.postgresql.shaded.com.ongres.scram.common.bouncycastle.pbkdf2.SHA256Digest; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.codec.Hex; +import org.springframework.security.crypto.password.*; +import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Map; + +public class PasswordEncoder { + + public String sha256Encoding(String password) { + String encPassword = ""; + MessageDigest digest = null; + try { + digest = MessageDigest.getInstance("SHA-256"); + byte[] hash = digest.digest(password.getBytes(StandardCharsets.UTF_8)); + encPassword = new String(Hex.encode(hash)); + return encPassword; + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } + + } + + public boolean matches(String passwd1, String passwd2) { + if(passwd2.equals(sha256Encoding(passwd1))) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/kospo/drm/config/security/SecurityConfig.java b/src/main/java/com/kospo/drm/config/security/SecurityConfig.java new file mode 100644 index 0000000..ed5d65c --- /dev/null +++ b/src/main/java/com/kospo/drm/config/security/SecurityConfig.java @@ -0,0 +1,114 @@ +package com.kospo.drm.config.security; + +import com.kospo.drm.config.filter.CustomBasicAuthenticationFilter; +import com.kospo.drm.config.filter.SecurityExceptionFilter; +import com.kospo.drm.config.jwt.JwtUtil; +import com.kospo.drm.repository.TokenRepository; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.session.SessionRegistry; +import org.springframework.security.core.session.SessionRegistryImpl; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.authentication.session.RegisterSessionAuthenticationStrategy; +import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.CorsConfigurationSource; + +import java.util.List; + +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) +@RequiredArgsConstructor +public class SecurityConfig { + private final JwtUtil jwtUtil; + private final TokenRepository tokenRepository; + + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http, + TokenRepository tokenRepository) throws Exception { + http + .authorizeHttpRequests(authorizationManagerRequestMatcherRegistry -> authorizationManagerRequestMatcherRegistry + .requestMatchers("/admin*").hasRole("ADMIN") + .anyRequest().authenticated() + ) + .csrf(AbstractHttpConfigurer::disable) + .formLogin(httpSecurityFormLoginConfigurer -> httpSecurityFormLoginConfigurer.disable()) + .addFilterBefore(new CustomBasicAuthenticationFilter(authenticationManager(), tokenRepository, jwtUtil), UsernamePasswordAuthenticationFilter.class) +// .addFilterBefore(new SecurityExceptionFilter(), JwtRequestFilter.class) + .addFilterBefore(new SecurityExceptionFilter(), CustomBasicAuthenticationFilter.class) + .headers(httpSecurityHeadersConfigurer -> httpSecurityHeadersConfigurer.frameOptions(frameOptionsConfig -> frameOptionsConfig.disable())) + .sessionManagement(httpSecuritySessionManagementConfigurer -> + httpSecuritySessionManagementConfigurer + .maximumSessions(1) + .sessionRegistry(sessionRegistry()) + ) + .cors(httpSecurityCorsConfigurer -> httpSecurityCorsConfigurer.configurationSource(new CorsConfigurationSource() { + @Override + public CorsConfiguration getCorsConfiguration(HttpServletRequest request) { + CorsConfiguration config = new CorsConfiguration(); +// String origin = request.getHeader("Origin"); + config.setAllowCredentials(true); + config.setAllowedOrigins(List.of("https://dmz.hmsn.ink","http://localhost:3000", "http://hmsn.ink:3000", "http://hmsn.ink:8010", "http://hmsn.ink", "https://svcm.hmsn.ink", "http://182.227.15.92:3000")); + config.setAllowedMethods(List.of("POST","GET","DELETE","PUT","OPTIONS")); + config.setAllowedHeaders(List.of("*")); + config.setExposedHeaders(List.of("*")); + return config; + } + })); + return http.build(); + } + + private String getEncoding (String str) { + BCryptPasswordEncoder b = new BCryptPasswordEncoder(); + return b.encode(str); + } + + @Bean + public SessionRegistry sessionRegistry() { + return new SessionRegistryImpl(); + } + + + @Bean + public AuthenticationManager authenticationManager() { + AuthenticationManager manager = new AuthenticationManager() { + @Override + public Authentication authenticate(Authentication authentication) throws AuthenticationException { + return authentication; + } + }; + return manager; + } + + + /*특정 url 필터 제외 처리*/ + @Bean + public WebSecurityCustomizer webSecurityCustomizer() { + return (web) -> web.ignoring().requestMatchers( + "/api/token/generate", "/api/token" + // -- Swagger UI v2 + , "/v2/api-docs/**", "/swagger-resources/**", "/v3/api-docs/**" + , "/swagger-ui/**", "/swagger/**", "/api-docs/**" + ); + } + + + @Bean + public SessionAuthenticationStrategy sessionAuthenticationStrategy() { + return new RegisterSessionAuthenticationStrategy(sessionRegistry()); + } +} + diff --git a/src/main/java/com/kospo/drm/config/security/SecurityWebInitializer.java b/src/main/java/com/kospo/drm/config/security/SecurityWebInitializer.java new file mode 100644 index 0000000..9df6c50 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/security/SecurityWebInitializer.java @@ -0,0 +1,6 @@ +package com.kospo.drm.config.security; + +import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; + +public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer { +} diff --git a/src/main/java/com/kospo/drm/config/swagger/SwaggerConfig.java b/src/main/java/com/kospo/drm/config/swagger/SwaggerConfig.java new file mode 100644 index 0000000..dc3a8ea --- /dev/null +++ b/src/main/java/com/kospo/drm/config/swagger/SwaggerConfig.java @@ -0,0 +1,45 @@ +package com.kospo.drm.config.swagger; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SwaggerConfig { + private final String JWTSCHEMENAME = "jwtAuth"; + private SecurityRequirement securityRequirement = new SecurityRequirement().addList(JWTSCHEMENAME); + + @Bean + public OpenAPI openAPI() { +// return new OpenAPI() +// .info(apiInfo()) +// .components(new Components().addSecuritySchemes("basicScheme", new SecurityScheme() +// .type(SecurityScheme.Type.HTTP).scheme("basic"))); +// } + + return new OpenAPI() + .info(apiInfo()) + .addSecurityItem(securityRequirement) + .components(new Components() + .addSecuritySchemes(JWTSCHEMENAME, new SecurityScheme() + .name(JWTSCHEMENAME) + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT") + .name("Authentication")) + ); + } + + + + private Info apiInfo() { + return new Info() + .title("소액계약거래") + .description("소액계약거래 api") + .version("1.0.0"); + } +} diff --git a/src/main/java/com/kospo/drm/config/utils/CommonUtils.java b/src/main/java/com/kospo/drm/config/utils/CommonUtils.java new file mode 100644 index 0000000..5a52255 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/utils/CommonUtils.java @@ -0,0 +1,144 @@ +package com.kospo.drm.config.utils; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Sort; + +import javax.xml.bind.DatatypeConverter; +import java.io.*; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + + +@Slf4j +public class CommonUtils { + private static HashMap>> listenings; + + public CommonUtils() { + + } + + public static String getClientIp(HttpServletRequest request) { + String ip = ""; + ip = request.getHeader("X-FORWARDED-FOR"); + if (ip == null) { + ip = request.getHeader("Proxy-Client-IP"); + log.info("Proxy-Client-IP : " + ip); + } + if (ip == null) { + ip = request.getHeader("WL-Proxy-Client-IP"); + log.info("WL-Proxy-Client-IP : " + ip); + } + if (ip == null) { + ip = request.getHeader("HTTP_CLIENT_IP"); + log.info("HTTP_CLIENT_IP : " + ip); + } + if (ip == null) { + ip = request.getHeader("HTTP_X_FORWARDED_FOR"); + log.info("HTTP_X_FORWARDED_FOR : " + ip); + } + if (ip == null) { + ip = request.getRemoteAddr(); + log.info("getRemoteAddr : "+ip); + } + log.info("Result : IP Address : "+ip); + return ip; + } + + public static Sort convertSort(String field) { + String[] propertyAndDirection = field.split(","); + if(propertyAndDirection.length == 1) propertyAndDirection = field.split(" "); + String property = propertyAndDirection[0]; + Sort.Direction direction = Sort.DEFAULT_DIRECTION; + if(propertyAndDirection.length > 1) { + String directionString = propertyAndDirection[1]; + direction = Sort.Direction.fromOptionalString(directionString) + .orElse(Sort.DEFAULT_DIRECTION); + } + Sort.Order order = new Sort.Order(direction, property); + return Sort.by(order); + } + + + public static String dateFormat(Date setDate, String pattern) { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + return sdf.format(setDate); + } + + + public static String dateFormat(String pattern) { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + return sdf.format(new Date()); + } + + public static Date plusDays(Date dt, int day) { + Calendar cal = Calendar.getInstance(); + cal.setTime(dt); + cal.add(Calendar.DAY_OF_MONTH, day); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + System.out.println(sdf.format(cal.getTime())); + return cal.getTime(); + } + + public static String stringToPlusYear(String str, int year) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date dt = null; + try { + dt = sdf.parse(str); + } catch (ParseException e) { + throw new RuntimeException(e); + } + Calendar cal = Calendar.getInstance(); + cal.setTime(dt); + cal.add(Calendar.YEAR, year); + + SimpleDateFormat result = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return result.format(cal.getTime()); + } + + public static String stringToPlusDay(String str, String pattern, int day) { + SimpleDateFormat sdf = new SimpleDateFormat( pattern); + Date dt = null; + try { + dt = sdf.parse(str); + } catch (ParseException e) { + throw new RuntimeException(e); + } + Calendar cal = Calendar.getInstance(); + cal.setTime(dt); + cal.add(Calendar.DAY_OF_MONTH, day); + + SimpleDateFormat result = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return result.format(cal.getTime()); + } + + public static Date stringToDate(String dd) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + Date result = null; + try { + result = sdf.parse(dd); + System.out.println(sdf.format(result)); + } catch (ParseException e) { + throw new RuntimeException(e); + } + return result; + } + + public static Date stringToDate(String dd, String pattern) { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + Date result = null; + try { + result = sdf.parse(dd); + System.out.println(sdf.format(result)); + } catch (ParseException e) { + throw new RuntimeException(e); + } + return result; + } +} \ No newline at end of file diff --git a/src/main/java/com/kospo/drm/config/utils/CryptoUtil.java b/src/main/java/com/kospo/drm/config/utils/CryptoUtil.java new file mode 100644 index 0000000..eb6eddf --- /dev/null +++ b/src/main/java/com/kospo/drm/config/utils/CryptoUtil.java @@ -0,0 +1,89 @@ +package com.kospo.drm.config.utils; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Configurable; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; +import org.springframework.util.FileCopyUtils; + +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.security.*; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.RSAKeyGenParameterSpec; +import java.security.spec.X509EncodedKeySpec; +import java.util.Base64; + +public class CryptoUtil { + + public static String encrypt(String plainText) throws Exception { + Cipher cipher = Cipher.getInstance("RSA"); + cipher.init(Cipher.ENCRYPT_MODE, loadPublicKey()); + byte[] encryptedBytes = cipher.doFinal(plainText.getBytes()); + return Base64.getEncoder().encodeToString(encryptedBytes); + } + + public static String decrypt(String encryptText) throws Exception { + encryptText = encryptText.replaceAll(" ", "+"); + Cipher cipher = Cipher.getInstance("RSA"); + cipher.init(Cipher.DECRYPT_MODE, loadPrivateKey()); + byte[] decryptBytes = cipher.doFinal(Base64.getDecoder().decode(encryptText)); + return new String(decryptBytes); + } + + private static PublicKey loadPublicKey() throws NoSuchAlgorithmException, InvalidKeySpecException, IOException { + ClassPathResource resource = new ClassPathResource("public.key"); + byte[] keyBytes = FileCopyUtils.copyToByteArray(resource.getInputStream()); + X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + return keyFactory.generatePublic(spec); + } + + private static PrivateKey loadPrivateKey() throws NoSuchAlgorithmException, InvalidKeySpecException, IOException { + ClassPathResource resource = new ClassPathResource("private.key"); + byte[] keyBytes = FileCopyUtils.copyToByteArray(resource.getInputStream()); + PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + return keyFactory.generatePrivate(spec); + } + + private static byte[] readKeyFromFile(String fileName) { + File file = new File(fileName); + byte[] keyBytes = new byte[(int) file.length()]; + try(FileInputStream fis = new FileInputStream(file)) { + fis.read(keyBytes); + } catch (IOException e) { + throw new RuntimeException(e); + } + + return keyBytes; + } + + private static void saveKeyToFile(String fileName, byte[] keyBytes) { + File file = new File(fileName); + try(FileOutputStream fos = new FileOutputStream(file)) { + fos.write(keyBytes); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static void main(String[] args) { +// System.out.println(encrypt("psn14020")); +// KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA"); +// keygen.initialize(new RSAKeyGenParameterSpec(2048, RSAKeyGenParameterSpec.F4)); +// KeyPair pair = keygen.generateKeyPair(); +// +// saveKeyToFile("C:\\Users\\psn14020\\IdeaProjects\\talk\\src\\main\\resources\\private.key", pair.getPrivate().getEncoded()); +// saveKeyToFile("C:\\Users\\psn14020\\IdeaProjects\\talk\\src\\main\\resources\\public.key", pair.getPublic().getEncoded()); + } +} diff --git a/src/main/java/com/kospo/drm/config/utils/FileUtils.java b/src/main/java/com/kospo/drm/config/utils/FileUtils.java new file mode 100644 index 0000000..33a9679 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/utils/FileUtils.java @@ -0,0 +1,70 @@ +package com.kospo.drm.config.utils; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +import javax.xml.bind.DatatypeConverter; +import java.awt.image.BufferedImage; +import java.io.*; + +@Component +public class FileUtils { + + public synchronized boolean fileUpload(String full, String base64) { + boolean result = false; + File file = new File(full); + + BufferedOutputStream bos = null; + + try { + byte[] data = DatatypeConverter.parseBase64Binary(base64); + bos = new BufferedOutputStream(new FileOutputStream(file)); + bos.write(data); + bos.flush(); + result = true; + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + if (bos != null) { + try { + bos.close(); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } + } + return result; + } + + public synchronized boolean fileDelete(String full) { + File file = new File(full); + if(!file.exists()) { + return false; + } else { + file.delete(); + return true; + } + } + + public synchronized byte[] fileRead(String full) { + File file = new File(full); + if(file.exists()) { + BufferedImage originalImage = null; + FileInputStream fis = null; + + try { + fis = new FileInputStream(file); + + return fis.readAllBytes(); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + return null; + } +} diff --git a/src/main/java/com/kospo/drm/config/utils/XmlUtils.java b/src/main/java/com/kospo/drm/config/utils/XmlUtils.java new file mode 100644 index 0000000..e92f6df --- /dev/null +++ b/src/main/java/com/kospo/drm/config/utils/XmlUtils.java @@ -0,0 +1,42 @@ +package com.kospo.drm.config.utils; + +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Marshaller; +import jakarta.xml.bind.Unmarshaller; +import org.springframework.context.annotation.Configuration; + +import javax.xml.bind.DatatypeConverter; +import java.awt.image.BufferedImage; +import java.io.*; + +@Configuration +public class XmlUtils { + + public Object xmlToModel(String xml , Class cla) throws JAXBException, IOException, NoSuchMethodException { + ByteArrayInputStream bais = new ByteArrayInputStream(xml.getBytes()); + JAXBContext jaxbContext = JAXBContext.newInstance(cla); + Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); + + Object obj = unmarshaller.unmarshal(bais); + + bais.close(); + return obj; + } + + public String modelToXml(Object obj) throws JAXBException, IOException { + JAXBContext jaxbContext = JAXBContext.newInstance(obj.getClass()); + Marshaller marshaller = jaxbContext.createMarshaller(); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + marshaller.marshal(obj, baos); + + String list = baos.toString(); + + baos.close(); + + return list; + } +} diff --git a/src/main/java/com/kospo/drm/controller/DrmController.java b/src/main/java/com/kospo/drm/controller/DrmController.java new file mode 100644 index 0000000..647a062 --- /dev/null +++ b/src/main/java/com/kospo/drm/controller/DrmController.java @@ -0,0 +1,89 @@ +package com.kospo.drm.controller; + +import com.kospo.drm.config.exception.CustomErrorResponse; +import com.kospo.drm.dto.req.DrmRequest; +import com.kospo.drm.dto.req.TokenRequest; +import com.kospo.drm.dto.res.DrmResponse; +import com.kospo.drm.dto.res.TokenResponse; +import com.kospo.drm.service.DrmService; +import com.kospo.drm.service.TokenService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@Tag(name = "Drm Api", description = "drm 관리") +@RestController +@RequiredArgsConstructor +@RequestMapping("/api") +public class DrmController { + private final TokenService tokenService; + private final DrmService drmService; + + @Operation(summary = "복호화", description = "문서파일 복호화") + @ApiResponses({ + @ApiResponse(description = "Success", responseCode = "200", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {DrmResponse.class }))), + @ApiResponse(description = "Not found", responseCode = "404", + content = @Content(mediaType = "text/plain", schema = @Schema(oneOf = + {String.class}))), + @ApiResponse(description = "Internal Error", responseCode = "500", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {CustomErrorResponse.class }))) + }) + @PostMapping("/drm/decrypt") + public ResponseEntity decrypt( + HttpServletRequest request, + @RequestBody DrmRequest drmRequest + ) { + + return ResponseEntity.ok(drmService.decrypt(drmRequest)); + } + + @Operation(summary = "도메인 등록", description = "토큰을 생성한다.") + @ApiResponses({ + @ApiResponse(description = "Success", responseCode = "200", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {TokenResponse.class }))), + @ApiResponse(description = "Not found", responseCode = "404", + content = @Content(mediaType = "text/plain", schema = @Schema(oneOf = + {String.class}))), + @ApiResponse(description = "Internal Error", responseCode = "500", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {CustomErrorResponse.class }))) + }) + @PostMapping("/token/generate") + public ResponseEntity generate( + HttpServletRequest request, + @RequestBody TokenRequest tokenRequest + ) { + return ResponseEntity.ok(tokenService.generateToken(tokenRequest)); + } + + @Operation(summary = "토큰 조회", description = "도메인 아이피로 토큰 조회") + @ApiResponses({ + @ApiResponse(description = "Success", responseCode = "200", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {TokenResponse.class }))), + @ApiResponse(description = "Not found", responseCode = "404", + content = @Content(mediaType = "text/plain", schema = @Schema(oneOf = + {String.class}))), + @ApiResponse(description = "Internal Error", responseCode = "500", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {CustomErrorResponse.class }))) + }) + @PostMapping("/token") + public ResponseEntity search( + HttpServletRequest request, + @RequestBody TokenRequest tokenRequest + ) { + return ResponseEntity.ok(tokenService.generateToken(tokenRequest)); + } +} diff --git a/src/main/java/com/kospo/drm/dto/req/DrmRequest.java b/src/main/java/com/kospo/drm/dto/req/DrmRequest.java new file mode 100644 index 0000000..e69e5a0 --- /dev/null +++ b/src/main/java/com/kospo/drm/dto/req/DrmRequest.java @@ -0,0 +1,30 @@ +package com.kospo.drm.dto.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(description = "암호화 목록") +public class DrmRequest { + @Schema(description = "첨부파일명") + private List encryptFiles; + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + @Builder + @Schema(description = "암호화 파일") + public static class EncryptFile { + @Schema(description = "첨부파일명") + private String fileName; + @Schema(description = "첨부파일(byte)") + private String data; + } +} diff --git a/src/main/java/com/kospo/drm/dto/req/TokenRequest.java b/src/main/java/com/kospo/drm/dto/req/TokenRequest.java new file mode 100644 index 0000000..1c4e4d8 --- /dev/null +++ b/src/main/java/com/kospo/drm/dto/req/TokenRequest.java @@ -0,0 +1,17 @@ +package com.kospo.drm.dto.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(description = "토큰 생성") +public class TokenRequest { + @Schema(description = "도메인") + private String domain; + @Schema(description = "아이피") + private String ip; +} diff --git a/src/main/java/com/kospo/drm/dto/res/DrmResponse.java b/src/main/java/com/kospo/drm/dto/res/DrmResponse.java new file mode 100644 index 0000000..c582794 --- /dev/null +++ b/src/main/java/com/kospo/drm/dto/res/DrmResponse.java @@ -0,0 +1,31 @@ +package com.kospo.drm.dto.res; + +import com.kospo.drm.dto.req.DrmRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(description = "복호화 목록") +public class DrmResponse { + @Schema(description = "첨부파일명") + private List decryptFiles; + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + @Builder + @Schema(description = "복호화 파일") + public static class DecryptFile { + @Schema(description = "첨부파일명") + private String fileName; + @Schema(description = "첨부파일(byte)") + private String data; + } +} diff --git a/src/main/java/com/kospo/drm/dto/res/TokenResponse.java b/src/main/java/com/kospo/drm/dto/res/TokenResponse.java new file mode 100644 index 0000000..67db5a3 --- /dev/null +++ b/src/main/java/com/kospo/drm/dto/res/TokenResponse.java @@ -0,0 +1,40 @@ +package com.kospo.drm.dto.res; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.kospo.drm.model.Token; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@Schema(name = "TokenResponse", description = "토큰") +public class TokenResponse implements Serializable { + @Schema(name = "domain", description = "도메인주소") + private String domain; + @Schema(name = "accessToken", description = "엑서스 토큰") + private String accessToken; + @Schema(name = "accessTokenExpired", description = "엑서스 토큰 만료시간") + private Long accessTokenExpired; + @Schema(name = "refreshToken", description = "리플레시 토큰") + private String refreshToken; + @Schema(name = "refreshTokenExpired", description = "리플레시 토큰 만료시간") + private Long refreshTokenExpired; + + public static TokenResponse from(Token token) { + return TokenResponse.builder() + .accessToken(token.getToken()) + .domain(token.getId().getDomain()) + .accessTokenExpired(token.getTokenExpire()) + .build(); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomException.java b/src/main/java/com/kospo/drm/exception/CustomException.java new file mode 100644 index 0000000..4ce2231 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomException.java @@ -0,0 +1,14 @@ +package com.kospo.drm.exception; + + +import com.kospo.drm.config.exception.ErrorCode; +import lombok.*; + +@Getter +public class CustomException extends RuntimeException{ + private ErrorCode errorCode; + + public CustomException(ErrorCode errorCode) { + this.errorCode = errorCode; + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomExpireTokenException.java b/src/main/java/com/kospo/drm/exception/CustomExpireTokenException.java new file mode 100644 index 0000000..a17189a --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomExpireTokenException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomExpireTokenException extends RuntimeException{ + public CustomExpireTokenException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomMalformedJwtException.java b/src/main/java/com/kospo/drm/exception/CustomMalformedJwtException.java new file mode 100644 index 0000000..b757622 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomMalformedJwtException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomMalformedJwtException extends RuntimeException{ + public CustomMalformedJwtException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomMessageException.java b/src/main/java/com/kospo/drm/exception/CustomMessageException.java new file mode 100644 index 0000000..975f1f0 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomMessageException.java @@ -0,0 +1,25 @@ +package com.kospo.drm.exception; + + +import com.kospo.drm.config.exception.ErrorCode; +import lombok.*; + +@Getter +public class CustomMessageException extends RuntimeException{ + private CusMessage cusMessage; + + @NoArgsConstructor + @AllArgsConstructor + @Data + @Builder + public static class CusMessage { + String code; + String message; + } + + + + public CustomMessageException(CusMessage cusMessage) { + this.cusMessage = cusMessage; + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomNoAccountException.java b/src/main/java/com/kospo/drm/exception/CustomNoAccountException.java new file mode 100644 index 0000000..b7cad58 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomNoAccountException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomNoAccountException extends RuntimeException{ + public CustomNoAccountException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomNoMatchTokenException.java b/src/main/java/com/kospo/drm/exception/CustomNoMatchTokenException.java new file mode 100644 index 0000000..93ccc25 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomNoMatchTokenException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomNoMatchTokenException extends RuntimeException{ + public CustomNoMatchTokenException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomNoResultException.java b/src/main/java/com/kospo/drm/exception/CustomNoResultException.java new file mode 100644 index 0000000..bd60bf1 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomNoResultException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomNoResultException extends RuntimeException{ + public CustomNoResultException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomNoSameIpException.java b/src/main/java/com/kospo/drm/exception/CustomNoSameIpException.java new file mode 100644 index 0000000..6addf30 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomNoSameIpException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomNoSameIpException extends RuntimeException{ + public CustomNoSameIpException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomNoTokenException.java b/src/main/java/com/kospo/drm/exception/CustomNoTokenException.java new file mode 100644 index 0000000..d52370a --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomNoTokenException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomNoTokenException extends RuntimeException{ + public CustomNoTokenException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/model/Token.java b/src/main/java/com/kospo/drm/model/Token.java new file mode 100644 index 0000000..d10d7fc --- /dev/null +++ b/src/main/java/com/kospo/drm/model/Token.java @@ -0,0 +1,33 @@ +package com.kospo.drm.model; + +import jakarta.persistence.Column; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.Size; +import lombok.*; + +import java.sql.Timestamp; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Entity +@Table(name = "token") +public class Token { + @EmbeddedId + private TokenId id; + + @Size(max = 500) + @Column(name = "token", length = 500) + private String token; + + @Column(name = "token_expire") + private long tokenExpire; + + @Column(name = "ins_date") + private Timestamp insDate; + +} \ No newline at end of file diff --git a/src/main/java/com/kospo/drm/model/TokenId.java b/src/main/java/com/kospo/drm/model/TokenId.java new file mode 100644 index 0000000..f78c9ab --- /dev/null +++ b/src/main/java/com/kospo/drm/model/TokenId.java @@ -0,0 +1,45 @@ +package com.kospo.drm.model; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.*; +import org.hibernate.Hibernate; + +import java.io.Serializable; +import java.util.Objects; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Embeddable +public class TokenId implements Serializable { + private static final long serialVersionUID = -5489321559837728499L; + @Size(max = 200) + @NotNull + @Column(name = "domain", nullable = false, length = 200) + private String domain; + + @Size(max = 20) + @NotNull + @Column(name = "ip", nullable = false, length = 20) + private String ip; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false; + TokenId entity = (TokenId) o; + return Objects.equals(this.domain, entity.domain) && + Objects.equals(this.ip, entity.ip); + } + + @Override + public int hashCode() { + return Objects.hash(domain, ip); + } + +} \ No newline at end of file diff --git a/src/main/java/com/kospo/drm/repository/TokenRepository.java b/src/main/java/com/kospo/drm/repository/TokenRepository.java new file mode 100644 index 0000000..7242fcc --- /dev/null +++ b/src/main/java/com/kospo/drm/repository/TokenRepository.java @@ -0,0 +1,8 @@ +package com.kospo.drm.repository; + +import com.kospo.drm.model.Token; +import com.kospo.drm.model.TokenId; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TokenRepository extends JpaRepository { +} \ No newline at end of file diff --git a/src/main/java/com/kospo/drm/service/DrmService.java b/src/main/java/com/kospo/drm/service/DrmService.java new file mode 100644 index 0000000..8079ecc --- /dev/null +++ b/src/main/java/com/kospo/drm/service/DrmService.java @@ -0,0 +1,8 @@ +package com.kospo.drm.service; + +import com.kospo.drm.dto.req.DrmRequest; +import com.kospo.drm.dto.res.DrmResponse; + +public interface DrmService { + DrmResponse decrypt(DrmRequest drmRequest); +} diff --git a/src/main/java/com/kospo/drm/service/TokenService.java b/src/main/java/com/kospo/drm/service/TokenService.java new file mode 100644 index 0000000..23f6d50 --- /dev/null +++ b/src/main/java/com/kospo/drm/service/TokenService.java @@ -0,0 +1,8 @@ +package com.kospo.drm.service; + +import com.kospo.drm.dto.req.TokenRequest; +import com.kospo.drm.dto.res.TokenResponse; + +public interface TokenService { + TokenResponse generateToken(TokenRequest tokenRequest); +} diff --git a/src/main/java/com/kospo/drm/service/impl/DrmServiceImpl.java b/src/main/java/com/kospo/drm/service/impl/DrmServiceImpl.java new file mode 100644 index 0000000..6f2a02f --- /dev/null +++ b/src/main/java/com/kospo/drm/service/impl/DrmServiceImpl.java @@ -0,0 +1,56 @@ +package com.kospo.drm.service.impl; + +import com.kospo.drm.dto.req.DrmRequest; +import com.kospo.drm.dto.res.DrmResponse; +import com.kospo.drm.service.DrmService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Base64; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +@Service +@RequiredArgsConstructor +public class DrmServiceImpl implements DrmService { + @Value("${server.drm.attach}") + private String drmAttach; + @Override + public DrmResponse decrypt(DrmRequest drmRequest) { + List decryptFiles = drmRequest.getEncryptFiles().stream().map(en -> { + String fileName = en.getFileName(); + String data = en.getData(); + String[] reData = data.split(","); + byte[] decodedFile = Base64.getDecoder() + .decode(reData[1].getBytes(StandardCharsets.UTF_8)); + String psyFileName = UUID.randomUUID().toString(); + Path encryptFile = Paths.get(drmAttach + "/enc", psyFileName); + Path decryptFile = Paths.get(drmAttach + "/dec", psyFileName); + String resultData = ""; + try { + Files.write(encryptFile, decodedFile); + + /*복호화 로직 시작*/ + + /*복호화 로직 종료*/ + Files.copy(encryptFile, decryptFile); + + resultData = Base64.getEncoder().encodeToString(Files.readAllBytes(decryptFile)); + + } catch (IOException e) { + throw new RuntimeException(e); + } + + return DrmResponse.DecryptFile.builder().fileName(fileName).data(resultData).build(); + }).toList(); + + return DrmResponse.builder().decryptFiles(decryptFiles).build(); + } +} diff --git a/src/main/java/com/kospo/drm/service/impl/TokenServiceImpl.java b/src/main/java/com/kospo/drm/service/impl/TokenServiceImpl.java new file mode 100644 index 0000000..fbfe8a6 --- /dev/null +++ b/src/main/java/com/kospo/drm/service/impl/TokenServiceImpl.java @@ -0,0 +1,53 @@ +package com.kospo.drm.service.impl; + +import com.kospo.drm.config.exception.ErrorCode; +import com.kospo.drm.config.jwt.JwtUtil; +import com.kospo.drm.dto.req.TokenRequest; +import com.kospo.drm.dto.res.TokenResponse; +import com.kospo.drm.exception.CustomException; +import com.kospo.drm.model.Token; +import com.kospo.drm.model.TokenId; +import com.kospo.drm.repository.TokenRepository; +import com.kospo.drm.service.TokenService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; +import java.util.Date; +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class TokenServiceImpl implements TokenService { + private final TokenRepository tokenRepository; + private final JwtUtil jwtUtil; + + @Override + public TokenResponse generateToken(TokenRequest tokenRequest) { + Token token = Token.builder().id( + TokenId.builder() + .domain(tokenRequest.getDomain()) + .ip(tokenRequest.getIp()) + .build() + ).build() + ; + TokenResponse tokenResponse = jwtUtil.generateToken(token); + token.setToken(tokenResponse.getAccessToken()); + token.setInsDate(new Timestamp(new Date().getTime())); + + + tokenRepository.save(token); + return tokenResponse; + } + + public TokenResponse findToken(TokenRequest tokenRequest) { + Optional optionalToken = tokenRepository.findById(TokenId.builder() + .domain(tokenRequest.getDomain()) + .ip(tokenRequest.getIp()) + .build()); + + if(optionalToken.isEmpty()) throw new CustomException(ErrorCode.AUTHENTICATION); + + return TokenResponse.from(optionalToken.get()); + } +} diff --git a/src/main/java/javax/servlet/http/HttpServletRequest.java b/src/main/java/javax/servlet/http/HttpServletRequest.java new file mode 100644 index 0000000..a973394 --- /dev/null +++ b/src/main/java/javax/servlet/http/HttpServletRequest.java @@ -0,0 +1,5 @@ +package javax.servlet.http; + +public interface HttpServletRequest extends jakarta.servlet.http.HttpServletRequest { + +} diff --git a/src/main/java/javax/servlet/http/HttpServletResponse.java b/src/main/java/javax/servlet/http/HttpServletResponse.java new file mode 100644 index 0000000..7f9b8bc --- /dev/null +++ b/src/main/java/javax/servlet/http/HttpServletResponse.java @@ -0,0 +1,5 @@ +package javax.servlet.http; + +public interface HttpServletResponse extends jakarta.servlet.http.HttpServletResponse { + +} diff --git a/src/main/java/javax/servlet/http/HttpSession.java b/src/main/java/javax/servlet/http/HttpSession.java new file mode 100644 index 0000000..5ea999a --- /dev/null +++ b/src/main/java/javax/servlet/http/HttpSession.java @@ -0,0 +1,4 @@ +package javax.servlet.http; + +public interface HttpSession extends jakarta.servlet.http.HttpSession { +} diff --git a/src/main/java/javax/servlet/http/HttpUtils.java b/src/main/java/javax/servlet/http/HttpUtils.java new file mode 100644 index 0000000..64a94c1 --- /dev/null +++ b/src/main/java/javax/servlet/http/HttpUtils.java @@ -0,0 +1,135 @@ +package javax.servlet.http; + + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Hashtable; +import java.util.ResourceBundle; +import java.util.StringTokenizer; +import jakarta.servlet.ServletInputStream; + +/** @deprecated */ +public class HttpUtils { + private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings"; + private static ResourceBundle lStrings = ResourceBundle.getBundle("javax.servlet.http.LocalStrings"); + + public HttpUtils() { + } + + public static Hashtable parseQueryString(String s) { + String[] valArray = null; + if (s == null) { + throw new IllegalArgumentException(); + } else { + Hashtable ht = new Hashtable(); + StringBuilder sb = new StringBuilder(); + + String key; + for(StringTokenizer st = new StringTokenizer(s, "&"); st.hasMoreTokens(); ht.put(key, valArray)) { + String pair = st.nextToken(); + int pos = pair.indexOf(61); + if (pos == -1) { + throw new IllegalArgumentException(); + } + + key = parseName(pair.substring(0, pos), sb); + String val = parseName(pair.substring(pos + 1, pair.length()), sb); + if (!ht.containsKey(key)) { + valArray = new String[]{val}; + } else { + String[] oldVals = (String[])ht.get(key); + valArray = new String[oldVals.length + 1]; + + for(int i = 0; i < oldVals.length; ++i) { + valArray[i] = oldVals[i]; + } + + valArray[oldVals.length] = val; + } + } + + return ht; + } + } + + public static Hashtable parsePostData(int len, ServletInputStream in) { + if (len <= 0) { + return new Hashtable(); + } else if (in == null) { + throw new IllegalArgumentException(); + } else { + byte[] postedBytes = new byte[len]; + + try { + int offset = 0; + + do { + int inputLen = in.read(postedBytes, offset, len - offset); + if (inputLen <= 0) { + String msg = lStrings.getString("err.io.short_read"); + throw new IllegalArgumentException(msg); + } + + offset += inputLen; + } while(len - offset > 0); + } catch (IOException e) { + throw new IllegalArgumentException(e.getMessage()); + } + + try { + String postedBody = new String(postedBytes, 0, len, "8859_1"); + return parseQueryString(postedBody); + } catch (UnsupportedEncodingException e) { + throw new IllegalArgumentException(e.getMessage()); + } + } + } + + private static String parseName(String s, StringBuilder sb) { + sb.setLength(0); + + for(int i = 0; i < s.length(); ++i) { + char c = s.charAt(i); + switch (c) { + case '%': + try { + sb.append((char)Integer.parseInt(s.substring(i + 1, i + 3), 16)); + i += 2; + } catch (NumberFormatException var6) { + throw new IllegalArgumentException(); + } catch (StringIndexOutOfBoundsException var7) { + String rest = s.substring(i); + sb.append(rest); + if (rest.length() == 2) { + ++i; + } + } + break; + case '+': + sb.append(' '); + break; + default: + sb.append(c); + } + } + + return sb.toString(); + } + + public static StringBuffer getRequestURL(HttpServletRequest req) { + StringBuffer url = new StringBuffer(); + String scheme = req.getScheme(); + int port = req.getServerPort(); + String urlPath = req.getRequestURI(); + url.append(scheme); + url.append("://"); + url.append(req.getServerName()); + if (scheme.equals("http") && port != 80 || scheme.equals("https") && port != 443) { + url.append(':'); + url.append(req.getServerPort()); + } + + url.append(urlPath); + return url; + } +} \ No newline at end of file diff --git a/src/main/java/javax/servlet/http/ServletException.java b/src/main/java/javax/servlet/http/ServletException.java new file mode 100644 index 0000000..62ef01a --- /dev/null +++ b/src/main/java/javax/servlet/http/ServletException.java @@ -0,0 +1,4 @@ +package javax.servlet.http; + +public class ServletException extends jakarta.servlet.ServletException { +} diff --git a/src/main/java/jwtSample.java b/src/main/java/jwtSample.java new file mode 100644 index 0000000..587b14d --- /dev/null +++ b/src/main/java/jwtSample.java @@ -0,0 +1,27 @@ +import org.jasypt.encryption.StringEncryptor; +import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; +import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; + +public class jwtSample { + private static final String SECRET_KEY = "5840f916c19111ee86fcf38ac250f21377907a8ac19111eebab6e7179f8e5c87"; + public static void main(String[] args) { + System.out.println(stringEncryptor().decrypt("gLQTvX57MBGvHAhEGckIJbVdgG5w1YPO+bZk5+xOvg6DhAIcGcyXib8T605t2Icd")); + System.out.println(stringEncryptor().decrypt("KpBRMJPNmBe/zi0mPo32beSSXteAaSEp/Kf7dVV3ss8Qi4mS2bJ+P0eFw2Qs15sV")); + } + + public static StringEncryptor stringEncryptor() { + PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); + SimpleStringPBEConfig config = new SimpleStringPBEConfig(); + + config.setPassword("kospo2025"); // 암호화키 + config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256"); // 알고리즘 + config.setKeyObtentionIterations("1000"); // 반복할 해싱 회수 + config.setPoolSize("1"); // 인스턴스 pool + config.setProviderName("SunJCE"); + config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); // salt 생성 클래스 + config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator"); + config.setStringOutputType("base64"); //인코딩 방식 + encryptor.setConfig(config); + return encryptor; + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml new file mode 100644 index 0000000..da57928 --- /dev/null +++ b/src/main/resources/application-dev.yml @@ -0,0 +1,79 @@ +jasypt: + encryptor: + key: kospo2025 + bean: jasyptEncryptorAES + property: + prefix: ENC( + suffix: ) +server: + address: 0.0.0.0 + port: 8010 + servlet: + encoding: + charset: UTF-8 + enabled: true + force: true + session: + timeout: 1800s + drm: + attach: '/appl/drm/attach/' + jetty: + max-http-form-post-size: 100MB +spring: + application: + name: drm + servlet: + multipart: + max-file-size: 100MB + max-request-size: 100MB + data: + rest: + detection-strategy: annotated + devtools: + livereload: + enabled: true + remote: + restart: + enabled: false + jpa: + show-sql: false + hibernate: + ddl-auto: validate + naming: + physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy + open-in-view: false + mvc: + pathmatch: + matching-strategy: ant_path_matcher + datasource: + hikari: + username: ENC(gLQTvX57MBGvHAhEGckIJbVdgG5w1YPO+bZk5+xOvg6DhAIcGcyXib8T605t2Icd) + password: ENC(KpBRMJPNmBe/zi0mPo32beSSXteAaSEp/Kf7dVV3ss8Qi4mS2bJ+P0eFw2Qs15sV) + connection-timeout: 20000 + maximum-pool-size: 30 + data-source-properties: + cachePrepStmts: true + prepStmtCacheSize: 200 + prepStmtCacheSqlLimit: 2048 + useServerPrepStmts: true + url: jdbc:log4jdbc:postgresql://hmsn.ink:35432/svcm + driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy +jwt: + key: 5840f916c19111ee86fcf38ac250f21377907a8ac19111eebab6e7179f8e5c87 +springdoc: + packages-to-scan: com.kospo.drm + api-docs: + path: /api-docs + groups: + enabled: true + swagger-ui: + path: /swagger-ui.html + enabled: true + groups-order: ASC + tags-sorter: alpha + operations-sorter: alpha + display-request-duration: true + doc-expansion: none + cache: + disabled: true + model-and-view-allowed: true \ No newline at end of file diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml new file mode 100644 index 0000000..b02312b --- /dev/null +++ b/src/main/resources/application-local.yml @@ -0,0 +1,79 @@ +jasypt: + encryptor: + key: kospo2025 + bean: jasyptEncryptorAES + property: + prefix: ENC( + suffix: ) +server: + address: 0.0.0.0 + port: 8010 + servlet: + encoding: + charset: UTF-8 + enabled: true + force: true + session: + timeout: 1800s + drm: + attach: 'C:/appl/drm/attach/' + jetty: + max-http-form-post-size: 100MB +spring: + application: + name: drm + servlet: + multipart: + max-file-size: 100MB + max-request-size: 100MB + data: + rest: + detection-strategy: annotated + devtools: + livereload: + enabled: true + remote: + restart: + enabled: false + jpa: + show-sql: false + hibernate: + ddl-auto: validate + naming: + physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy + open-in-view: false + mvc: + pathmatch: + matching-strategy: ant_path_matcher + datasource: + hikari: + username: ENC(gLQTvX57MBGvHAhEGckIJbVdgG5w1YPO+bZk5+xOvg6DhAIcGcyXib8T605t2Icd) + password: ENC(KpBRMJPNmBe/zi0mPo32beSSXteAaSEp/Kf7dVV3ss8Qi4mS2bJ+P0eFw2Qs15sV) + connection-timeout: 20000 + maximum-pool-size: 30 + data-source-properties: + cachePrepStmts: true + prepStmtCacheSize: 200 + prepStmtCacheSqlLimit: 2048 + useServerPrepStmts: true + url: jdbc:log4jdbc:postgresql://hmsn.ink:35432/svcm + driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy +jwt: + key: 5840f916c19111ee86fcf38ac250f21377907a8ac19111eebab6e7179f8e5c87 +springdoc: + packages-to-scan: com.kospo.drm + api-docs: + path: /api-docs + groups: + enabled: true + swagger-ui: + path: /swagger-ui.html + enabled: true + groups-order: ASC + tags-sorter: alpha + operations-sorter: alpha + display-request-duration: true + doc-expansion: none + cache: + disabled: true + model-and-view-allowed: true \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 0000000..da57928 --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,79 @@ +jasypt: + encryptor: + key: kospo2025 + bean: jasyptEncryptorAES + property: + prefix: ENC( + suffix: ) +server: + address: 0.0.0.0 + port: 8010 + servlet: + encoding: + charset: UTF-8 + enabled: true + force: true + session: + timeout: 1800s + drm: + attach: '/appl/drm/attach/' + jetty: + max-http-form-post-size: 100MB +spring: + application: + name: drm + servlet: + multipart: + max-file-size: 100MB + max-request-size: 100MB + data: + rest: + detection-strategy: annotated + devtools: + livereload: + enabled: true + remote: + restart: + enabled: false + jpa: + show-sql: false + hibernate: + ddl-auto: validate + naming: + physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy + open-in-view: false + mvc: + pathmatch: + matching-strategy: ant_path_matcher + datasource: + hikari: + username: ENC(gLQTvX57MBGvHAhEGckIJbVdgG5w1YPO+bZk5+xOvg6DhAIcGcyXib8T605t2Icd) + password: ENC(KpBRMJPNmBe/zi0mPo32beSSXteAaSEp/Kf7dVV3ss8Qi4mS2bJ+P0eFw2Qs15sV) + connection-timeout: 20000 + maximum-pool-size: 30 + data-source-properties: + cachePrepStmts: true + prepStmtCacheSize: 200 + prepStmtCacheSqlLimit: 2048 + useServerPrepStmts: true + url: jdbc:log4jdbc:postgresql://hmsn.ink:35432/svcm + driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy +jwt: + key: 5840f916c19111ee86fcf38ac250f21377907a8ac19111eebab6e7179f8e5c87 +springdoc: + packages-to-scan: com.kospo.drm + api-docs: + path: /api-docs + groups: + enabled: true + swagger-ui: + path: /swagger-ui.html + enabled: true + groups-order: ASC + tags-sorter: alpha + operations-sorter: alpha + display-request-duration: true + doc-expansion: none + cache: + disabled: true + model-and-view-allowed: true \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..ef46c2a --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,3 @@ +spring: + profiles: + active: local \ No newline at end of file diff --git a/src/main/resources/logback-dev.properties b/src/main/resources/logback-dev.properties new file mode 100644 index 0000000..7a106f0 --- /dev/null +++ b/src/main/resources/logback-dev.properties @@ -0,0 +1,4 @@ +log.config.path=./logs/ +log.config.filename=api_log +log.level=debug + diff --git a/src/main/resources/logback-prod.properties b/src/main/resources/logback-prod.properties new file mode 100644 index 0000000..cd70f03 --- /dev/null +++ b/src/main/resources/logback-prod.properties @@ -0,0 +1,4 @@ +log.config.path=./logs/ +log.config.filename=api_log +log.level=warn + diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..f54c08f --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${LOG_PATTERN} + + + + + + + + ${LOG_PATH}/${LOG_FILE_NAME}.log + + + + ${LOG_PATTERN} + + + + + + ${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log + + + 10MB + + + 30 + + + + + + + + error + ACCEPT + DENY + + ${LOG_PATH}/${ERR_LOG_FILE_NAME}.log + + ${LOG_PATTERN} + + + + + ${LOG_PATH}/${ERR_LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log + + + 10MB + + + 60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/private.key b/src/main/resources/private.key new file mode 100644 index 0000000..1981fd6 Binary files /dev/null and b/src/main/resources/private.key differ diff --git a/src/main/resources/public.key b/src/main/resources/public.key new file mode 100644 index 0000000..ec96fbb Binary files /dev/null and b/src/main/resources/public.key differ