From 44a29fe4b36fe0c4e8d8c7d46f130e2d41858494 Mon Sep 17 00:00:00 2001 From: Yoshihiro OKUMURA Date: Thu, 11 Jul 2019 18:19:42 +0900 Subject: [PATCH] add initial sources. --- .gitignore | 11 + etc/common.inc.php | 197 + etc/config.inc.php | 9 + etc/dumpCredits.php | 129 + etc/dumpD3Forum.php | 162 + etc/dumpPico.php | 135 + etc/dumpXooNIps.php | 1160 +++++ etc/simpflink.csv | 465 ++ package.json | 37 +- public/favicon.ico | Bin 3870 -> 3638 bytes public/index.html | 29 +- public/manifest.json | 6 +- src/App.css | 34 +- src/App.tsx | 36 +- src/common/AppRoot.tsx | 83 + src/common/CenterColumn.tsx | 101 + src/common/Footer.tsx | 27 + src/common/Header.tsx | 66 + src/common/LeftColumn.tsx | 51 + src/common/MainContent.tsx | 45 + src/common/XoopsPathRedirect.tsx | 40 + src/common/assets/images/mlang_english.gif | Bin 0 -> 175 bytes src/common/assets/images/mlang_japanese.gif | Bin 0 -> 126 bytes src/common/assets/images/no_avatar.gif | Bin 0 -> 985 bytes src/common/assets/images/pagact.gif | Bin 0 -> 121 bytes src/common/assets/images/paginact.gif | Bin 0 -> 121 bytes src/common/assets/images/pagneutral.gif | Bin 0 -> 121 bytes .../assets/images/rank3dbf8e94a6f72.gif | Bin 0 -> 905 bytes .../assets/images/rank3dbf8e9e7d88d.gif | Bin 0 -> 1276 bytes .../assets/images/rank3dbf8ea81e642.gif | Bin 0 -> 894 bytes .../assets/images/rank3dbf8eb1a72e7.gif | Bin 0 -> 856 bytes .../assets/images/rank3dbf8edf15093.gif | Bin 0 -> 789 bytes .../assets/images/rank3dbf8ee8681cd.gif | Bin 0 -> 779 bytes .../assets/images/rank3e632f95e81ca.gif | Bin 0 -> 475 bytes .../assets/images/smil3dbd4bf386b36.gif | Bin 0 -> 210 bytes .../assets/images/smil3dbd4d4e4c4f2.gif | Bin 0 -> 204 bytes .../assets/images/smil3dbd4d6422f04.gif | Bin 0 -> 174 bytes .../assets/images/smil3dbd4d75edb5e.gif | Bin 0 -> 204 bytes .../assets/images/smil3dbd4d8676346.gif | Bin 0 -> 176 bytes .../assets/images/smil3dbd4d99c6eaa.gif | Bin 0 -> 207 bytes .../assets/images/smil3dbd4daabd491.gif | Bin 0 -> 170 bytes .../assets/images/smil3dbd4dbc14f3f.gif | Bin 0 -> 210 bytes .../assets/images/smil3dbd4dcd7b9f4.gif | Bin 0 -> 278 bytes .../assets/images/smil3dbd4ddd6835f.gif | Bin 0 -> 202 bytes .../assets/images/smil3dbd4df1944ee.gif | Bin 0 -> 678 bytes .../assets/images/smil3dbd4e02c5440.gif | Bin 0 -> 263 bytes .../assets/images/smil3dbd4e1748cc9.gif | Bin 0 -> 209 bytes .../assets/images/smil3dbd4e29bbcc7.gif | Bin 0 -> 492 bytes .../assets/images/smil3dbd4e398ff7b.gif | Bin 0 -> 205 bytes .../assets/images/smil3dbd4e4c2e742.gif | Bin 0 -> 4959 bytes .../assets/images/smil3dbd4e5e7563a.gif | Bin 0 -> 736 bytes .../assets/images/smil3dbd4e7853679.gif | Bin 0 -> 273 bytes src/common/assets/main-menu.json | 22 + src/common/assets/theme/ex.css | 87 + .../theme/images/banner-incf-japan-node.png | Bin 0 -> 4644 bytes .../assets/theme/images/banner-riken-cbs.png | Bin 0 -> 5088 bytes .../assets/theme/images/banner-riken.png | Bin 0 -> 2981 bytes .../assets/theme/images/banner-xoonips.png | Bin 0 -> 3220 bytes .../assets/theme/images/block_title1.gif | Bin 0 -> 328 bytes .../assets/theme/images/block_title2.gif | Bin 0 -> 328 bytes src/common/assets/theme/images/box1_back.gif | Bin 0 -> 56 bytes src/common/assets/theme/images/box2_back.gif | Bin 0 -> 56 bytes src/common/assets/theme/images/dot_bar.gif | Bin 0 -> 53 bytes src/common/assets/theme/images/dot_line.gif | Bin 0 -> 55 bytes .../assets/theme/images/header_back.gif | Bin 0 -> 831 bytes .../assets/theme/images/header_logo.jpg | Bin 0 -> 33840 bytes .../theme/images/header_menu_indent.gif | Bin 0 -> 1001 bytes .../theme/images/header_menu_indent2.gif | Bin 0 -> 1001 bytes .../assets/theme/images/header_r_back.jpg | Bin 0 -> 30630 bytes src/common/assets/theme/images/indent_h1.gif | Bin 0 -> 1661 bytes src/common/assets/theme/images/indent_h2.gif | Bin 0 -> 1362 bytes src/common/assets/theme/images/indent_h3.gif | Bin 0 -> 1209 bytes .../assets/theme/images/menu_indent.gif | Bin 0 -> 1388 bytes .../assets/theme/images/menu_indent_hover.gif | Bin 0 -> 1397 bytes .../assets/theme/images/menu_indent_sub.gif | Bin 0 -> 1323 bytes src/common/assets/theme/images/page_top.gif | Bin 0 -> 1518 bytes .../assets/theme/images/right_bottom.gif | Bin 0 -> 8260 bytes src/common/assets/theme/images/side_back.gif | Bin 0 -> 3190 bytes src/common/assets/theme/style.css | 598 +++ src/common/assets/xoops.css | 17 + src/common/blocks/MainMenu.tsx | 25 + src/common/blocks/SelectLang.tsx | 34 + src/common/lib/LangFlag.tsx | 38 + src/common/lib/LinkImage.tsx | 58 + src/common/lib/Loading.tsx | 12 + src/common/lib/NoticeSiteHasBeenArchived.tsx | 15 + src/common/lib/PageNotFound.tsx | 48 + src/common/lib/UserRankStarImage.tsx | 45 + src/common/lib/XoopsCode.tsx | 128 + src/config.ts | 19 + src/credits/Credits.tsx | 31 + src/credits/CreditsAboutUs.tsx | 24 + src/credits/CreditsPage.tsx | 46 + src/credits/CreditsXoopsPathRedirect.tsx | 53 + src/credits/block/CreditsMenu.tsx | 26 + src/credits/lib/CreditsUtils.ts | 71 + src/custom/assets/images/book-cover.jpg | Bin 0 -> 130143 bytes src/custom/assets/images/book-toc.jpg | Bin 0 -> 75444 bytes src/custom/assets/images/group-photo.jpg | Bin 0 -> 425595 bytes .../blocks/CerebellarPlatformCommittee.tsx | 25 + .../blocks/CerebrationOfDrItosNewBook.tsx | 21 + src/custom/blocks/NewArticleAlert.tsx | 4181 +++++++++++++++++ src/custom/blocks/Welcome.tsx | 32 + src/d3forum/D3Forum.tsx | 40 + src/d3forum/D3ForumCategory.tsx | 171 + src/d3forum/D3ForumForum.tsx | 127 + src/d3forum/D3ForumPost.tsx | 80 + src/d3forum/D3ForumTop.tsx | 161 + src/d3forum/D3ForumTopic.tsx | 125 + src/d3forum/D3ForumXoopsPathRedirect.tsx | 65 + src/d3forum/assets/d3forum_common.css | 31 + src/d3forum/assets/d3forum_main.css | 504 ++ src/d3forum/assets/images/category_0.gif | Bin 0 -> 1393 bytes src/d3forum/assets/images/category_1.gif | Bin 0 -> 1322 bytes src/d3forum/assets/images/forum_0.gif | Bin 0 -> 1079 bytes src/d3forum/assets/images/forum_1.gif | Bin 0 -> 1010 bytes src/d3forum/assets/images/posticon0.gif | Bin 0 -> 189 bytes src/d3forum/assets/images/posticon1.gif | Bin 0 -> 189 bytes src/d3forum/assets/images/posticon2.gif | Bin 0 -> 190 bytes src/d3forum/assets/images/posticon3.gif | Bin 0 -> 190 bytes src/d3forum/assets/images/posticon4.gif | Bin 0 -> 130 bytes src/d3forum/assets/images/posticon5.gif | Bin 0 -> 127 bytes src/d3forum/assets/images/posticon6.gif | Bin 0 -> 97 bytes src/d3forum/assets/images/posticon7.gif | Bin 0 -> 137 bytes src/d3forum/assets/images/topic_01.gif | Bin 0 -> 906 bytes src/d3forum/assets/images/topic_10.gif | Bin 0 -> 878 bytes src/d3forum/assets/images/topic_11.gif | Bin 0 -> 881 bytes src/d3forum/assets/images/topic_invisible.gif | Bin 0 -> 643 bytes .../assets/images/topic_status_locked1.gif | Bin 0 -> 544 bytes .../assets/images/topic_status_marked1.gif | Bin 0 -> 523 bytes .../assets/images/topic_status_solved0.gif | Bin 0 -> 540 bytes src/d3forum/assets/images/topic_sticky0.gif | Bin 0 -> 1476 bytes src/d3forum/lib/CategoryJump.tsx | 45 + src/d3forum/lib/D3ForumUtils.ts | 399 ++ src/d3forum/lib/ForumJump.tsx | 45 + src/d3forum/lib/Post.tsx | 95 + src/d3forum/lib/PostIcon.tsx | 32 + src/d3forum/lib/PostsTree.tsx | 49 + src/database/Database.module.css | 70 + src/database/Database.tsx | 44 + src/database/DatabaseAdvancedSearch.tsx | 48 + src/database/DatabaseDetailItem.tsx | 89 + .../DatabaseSearchByAdvancedKeyword.tsx | 56 + src/database/DatabaseSearchByIndexId.tsx | 88 + src/database/DatabaseSearchByItemType.tsx | 73 + src/database/DatabaseSearchByKeyword.tsx | 60 + src/database/DatabaseTop.module.css | 13 + src/database/DatabaseTop.tsx | 40 + src/database/DatabaseXoopsPathRedirect.tsx | 150 + src/database/assets/images/icon_binder.gif | Bin 0 -> 369 bytes src/database/assets/images/icon_book.gif | Bin 0 -> 375 bytes .../assets/images/icon_conference.gif | Bin 0 -> 427 bytes src/database/assets/images/icon_data.gif | Bin 0 -> 402 bytes src/database/assets/images/icon_files.gif | Bin 0 -> 433 bytes src/database/assets/images/icon_folder.gif | Bin 0 -> 1508 bytes src/database/assets/images/icon_memo.gif | Bin 0 -> 166 bytes src/database/assets/images/icon_model.gif | Bin 0 -> 409 bytes src/database/assets/images/icon_paper.gif | Bin 0 -> 479 bytes .../assets/images/icon_presentation.gif | Bin 0 -> 423 bytes src/database/assets/images/icon_simulator.gif | Bin 0 -> 562 bytes src/database/assets/images/icon_stimulus.gif | Bin 0 -> 302 bytes src/database/assets/images/icon_tool.gif | Bin 0 -> 399 bytes src/database/assets/images/icon_url.gif | Bin 0 -> 574 bytes src/database/assets/images/simpf_button.png | Bin 0 -> 6596 bytes src/database/assets/images/star.gif | Bin 0 -> 538 bytes .../assets/images/tree_folder_end_close.gif | Bin 0 -> 1039 bytes .../assets/images/tree_folder_end_normal.gif | Bin 0 -> 619 bytes .../assets/images/tree_folder_end_open.gif | Bin 0 -> 619 bytes .../images/tree_folder_middle_close.gif | Bin 0 -> 1044 bytes .../images/tree_folder_middle_normal.gif | Bin 0 -> 627 bytes .../assets/images/tree_folder_middle_open.gif | Bin 0 -> 625 bytes .../assets/images/tree_line_empty.gif | Bin 0 -> 53 bytes .../assets/images/tree_line_normal.gif | Bin 0 -> 64 bytes .../assets/images/tree_root_close.gif | Bin 0 -> 594 bytes .../assets/images/tree_root_normal.gif | Bin 0 -> 581 bytes src/database/assets/images/tree_root_open.gif | Bin 0 -> 586 bytes src/database/blocks/IndexTree.module.css | 81 + src/database/blocks/IndexTree.tsx | 104 + src/database/blocks/Rankings.module.css | 28 + src/database/blocks/Rankings.tsx | 97 + src/database/blocks/RecentContents.module.css | 28 + src/database/blocks/RecentContents.tsx | 39 + src/database/blocks/Search.tsx | 90 + .../item-type/binder/BinderAdvancedSearch.tsx | 26 + .../item-type/binder/BinderDetail.tsx | 95 + src/database/item-type/binder/BinderList.tsx | 28 + src/database/item-type/binder/BinderTop.tsx | 15 + src/database/item-type/binder/index.tsx | 13 + .../item-type/book/BookAdvancedSearch.tsx | 38 + src/database/item-type/book/BookDetail.tsx | 35 + src/database/item-type/book/BookList.tsx | 31 + src/database/item-type/book/BookTop.tsx | 15 + src/database/item-type/book/index.tsx | 13 + .../conference/ConferenceAdvancedSearch.tsx | 57 + .../item-type/conference/ConferenceDetail.tsx | 36 + .../item-type/conference/ConferenceList.tsx | 33 + .../item-type/conference/ConferenceTop.tsx | 17 + .../item-type/conference/ConferenceUtil.tsx | 37 + src/database/item-type/conference/index.tsx | 13 + .../item-type/data/DataAdvancedSearch.tsx | 46 + src/database/item-type/data/DataDetail.tsx | 44 + src/database/item-type/data/DataList.tsx | 31 + src/database/item-type/data/DataTop.tsx | 17 + src/database/item-type/data/DataUtil.tsx | 23 + src/database/item-type/data/index.tsx | 13 + .../item-type/files/FilesAdvancedSearch.tsx | 30 + src/database/item-type/files/FilesDetail.tsx | 33 + src/database/item-type/files/FilesList.tsx | 30 + src/database/item-type/files/FilesTop.tsx | 17 + src/database/item-type/files/FilesUtil.tsx | 5 + src/database/item-type/files/index.tsx | 13 + src/database/item-type/index.tsx | 179 + .../item-type/lib/AdvancedSearchBase.tsx | 189 + src/database/item-type/lib/DetailBase.tsx | 43 + src/database/item-type/lib/ListBase.tsx | 50 + src/database/item-type/lib/TopBase.tsx | 47 + src/database/item-type/lib/field/Author.tsx | 21 + .../item-type/lib/field/ChangeLog.tsx | 28 + .../item-type/lib/field/Contributer.tsx | 18 + .../item-type/lib/field/CreativeCommons.tsx | 56 + src/database/item-type/lib/field/DateTime.tsx | 21 + .../item-type/lib/field/Description.tsx | 18 + .../lib/field/FileDownloadButton.module.css | 21 + .../lib/field/FileDownloadButton.tsx | 55 + src/database/item-type/lib/field/FileSize.tsx | 17 + .../item-type/lib/field/FreeKeyword.tsx | 18 + src/database/item-type/lib/field/ItemFile.tsx | 50 + .../item-type/lib/field/ItemIndex.tsx | 26 + src/database/item-type/lib/field/Language.tsx | 35 + .../field/LicenseAgreementDialog.module.css | 38 + .../lib/field/LicenseAgreementDialog.tsx | 115 + .../item-type/lib/field/Preview.module.css | 23 + src/database/item-type/lib/field/Preview.tsx | 84 + .../item-type/lib/field/PublicationDate.tsx | 19 + src/database/item-type/lib/field/Readme.tsx | 15 + .../item-type/lib/field/RelatedTo.tsx | 74 + src/database/item-type/lib/field/Rights.tsx | 23 + .../item-type/lib/field/SimPFLinkIcon.tsx | 25 + src/database/item-type/lib/field/index.tsx | 39 + .../item-type/memo/MemoAdvancedSearch.tsx | 28 + src/database/item-type/memo/MemoDetail.tsx | 33 + src/database/item-type/memo/MemoList.tsx | 30 + src/database/item-type/memo/MemoTop.tsx | 15 + src/database/item-type/memo/index.tsx | 13 + .../item-type/model/ModelAdvancedSearch.tsx | 35 + src/database/item-type/model/ModelDetail.tsx | 43 + src/database/item-type/model/ModelList.tsx | 31 + src/database/item-type/model/ModelTop.tsx | 17 + src/database/item-type/model/ModelUtil.tsx | 23 + src/database/item-type/model/index.tsx | 13 + .../item-type/paper/PaperAdvancedSearch.tsx | 39 + src/database/item-type/paper/PaperDetail.tsx | 37 + src/database/item-type/paper/PaperList.tsx | 38 + src/database/item-type/paper/PaperTop.tsx | 15 + src/database/item-type/paper/PaperUtil.tsx | 22 + src/database/item-type/paper/index.tsx | 13 + .../PresentationAdvancedSearch.tsx | 46 + .../presentation/PresentationDetail.tsx | 37 + .../presentation/PresentationList.tsx | 33 + .../presentation/PresentationTop.tsx | 17 + .../presentation/PresentationUtil.tsx | 23 + src/database/item-type/presentation/index.tsx | 13 + .../simulator/SimulatorAdvancedSearch.tsx | 44 + .../item-type/simulator/SimulatorDetail.tsx | 44 + .../item-type/simulator/SimulatorList.tsx | 31 + .../item-type/simulator/SimulatorTop.tsx | 17 + .../item-type/simulator/SimulatorUtil.tsx | 23 + src/database/item-type/simulator/index.tsx | 13 + .../stimulus/StimulusAdvancedSearch.tsx | 44 + .../item-type/stimulus/StimulusDetail.tsx | 44 + .../item-type/stimulus/StimulusList.tsx | 31 + .../item-type/stimulus/StimulusTop.tsx | 17 + .../item-type/stimulus/StimulusUtil.tsx | 23 + src/database/item-type/stimulus/index.tsx | 13 + .../item-type/tool/ToolAdvancedSearch.tsx | 46 + src/database/item-type/tool/ToolDetail.tsx | 43 + src/database/item-type/tool/ToolList.tsx | 29 + src/database/item-type/tool/ToolTop.tsx | 17 + src/database/item-type/tool/ToolUtil.tsx | 23 + src/database/item-type/tool/index.tsx | 13 + .../item-type/url/UrlAdvancedSearch.tsx | 28 + src/database/item-type/url/UrlDetail.tsx | 32 + src/database/item-type/url/UrlList.tsx | 28 + src/database/item-type/url/UrlTop.tsx | 15 + src/database/item-type/url/UrlUtil.tsx | 28 + src/database/item-type/url/index.tsx | 13 + src/database/lib/AdvancedSearchQuery.ts | 95 + src/database/lib/DatabaseListIndex.tsx | 58 + src/database/lib/DatabaseListItem.module.css | 11 + src/database/lib/DatabaseListItem.tsx | 241 + src/database/lib/IndexUtil.ts | 95 + src/database/lib/ItemUtil.ts | 677 +++ src/functions.ts | 130 + src/index.css | 14 +- src/index.tsx | 5 +- src/logo.svg | 7 - src/pico/Pico.tsx | 61 + src/pico/PicoCategory.tsx | 84 + src/pico/PicoContent.tsx | 109 + src/pico/PicoIndex.tsx | 34 + src/pico/PicoMenu.tsx | 92 + src/pico/PicoXoopsPathRedirect.tsx | 43 + src/pico/assets/pico_main.css | 140 + src/pico/lib/PicoUtils.ts | 180 + yarn.lock | 2000 +++++--- 305 files changed, 18374 insertions(+), 772 deletions(-) create mode 100644 etc/common.inc.php create mode 100644 etc/config.inc.php create mode 100644 etc/dumpCredits.php create mode 100644 etc/dumpD3Forum.php create mode 100644 etc/dumpPico.php create mode 100644 etc/dumpXooNIps.php create mode 100644 etc/simpflink.csv create mode 100644 src/common/AppRoot.tsx create mode 100644 src/common/CenterColumn.tsx create mode 100644 src/common/Footer.tsx create mode 100644 src/common/Header.tsx create mode 100644 src/common/LeftColumn.tsx create mode 100644 src/common/MainContent.tsx create mode 100644 src/common/XoopsPathRedirect.tsx create mode 100644 src/common/assets/images/mlang_english.gif create mode 100644 src/common/assets/images/mlang_japanese.gif create mode 100644 src/common/assets/images/no_avatar.gif create mode 100644 src/common/assets/images/pagact.gif create mode 100644 src/common/assets/images/paginact.gif create mode 100644 src/common/assets/images/pagneutral.gif create mode 100644 src/common/assets/images/rank3dbf8e94a6f72.gif create mode 100644 src/common/assets/images/rank3dbf8e9e7d88d.gif create mode 100644 src/common/assets/images/rank3dbf8ea81e642.gif create mode 100644 src/common/assets/images/rank3dbf8eb1a72e7.gif create mode 100644 src/common/assets/images/rank3dbf8edf15093.gif create mode 100644 src/common/assets/images/rank3dbf8ee8681cd.gif create mode 100644 src/common/assets/images/rank3e632f95e81ca.gif create mode 100644 src/common/assets/images/smil3dbd4bf386b36.gif create mode 100644 src/common/assets/images/smil3dbd4d4e4c4f2.gif create mode 100644 src/common/assets/images/smil3dbd4d6422f04.gif create mode 100644 src/common/assets/images/smil3dbd4d75edb5e.gif create mode 100644 src/common/assets/images/smil3dbd4d8676346.gif create mode 100644 src/common/assets/images/smil3dbd4d99c6eaa.gif create mode 100644 src/common/assets/images/smil3dbd4daabd491.gif create mode 100644 src/common/assets/images/smil3dbd4dbc14f3f.gif create mode 100644 src/common/assets/images/smil3dbd4dcd7b9f4.gif create mode 100644 src/common/assets/images/smil3dbd4ddd6835f.gif create mode 100644 src/common/assets/images/smil3dbd4df1944ee.gif create mode 100644 src/common/assets/images/smil3dbd4e02c5440.gif create mode 100644 src/common/assets/images/smil3dbd4e1748cc9.gif create mode 100644 src/common/assets/images/smil3dbd4e29bbcc7.gif create mode 100644 src/common/assets/images/smil3dbd4e398ff7b.gif create mode 100644 src/common/assets/images/smil3dbd4e4c2e742.gif create mode 100644 src/common/assets/images/smil3dbd4e5e7563a.gif create mode 100644 src/common/assets/images/smil3dbd4e7853679.gif create mode 100644 src/common/assets/main-menu.json create mode 100644 src/common/assets/theme/ex.css create mode 100644 src/common/assets/theme/images/banner-incf-japan-node.png create mode 100644 src/common/assets/theme/images/banner-riken-cbs.png create mode 100644 src/common/assets/theme/images/banner-riken.png create mode 100644 src/common/assets/theme/images/banner-xoonips.png create mode 100644 src/common/assets/theme/images/block_title1.gif create mode 100644 src/common/assets/theme/images/block_title2.gif create mode 100644 src/common/assets/theme/images/box1_back.gif create mode 100644 src/common/assets/theme/images/box2_back.gif create mode 100644 src/common/assets/theme/images/dot_bar.gif create mode 100644 src/common/assets/theme/images/dot_line.gif create mode 100644 src/common/assets/theme/images/header_back.gif create mode 100644 src/common/assets/theme/images/header_logo.jpg create mode 100644 src/common/assets/theme/images/header_menu_indent.gif create mode 100644 src/common/assets/theme/images/header_menu_indent2.gif create mode 100644 src/common/assets/theme/images/header_r_back.jpg create mode 100644 src/common/assets/theme/images/indent_h1.gif create mode 100644 src/common/assets/theme/images/indent_h2.gif create mode 100644 src/common/assets/theme/images/indent_h3.gif create mode 100644 src/common/assets/theme/images/menu_indent.gif create mode 100644 src/common/assets/theme/images/menu_indent_hover.gif create mode 100644 src/common/assets/theme/images/menu_indent_sub.gif create mode 100644 src/common/assets/theme/images/page_top.gif create mode 100644 src/common/assets/theme/images/right_bottom.gif create mode 100644 src/common/assets/theme/images/side_back.gif create mode 100644 src/common/assets/theme/style.css create mode 100644 src/common/assets/xoops.css create mode 100644 src/common/blocks/MainMenu.tsx create mode 100644 src/common/blocks/SelectLang.tsx create mode 100644 src/common/lib/LangFlag.tsx create mode 100644 src/common/lib/LinkImage.tsx create mode 100644 src/common/lib/Loading.tsx create mode 100644 src/common/lib/NoticeSiteHasBeenArchived.tsx create mode 100644 src/common/lib/PageNotFound.tsx create mode 100644 src/common/lib/UserRankStarImage.tsx create mode 100644 src/common/lib/XoopsCode.tsx create mode 100644 src/config.ts create mode 100644 src/credits/Credits.tsx create mode 100644 src/credits/CreditsAboutUs.tsx create mode 100644 src/credits/CreditsPage.tsx create mode 100644 src/credits/CreditsXoopsPathRedirect.tsx create mode 100644 src/credits/block/CreditsMenu.tsx create mode 100644 src/credits/lib/CreditsUtils.ts create mode 100644 src/custom/assets/images/book-cover.jpg create mode 100644 src/custom/assets/images/book-toc.jpg create mode 100644 src/custom/assets/images/group-photo.jpg create mode 100644 src/custom/blocks/CerebellarPlatformCommittee.tsx create mode 100644 src/custom/blocks/CerebrationOfDrItosNewBook.tsx create mode 100644 src/custom/blocks/NewArticleAlert.tsx create mode 100644 src/custom/blocks/Welcome.tsx create mode 100644 src/d3forum/D3Forum.tsx create mode 100644 src/d3forum/D3ForumCategory.tsx create mode 100644 src/d3forum/D3ForumForum.tsx create mode 100644 src/d3forum/D3ForumPost.tsx create mode 100644 src/d3forum/D3ForumTop.tsx create mode 100644 src/d3forum/D3ForumTopic.tsx create mode 100644 src/d3forum/D3ForumXoopsPathRedirect.tsx create mode 100644 src/d3forum/assets/d3forum_common.css create mode 100644 src/d3forum/assets/d3forum_main.css create mode 100644 src/d3forum/assets/images/category_0.gif create mode 100644 src/d3forum/assets/images/category_1.gif create mode 100644 src/d3forum/assets/images/forum_0.gif create mode 100644 src/d3forum/assets/images/forum_1.gif create mode 100644 src/d3forum/assets/images/posticon0.gif create mode 100644 src/d3forum/assets/images/posticon1.gif create mode 100644 src/d3forum/assets/images/posticon2.gif create mode 100644 src/d3forum/assets/images/posticon3.gif create mode 100644 src/d3forum/assets/images/posticon4.gif create mode 100644 src/d3forum/assets/images/posticon5.gif create mode 100644 src/d3forum/assets/images/posticon6.gif create mode 100644 src/d3forum/assets/images/posticon7.gif create mode 100644 src/d3forum/assets/images/topic_01.gif create mode 100644 src/d3forum/assets/images/topic_10.gif create mode 100644 src/d3forum/assets/images/topic_11.gif create mode 100644 src/d3forum/assets/images/topic_invisible.gif create mode 100644 src/d3forum/assets/images/topic_status_locked1.gif create mode 100644 src/d3forum/assets/images/topic_status_marked1.gif create mode 100644 src/d3forum/assets/images/topic_status_solved0.gif create mode 100644 src/d3forum/assets/images/topic_sticky0.gif create mode 100644 src/d3forum/lib/CategoryJump.tsx create mode 100644 src/d3forum/lib/D3ForumUtils.ts create mode 100644 src/d3forum/lib/ForumJump.tsx create mode 100644 src/d3forum/lib/Post.tsx create mode 100644 src/d3forum/lib/PostIcon.tsx create mode 100644 src/d3forum/lib/PostsTree.tsx create mode 100644 src/database/Database.module.css create mode 100644 src/database/Database.tsx create mode 100644 src/database/DatabaseAdvancedSearch.tsx create mode 100644 src/database/DatabaseDetailItem.tsx create mode 100644 src/database/DatabaseSearchByAdvancedKeyword.tsx create mode 100644 src/database/DatabaseSearchByIndexId.tsx create mode 100644 src/database/DatabaseSearchByItemType.tsx create mode 100644 src/database/DatabaseSearchByKeyword.tsx create mode 100644 src/database/DatabaseTop.module.css create mode 100644 src/database/DatabaseTop.tsx create mode 100644 src/database/DatabaseXoopsPathRedirect.tsx create mode 100644 src/database/assets/images/icon_binder.gif create mode 100644 src/database/assets/images/icon_book.gif create mode 100644 src/database/assets/images/icon_conference.gif create mode 100644 src/database/assets/images/icon_data.gif create mode 100644 src/database/assets/images/icon_files.gif create mode 100644 src/database/assets/images/icon_folder.gif create mode 100644 src/database/assets/images/icon_memo.gif create mode 100644 src/database/assets/images/icon_model.gif create mode 100644 src/database/assets/images/icon_paper.gif create mode 100644 src/database/assets/images/icon_presentation.gif create mode 100644 src/database/assets/images/icon_simulator.gif create mode 100644 src/database/assets/images/icon_stimulus.gif create mode 100644 src/database/assets/images/icon_tool.gif create mode 100644 src/database/assets/images/icon_url.gif create mode 100644 src/database/assets/images/simpf_button.png create mode 100644 src/database/assets/images/star.gif create mode 100644 src/database/assets/images/tree_folder_end_close.gif create mode 100644 src/database/assets/images/tree_folder_end_normal.gif create mode 100644 src/database/assets/images/tree_folder_end_open.gif create mode 100644 src/database/assets/images/tree_folder_middle_close.gif create mode 100644 src/database/assets/images/tree_folder_middle_normal.gif create mode 100644 src/database/assets/images/tree_folder_middle_open.gif create mode 100644 src/database/assets/images/tree_line_empty.gif create mode 100644 src/database/assets/images/tree_line_normal.gif create mode 100644 src/database/assets/images/tree_root_close.gif create mode 100644 src/database/assets/images/tree_root_normal.gif create mode 100644 src/database/assets/images/tree_root_open.gif create mode 100644 src/database/blocks/IndexTree.module.css create mode 100644 src/database/blocks/IndexTree.tsx create mode 100644 src/database/blocks/Rankings.module.css create mode 100644 src/database/blocks/Rankings.tsx create mode 100644 src/database/blocks/RecentContents.module.css create mode 100644 src/database/blocks/RecentContents.tsx create mode 100644 src/database/blocks/Search.tsx create mode 100644 src/database/item-type/binder/BinderAdvancedSearch.tsx create mode 100644 src/database/item-type/binder/BinderDetail.tsx create mode 100644 src/database/item-type/binder/BinderList.tsx create mode 100644 src/database/item-type/binder/BinderTop.tsx create mode 100644 src/database/item-type/binder/index.tsx create mode 100644 src/database/item-type/book/BookAdvancedSearch.tsx create mode 100644 src/database/item-type/book/BookDetail.tsx create mode 100644 src/database/item-type/book/BookList.tsx create mode 100644 src/database/item-type/book/BookTop.tsx create mode 100644 src/database/item-type/book/index.tsx create mode 100644 src/database/item-type/conference/ConferenceAdvancedSearch.tsx create mode 100644 src/database/item-type/conference/ConferenceDetail.tsx create mode 100644 src/database/item-type/conference/ConferenceList.tsx create mode 100644 src/database/item-type/conference/ConferenceTop.tsx create mode 100644 src/database/item-type/conference/ConferenceUtil.tsx create mode 100644 src/database/item-type/conference/index.tsx create mode 100644 src/database/item-type/data/DataAdvancedSearch.tsx create mode 100644 src/database/item-type/data/DataDetail.tsx create mode 100644 src/database/item-type/data/DataList.tsx create mode 100644 src/database/item-type/data/DataTop.tsx create mode 100644 src/database/item-type/data/DataUtil.tsx create mode 100644 src/database/item-type/data/index.tsx create mode 100644 src/database/item-type/files/FilesAdvancedSearch.tsx create mode 100644 src/database/item-type/files/FilesDetail.tsx create mode 100644 src/database/item-type/files/FilesList.tsx create mode 100644 src/database/item-type/files/FilesTop.tsx create mode 100644 src/database/item-type/files/FilesUtil.tsx create mode 100644 src/database/item-type/files/index.tsx create mode 100644 src/database/item-type/index.tsx create mode 100644 src/database/item-type/lib/AdvancedSearchBase.tsx create mode 100644 src/database/item-type/lib/DetailBase.tsx create mode 100644 src/database/item-type/lib/ListBase.tsx create mode 100644 src/database/item-type/lib/TopBase.tsx create mode 100644 src/database/item-type/lib/field/Author.tsx create mode 100644 src/database/item-type/lib/field/ChangeLog.tsx create mode 100644 src/database/item-type/lib/field/Contributer.tsx create mode 100644 src/database/item-type/lib/field/CreativeCommons.tsx create mode 100644 src/database/item-type/lib/field/DateTime.tsx create mode 100644 src/database/item-type/lib/field/Description.tsx create mode 100644 src/database/item-type/lib/field/FileDownloadButton.module.css create mode 100644 src/database/item-type/lib/field/FileDownloadButton.tsx create mode 100644 src/database/item-type/lib/field/FileSize.tsx create mode 100644 src/database/item-type/lib/field/FreeKeyword.tsx create mode 100644 src/database/item-type/lib/field/ItemFile.tsx create mode 100644 src/database/item-type/lib/field/ItemIndex.tsx create mode 100644 src/database/item-type/lib/field/Language.tsx create mode 100644 src/database/item-type/lib/field/LicenseAgreementDialog.module.css create mode 100644 src/database/item-type/lib/field/LicenseAgreementDialog.tsx create mode 100644 src/database/item-type/lib/field/Preview.module.css create mode 100644 src/database/item-type/lib/field/Preview.tsx create mode 100644 src/database/item-type/lib/field/PublicationDate.tsx create mode 100644 src/database/item-type/lib/field/Readme.tsx create mode 100644 src/database/item-type/lib/field/RelatedTo.tsx create mode 100644 src/database/item-type/lib/field/Rights.tsx create mode 100644 src/database/item-type/lib/field/SimPFLinkIcon.tsx create mode 100644 src/database/item-type/lib/field/index.tsx create mode 100644 src/database/item-type/memo/MemoAdvancedSearch.tsx create mode 100644 src/database/item-type/memo/MemoDetail.tsx create mode 100644 src/database/item-type/memo/MemoList.tsx create mode 100644 src/database/item-type/memo/MemoTop.tsx create mode 100644 src/database/item-type/memo/index.tsx create mode 100644 src/database/item-type/model/ModelAdvancedSearch.tsx create mode 100644 src/database/item-type/model/ModelDetail.tsx create mode 100644 src/database/item-type/model/ModelList.tsx create mode 100644 src/database/item-type/model/ModelTop.tsx create mode 100644 src/database/item-type/model/ModelUtil.tsx create mode 100644 src/database/item-type/model/index.tsx create mode 100644 src/database/item-type/paper/PaperAdvancedSearch.tsx create mode 100644 src/database/item-type/paper/PaperDetail.tsx create mode 100644 src/database/item-type/paper/PaperList.tsx create mode 100644 src/database/item-type/paper/PaperTop.tsx create mode 100644 src/database/item-type/paper/PaperUtil.tsx create mode 100644 src/database/item-type/paper/index.tsx create mode 100644 src/database/item-type/presentation/PresentationAdvancedSearch.tsx create mode 100644 src/database/item-type/presentation/PresentationDetail.tsx create mode 100644 src/database/item-type/presentation/PresentationList.tsx create mode 100644 src/database/item-type/presentation/PresentationTop.tsx create mode 100644 src/database/item-type/presentation/PresentationUtil.tsx create mode 100644 src/database/item-type/presentation/index.tsx create mode 100644 src/database/item-type/simulator/SimulatorAdvancedSearch.tsx create mode 100644 src/database/item-type/simulator/SimulatorDetail.tsx create mode 100644 src/database/item-type/simulator/SimulatorList.tsx create mode 100644 src/database/item-type/simulator/SimulatorTop.tsx create mode 100644 src/database/item-type/simulator/SimulatorUtil.tsx create mode 100644 src/database/item-type/simulator/index.tsx create mode 100644 src/database/item-type/stimulus/StimulusAdvancedSearch.tsx create mode 100644 src/database/item-type/stimulus/StimulusDetail.tsx create mode 100644 src/database/item-type/stimulus/StimulusList.tsx create mode 100644 src/database/item-type/stimulus/StimulusTop.tsx create mode 100644 src/database/item-type/stimulus/StimulusUtil.tsx create mode 100644 src/database/item-type/stimulus/index.tsx create mode 100644 src/database/item-type/tool/ToolAdvancedSearch.tsx create mode 100644 src/database/item-type/tool/ToolDetail.tsx create mode 100644 src/database/item-type/tool/ToolList.tsx create mode 100644 src/database/item-type/tool/ToolTop.tsx create mode 100644 src/database/item-type/tool/ToolUtil.tsx create mode 100644 src/database/item-type/tool/index.tsx create mode 100644 src/database/item-type/url/UrlAdvancedSearch.tsx create mode 100644 src/database/item-type/url/UrlDetail.tsx create mode 100644 src/database/item-type/url/UrlList.tsx create mode 100644 src/database/item-type/url/UrlTop.tsx create mode 100644 src/database/item-type/url/UrlUtil.tsx create mode 100644 src/database/item-type/url/index.tsx create mode 100644 src/database/lib/AdvancedSearchQuery.ts create mode 100644 src/database/lib/DatabaseListIndex.tsx create mode 100644 src/database/lib/DatabaseListItem.module.css create mode 100644 src/database/lib/DatabaseListItem.tsx create mode 100644 src/database/lib/IndexUtil.ts create mode 100644 src/database/lib/ItemUtil.ts create mode 100644 src/functions.ts delete mode 100644 src/logo.svg create mode 100644 src/pico/Pico.tsx create mode 100644 src/pico/PicoCategory.tsx create mode 100644 src/pico/PicoContent.tsx create mode 100644 src/pico/PicoIndex.tsx create mode 100644 src/pico/PicoMenu.tsx create mode 100644 src/pico/PicoXoopsPathRedirect.tsx create mode 100644 src/pico/assets/pico_main.css create mode 100644 src/pico/lib/PicoUtils.ts diff --git a/.gitignore b/.gitignore index 4d29575..ede4de6 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,14 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + +# database contents +/dl-limit-items.csv +/public/database/items.json +/public/database/file +/public/documents/images +/public/documents/*.json +/src/database/assets/*.json +/src/credits/assets/*.json +/src/d3forum/assets/*.json +/src/pico/assets/*.json diff --git a/etc/common.inc.php b/etc/common.inc.php new file mode 100644 index 0000000..04b355c --- /dev/null +++ b/etc/common.inc.php @@ -0,0 +1,197 @@ + $v) { + if (is_string($v)) { + $v = $textutil->html_numeric_entities($v); + $v = mb_decode_numericentity($v, array(0x0, 0x10000, 0, 0xfffff), 'UTF-8'); + $data[$k] = \Normalizer::normalize(trim($v), \Normalizer::FORM_C); + } elseif (null === $v) { + $data[$k] = ''; + } + } + } + + public static function convertToInt(&$data, $keys, $zerofill = false) + { + foreach ($keys as $key) { + if (isset($data[$key])) { + $data[$key] = '' === $data[$key] ? ($zerofill ? 0 : null) : (int) $data[$key]; + } + } + } + + public static function dropColumn(&$data, $keys) + { + foreach ($keys as $key) { + if (isset($data[$key])) { + unset($data[$key]); + } + } + } + + public static function fileCopy($from, $to) + { + system('rsync -aq '.escapeshellarg($from).' '.escapeshellarg($to), $ret); + + return 0 === $ret; + } + + public static function fixHtml($text) + { + static $config = [ + //'clean' => true, + 'hide-comments' => true, + 'indent' => true, + 'output-xhtml' => true, + 'preserve-entities' => true, + 'show-body-only' => true, + 'wrap' => 0, + 'input-encoding' => 'utf8', + 'output-encoding' => 'utf8', + 'output-bom' => false, + ]; + $text = tidy_repair_string($text, $config); + $text = preg_replace('/]*)>((?:\s*]*>.*<\/caption>)?\s*)]*)>/Us', '\2', $text); + $text = preg_replace('/<\/tr>(\s*)<\/table>/s', '\1', $text); + + return $text; + } + + public static function tableExists($name) + { + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $sql = <<< SQL +SELECT 1 + FROM `${prefix}_${name}` + LIMIT 1 +SQL; + if (!($res = $xoopsDB->query($sql))) { + return false; + } + $xoopsDB->freeRecordSet($res); + + return true; + } + + public static function makeDirectory(string $dirname) + { + $path = MYDUMPTOOL_OUTPUTDIR.('' !== $dirname ? '/'.$dirname : ''); + if (!is_dir($path)) { + if (!@mkdir($path)) { + exit('Failed to create directory: '.$path.PHP_EOL); + } + } + } + + public static function saveJson(string $fname, $data) + { + $path = MYDUMPTOOL_OUTPUTDIR.'/'.$fname; + if (false === file_put_contents($path, json_encode($data, JSON_UNESCAPED_UNICODE))) { + exit('Failed to save json file: '.$path.PHP_EOL); + } + } + + public static function fileDownload($url, $fpath) + { + $fp = fopen($fpath, 'w'); + if (false === $fp) { + exit('Failed to open file: '.$fpath.PHP_EOL); + } + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($curl, CURLOPT_AUTOREFERER, true); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_FAILONERROR, true); + curl_setopt($curl, CURLOPT_FILE, $fp); + curl_setopt($curl, CURLOPT_TIMEOUT, 5); + $ret = curl_exec($curl); + fclose($fp); + if (false === $ret) { + exit('Failed to download file, unexpected error: '.$url.PHP_EOL); + } + $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + if (200 !== $code) { + exit('Failed to download file, invalid status code('.$code.'): '.$url.PHP_EOL); + } + curl_close($curl); + + return true; + } + + public static function getMimeType($fpath) + { + $finfo = finfo_open(FILEINFO_MIME); + $mime = finfo_file($finfo, $fpath); + finfo_close($finfo); + $mime = preg_replace('/(;.*)$/', '', $mime); + + return $mime; + } +} diff --git a/etc/config.inc.php b/etc/config.inc.php new file mode 100644 index 0000000..84fa82e --- /dev/null +++ b/etc/config.inc.php @@ -0,0 +1,9 @@ +prefix(); + +$table = 'nipfcredits_organization'; +if (!MyDumpTool::tableExists($table)) { + exit('credits module not found'.PHP_EOL); +} +MyDumpTool::makeDirectory('src/credits'); +MyDumpTool::makeDirectory('src/credits/assets'); + +// organization +$organization = []; +$sql = <<< SQL +SELECT + `o`.* + FROM `${prefix}_nipfcredits_organization` AS `o` +SQL; +if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); +} +while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + $organization = $row; +} +$xoopsDB->freeRecordSet($res); +$organization['com_email'] = str_replace('@', ' (at) ', $organization['com_email']); +$organization['com_url'] = XOOPS_URL; +$organization['institute'] = 'Neuroinformatics Unit, RIKEN Center for Brain Science'; +$organization['url'] = 'https://www.ni.riken.jp/'; +$organization['email'] = 'office (at) ni.riken.jp'; +$organization['address'] = 'Hirosawa 2-1, Wako, Saitama, 351-0198 Japan'; +$organization['tel'] = '+81 48 (462) 1111'; + +// member +$member = []; +$sql = <<< SQL +SELECT + `m`.* + FROM `${prefix}_nipfcredits_member` AS `m` + ORDER BY `m`.`weight` +SQL; +if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); +} +while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + $member[] = $row; +} +$xoopsDB->freeRecordSet($res); +$opage = getOrganizationPage($organization, $member); +//var_dump($opage); + +// pages +$pages = []; +$sql = <<< SQL +SELECT + `p`.* + FROM `${prefix}_nipfcredits_page` AS `p` + ORDER BY `p`.`weight` +SQL; +if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); +} +while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + myDumpTool::convertToInt($row, ['pid', 'weight', 'lastupdate']); + $content = replaceOrganization($row['content'], $organization); + $content = MyDumpTool::fixHtml($content); + $row['content'] = $content; + MyDumpTool::dropColumn($row, ['weight']); + $pages[] = $row; +} +$xoopsDB->freeRecordSet($res); +//var_dump($pages); + +$data = [ + 'organization' => $opage, + 'pages' => $pages, +]; +MyDumpTool::saveJson('src/credits/assets/credits.json', $data); + +function replaceOrganization($text, $org) +{ + $textutil = xoonips_getutility('text'); + $map = [ + '{COMMITTEE_NAME}' => $textutil->html_special_chars($org['committee']), + '{COMMITTEE_EMAIL}' => ''.$textutil->html_special_chars($org['com_email']).'(committee email has been closed)', + '{INSTITUTE_NAME}' => $textutil->html_special_chars($org['institute']), + '{INSTITUTE_URL}' => $textutil->html_special_chars($org['url']), + '{INSTITUTE_EMAIL}' => $textutil->html_special_chars($org['email']), + '{INSTITUTE_ADDRESS}' => $textutil->html_special_chars($org['address']), + '{INSTITUTE_TEL}' => $textutil->html_special_chars($org['tel']), + '{PLATFORM_URL}' => XOOPS_URL, + ]; + + return str_replace(array_keys($map), $map, $text); +} + +function getOrganizationPage($org, $member) +{ + $textutil = xoonips_getutility('text'); + $members = []; + foreach ($member as $m) { + $members[] = '
  • '.$textutil->html_special_chars($m['name'].' : '.$m['division']).'
  • '; + } + $members = implode("\n", $members); + $committee = $textutil->html_special_chars($org['committee']); + $institute = $textutil->html_special_chars($org['institute']); + $address = $textutil->html_special_chars($org['address']); + $url = $textutil->html_special_chars($org['url']); + $html = <<< HTML +

    ${committee}

    +
      +
    • Members +
        +${members} +
      +
    • +
    +HTML; + + return $html; +} diff --git a/etc/dumpD3Forum.php b/etc/dumpD3Forum.php new file mode 100644 index 0000000..940d05d --- /dev/null +++ b/etc/dumpD3Forum.php @@ -0,0 +1,162 @@ +prefix(); + + $moduleHandler = xoops_gethandler('module'); + $module = $moduleHandler->getByDirname($d3forum); + $moduleConfigHandler = xoops_gethandler('config'); + $moduleConfig = $moduleConfigHandler->getConfigsByDirname($d3forum); + + $table = $d3forum.'_categories'; + if (!MyDumpTool::tableExists($table)) { + exit('d3forum('.$d3forum.') module not found'.PHP_EOL); + } + + $gidGuest = XOOPS_GROUP_ANONYMOUS; + + // get anonymous readable categories + $categories = []; + $sql = <<< SQL +SELECT + `c`.* + FROM `${prefix}_${d3forum}_categories` AS `c` + INNER JOIN `${prefix}_${d3forum}_category_access` AS `ca` ON `c`.`cat_id`=`ca`.`cat_id` + WHERE `ca`.`groupid`=${gidGuest} + GROUP BY `c`.`cat_id` + ORDER BY `c`.`cat_order_in_tree` ASC, `c`.`cat_weight` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, ['cat_id', 'pid', 'cat_topics_count', 'cat_posts_count', 'cat_last_post_id', 'cat_last_post_time', 'cat_topics_count_in_tree', 'cat_posts_count_in_tree', 'cat_last_post_id_in_tree', 'cat_last_post_time_in_tree', 'cat_depth_in_tree', 'cat_order_in_tree', 'cat_weight']); + $row['cat_path_in_tree'] = unserialize($row['cat_path_in_tree']); + $row['cat_options'] = unserialize($row['cat_options']); + $categories[] = $row; + } + $xoopsDB->freeRecordSet($res); + //var_dump($categories); + + // get anonymous readable forums + $forums = []; + $sql = <<< SQL +SELECT + `f`.* + FROM `${prefix}_${d3forum}_forums` AS `f` + INNER JOIN `${prefix}_${d3forum}_forum_access` AS `fa` ON `f`.`forum_id`=`fa`.`forum_id` + INNER JOIN `${prefix}_${d3forum}_category_access` AS `ca` ON `f`.`cat_id`=`ca`.`cat_id` + WHERE `fa`.`groupid`=${gidGuest} + AND `ca`.`groupid`=${gidGuest} + GROUP BY `f`.`forum_id` + ORDER BY `f`.`cat_id` ASC, `f`.`forum_weight` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, ['forum_id', 'cat_id', 'forum_topics_count', 'forum_posts_count', 'forum_last_post_id', 'forum_last_post_time', 'forum_weight'], true); + $row['forum_options'] = unserialize($row['forum_options']); + $forums[] = $row; + } + $xoopsDB->freeRecordSet($res); + //var_dump($forums); + + // get anonymous readable topics + $topics = []; + $sql = <<< SQL +SELECT + `t`.*, + `uf`.`name` AS `topic_first_uid_name`, `uf`.`uname` AS `topic_first_uid_uname`, + `ul`.`name` AS `topic_last_uid_name`, `ul`.`uname` AS `topic_last_uid_uname` + FROM `${prefix}_${d3forum}_topics` AS `t` + INNER JOIN `${prefix}_${d3forum}_forums` AS `f` ON `t`.`forum_id`=`f`.`forum_id` + INNER JOIN `${prefix}_${d3forum}_forum_access` AS `fa` ON `f`.`forum_id`=`fa`.`forum_id` + INNER JOIN `${prefix}_${d3forum}_category_access` AS `ca` ON `f`.`cat_id`=`ca`.`cat_id` + LEFT JOIN `${prefix}_users` AS `uf` ON `t`.`topic_first_uid`=`uf`.`uid` + LEFT JOIN `${prefix}_users` AS `ul` ON `t`.`topic_last_uid`=`ul`.`uid` + WHERE `fa`.`groupid`=${gidGuest} + AND `ca`.`groupid`=${gidGuest} + GROUP BY `t`.`topic_id` + ORDER BY `t`.`forum_id` ASC, `t`.`topic_id` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, ['topic_id', 'forum_id', 'topic_first_uid', 'topic_first_post_id', 'topic_first_post_time', 'topic_last_uid', 'topic_last_post_id', 'topic_last_post_time', 'topic_views', 'topic_posts_count', 'topic_locked', 'topic_sticky', 'topic_solved', 'topic_invisible', 'topic_votes_sum', 'topic_votes_count'], true); + $topics[] = $row; + } + $xoopsDB->freeRecordSet($res); + //var_dump($topics); + + // get anonymous readable posts + $posts = []; + $sql = <<< SQL +SELECT + `p`.*, + `u`.`name` AS `uid_name`, `u`.`uname` AS `uid_uname`, `u`.`rank` AS `uid_rank`, `u`.`posts` AS `uid_posts` + FROM `${prefix}_${d3forum}_posts` AS `p` + INNER JOIN `${prefix}_${d3forum}_topics` AS `t` ON `p`.`topic_id`=`t`.`topic_id` + INNER JOIN `${prefix}_${d3forum}_forums` AS `f` ON `t`.`forum_id`=`f`.`forum_id` + INNER JOIN `${prefix}_${d3forum}_forum_access` AS `fa` ON `f`.`forum_id`=`fa`.`forum_id` + INNER JOIN `${prefix}_${d3forum}_category_access` AS `ca` ON `f`.`cat_id`=`ca`.`cat_id` + LEFT JOIN `${prefix}_users` AS `u` ON `p`.`uid`=`u`.`uid` + WHERE `fa`.`groupid`=${gidGuest} + AND `ca`.`groupid`=${gidGuest} + GROUP BY `p`.`post_id` + ORDER BY `t`.`topic_id` ASC, `p`.`post_id` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, ['post_id', 'pid', 'topic_id', 'post_time', 'modified_time', 'uid', 'uid_hidden', 'html', 'smiley', 'xcode', 'br', 'number_entity', 'special_entity', 'icon', 'attachsig', 'invisible', 'approval', 'votes_sum', 'votes_count', 'depth_in_tree', 'order_in_tree', 'uid_rank', 'uid_posts'], true); + MyDumpTool::dropColumn($row, ['guest_email', 'guest_url', 'guest_pass_md5', 'guest_trip']); + $posts[] = $row; + } + $xoopsDB->freeRecordSet($res); + //var_dump($posts); + var_dump(count($posts)); + + $moduleinfo = [ + 'name' => $module->get('name'), + 'dirname' => $d3forum, + 'message' => $moduleConfig['top_message'], + ]; + MyDumpTool::decode($moduleinfo); + + $data = [ + 'module' => $moduleinfo, + 'categories' => $categories, + 'forums' => $forums, + 'topics' => $topics, + 'posts' => $posts, + ]; + + $contents[] = $data; +} diff --git a/etc/dumpPico.php b/etc/dumpPico.php new file mode 100644 index 0000000..3dd61c2 --- /dev/null +++ b/etc/dumpPico.php @@ -0,0 +1,135 @@ +prefix(); + $table = $pico.'_contents'; + if (!MyDumpTool::tableExists($table)) { + exit('pico('.$pico.') module not found'.PHP_EOL); + } + MyDumpTool::makeDirectory('public/'.$pico); + MyDumpTool::makeDirectory('public/'.$pico.'/images'); + $moduleHandler = xoops_gethandler('module'); + $module = $moduleHandler->getByDirname($pico); + $moduleConfigHandler = xoops_gethandler('config'); + $moduleConfig = $moduleConfigHandler->getConfigsByDirname($pico); + $permObj = PicoPermission::getInstance(); + $perms = $permObj->getPermissions($pico); + $categoryHandler = new PicoCategoryHandler($pico, $perms); + $contentHandler = new PicoContentHandler($pico); + $cats = $categoryHandler->getAllCategories(); + $confContents = []; + $confCategories = []; + foreach ($cats as $cat) { + $catData = $cat->getData(); + $modConfig = $cat->getOverriddenModConfig(); + $link = pico_common_make_category_link4html($modConfig, $catData, $pico); + MyDumpTool::decode($catData); + $confCategories[] = [ + 'id' => $catData['id'], + 'title' => $catData['cat_title'], + 'desc' => (string) $catData['cat_desc'], + 'pid' => (int) $catData['pid'], + 'weight' => (int) $catData['cat_weight'], + 'link' => $link, + ]; + $contents = $contentHandler->getCategoryContents($cat); + foreach ($contents as $content) { + $data = $content->getData(); + $link = pico_common_make_content_link4html($modConfig , $data); + MyDumpTool::decode($data); + $content = MyDumpTool::fixHtml($data['body_cached']); + $imageId = 1; + $content = preg_replace_callback('/]*)src="(.*)"([^>]*)\/>/Us', function ($matches) use (&$imageId, $pico, $data, $link) { + $url = $matches[2]; + if (!preg_match('/^http/', $url)) { + $xpath = dirname($link); + $url = XOOPS_URL.'/modules/'.$pico.'/'.$xpath.'/'.$url; + } + $fname = '/'.$pico.'/images/'.$data['id'].'_'.$imageId.'.dat'; + $fpath = MYDUMPTOOL_OUTPUTDIR.'/public'.$fname; + MyDumpTool::fileDownload($url, $fpath); + $mime = MyDumpTool::getMimeType($fpath); + switch ($mime) { + case 'image/gif': + $fpath_ = preg_replace('/.dat$/', '.gif', $fpath); + $fname = preg_replace('/.dat$/', '.gif', $fname); + rename($fpath, $fpath_); + $fpath = $fpath_; + break; + case 'image/png': + $fpath_ = preg_replace('/.dat$/', '.png', $fpath); + $fname = preg_replace('/.dat$/', '.png', $fname); + rename($fpath, $fpath_); + $fpath = $fpath_; + break; + case 'image/jpeg': + $fpath = preg_replace('/.dat$/', '.jpeg', $fpath); + $fname = preg_replace('/.dat$/', '.jpeg', $fname); + rename($fpath, $fpath_); + $fpath = $fpath_; + break; + default: + exit('unknown mime type '.$mime.' found: '.$fname.' from '.$url.PHP_EOL); + } + ++$imageId; + + return ''; + }, $content); + $item = [ + 'id' => $data['id'], + 'title' => $data['subject_raw'], + 'content' => $content, + ]; + MyDumpTool::saveJson('public/'.$pico.'/'.$data['id'].'.json', $item); + $confContents[] = [ + 'id' => $item['id'], + 'title' => $data['subject_raw'], + 'cat_id' => (int) $data['cat_id'], + 'weight' => (int) $data['weight'], + 'link' => $link, + ]; + } + } + $moduleinfo = [ + 'name' => $module->get('name'), + 'dirname' => $pico, + 'message' => $moduleConfig['top_message'], + 'show_menuinmoduletop' => (int) $moduleConfig['show_menuinmoduletop'], + 'show_listasindex' => (int) $moduleConfig['show_listasindex'], + 'show_breadcrumbs' => (int) $moduleConfig['show_breadcrumbs'], + 'show_pagenavi' => (int) $moduleConfig['show_pagenavi'], + ]; + MyDumpTool::decode($moduleinfo); + $config[] = [ + 'module' => $moduleinfo, + 'categories' => $confCategories, + 'contents' => $confContents, + ]; +} diff --git a/etc/dumpXooNIps.php b/etc/dumpXooNIps.php new file mode 100644 index 0000000..003afe9 --- /dev/null +++ b/etc/dumpXooNIps.php @@ -0,0 +1,1160 @@ +prefix(); + +$table = 'xoonips_item_basic'; +if (!MyDumpTool::tableExists($table)) { + exit('xoonips module not found'.PHP_EOL); +} +MyDumpTool::makeDirectory('src/database'); +MyDumpTool::makeDirectory('src/database/assets'); +MyDumpTool::makeDirectory('public/database'); +MyDumpTool::makeDirectory('public/database/file'); + +// Recent Contents +$sql = <<< SQL +SELECT + `ib`.`item_id`, `ib`.`doi`, `ib`.`last_update_date`, + GROUP_CONCAT(DISTINCT `it`.`title` ORDER BY `it`.`title_id` ASC SEPARATOR '\n') AS `title` + FROM `${prefix}_xoonips_ranking_new_item` AS `ri` + INNER JOIN `${prefix}_xoonips_item_basic` AS `ib` ON `ri`.`item_id`=`ib`.`item_id` + INNER JOIN `${prefix}_xoonips_index_item_link` AS `iil` ON `ib`.`item_id`=`iil`.`item_id` + INNER JOIN `${prefix}_xoonips_item_title` AS `it` ON `ib`.`item_id`=`it`.`item_id` + WHERE `iil`.`certify_state`=2 + GROUP BY `ib`.`item_id` + ORDER BY `ib`.`last_update_date` DESC +SQL; +if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); +} +$ranking = []; +while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, array('item_id', 'last_update_date')); + $ranking[] = $row; +} +$xoopsDB->freeRecordSet($res); +MyDumpTool::saveJson('src/database/assets/recent-contents.json', $ranking); +unset($ranking); + +// Rankings +$ranking = []; +$rankingLimit = defined('XOONIPS_RANNKING_LIMIT') ? XOONIPS_RANNKING_LIMIT : 10; +// - most accessed items +$ranking['accessed'] = []; +$sql = <<< SQL +SELECT + `ib`.`item_id`, `ib`.`doi`, + GROUP_CONCAT(DISTINCT `it`.`title` ORDER BY `it`.`title_id` ASC SEPARATOR '\n') AS `title`, + `vi`.`count` + FROM `${prefix}_xoonips_ranking_viewed_item` AS `vi` + INNER JOIN `${prefix}_xoonips_item_basic` AS `ib` ON `vi`.`item_id`=`ib`.`item_id` + INNER JOIN `${prefix}_xoonips_item_title` AS `it` ON `ib`.`item_id`=`it`.`item_id` + INNER JOIN `${prefix}_xoonips_index_item_link` AS `iil` ON `ib`.`item_id`=`iil`.`item_id` + WHERE `iil`.`certify_state`=2 + GROUP BY `ib`.`item_id` + ORDER BY `vi`.`count` DESC + LIMIT ${rankingLimit} +SQL; +if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); +} +while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, array('item_id', 'count')); + $ranking['accessed'][] = $row; +} +$xoopsDB->freeRecordSet($res); +// - most accessed items +$ranking['downloaded'] = []; +$sql = <<< SQL +SELECT + `ib`.`item_id`, `ib`.`doi`, + GROUP_CONCAT(DISTINCT `it`.`title` ORDER BY `it`.`title_id` ASC SEPARATOR '\n') AS `title`, + `di`.`count` + FROM `${prefix}_xoonips_ranking_downloaded_item` AS `di` + INNER JOIN `${prefix}_xoonips_item_basic` AS `ib` ON `di`.`item_id`=`ib`.`item_id` + INNER JOIN `${prefix}_xoonips_item_title` AS `it` ON `ib`.`item_id`=`it`.`item_id` + INNER JOIN `${prefix}_xoonips_index_item_link` AS `iil` ON `ib`.`item_id`=`iil`.`item_id` + WHERE `iil`.`certify_state`=2 + GROUP BY `ib`.`item_id` + ORDER BY `di`.`count` DESC + LIMIT ${rankingLimit} +SQL; +if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); +} +while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, array('item_id', 'count')); + $ranking['downloaded'][] = $row; +} +$xoopsDB->freeRecordSet($res); +// - most contributed users +$ranking['contributed'] = []; +$sql = <<< SQL +SELECT + `u`.`uid`, `u`.`uname`, `u`.`name`, COUNT(`cu`.`item_id`) AS `count` + FROM `${prefix}_xoonips_ranking_contributing_user` AS `cu` + INNER JOIN `${prefix}_users` AS `u` ON `cu`.`uid`=`u`.`uid` + GROUP BY `u`.`uid` + ORDER BY `count` DESC + LIMIT ${rankingLimit} +SQL; +if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); +} +while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, array('uid', 'count')); + $ranking['contributed'][] = $row; +} +$xoopsDB->freeRecordSet($res); +// - most searched keywords +$ranking['searched'] = []; +$sql = <<< SQL +SELECT + `sk`.`keyword`, `sk`.`count` + FROM `${prefix}_xoonips_ranking_searched_keyword` AS `sk` + ORDER BY `sk`.`count` DESC + LIMIT ${rankingLimit} +SQL; +if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); +} +while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, array('count')); + $ranking['searched'][] = $row; +} +$xoopsDB->freeRecordSet($res); +MyDumpTool::saveJson('src/database/assets/rankings.json', $ranking); +unset($ranking); + +// get public index with certified item count +$sql = <<< SQL +SELECT + `idx`.*, + `it`.`title`, + (SELECT COUNT(*) + FROM `${prefix}_xoonips_index_item_link` AS `iil` + INNER JOIN `${prefix}_xoonips_item_basic` AS `ib` ON `iil`.`item_id`=`ib`.`item_id` + WHERE `iil`.`index_id`=`idx`.`index_id` AND `iil`.`certify_state`=2 + ) AS `num_items` + FROM `${prefix}_xoonips_index` AS `idx` + INNER JOIN `${prefix}_xoonips_item_title` AS `it` ON `idx`.`index_id`=`it`.`item_id` + WHERE `it`.`title_id`=0 + AND `idx`.`open_level`=1 +SQL; + +$limitItems = array(); +$limitFiles = array(); + +if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); +} +$tree = array(); +$root = array(); +while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + $tree[$row['index_id']] = $row; + $root[$row['parent_index_id']][$row['sort_number']] = $row['index_id']; +} +$xoopsDB->freeRecordSet($res); +foreach ($root as &$node) { + ksort($node); +} +unset($node); + +$data[] = getTreeNode($tree, $root, 3); +MyDumpTool::saveJson('src/database/assets/tree.json', $data); +unset($data, $root); + +// get simpf link data +$simpflink = parseSimPFLinkFile(); +$simpfurls = []; + +// get public items +$sql = <<< SQL +SELECT + `ib`.*, + GROUP_CONCAT(DISTINCT `it`.`title` ORDER BY `it`.`title_id` ASC SEPARATOR '\n') AS `title`, + `ity`.`display_name` AS `item_type_display_name`, `ity`.`name` AS `item_type_name`, + `u`.`uname`, `u`.`name`, `u`.`email` + FROM `${prefix}_xoonips_item_basic` AS `ib` + INNER JOIN `${prefix}_xoonips_item_title` AS `it` ON `ib`.`item_id`=`it`.`item_id` + INNER JOIN `${prefix}_xoonips_item_type` AS `ity` ON `ib`.`item_type_id`=`ity`.`item_type_id` + INNER JOIN `${prefix}_xoonips_index_item_link` AS `iil` ON `ib`.`item_id`=`iil`.`item_id` + INNER JOIN `${prefix}_xoonips_index` AS `idx` ON `iil`.`index_id`=`idx`.`index_id` + LEFT JOIN `${prefix}_users` AS `u` ON `ib`.`uid`=`u`.`uid` + WHERE `ity`.`display_name` != 'Index' + AND `iil`.`certify_state`=2 + AND `idx`.`open_level`=1 + GROUP BY `ib`.`item_id` + ORDER BY `ib`.`item_id` ASC +SQL; + +if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); +} +$items = array(); +while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, array('item_id', 'item_type_id', 'uid', 'last_update_date', 'creation_date', 'publication_year', 'publication_month', 'publication_mday')); + $row['index'] = getIndexes($tree, $row['item_id']); + if (0 === count($row['index'])) { + // no public indexes found. + continue; + } + $row['changelog'] = getChangeLogs($row['item_id']); + $row['related_to'] = getRelatedTo($row['item_id']); + $row['keyword'] = getKeyword($row['item_id']); + $row['file'] = getFile($row['item_id']); + switch ($row['item_type_name']) { + case 'xnpbinder': + appendBinderInfo($row); + break; + case 'xnpbook': + appendBookInfo($row); + break; + case 'xnpconference': + appendConferenceInfo($row); + break; + case 'xnpdata': + appendDataInfo($row); + break; + case 'xnpfiles': + appendFilesInfo($row); + break; + case 'xnpmemo': + appendMemoInfo($row); + break; + case 'xnpmodel': + appendModelInfo($row); + break; + case 'xnppaper': + appendPaperInfo($row); + break; + case 'xnppresentation': + appendPresentationInfo($row); + break; + case 'xnpsimulator': + appendSimulatorInfo($row); + break; + case 'xnpstimulus': + appendStimulusInfo($row); + break; + case 'xnptool': + appendToolInfo($row); + break; + case 'xnpurl': + appendUrlInfo($row); + break; + case 'xnpnimgcenter': + appendNimgcenterInfo($row); + break; + default: + exit('Unsupported item type: '.$row['item_type_name']); + } + if (isset($row['attachment_dl_limit']) && $row['attachment_dl_limit']) { + $found = false; + foreach ($row['file'] as $file) { + if ('preview' !== $file['file_type_name']) { + $limitFiles[] = $file['file_id']; + $found = true; + } + } + if ($found) { + $limitItems[] = array( + 'uname' => $row['uname'], + 'name' => $row['name'], + 'email' => $row['email'], + 'item_id' => $row['item_id'], + 'doi' => $row['doi'], + ); + } + } + MyDumpTool::dropColumn($row, ['email', 'item_type_id']); + if (isset($row['rights']) && isset($row['use_cc']) && isset($row['cc_commercial_use']) && isset($row['cc_modification']) && 1 == $row['use_cc']) { + $label = 'Creative Commons Attribution'; + if (0 == $row['cc_commercial_use']) { + $label .= '-NonCommercial'; + } + switch ($row['cc_modification']) { + case 0: + $label .= '-NoDerivatives'; + break; + case 1: + $label .= '-ShareAlike'; + break; + } + $label .= ' 4.0 International License.'; + $row['rights'] = $label; + } + $items[] = $row; + + $simpfurl = ''; + if ('' != $row['doi'] && isset($simpflink['id'][$row['doi']])) { + $simpfurl = $simpflink['id'][$row['doi']]; + } elseif (isset($simpflink['item_id'][$row['item_id']])) { + $simpfurl = $simpflink['item_id'][$row['item_id']]; + } + if ('' !== $simpfurl) { + $simpfurls[] = [ + 'id' => $row['item_id'], + 'url' => $simpfurl, + ]; + } +} +$xoopsDB->freeRecordSet($res); +MyDumpTool::saveJson('public/database/items.json', $items); +if (!empty($simpfurls)) { + MyDumpTool::saveJson('src/database/assets/simpf-links.json', $simpfurls); +} + +$fp = fopen(MYDUMPTOOL_OUTPUTDIR.'/dl-limit-items.csv', 'w'); +foreach ($limitItems as $row) { + $data = array( + $row['item_id'], + $row['uname'], + $row['name'], + $row['email'], + getItemUrl($row), + ); + fputcsv($fp, $data); +} +fclose($fp); + +// get files +$xconfig_handler = xoonips_getormhandler('xoonips', 'config'); +$fileutil = xoonips_getutility('file'); + +$basePath = $xconfig_handler->getValue('upload_dir'); +$sql = <<< SQL +SELECT + `f`.`file_id`, `f`.`item_id`, `f`.`original_file_name`, + `ft`.`name` AS `file_type_name` + FROM `${prefix}_xoonips_file` AS `f` + INNER JOIN `${prefix}_xoonips_file_type` AS `ft` ON `f`.`file_type_id`=`ft`.`file_type_id` + INNER JOIN `${prefix}_xoonips_index_item_link` AS `iil` ON `f`.`item_id`=`iil`.`item_id` + INNER JOIN `${prefix}_xoonips_index` AS `idx` ON `iil`.`index_id`=`idx`.`index_id` + WHERE `f`.`is_deleted`=0 + AND `ft`.`name` NOT IN('readme' , 'license', 'rights') + AND `iil`.`certify_state`=2 + AND `idx`.`open_level`=1 + GROUP BY `f`.`file_id` + ORDER BY `f`.`file_id` ASC +SQL; + +if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); +} +$filesDir = MYDUMPTOOL_OUTPUTDIR.'/public/database/file'; +while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, array('file_id', 'item_id')); + $file_id = $row['file_id']; + $item_id = $row['item_id']; + $file_name = $row['original_file_name']; + $file_type = $row['file_type_name']; + if (in_array($file_id, $limitFiles)) { + echo "download limit file found.. skip to copy.. item_id:$item_id, file_id:$file_id".PHP_EOL; + continue; + } + $file_dir = $filesDir.'/'.$file_id; + $src_file = $basePath.'/'.$file_id; + if (!is_dir($file_dir)) { + @mkdir($file_dir); + } + //if (!file_exists($file_dir.'/'.$file_name)) { + if (!MyDumpTool::fileCopy($src_file, $file_dir.'/'.$file_name)) { + echo 'failed to copy file: '.$basePath.'/'.$file_id.PHP_EOL; + } + $htaccess = $file_dir.'/.htaccess'; + $xfilename = str_replace(' ', '\\ ', $file_name); + $data = "RewriteEngine On\nRewriteBase /database/file/$file_id\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteRule .* $xfilename [R=301,L]\n"; + file_put_contents($htaccess, $data); + //} + if ('preview' == $file_type) { + $thumbnail_file = $file_dir.'.png'; + if (!file_exists($thumbnail_file)) { + $mimetype = $fileutil->get_mimetype($src_file, $file_name); + $thumbnail = $fileutil->get_thumbnail($src_file, $mimetype); + if (null !== $thumbnail) { + file_put_contents($thumbnail_file, $thumbnail); + } else { + createThumbnail($src_file, $mimetype, $thumbnail_file); + } + } + } +} +$xoopsDB->freeRecordSet($res); + +// functions + +function getItemUrl($row) +{ + $url = XOONIPS_URL.'/detail.php?'; + if ('' != $row['doi']) { + $url .= XNP_CONFIG_DOI_FIELD_PARAM_NAME.'='.$row['doi']; + } else { + $url .= 'item_id='.$row['item_id']; + } + + return $url; +} + +function getTreeNode($tree, $root, $index_id) +{ + $children = array(); + if (isset($root[$index_id])) { + foreach ($root[$index_id] as $child_index_id) { + $children[] = getTreeNode($tree, $root, $child_index_id); + } + } + + return array( + 'id' => (int) $tree[$index_id]['index_id'], + 'title' => $tree[$index_id]['title'], + 'num_of_items' => (int) $tree[$index_id]['num_items'], + 'children' => $children, + ); +} + +function getIndexes($tree, $item_id) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $sql = <<< SQL +SELECT + `iil`.`index_id` + FROM `${prefix}_xoonips_index_item_link` AS `iil` + WHERE `iil`.`item_id`=$item_id + ORDER BY `iil`.`index_id` +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $indexes = array(); + while ($row = $xoopsDB->fetchArray($res)) { + $index_id = $row['index_id']; + if (isset($tree[$index_id])) { + $idxes = array(); + $idxes[] = $tree[$index_id]['title']; + $parent_id = $tree[$index_id]['parent_index_id']; + while (1 != $parent_id) { + $idxes[] = $tree[$parent_id]['title']; + $parent_id = $tree[$parent_id]['parent_index_id']; + } + $idxes[] = ''; + $indexes[] = array( + 'index_id' => (int) $index_id, + 'title' => trim(implode(' / ', array_reverse($idxes))), + ); + } + } + $xoopsDB->freeRecordSet($res); + + return $indexes; +} + +function getChangeLogs($item_id) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $sql = <<< SQL +SELECT `log_date`, `log` + FROM `${prefix}_xoonips_changelog` + WHERE `item_id`=$item_id + ORDER BY `log_date` DESC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $ret = array(); + while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, array('log_date')); + $ret[] = $row; + } + $xoopsDB->freeRecordSet($res); + + return $ret; +} + +function getRelatedTo($item_id) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $sql = <<< SQL +SELECT `item_id` + FROM `${prefix}_xoonips_related_to` + WHERE `parent_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $ret = array(); + while ($row = $xoopsDB->fetchArray($res)) { + $ret[] = (int) $row['item_id']; + } + $xoopsDB->freeRecordSet($res); + + return $ret; +} + +function getKeyword($item_id) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $sql = <<< SQL +SELECT * + FROM `${prefix}_xoonips_item_keyword` + WHERE `item_id`=$item_id + ORDER BY `keyword_id` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $ret = array(); + while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + $ret[] = $row['keyword']; + } + $xoopsDB->freeRecordSet($res); + + return $ret; +} + +function getFile($item_id) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $sql = <<< SQL +SELECT `f`.`file_id`, `f`.`original_file_name`, `f`.`mime_type`, `f`.`file_size`, `f`.`caption`, `f`.`timestamp`, + `ft`.`name` AS `file_type_name`, `ft`.`display_name` AS `file_type_display_name` + FROM `${prefix}_xoonips_file` AS `f` + INNER JOIN `${prefix}_xoonips_file_type` AS `ft` ON `f`.`file_type_id`=`ft`.`file_type_id` + WHERE `item_id`=$item_id + AND `is_deleted`=0 + ORDER BY `ft`.`name` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $ret = array(); + while ($row = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($row); + MyDumpTool::convertToInt($row, array('file_id', 'file_size')); + $ret[] = $row; + } + $xoopsDB->freeRecordSet($res); + + return $ret; +} + +function appendBinderInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpbinder_item_detail` + WHERE `binder_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('binder_id')); + MyDumpTool::dropColumn($detail, ['binder_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); +} + +function appendBookInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpbook_item_detail` + WHERE `book_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('book_id', 'attachment_dl_limit', 'attachment_dl_notify')); + MyDumpTool::convertToInt($detail, array('volume', 'number')); // for CBSN + MyDumpTool::dropColumn($detail, ['book_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpbook_author` + WHERE `book_id`=$item_id + ORDER BY `author_order` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $row['author'] = array(); + while ($author = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($author); + $row['author'][] = $author['author']; + } + $xoopsDB->freeRecordSet($res); +} + +function appendConferenceInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpconference_item_detail` + WHERE `conference_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('conference_id', 'conference_from_year', 'conference_from_month', 'conference_from_mday', 'conference_to_year', 'conference_to_month', 'conference_to_mday', 'attachment_dl_limit', 'attachment_dl_notify')); + MyDumpTool::dropColumn($detail, ['conference_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpconference_author` + WHERE `conference_id`=$item_id + ORDER BY `author_order` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $row['author'] = array(); + while ($author = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($author); + $row['author'][] = $author['author']; + } + $xoopsDB->freeRecordSet($res); +} + +function appendDataInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpdata_item_detail` + WHERE `data_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('data_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); + MyDumpTool::dropColumn($detail, ['data_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpdata_experimenter` + WHERE `data_id`=$item_id + ORDER BY `experimenter_order` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $row['experimenter'] = array(); + while ($author = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($author); + $row['experimenter'][] = $author['experimenter']; + } + $xoopsDB->freeRecordSet($res); +} + +function appendFilesInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpfiles_item_detail` + WHERE `files_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('files_id')); + MyDumpTool::dropColumn($detail, ['files_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); +} + +function appendMemoInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpmemo_item_detail` + WHERE `memo_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('memo_id')); + MyDumpTool::dropColumn($detail, ['memo_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); +} + +function appendModelInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpmodel_item_detail` + WHERE `model_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('model_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); + MyDumpTool::dropColumn($detail, ['model_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpmodel_creator` + WHERE `model_id`=$item_id + ORDER BY `creator_order` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $row['creator'] = array(); + while ($author = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($author); + $row['creator'][] = $author['creator']; + } + $xoopsDB->freeRecordSet($res); +} + +function appendPaperInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnppaper_item_detail` + WHERE `paper_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('paper_id', 'volume', 'number')); + MyDumpTool::dropColumn($detail, ['paper_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnppaper_author` + WHERE `paper_id`=$item_id + ORDER BY `author_order` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $row['author'] = array(); + while ($author = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($author); + $row['author'][] = $author['author']; + } + $xoopsDB->freeRecordSet($res); +} + +function appendPresentationInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnppresentation_item_detail` + WHERE `presentation_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('presentation_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); + MyDumpTool::dropColumn($detail, ['presentation_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnppresentation_creator` + WHERE `presentation_id`=$item_id + ORDER BY `creator_order` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $row['creator'] = array(); + while ($author = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($author); + $row['creator'][] = $author['creator']; + } + $xoopsDB->freeRecordSet($res); +} + +function appendSimulatorInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpsimulator_item_detail` + WHERE `simulator_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('simulator_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); + MyDumpTool::dropColumn($detail, ['simulator_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpsimulator_developer` + WHERE `simulator_id`=$item_id + ORDER BY `developer_order` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $row['developer'] = array(); + while ($author = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($author); + $row['developer'][] = $author['developer']; + } + $xoopsDB->freeRecordSet($res); +} + +function appendStimulusInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpstimulus_item_detail` + WHERE `stimulus_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('stimulus_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); + MyDumpTool::dropColumn($detail, ['stimulus_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpstimulus_developer` + WHERE `stimulus_id`=$item_id + ORDER BY `developer_order` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $row['developer'] = array(); + while ($author = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($author); + $row['developer'][] = $author['developer']; + } + $xoopsDB->freeRecordSet($res); +} + +function appendToolInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnptool_item_detail` + WHERE `tool_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('tool_id', 'use_cc', 'cc_commercial_use', 'cc_modification', 'attachment_dl_limit', 'attachment_dl_notify')); + MyDumpTool::dropColumn($detail, ['tool_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnptool_developer` + WHERE `tool_id`=$item_id + ORDER BY `developer_order` ASC +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $row['developer'] = array(); + while ($author = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($author); + $row['developer'][] = $author['developer']; + } + $xoopsDB->freeRecordSet($res); +} + +function appendUrlInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpurl_item_detail` + WHERE `url_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + MyDumpTool::convertToInt($detail, array('url_id', 'url_count')); + MyDumpTool::dropColumn($detail, ['url_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); +} + +function appendNimgcenterInfo(&$row) +{ + global $xoopsDB; + $prefix = $xoopsDB->prefix(); + $item_id = $row['item_id']; + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpnimgcenter_item_detail` + WHERE `nimgcenter_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + while ($detail = $xoopsDB->fetchArray($res)) { + MyDumpTool::decode($detail); + $detail['coord_type_name'] = (0 === $detail['coord_type']) ? 'Talairach' : 'MNI'; + MyDumpTool::dropColumn($detail, ['nimgcenter_id']); + $row += $detail; + } + $xoopsDB->freeRecordSet($res); + $sql = <<< SQL +SELECT * + FROM `${prefix}_xnpnimgcenter_talairach_list` + WHERE `nimgcenter_id`=$item_id +SQL; + if (!($res = $xoopsDB->query($sql))) { + var_dump($xoopsDB); + exit(); + } + $row['coordinate'] = array(); + while ($t = $xoopsDB->fetchArray($res)) { + $row['coordinate'][] = $t; + } + $xoopsDB->freeRecordSet($res); +} + +function createThumbnail($inputFile, $mime_type, $outputFile) +{ + $finfo = finfo_open(FILEINFO_NONE); + $label = finfo_file($finfo, $inputFile); + finfo_close($finfo); + if (preg_match('/^([^\\/]*)\\/(.*)$/', $mime_type, $matches)) { + if ('audio' == $matches[1]) { + $img_type = 'audio'; + } elseif ('image' == $matches[1]) { + $img_type = 'image'; + } elseif ('video' == $matches[1]) { + $img_type = 'video'; + } elseif ('text' == $matches[1]) { + $img_type = 'text'; + } elseif ('application' == $matches[1]) { + $text_types = array('pdf', 'xml', 'msword', 'vnd.ms-excel'); + $image_types = array('vnd.ms-powerpoint', 'postscript'); + $audio_types = array('vnd.rn-realmedia'); + if (in_array($matches[2], $text_types)) { + $img_type = 'text'; + } elseif (in_array($matches[2], $audio_types)) { + $img_type = 'audio'; + } elseif (in_array($matches[2], $image_types)) { + $img_type = 'image'; + } else { + $img_type = 'application'; + } + } else { + $img_type = 'unknown'; + } + } else { + $img_type = 'unknown'; + } + $img_file = XOOPS_ROOT_PATH.'/modules/xoonips/images/thumbnail_'.$img_type.'.png'; + // create image resource + $w = 100; + $h = 100; + $im = imagecreatetruecolor($w, $h); + // label setting + $f = 2; + // font number + $lp = 5; + // label padding + $fw = imagefontwidth($f); + // font width + $fh = imagefontheight($f); + // font height + $fmaxlen = ($w - $lp * 2) / $fw; + // max label length + $labels = explode(',', $label); + $label = $labels[0]; + $llen = strlen($label); + if ($llen > $fmaxlen) { + $label = substr($label, 0, $fmaxlen - 3); + $label .= '...'; + $llen = strlen($label); + } + $lx = ($w - $llen * $fw) / 2; + $ly = $h - $fh - $lp; + // change alpha attributes and create transparent color + imageantialias($im, true); + imagealphablending($im, false); + imagesavealpha($im, true); + $transparent = imagecolorallocatealpha($im, 255, 255, 255, 0); + $col_white = imagecolorallocate($im, 255, 255, 255); + $col_gray = imagecolorallocate($im, 127, 127, 127); + $col_black = imagecolorallocate($im, 0, 0, 0); + // fill all area with transparent color + imagefill($im, 0, 0, $col_white); + imagealphablending($im, true); + $imicon = imagecreatefrompng($img_file); + imagecopy($im, $imicon, $w / 2 - 48 / 2, $h / 2 - 48 / 2, 0, 0, 48, 48); + imagepolygon($im, array(0, 0, $w - 1, 0, $w - 1, $h - 1, 0, $h - 1), 4, $col_gray); + if (0 != strlen($label)) { + imagestring($im, $f, $lx, $ly, $label, $col_black); + } + imagepng($im, $outputFile); + imagedestroy($imicon); + imagedestroy($im); + + return true; +} + +function parseSimPFLinkFile() +{ + global $XOONIPS_SIMPF_LINKFILE; + $xoops_url_path = parse_url(XOOPS_URL, PHP_URL_PATH); + $ret = []; + if (isset($XOONIPS_SIMPF_LINKFILE) && file_exists($XOONIPS_SIMPF_LINKFILE)) { + $lines = file($XOONIPS_SIMPF_LINKFILE); + foreach ($lines as $line) { + list($pfname, $pfurl, $simpfurl) = explode(',', $line); + if (preg_match('/^'.preg_quote(XOOPS_URL, '/').'/', $pfurl)) { + $pUrl = parse_url($pfurl); + if ($pUrl['path'] != $xoops_url_path.'/modules/xoonips/detail.php') { + echo 'not xoonips url found in simpf link file. URL:'.$pfurl.PHP_EOL; + continue; + } + if (preg_match('/(?:^|&)(id|item_id)=([^$&]+)/', $pUrl['query'], $matches)) { + $key = $matches[1]; + $value = $matches[2]; + $ret[$key][$value] = trim($simpfurl); + } + } + } + } + + return $ret; +} diff --git a/etc/simpflink.csv b/etc/simpflink.csv new file mode 100644 index 0000000..86cd994 --- /dev/null +++ b/etc/simpflink.csv @@ -0,0 +1,465 @@ +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=6045,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=25 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=909,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=27 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=1648,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=28 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=913,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=29 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=1623,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=30 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=1620,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=32 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=896,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=33 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=2434,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=34 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=2441,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=35 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=5307,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=37 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?id=943,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=38 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=403,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=39 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=398,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=40 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=350,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=41 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=366,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=43 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=370,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=44 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=361,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=45 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?id=4449054b,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=46 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=6110,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=47 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?id=7252867b,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=48 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=6105,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=49 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=2861,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=50 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?id=16625198b,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=51 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=6422,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=52 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?id=19281836b,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=53 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?id=7941380b,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=54 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=6448,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=55 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=6106,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=56 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1027,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=57 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1030,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=58 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1031,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=59 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1033,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=61 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1034,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=62 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1035,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=63 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1036,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=64 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1037,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=65 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1038,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=66 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1041,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=67 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1042,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=68 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1043,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=69 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1044,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=70 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1045,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=71 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1046,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=72 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1047,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=73 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1048,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=74 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1051,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=76 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1052,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=77 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1054,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=78 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1056,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=79 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1057,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=80 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1059,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=81 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1060,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=82 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1061,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=83 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1062,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=84 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1064,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=85 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1065,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=86 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1066,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=87 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1067,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=114 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1068,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=116 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1069,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=117 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1071,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=119 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1073,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=121 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1076,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=124 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1077,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=125 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1078,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=126 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1079,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=127 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=296,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=128 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=5586,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=129 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=297,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=130 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1080,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=131 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1081,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=132 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1082,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=133 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1084,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=134 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1085,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=135 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1086,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=136 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1087,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=137 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1088,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=138 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1089,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=139 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1098,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=140 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1099,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=141 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1100,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=142 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1101,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=143 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1102,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=144 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1103,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=145 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1105,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=146 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1106,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=147 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1107,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=148 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1108,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=149 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1109,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=150 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1110,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=151 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1111,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=152 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1112,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=153 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1113,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=154 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1114,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=155 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1115,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=156 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1119,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=159 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1120,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=160 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1121,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=161 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1122,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=162 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1123,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=163 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1124,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=164 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1125,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=165 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1127,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=167 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1128,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=168 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1129,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=169 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1130,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=170 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1131,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=171 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1132,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=172 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1134,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=174 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1135,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=175 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1136,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=176 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1137,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=177 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1138,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=178 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1139,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=179 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1140,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=180 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1141,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=181 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1142,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=182 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1143,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=183 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1144,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=184 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1146,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=186 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1147,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=187 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1148,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=188 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1149,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=189 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1150,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=190 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1152,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=192 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1153,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=193 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1154,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=194 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1156,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=195 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1157,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=196 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1159,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=198 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1160,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=199 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1161,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=200 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1162,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=201 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1163,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=202 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1164,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=203 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1165,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=204 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1166,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=205 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1167,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=206 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1168,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=207 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1169,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=208 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1170,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=209 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1171,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=210 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1173,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=212 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1174,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=213 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1175,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=214 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1176,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=215 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1177,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=216 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1178,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=217 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1179,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=218 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1180,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=219 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1181,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=220 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1182,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=221 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1183,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=222 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1184,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=223 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1185,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=224 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1186,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=225 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1187,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=226 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1188,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=227 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1189,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=228 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1190,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=229 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1191,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=230 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1192,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=231 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1193,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=232 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?id=15929656d,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=233 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=376,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=234 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=298,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=235 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=1629,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=236 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=1647,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=237 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1209,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=239 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1210,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=240 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1211,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=241 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1212,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=242 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1213,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=243 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1214,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=244 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1215,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=245 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1216,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=246 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1218,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=248 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1219,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=249 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1220,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=250 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1222,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=251 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1223,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=252 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1224,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=253 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1225,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=254 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1226,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=255 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1227,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=256 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1228,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=257 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1230,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=258 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1231,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=259 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1232,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=260 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1233,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=261 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1234,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=262 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1235,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=263 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1236,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=264 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1237,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=265 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1238,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=266 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1239,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=267 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1240,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=268 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1241,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=269 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1242,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=270 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1243,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=271 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1244,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=272 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1245,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=273 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1246,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=274 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1247,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=275 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1248,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=276 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1251,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=279 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1252,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=280 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1255,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=281 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1256,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=282 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1257,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=283 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1258,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=284 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1262,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=286 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1263,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=287 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1264,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=288 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1265,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=289 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1266,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=290 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1268,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=292 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1269,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=293 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1270,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=294 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1271,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=295 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1272,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=296 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1273,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=297 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1278,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=302 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1279,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=303 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1280,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=304 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1281,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=305 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1282,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=306 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1283,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=307 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1284,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=308 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1285,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=309 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1286,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=310 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1287,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=311 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1288,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=312 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1289,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=313 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1291,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=315 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1292,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=316 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1293,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=317 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1294,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=318 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1295,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=319 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1296,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=320 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1298,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=322 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1299,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=323 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1300,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=324 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1302,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=326 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1306,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=330 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1312,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=336 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1313,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=337 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1314,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=338 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1315,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=339 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=162,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=341 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=5936,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=342 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/558/weaverWearne06.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=360 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?id=4449054c,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=367 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1039,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=416 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1040,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=417 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=7051,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=444 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1427,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=485 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1425,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=486 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1424,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=487 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1423,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=488 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1422,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=489 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1421,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=490 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1420,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=491 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1419,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=492 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1418,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=493 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1417,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=494 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1416,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=496 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1415,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=497 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1362,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=498 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1414,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=499 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1363,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=500 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1413,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=501 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1411,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=502 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1409,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=503 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1365,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=504 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1369,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=505 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1408,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=506 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1406,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=507 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1362,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=511 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1364,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=514 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1367,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=515 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1366,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=516 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1405,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=517 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1364,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=518 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1401,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=519 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1415,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=520 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1368,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=521 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1399,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=523 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1370,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=524 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1398,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=525 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1371,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=526 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1397,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=527 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1396,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=528 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1372,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=529 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1373,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=530 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1374,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=531 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1375,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=532 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1376,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=533 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1380,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=534 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1395,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=535 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1394,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=536 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1393,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=537 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1392,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=538 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1391,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=539 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1390,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=540 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1389,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=541 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1387,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=542 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1386,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=543 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1385,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=544 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1384,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=545 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1382,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=546 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1381,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=547 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1362,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=550 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1363,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=551 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1364,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=552 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1365,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=553 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1366,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=554 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1367,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=555 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1368,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=556 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1369,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=557 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1370,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=558 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1371,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=559 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1372,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=560 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1374,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=562 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1375,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=563 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1376,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=564 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1379,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=565 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1380,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=566 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1381,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=567 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1382,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=568 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1384,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=569 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1385,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=571 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1386,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=572 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1387,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=573 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1045,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=574 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1389,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=575 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1390,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=576 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1391,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=577 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1392,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=578 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1393,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=579 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1394,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=580 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1395,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=581 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1396,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=582 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1397,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=583 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1398,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=584 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1399,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=585 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1400,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=586 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1401,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=587 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1402,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=588 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1405,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=589 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1409,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=590 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1409,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=591 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1411,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=592 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1413,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=593 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1414,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=594 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1415,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=595 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1416,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=596 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1418,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=598 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1419,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=599 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1420,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=600 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1421,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=601 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1422,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=602 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1423,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=603 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1424,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=604 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1425,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=605 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1427,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=606 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1428,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=607 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1429,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=608 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1430,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=609 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1431,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=610 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1432,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=611 +visiome,https://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=7252,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=612 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1434,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=613 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1435,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=614 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1450,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=615 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1452,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=616 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1453,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=617 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1454,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=618 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1455,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=619 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1458,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=620 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1460,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=621 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1461,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=622 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1462,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=623 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1463,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=624 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1466,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=625 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1465,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=626 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1467,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=627 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1470,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=628 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1471,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=629 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1472,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=630 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1473,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=631 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1474,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=632 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1476,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=633 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1477,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=634 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1479,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=635 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1481,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=636 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1482,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=637 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1483,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=638 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1486,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=639 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1487,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=640 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1488,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=641 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1489,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=642 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1490,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=643 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1493,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=644 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1496,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=645 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1497,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=646 +cerebellum,https://cerebellum.neuroinf.jp/modules/xoonips/detail.php?item_id=1498,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=647 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/533/SundtEtAl2015.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=656 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/536/baker_etal_JCNS_2010.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=657 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/538/CS56PyModelDB.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=659 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/539/TCconvergenceModel.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=660 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/540/BahlEtAl2012.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=661 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/541/ACh_ModelDB.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=662 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/543/OLMmodel_r3.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=664 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/548/GentilettiEtAl2016.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=668 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/556/FUS_model.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=677 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/560/ShepherdBrayton1979.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=680 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/561/gc-1.1_r2.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=681 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/564/VladimirovTuTraub2012.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=683 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/565/xiaoshenli.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=684 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/566/kv72-R213QW-mutations_r2.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=685 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/567/Ih_current.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=686 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/569/Schizophr.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=687 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/570/SaudargieneEtAl2015.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=688 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/571/bpap.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=689 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/572/magical7.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=691 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/575/HyunEtAl2015.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=696 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/576/MasurkarChen2011_r1.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=697 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/577/Nakano_FICN_model_r1.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=698 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/582/AshhadNarayanan2013.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=699 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/583/DiFrancescoNoble1985.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=700 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/584/DGC.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=701 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/586/DG_BC.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=703 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/587/DRG_Devor.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=704 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/588/Kv72_ModelDB.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=705 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/589/SousaEtAl2014.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=706 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/590/MiglioreEtAl2015.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=707 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/592/Chloride_Model.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=708 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/593/MiglioreEJN2016_r2.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=709 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/595/Moore2015.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=711 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/597/FFI_CA1_r3.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=713 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/598/stadler2014_layerV_r1.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=714 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/600/2VN.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=716 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/602/Branch_Point_Tapering.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=718 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/604/MenonEtAl2009_r1.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=720 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/606/CA3Atrophy.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=722 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/607/Gorin_et_al_2016.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=723 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/608/Poleg-PolskyDiamond2011.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=724 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/613/Demo.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=728 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/614/ShortEtAl2016.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=729 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/618/Casaleggio2014.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=733 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/623/MiglioreMcTavish2013.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=736 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/624/KimEtAl2017.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=737 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/626/fig1b.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=738 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/627/cortex_r1.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=739 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/629/oltedal.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=741 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/632/ka_rgc.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=744 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/634/na_rgc.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=745 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/636/V1_PFC_ModelDB.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=747 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/640/moore83.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=751 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/642/SpaceClampDemo.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=753 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/644/anderson.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=755 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/645/VNO.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=756 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/645/VNO.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=757 +cns,https://cns.neuroinf.jp/modules/fmanager/index.php/view/647/Watanabe-et-al_2017_r1.zip,http://sim.neuroinf.jp/modules/xoonips/detail.php?item_id=758 diff --git a/package.json b/package.json index 4c2ffce..9f1efe3 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,41 @@ { "name": "cerebellum", - "version": "0.1.0", + "version": "1.0.0", "private": true, "dependencies": { + "@types/async-lock": "^1.1.1", "@types/jest": "24.0.15", - "@types/node": "12.0.12", + "@types/lokijs": "^1.5.2", + "@types/node": "12.6.2", + "@types/rc-tree": "^1.11.3", "@types/react": "16.8.23", "@types/react-dom": "16.8.4", + "@types/react-helmet": "^5.0.8", + "@types/react-html-parser": "^2.0.0", + "@types/react-overlays": "^1.1.3", + "@types/react-router-dom": "^4.3.4", + "@types/react-router-hash-link": "^1.2.1", + "@types/xregexp": "^3.0.30", + "async-lock": "^1.2.0", + "axios": "^0.19.0", + "lokijs": "^1.5.6", + "moment": "^2.24.0", + "rc-tree": "^2.1.0", "react": "^16.8.6", + "react-app-polyfill": "^1.0.1", + "react-cookie": "^4.0.1", "react-dom": "^16.8.6", + "react-ga": "^2.6.0", + "react-helmet": "^5.2.1", + "react-html-parser": "^2.0.2", + "react-image-lightbox": "^5.1.0", + "react-overlays": "^1.2.0", + "react-router-dom": "^5.0.1", + "react-router-hash-link": "^1.2.1", "react-scripts": "3.0.1", - "typescript": "3.5.2" + "react-spinner-material": "^1.1.1", + "typescript": "3.5.3", + "xregexp": "^4.2.4" }, "scripts": { "start": "react-scripts start", @@ -25,12 +50,14 @@ "production": [ ">0.2%", "not dead", - "not op_mini all" + "not op_mini all", + "ie 11" ], "development": [ "last 1 chrome version", "last 1 firefox version", - "last 1 safari version" + "last 1 safari version", + "ie 11" ] } } diff --git a/public/favicon.ico b/public/favicon.ico index a11777cc471a4344702741ab1c8a588998b1311a..b80cec5e0615ab3c53a222487fc0bc78538babe7 100644 GIT binary patch literal 3638 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/public/index.html b/public/index.html index dd1ccfd..d2960d0 100644 --- a/public/index.html +++ b/public/index.html @@ -5,34 +5,15 @@ - + + + + - - React App + Cerebellar Platform - Official Site
    - diff --git a/public/manifest.json b/public/manifest.json index 1f2f141..30002e8 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,10 +1,10 @@ { - "short_name": "React App", - "name": "Create React App Sample", + "short_name": "Cerebellar Platform", + "name": "Cerebellar Platform", "icons": [ { "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", + "sizes": "32x32 16x16", "type": "image/x-icon" } ], diff --git a/src/App.css b/src/App.css index b41d297..46f0a08 100644 --- a/src/App.css +++ b/src/App.css @@ -1,33 +1 @@ -.App { - text-align: center; -} - -.App-logo { - animation: App-logo-spin infinite 20s linear; - height: 40vmin; - pointer-events: none; -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} +@import url('./common/assets/theme/style.css'); \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index 226ee63..822f033 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,26 +1,20 @@ -import React from 'react'; -import logo from './logo.svg'; +import React, { Component } from 'react'; +import { BrowserRouter } from 'react-router-dom'; +import { CookiesProvider } from 'react-cookie'; +import AppRoot from './common/AppRoot'; import './App.css'; -const App: React.FC = () => { - return ( -
    - ); +class App extends Component { + + render() { + return ( + + + + + + ); + } } export default App; diff --git a/src/common/AppRoot.tsx b/src/common/AppRoot.tsx new file mode 100644 index 0000000..992f153 --- /dev/null +++ b/src/common/AppRoot.tsx @@ -0,0 +1,83 @@ +import React, { Component } from 'react'; +import { ReactCookieProps, withCookies } from 'react-cookie'; +import ReactGA from 'react-ga'; +import Helmet from 'react-helmet'; +import { RouteComponentProps, withRouter } from 'react-router-dom'; +import Config, { MultiLang } from '../config'; +import Functions from '../functions'; +import CenterColumn from './CenterColumn'; +import Header from './Header'; +import LeftColumn from './LeftColumn'; + + +interface Props extends RouteComponentProps, ReactCookieProps { } +interface State { + lang: MultiLang; +} + +class AppRoot extends Component { + + constructor(props: Props) { + super(props); + this.state = { lang: 'en' }; + if (Config.GOOGLE_ANALYTICS_TRACKING_ID !== '') { + ReactGA.initialize(Config.GOOGLE_ANALYTICS_TRACKING_ID); + } + } + + static getDerivedStateFromProps(nextProps: Props, prevState: State) { + const params = new URLSearchParams(nextProps.location.search); + const param_lang = params.get('ml_lang'); + const cookie_lang = typeof nextProps.cookies !== 'undefined' ? nextProps.cookies.get('ml_lang') : null; + let lang = param_lang || (typeof cookie_lang === 'string' ? cookie_lang : null) || prevState.lang; + if (lang !== 'en' && lang !== 'ja') { + lang = 'en'; + } + if (cookie_lang !== lang) { + if (typeof nextProps.cookies !== 'undefined') { + nextProps.cookies.set('ml_lang', lang, { path: '/' }); + } + } + if (prevState.lang !== lang) { + return { lang }; + } + return null; + } + + componentDidMount() { + const { pathname } = this.props.location; + if (Config.GOOGLE_ANALYTICS_TRACKING_ID !== '') { + ReactGA.set({ page: pathname }); + ReactGA.pageview(pathname); + } + } + + componentDidUpdate(prevProps: Props) { + const { pathname, search } = this.props.location; + if (Config.GOOGLE_ANALYTICS_TRACKING_ID !== '') { + ReactGA.set({ page: pathname }); + ReactGA.pageview(pathname); + } + if (pathname !== prevProps.location.pathname || search !== prevProps.location.search) { + window.scrollTo(0, 0); + } + } + + render() { + const { lang } = this.state; + return ( + <> + + {Functions.siteTitle(lang)} - {Functions.siteSlogan(lang)} + +
    +
    + + +
    + + ); + } +} + +export default withCookies(withRouter(AppRoot)); diff --git a/src/common/CenterColumn.tsx b/src/common/CenterColumn.tsx new file mode 100644 index 0000000..d1e9b51 --- /dev/null +++ b/src/common/CenterColumn.tsx @@ -0,0 +1,101 @@ +import React from 'react'; +import { Route, Switch } from 'react-router-dom'; +import { MultiLang } from '../config'; +import CerebellarPlatformCommittee from '../custom/blocks/CerebellarPlatformCommittee'; +import CerebrationOfDrItosNewBook from '../custom/blocks/CerebrationOfDrItosNewBook'; +import NewArticleAlert from '../custom/blocks/NewArticleAlert'; +import Rankings from '../database/blocks/Rankings'; +import RecentContents from '../database/blocks/RecentContents'; +import DatabaseTop from '../database/DatabaseTop'; +import Functions from '../functions'; +import Footer from './Footer'; +import MainContent from './MainContent'; +import Welcome from '../custom/blocks/Welcome'; + +interface Props { + lang: MultiLang; +} + +const CenterBlocks = (props: Props) => { + const { lang } = props; + return ( +
    +
    +
    +
    Welcome to Cerebellar Platform
    +
    + +
    +
    +
    +
    Cerebration of Dr. Ito's New Book
    +
    + +
    +
    +
    +
    Cerebellar Platfrom Committee
    +
    + +
    +
    +
    +
    New article alert
    +
    + +
    +
    +
    +
    {Functions.mlang('[en]Item Types[/en][ja]アイテムタイプ一覧[/ja]', lang)}
    +
    + +
    +
    +
    +
    +
    +
    +
    {Functions.mlang('[en]Ranking[/en][ja]ランキング[/ja]', lang)}
    +
    + +
    +
    +
    +
    +
    +
    {Functions.mlang('[en]Recent Contents[/en][ja]新着コンテンツ[/ja]', lang)}
    +
    + +
    + +
    +
    +
    +
    + ); +} + +const CenterColumn = (props: Props) => { + const { lang } = props; + + return ( + + ); +} + +export default CenterColumn; \ No newline at end of file diff --git a/src/common/Footer.tsx b/src/common/Footer.tsx new file mode 100644 index 0000000..cff3566 --- /dev/null +++ b/src/common/Footer.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import bannerCBS from './assets/theme/images/banner-riken-cbs.png'; +import bannerRIKEN from './assets/theme/images/banner-riken.png'; +import bannerXooNIps from './assets/theme/images/banner-xoonips.png'; +import LinkImage from './lib/LinkImage'; + +interface Props { + lang: MultiLang; +} + +const Footer = (props: Props) => { + const { lang } = props; + return ( +
    +
    + + + +
    +
    Copyright (C) 2018 Neuroinformatics Unit, RIKEN Center for Brain Science
    +
    + ); +} + +export default Footer; diff --git a/src/common/Header.tsx b/src/common/Header.tsx new file mode 100644 index 0000000..ce8eca6 --- /dev/null +++ b/src/common/Header.tsx @@ -0,0 +1,66 @@ +import React, { ChangeEvent, Component, FormEvent } from 'react'; +import { Link, RouteComponentProps, withRouter } from 'react-router-dom'; +import Config, { MultiLang } from '../config'; +import ItemUtil from '../database/lib/ItemUtil'; +import Functions from '../functions'; + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +interface State { + keyword: string; +} + +class Header extends Component { + + constructor(props: Props) { + super(props); + this.handleChangeKeyword = this.handleChangeKeyword.bind(this); + this.handleSubmit = this.handleSubmit.bind(this); + this.state = { keyword: '' }; + } + + handleChangeKeyword(event: ChangeEvent) { + const keyword = event.target.value.trim(); + this.setState({ keyword }); + } + + handleSubmit(event: FormEvent) { + event.preventDefault(); + const url = ItemUtil.getSearchByKeywordUrl('all', this.state.keyword); + this.props.history.push(url); + } + + render() { + const { lang } = this.props; + const title = Functions.mlang(Config.SITE_TITLE, lang); + return ( + + ); + } +} + +export default withRouter(Header); \ No newline at end of file diff --git a/src/common/LeftColumn.tsx b/src/common/LeftColumn.tsx new file mode 100644 index 0000000..3b1b019 --- /dev/null +++ b/src/common/LeftColumn.tsx @@ -0,0 +1,51 @@ +import React from 'react'; +import { MultiLang } from '../config'; +import CreditsMenu from '../credits/block/CreditsMenu'; +import IndexTree from '../database/blocks/IndexTree'; +import Functions from '../functions'; +import MainMenu from './blocks/MainMenu'; +import SelectLang from './blocks/SelectLang'; + +interface Props { + lang: MultiLang; +} + +const LeftColumn = (props: Props) => { + const { lang } = props; + const titles = { + selectLang: Functions.mlang('[en]Select Language[/en][ja]言語選択[/ja]', lang), + mainMenu: Functions.mlang('[en]Main Menu[/en][ja]メインメニュー[/ja]', lang), + indexTree: Functions.mlang('[en]Index Tree[/en][ja]インデックスツリー[/ja]', lang), + siteInfo: Functions.mlang('[en]Site Information[/en][ja]サイト情報[/ja]', lang), + }; + return ( +
    +
    +
    {titles.selectLang}
    +
    + +
    +
    +
    +
    {titles.mainMenu}
    +
    + +
    +
    +
    +
    {titles.indexTree}
    +
    + +
    +
    +
    +
    {titles.siteInfo}
    +
    + +
    +
    +
    + ); +} + +export default LeftColumn; diff --git a/src/common/MainContent.tsx b/src/common/MainContent.tsx new file mode 100644 index 0000000..7293170 --- /dev/null +++ b/src/common/MainContent.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { Route, Switch } from 'react-router-dom'; +import Config, { MultiLang } from '../config'; +import Credits from '../credits/Credits'; +import CreditsXoopsPathRedirect from '../credits/CreditsXoopsPathRedirect'; +import D3Forum from '../d3forum/D3Forum'; +import D3ForumXoopsPathRedirect from '../d3forum/D3ForumXoopsPathRedirect'; +import Database from '../database/Database'; +import DatabaseXoopsPathRedirect from '../database/DatabaseXoopsPathRedirect'; +import Pico from '../pico/Pico'; +import PicoXoopsPathRedirect from '../pico/PicoXoopsPathRedirect'; +import XoopsPathRedirect from './XoopsPathRedirect'; + +interface Props { + lang: MultiLang; +} + +const MainContent = (props: Props) => { + const { lang } = props; + return ( +
    + + } /> + } /> + {Config.PICO_MODULES.map((name) => + } /> + )} + {Config.D3FORUM_MODULES.map((name) => + } /> + )} + } /> + } /> + {Config.PICO_MODULES.map((name) => + } /> + )} + {Config.D3FORUM_MODULES.map((name) => + } /> + )} + + +
    + ); +} + +export default MainContent; \ No newline at end of file diff --git a/src/common/XoopsPathRedirect.tsx b/src/common/XoopsPathRedirect.tsx new file mode 100644 index 0000000..aaf8a18 --- /dev/null +++ b/src/common/XoopsPathRedirect.tsx @@ -0,0 +1,40 @@ +import React, { Component } from 'react'; +import { Redirect, RouteComponentProps } from 'react-router'; +import { MultiLang } from '../config'; +import PageNotFound from './lib/PageNotFound'; + +interface Params { + module: string; + pathname: string; +} + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +class XoopsPathRedirect extends Component { + + getRedirectUrl() { + const { pathname } = this.props.location; + switch (pathname || '') { + case '/index.php': { + return '/'; + } + } + return ''; + } + + render() { + const { lang } = this.props; + if (this.props.location.pathname === '/') { + return null; + } + const url = this.getRedirectUrl(); + if (url === '') { + return ; + } + return ; + } +} + +export default XoopsPathRedirect; diff --git a/src/common/assets/images/mlang_english.gif b/src/common/assets/images/mlang_english.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ff614eb6e91a3a1bd15910b176062815e5e1fa6 GIT binary patch literal 175 zcmZ?wbhEHbPMvkT)|82+yPeNgyybHcp!flwkm& zGzJDBDu4Ix-QBx)ckkZKfEVb1WI=W@aF{SiTS!<4G&VGI@N=oWIFP{5!q2Lsl3}3e i)W)i-G-pQOVg^=GC!rM&J|-NUq!GL-=B1$mgEau6X*loz literal 0 HcmV?d00001 diff --git a/src/common/assets/images/mlang_japanese.gif b/src/common/assets/images/mlang_japanese.gif new file mode 100644 index 0000000000000000000000000000000000000000..57682060bb4f074227d132cebc5647ab3937e8bc GIT binary patch literal 126 zcmZ?wbhEHb=Ksu@|I=pvKXV2sbcVtBE>PAu?ToQ8 z0}{{yu|awnIE)z>Ib=LGEO2CC<`YwyuwWrmD+7DFy%l literal 0 HcmV?d00001 diff --git a/src/common/assets/images/no_avatar.gif b/src/common/assets/images/no_avatar.gif new file mode 100644 index 0000000000000000000000000000000000000000..62fff0fda9e71efb4049f128f71b9702f2675e28 GIT binary patch literal 985 zcmbWy=}(#m0D$pVxs;g|l?|hgFtu73I!cV0n=!y9#no=oidxfnET-$6OCc;rZgJO%o7Nf}UeiqoatWxL*`w>_Hu*#aC4A>bnO!LY|` z(N~O#xp|pNx1L{?oth&%(b$vIC$%Q&Qr>2$b!gW=LW9l1gc#G^scy2*o}R^v<_Qui z4;_k|n!duUb@Rg0BK7jRR&Irq8rit{$IfX;Kq|;VfD{hO8Ho3*rh;~NOj54$Jnz|s z_~Dei%+58i4DHhv=1*BLrN(*2JZf#l)+{mlFI@wyYg8^eAd#YiTe9sONRS99j4)kZ zWbl$!PG)zd^n+@K-UPN^ho~BV?ME%TsHqwjL7If=+cU!QR@SPs;`=w$cu5II4U@9PQdmcEZvneS9_1~@6w{g4 zWC=Ll&+SZ-`d^=_lY({m`P?rF^2AKuhPS#?z2Vyu+gu`fopuNMOq28HfW%Y~00qAK E56O(&lK=n! literal 0 HcmV?d00001 diff --git a/src/common/assets/images/pagact.gif b/src/common/assets/images/pagact.gif new file mode 100644 index 0000000000000000000000000000000000000000..3f5b855afc641760ce695f2cdb70dcde94ec0a09 GIT binary patch literal 121 zcmZ?wbhEHb6l4%#Sj56`W$%=jV8>Y#>i<65`~Uxc1{hHM$->CMz`~#d5&)@XV7Bwv zbZ4W=D#z8l&K`-s4@4fR6qV?EBECk-i^)L1C-eF>v)v%yu4|?rc<9 z<+z&H*(34yfyg73q7r>i#Mel9F&PN>WM02!)*Jl&-0R)*{3Tc(b+{+Tply-5Ihh SYU2u#Ws#BVZ-g>2SOWkpSt^47 literal 0 HcmV?d00001 diff --git a/src/common/assets/images/rank3dbf8e94a6f72.gif b/src/common/assets/images/rank3dbf8e94a6f72.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c7c979b8af21c0d2aaa8490fbd36066cede5a74 GIT binary patch literal 905 zcmV;419tpJNk%w1VMzcD0QP?X;^N}-^YiiX@#Ev;>gww3?Cjs)-`?Kd>FMe4@bKp5 z=GxlY^78WQ>+9s?lq{^z_`^+~?=#@9*#b+ELrv+x7MJ#(+WDePo+tK9poG z;*M?q?Tx~GWazlK{@hWUdT_*~mHzOG>$*|)_V)bDALYu8h;C%%!C=gYIM|YgpLb{W z$3geRB;IITo|1^GgJ#^UTHCFo>9DNMy}Y$_SJ9qE^2J*J`^v$Wdi3acjAKlpgLu4) zS@qLQ|HvEv+EBlJV*cJx{oruJePR6VfBx@^=;-MG$r!|mNdC+>xq?vHi(IgWZuQH4 zzJ6t=eQ4vbljoz7wvL9pw6u3-ViH!{l1&xl7l8KLzl1*`6WJ@hqm71KMppp)Jetf7B zm8Yt!t*R8LdxI}s8FpG&IVUzAP(pBmx4FB$zrn+Q2Lk|o00I$y27T77e+JIb3>Vba zeb@&8&(S4(2G0-JR49o(V~y?a@re!=iG2o*4%mbGjRyD=^x%M`6>>sULWEG^LO}`w z?0fh}0Rw{+BThu561O*flBoH7V0X2+*AWVokb0(jH zE*0?UIrHYADNkf*V8KL9nJkTvDrM>vY9a&_5G***rvL&6jS%obV1cVwuvfE|?fO;H zoEc{3DE@gHm*NBh1LPvXtCw#jJW|{^p$J$oMLz^e065&>!s3UB9VaT1!pNNwUfy&# zB4!7hHi9Ty#;lpMXV8Bh6bQgN0D}k-Tr1cj2*Bz9uwUb5Fd>hit_)fWXE0lk2o)y6 z07>Fv1B^z;lP_=nJkf*!sZjY@@EFkq0Di*zDZstab@AcL52A5~2#GW}!1$=rh`oFG z^66V5AfNyQKLP+ifFt}Bpa6ga47i^F4g4p-00?6IOU(h8rdV fK_3eY_|pInG@<~BCia11BM<}znE*YdzQtV<4?nDPgPS46?+U;KG|I2 z8#EJIWuJCQtd&Wm%gY)jW1dUfmeBR99JP34L#cob%GGHaG&Z2$TGwyQtCl9#q*8;9 zBcG?sIirTP&Up@Vkqhb--AmJ~4dK%r?F#|es+ko^XGSF4Au(e_KGUa|>V{u!ZplWq za@H(+0%C)(dT8bO@Jr6*3dEZQJ2z$+YO!d8&l7Q9=+_7I@`CgibdJ^ zr3MnQCqfA}p`?$mF&VnW?y%a6DLW3m-t9MgvL|}`mb*%-t^HeuU0fZ#ev-T8JFk4M zD9JDcxrdVKc|~y>^r-%5{3u>JY+2RL-P<#CmJxWSR7XD9NRRvLxA!LoA+G?hzuJtVUKY=O66bZiSrWS2ggYKQZ%z=A;Kd8lT&Eti>H#Tzjap; bTJsN4-PDq|2WeEo1x8nU**9lxfJ^@Y9kgU9 literal 0 HcmV?d00001 diff --git a/src/common/assets/images/rank3dbf8ea81e642.gif b/src/common/assets/images/rank3dbf8ea81e642.gif new file mode 100644 index 0000000000000000000000000000000000000000..50f3de786e3763d6643cb1cefad69d6d322aae46 GIT binary patch literal 894 zcmV-^1A+WUNk%w1VMzcD0QP?X?d|R2;^N`q;qLD4^YioLgwv>-{0Qe z-s$P-^78WV@bK&F>*nU>|JqUH(T3?T!85aM7Md=(xC#eRlQBe(kMiwRBg;fI;1WWW0-65fJk=T-k{?9tunL43^c&wC-!=_T%%EtWAJ;aGf|NF}K$*|?-cXxwXxWQg_rxUp?SJ>=q|Uv(@9*#B%8jsxZsoyXtAl3St)r)XXw|WCu3K8w zdt?6bivR79h;C%`=y?0#a{ls(jAKmv%pbOnhMQzQytK5GWG?Bjtjvfwr-C^D$Q$C0 zZRf;o|JqRg@QS{EW!ZgX=;-L%+uPXK*w@$B-QC^x_V(G?+5i9lA^8La004ggEC2ui z07(E106+)-fPaF5AYfO6h>3-ViH(bmjSdqBkcpC%kW)HGG#nc%m71KMpqZPUpOp~< ztOEcNs;pS9e1ktGcVQ`3JXs_fc1==(x4FB$zrn+Q#k#z{z`}wF1pxv93`hV80^P8G z3IWyu27Lnw))e1rWQjH*jqL95iSmf=jS=620tt-;`vg%?0BJ@K43!WWM3_*}!iIt# zFdzu=0RexBfP64g1OgohQB=SQf=DArk03>o9AvWN$B-itU8sPiK?4If2MmWq2PLCBdhIG6}> z3|TT|%a}F);T(B#<;$4`1vo%}fCUQ-EVyP+L64xX3|i}M&EUZvK}p`E84^bcl{Q2g z1s`7gc=ANci5o}Ws6qe$*Z~}vfH+Zw0@<;1N91ON2PidKm^s0wQTg-f*SAmf9=&?@ zkq{U-@Bn~;0tn=1fCCr!SHJ>@$Wa0sF8q-L7dv>-h=L3{2%&_DP}tyu5jOIG022f_ UfB*$h(8vV=_#q;R7zF|VJFmCidjJ3c literal 0 HcmV?d00001 diff --git a/src/common/assets/images/rank3dbf8eb1a72e7.gif b/src/common/assets/images/rank3dbf8eb1a72e7.gif new file mode 100644 index 0000000000000000000000000000000000000000..64d8f29673326a090371735557325997306696f3 GIT binary patch literal 856 zcmV-e1E>5)Nk%w1VMzcD0QP+V?d|RJ^Yj1OQR3p_?(Xj6(U^cW2+<-`?Kdo|1^_>gw{vTK@8hn|g4+ePXU#TIsN?{>(S~;c};fIREX9 z^~-+Pl7|2L%8z|^=fAqEgJ$B6ZRohTj(TOrfIHhJG<-uUVmwMEIUEHi%<;soz+)=}QVgJb({@zf-rc&8`WaF@t z_vED8t)u_zmHf;f#ED3hWGd2i)q7+9`s4lJaR2R)|HvD) zbXVER#=Nw&{_l$Z@QU~3)2DrC_Qyg0$QtJ6=Ire3<>lq@@bK&F>)P7d^78WF;Nb7? z@7&zn3-ViH(bmj)stlZf|RoC?*VB7-%h+nw*}Xo1LGKnWdwU zbOZ!)1OR-4FA7dvMo=C|VJBG?R)V#+xx2l;!F|KHy1c%?!nVxD&&dx10|x^JcmxjF zadUz<3yE4EjpXL&iRy^w>E-Y2hy~(^aSxCkW)zc%{QUhB6mTHHeg^xf3E-en5g;y- z2uL7+NeT@l5Iu}IvEs#ygEmT}Xc41Eh$B6k9K=Qqfi?!(zy#nxpCBF_j;LthLkEo- zjd1GZ=@V!op*ws244N}((MCe#2&wbnz#1WRAmNB|CE?bt2ETgcnlMj<0{=if=>o%` zTDESr*R~z_cJ4m_5$+5~q=d+iA!WWu*+6Cjf+jWu_5B-oaN)y=`z!`5n6P2Qiv3b{ zd^xgJH~~V74gg2Z9zio?Oi2S~36?4l8l_&{`gQC?vst@_EnBs2+l}-T06?7ho4tcB z1o5(BhlC6)#xzpS+&OgViKsV!9)0@q?bjQ*iD1AD8vq6h2tg#GM2{SO#Dt)7rcwL% i@#oi1bRWKa`u4f!pMH(7F@PNr^g+M@1vJ!0AOJfF<=RUC literal 0 HcmV?d00001 diff --git a/src/common/assets/images/rank3dbf8edf15093.gif b/src/common/assets/images/rank3dbf8edf15093.gif new file mode 100644 index 0000000000000000000000000000000000000000..704398e896f9b1406e07ec0ceb8b7f89cdef35fa GIT binary patch literal 789 zcmZ?wbhEHb^km>=_!iIb|5o6>y3~IkyZ&6T{eLUq-@SlCH7R%2ME(2J`R}~d)#~KK zwTb`Ucg>sB@$ZcJ>s^8WPe||Sj@;Q4FeOFrW_Qf72FE{Vnr2@=9j1MuT8o*&+YBn z^qaLQFLvx$*j#aU_VjIiZ3m}Ub>yYo%ZQnspK+wq-9ZSU;u?(J)v&^2j- z2(uC=pF_mt=`&}~oi=0EoOw$YE?=;$DcIJBOWH)s$&iiFGi2@hjhnY_-?@9krY+lc z?22D^c;B&uC-)rLf4nImsM9aD_v-bVowqw~+`9JQZpZ!RhrKc`8k0L-zkS#A;nU|g zU*o@Y271{WGq5m-R2VK|RjT{Pz@?H=AaJOjkzLH@2LGc&oqXC_Q*M0d?iXSYQkd9~ z*wOAL@7$+TX%y%+QN?!=3+LpgK2r^&)v6X9<+ht=_nPtV&B+-79#$1=ZUpJSytK?~ z=BZ+>tFl*JxJ@Jk6%M;iljRW*;Vg0qxVAQSf17Odx6_g9;))J-sb+_1$80UWz0X&B z`dS6C7@dg52IV6yY`qNJYB>^xN=KWy<^5zVijq%tt6GbtB%SPK*IRd`qhL|s^YaVc zr~8#iZOOQ_%yxH}tn}B{SDTDNc3gPK%_9)%VRGs0ZS#VMogLr*$=3XM_w@K&@$^0$ H0S0RT(G+NM literal 0 HcmV?d00001 diff --git a/src/common/assets/images/rank3dbf8ee8681cd.gif b/src/common/assets/images/rank3dbf8ee8681cd.gif new file mode 100644 index 0000000000000000000000000000000000000000..95428a8b96f24e07c3fc77cfe68812bf7998de9b GIT binary patch literal 779 zcmZ?wbhEHb^km>=_!i9Y_vNGicTRk}cH3%z@ir~(MW*}j6q^O*O@EWE?j(0y zNp4-ASAI8U^4BJISR&j8$8R_W3rwe!{7jlKUrAW8G;#fK+XZhi39uphTx_q7Du+`j?UKh z&ff0czP1TnlO|ZIn`oNqc}$)@bN1Y6GiJ@1w`Ae+1hv>whWQ@sNm4mq!u$n z@TmJF9tAU#OD8TWdra)~DElK(^yJu7_1I}CokoHz>{1`@o{7v~?l;H2(n-sKk)gZF zrB_L}DkSdGvUl^;Hho;k$i%|ADXw+_bC<%Zu#H)+2d=&r*$}>2?Z&OI*;ltDXPn-} zyL#H%NN&Fdk(r=}dHdMf=xqh}k5=;k Jm*rrv1^^~_L`?ty literal 0 HcmV?d00001 diff --git a/src/common/assets/images/rank3e632f95e81ca.gif b/src/common/assets/images/rank3e632f95e81ca.gif new file mode 100644 index 0000000000000000000000000000000000000000..224fbaaa5c0f968fb105353d0e15ede8c3634735 GIT binary patch literal 475 zcmV<10VMuMNk%w1VMzcD0Q4UK_V)Jm_4V}h^z-xc^78WW@$v8P@9ysI?d|RC?Ck67 z>+0(2>FMd{=;-I?=jP_-<>lq%cU3-l=!2?hupIPif75fcIuB;Wd#h)y! z>nN*~acOw({w~DA-Ne5k zW2S)oL!}>_K7QhR J+g6#u8UXBwP#gdN literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4d4e4c4f2.gif b/src/common/assets/images/smil3dbd4d4e4c4f2.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee53c7d186c7113f84aaa0c12d1a9b6d4567aa42 GIT binary patch literal 204 zcmZ?wbhEHbFp<&)wLfCdgn70NsH>R{#J2 literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4d6422f04.gif b/src/common/assets/images/smil3dbd4d6422f04.gif new file mode 100644 index 0000000000000000000000000000000000000000..9a75a92b33fc6aeb42ce95b0dc293089925d2681 GIT binary patch literal 174 zcmZ?wbhEHbk^W_CtmW{!ey zW_oFAj*dcvzkfimf^%t7s)AEdVsT~;gW^vXRt5%k1|5(lkbw@&eif^(?e%F%>e|Z0 zlhijeL^My(oS4DpgY&^ Zev$gu%th963>Qx8O0E9lJduIH8UTjBLEr!Y literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4d75edb5e.gif b/src/common/assets/images/smil3dbd4d75edb5e.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1baee2b73b59b56adeb7bfc88660a8de77e94b1 GIT binary patch literal 204 zcmZ?wbhEHbTqjKs_w1>el{($pLsg$RHDfM5mZ(xg-cr=rB-%p3;ApDe5l3_J`v zAZ;Lv99TjocuHo?6=^(cZOAAr<8++U*@Kt);V$QeLEcRn(QEoDcK)0nknllR!n;MJ xEor8%_SVCSPkB^4)Ta2P{GMyZa`QwA7vD)4*N79Jaz$=s9dI!3P#0vd1^`?kNjCrh literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4d8676346.gif b/src/common/assets/images/smil3dbd4d8676346.gif new file mode 100644 index 0000000000000000000000000000000000000000..5777f687dd2a7c9c97ae4e8f973770c0ba509053 GIT binary patch literal 176 zcmZ?wbhEHbY42nNlSQ!}D8FWBeKn6N62UM)Ow%3Q@QHF5hjN}H* zgb0aSPHY)gQ=VOkcztYVQbx*c%{PDKP6!-lPBIcuW8$6Qyr98OS?03kDz~Y=D@v#2 X@Gvzko1uP{Q^roLc}o|gFoQJ!@8~}@ literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4d99c6eaa.gif b/src/common/assets/images/smil3dbd4d99c6eaa.gif new file mode 100644 index 0000000000000000000000000000000000000000..87a792e89feed8fc48b155565ad06d33e12b61ae GIT binary patch literal 207 zcmZ?wbhEHbTqjKs_w1>el{($pLsg$RHDfM5mZ(xg-cr=rB-%p3;ApDe5l3_J`v zAZ;Lv99Y69cuHo?6=^(cZOAAr6Lp+d(UiyKHlM4PE@u!^fz>po>&){55*U7nvNADo zId42ML-f|ehAK88_9gxkgs++%lUFn|n%U%R>~1KwPUM8#ZtIm2@7O-6FfmvI03ESJ Ak^lez literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4daabd491.gif b/src/common/assets/images/smil3dbd4daabd491.gif new file mode 100644 index 0000000000000000000000000000000000000000..95a63f2d6ae0b68ec902399c3dd2089ce07db543 GIT binary patch literal 170 zcmZ?wbhEHb;Wd#h)y!3=HfHIv_nD109&XDppD8a`~Zt<8 literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4dbc14f3f.gif b/src/common/assets/images/smil3dbd4dbc14f3f.gif new file mode 100644 index 0000000000000000000000000000000000000000..77c71c07be59af34beca0c77f39fa48450c37fb4 GIT binary patch literal 210 zcmZ?wbhEHbgxLc6$23b2ZD19|4%af-@@>3F2nzSlmGt}{{R2@|NpQ5 zKLsg(0L6cbzM0t>iJ3VHzM1KzsX00d5&r%G!3xf$NvR4>MTy0kISh(FSy&kuco}p+ zdO#LAutaU}gxLc6$23bKgaNIF2n!7!vD80{0DM@;NRr`CxMLP|FjsU zO`B$HZ2T{m`TzgdAk{Y z42nNlSQ!`u8FWC#f*j_+ny0|vvLs{D#7LG#g$-|4OE@sA9Od4AFkm|Kd~XH`0k@Ux z3pZ%2iEupR+#)O!v+;FKh)h+ioyaK_q2&^4CzK|B=)BON`e3KF9OGFDp4B_lquALE i8kwS98TqUY_-bPunK&j+WODORWni1hR<5DQU=09d9aH20 literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4ddd6835f.gif b/src/common/assets/images/smil3dbd4ddd6835f.gif new file mode 100644 index 0000000000000000000000000000000000000000..01b5a602484a21464d341220b76478fc7f9ddfb4 GIT binary patch literal 202 zcmZ?wbhEHbY42nNlSQ!{N7<52dK^8f%1PORnX3Y&@ zNw$_a(kLTcE}^CobmYN4myU^UnGK&Z7VlA9v3Od7hJ^@M`@yVh2Mx0KT`0QpdS{Ay h9Bb%L&z+$mfm&}QCmv{?5aIJo<5k2PrA`J0YXCI9L-YUu literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4df1944ee.gif b/src/common/assets/images/smil3dbd4df1944ee.gif new file mode 100644 index 0000000000000000000000000000000000000000..49697c5836b663192aeb9625e1586f6c02fb26be GIT binary patch literal 678 zcmZ?wbhEHb*M`@asCm_c;uIPci)3%;4(k%D}+z{}sdUjEw)=xBr_lEGr{}g>QvojJia}<0t(@RrxbQB`| z{R4s(oJ*5Z6`YC^i!*Z=6o0a?iU1YsfD8e-)qyotL7^)+vM)v1)BkDMxm|t-js)cU zxtd7+Js`it-AP8OH$257Nk!8_e2dV;3u==*xV;K(6l_FJx`<5g;bB{EV|k}&s_f>u zJ^L4(7CQX8p?bBdc0#QlzmPyjxP6NrpHohRk+X{;*k&#U9tIso21W*6AY@?io#46c zf@Si#sIDK(hLLB|jTV+nc{WpV-hopJg%y_~`3@%XG)#LS&cVUKx%gy*iij|mQ#ONd z2M0^D4-G#6m>0b_;>)%Af23QQ*s z8eFuP<{P|M&}7zuZ03z8u6&y-w~ou7quC&4QM9g7qK#5t+|!e59Bd}td(1V_!$!_S ipQ-JH%7pfSCl1~&f*I!pryqR$W0%*HueV$k8LR<8EC4|O literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4e02c5440.gif b/src/common/assets/images/smil3dbd4e02c5440.gif new file mode 100644 index 0000000000000000000000000000000000000000..004261bd7ff563a35837e8009b80ef0d9a2029b4 GIT binary patch literal 263 zcmZ?wbhEHbd~CZ#Gk6(tsD<}fJ!WMO4z5Mj^(nFw;218cm3YF9vH-xG&5r(OwpFa=InV5a|2 z!Z`DfP)ot47ZVv88?#b1CgrU5&=Z>N$kP($mmxFLPeY$YQ{cm{2@MLzOO}NOeOnw+ geDv+r*Ifq_l<(NHHVL*k`6Y37a+a_wDKc0C08ds}VgLXD literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4e1748cc9.gif b/src/common/assets/images/smil3dbd4e1748cc9.gif new file mode 100644 index 0000000000000000000000000000000000000000..50f9984accfae423e00821df1debc9bbfc79aba0 GIT binary patch literal 209 zcmZ?wbhEHb3F2nzSlmGt}{tp7j|Nnpe z|0z%&3Kah-`etTlBxdF)_-3Y;rsn7d~CZ#Gk6(tsD<}fJ!WMO4s;APMO zX#!c~z!JH^Q!;C=NaI;+O-EswSqEkw5C}T#u;+cknk$PGZmF$L?qp)RtS%zKAndWE zVZosQ9h3BBz_d(VUkEmTJ8JaPph?Np-m?PgEat8 C@lb65 literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4e29bbcc7.gif b/src/common/assets/images/smil3dbd4e29bbcc7.gif new file mode 100644 index 0000000000000000000000000000000000000000..4a96ea1baa5a12561f5e74249bf8a56e512f93ee GIT binary patch literal 492 zcmZ?wbhEHbUIrbI z7LY{_Eb$vWBeUj~a4;TtCbv<ZNFNG`%&x~-ghN1jI!qx8vO+NrF0VTVs}xtQ<<3~Rm0OB~N#Xj;I3@;b047&}1^@s6 literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4e398ff7b.gif b/src/common/assets/images/smil3dbd4e398ff7b.gif new file mode 100644 index 0000000000000000000000000000000000000000..15402e7b7c22082d75c6497226300f918e910ae8 GIT binary patch literal 205 zcmZ?wbhEHbTqjKs_w1>el{($pLsg$RHDfM5mZ(xg-cr=rB-%p3;ApDe5l3_J`v zAZ;Lv99TjpcuHo?6=^)XouNh0;NZv7I|f0A9rnBrSaW5P!Y#G+sdZ%w0}~j2h&pQV y9CZo~%V}?3CFwCEph5QKvxgjZEs>nuBD^PET_bJ;)$GrDyCi9a^pVLN4AuaK4ow*V literal 0 HcmV?d00001 diff --git a/src/common/assets/images/smil3dbd4e4c2e742.gif b/src/common/assets/images/smil3dbd4e4c2e742.gif new file mode 100644 index 0000000000000000000000000000000000000000..99368ba26abf66bbf3cad6436aa012f1dadebc6f GIT binary patch literal 4959 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 literal 0 HcmV?d00001 diff --git a/src/common/assets/theme/images/block_title2.gif b/src/common/assets/theme/images/block_title2.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c9cd15663cc6dbbfdcf827e371df13fa329dacc GIT binary patch literal 328 zcmZ?wbhEHb)L<}VIKsei^!Bf_4}KoI^ZWe6pZjn8I(_fg$$P)f-2Zv;5m4~gxd%V* zy!dtE?yn0Ef1bbk^3tQ9+b;iNAO$G?WC1JJ0g)g(8CZ`lQ0_~~oTssKP0s6m1$XR9 za_?8HdtdYZ|A7Ss9y(I}CzceQ%(0qp-csVVHfnuDR`Th$Rr? vg^QOiU%7hi`i+~nZr{0k@BV{_j~+jHdY|Nj+#vM_*v4u}BBFfj4B^ejL5ns|tPJXkcVGc=Xu)`}Y-pvM@3L1#}pI03^e}#OKnp{N!ui`8_4Ky4Lrx HGFSru&2$k# literal 0 HcmV?d00001 diff --git a/src/common/assets/theme/images/header_back.gif b/src/common/assets/theme/images/header_back.gif new file mode 100644 index 0000000000000000000000000000000000000000..209835fcf32d29e1d23c3b91a00aada57c991414 GIT binary patch literal 831 zcmb7YwNZidT8DvCnku9 zlpsc^N7MvF1O+6!agk73Qi*a72Nbb0EIEf%>a_X?eGlK;_wb!dPd#@0N;Dt_J^_GZ z9<#e}cn)`?I5Ll09ln*76^9#RsxX!ss~^HzUU?~e9qhtA9uIfa3(esi&3A?pyDh|@ zDHm)u8|+-v8YfvYggxS=4`WX?-Z}+Fm1EUXjMi(hOwB?t{0&7X%;r_UAH#9K-;d)s z48tgjn$70l1o0K|-2`!hAb|g8?{dJuDCw{NJ^>pDO~tLWqzIZ;AaRu?^Txq@q~4Ts zpL^~b-U`*lxuuzhT1;1&51xc6Y>RR$S2%UCUHQ=DX(pFfl*d*-qCBpNjic646KV7Y zMq}bdW;2t;ZfSbPX}-i`KW{k1=eBmzbA^na-fn>?PehXr401aaFFM41s=N!F(VRBf z+w7*7x~>tUzH$7W`Qt?Uq{Z;%tM#>d#sb?BvI)^Tvp{zTI_vrVW66u*zMso0tNvfV z31D4NWSXe$RaM}&1NmCf^Vg3<_LDeiV*Xj`=EG%Ht@y?Jx|o#O$aIN7N8gzv%-2cU z4b1H&dQN(Ohmjq6$8FX1cbW*!*22JT+)E>6SzxKHmx7% zw)AWot&Pf%^?VTpnuP@hS?`oI%&zBV48EL}NBnS48wUGq%AmEu(V21)tceUuEF6=I zkvCEMGFmeg5~nu$@Qs-b$n!6Le9Xw4dyp;Pj^3p2*y zL61#S6&yoW%F&t~jKrc3O2v|64?lxPRt;gUaLEnZ2i36e+s099%z3qPc@Z#o7n#(m zRo^0F;GN=?|62XIv|uxhj1c}c0r60IKzJ!s5f}$TmBB|Ls465i9B<@0Jr#B=x=x4&O vI~vmBx*YYPxsanVJ2k<{BqtX;n=W7LaKFm0fM``%P!91?qq=l7MDPPV8PuXK^AwHKya6^z~TfCPH;&` ze(wEWy{dPnYG%4m_vvq@TD~)V=HJr4O#lH%8K?|EK?MNpo)5sk69A#2x2>~300n>! z006X~v(5nca&~Su_5i!y=Ny!OtAKC->i-Jb^Bo%c^BD~t1N}dOfr;^7!NkPEdVz(7 ziH(hegN^<2{|X8k8X5*V1~w)pHXbfEF5WBrXL@O$%{90q}H%x{?s&mgHU;0MgcPH!iE&RJ{tva zIQf=GSkVBJ;IG+YJD~_=+a|B{w}j6IQPI&bFrVKC769!T6#x~D5dGO2#(GWRev-afdD36c_H3SQTr~D?E0AHOAejEG0A8X!S0O|r1jqo|bb{X3U#BT1HzX+f zb!^o>#)DKvTF!rM!OVaB%@-B)O8W=Unu5*Tm}2TIK3U#YFwoY>@rk!aqmR2YR*3y1 zMUXxY`s36D9YUZXZ?w<7Wk}Jb8(hK@(q$I@0h|Ik=Fuixvbt;#>jyZ{wky|05-o;# z`r5^Z%KGc;K|{-^DY1=)PoMQZoIS8E(AJmk@TU|xbHyZ=UhsY9tkdPo_weF{2G#&W zW;Jx5Dy=k|K!K!nPX#OhlkvsX%rNKU59W^8T#;V1LlPYq8U3HrIjG9%>>6yxRPRj} zzXctOpRrjBI_CCSwr&)rZL^*0AXy%>x0xq`F>P%k^RxQH^d`GC&!tyWV>F^qx70(j zd0EstNPfr9l?n;vMAiREIV=5J_+#RJ-hTT;U2devK>h<9Vwa!%SoF!1(CYk_g6L>J z6cnpjI4|3;=}EmYJFA~_{dp0nI15XIJBN7VOr-?AmqTm%TjOeR(rBtoOIO)59?a~? zb>rdyrby(uc%NcxQR^`xyicbF^+cCA*?(O*OArP(06P$^TC7+0IKx&~nVXA%fJB{Fc4=+7&84nC-QT=rYCn(C(}td#y?8;!jgmFrx+cK&(W}^w3s)IE*|iVH0?Lh93cgF$f$4L zr;WsKa5~7Ad|bdbjLvu(1=jym#QE(b3;lfw!~%aM^dP} zjJ@F;BfLz&Vyuwg%=puAM0Xnj{!Nj?ej+t)nyAy?x9eILB!j+~dnCg_apGaL?8~e& z(P}oVdViF>ozRD{rn3B5zS|b)A#}$|breaxQ});c{Fr)EP;H>FMdTx|G87gTOe;`z z@#0+TuR^>*aI2O6=-u#FJ%N$kj4zKZ0m|~!z+C=n7k?jG=*i_%1nm&xXySQcEz|e3 z^Nn0}ik(YvD~p%)zU*ZH5Y8IAw3~r7j`B-%;Uo6u(eGrk>&5-?z`wu^WPn-)j%K13 zt)wa9tl)TD&wG4J}Ne%+3N%d2eW(tJa?%x?G zGt4(4*C{4U3n;}s65jmW{Rfy}Z$7>KsXC<@{Mq{h>GaG|PaZrzJkN7M>k*utZ_l7H za3#*bS2Cfh9mB858GCCvk$6_A`KfOZOAlYrBz_~uYaxw$%QD5nlY_6-;HdeduRPAU zH2qI{o|(SNFkMwrlS|1){!4z+DcRzAU1??s%9_R(W~3xFbJ>=_hL(ST>-6uYE{4Rg zvJMZTfbqBg06YHxzGI^FZs292BiqwXY={&{=CygxXEt4p25HV`$Zk`h8U2~FfG}x;pBV%TnTPhqSqo|c5J1K?P@5Am_+wMuN zXOrHUZ&nHa)Gl|6InngrYeR0NLe<)SP2PO`&`_RGnnP6T5;|3m9g(;8rxaDsU>};J zPo&oOSu(EwQCsVcT#QUlosz>Lzi-r(=01tTZ8u3&>)n%IIj@Kb?5aOeWi(6Nq^;PXUt&!b4 zjbpLeKm~aQ&d_-aF`>|>h9hEEm7`wpCk11Y-6c^<}*@b~(LMb0qLN$0L zK8Lw?lRmx=R;xcs2Lv?7i27=|{{w6yyzKV#@8b8ioAb?jrYK+h13Vnl-3u0BU8%a| zP7K-p**M=F{0Df7E!fUH{V~%ga=tn-6d>gMGb0xG4{(NiN0N{A4kL3A@e)zX-aT-Yot%o0`2j=p_2eVlH1Dz{NFL8L!%Jm*Nznxv%=q)_zw`x^kIZ& zZO&UFC$&jAezd4WOzH3G4WwI3(6eOCp z%wjBZ-%Vubt1Vze)E@>wJG<{~GSYZ@aoy1knbvzuk@^d$l@`%faF}t%MNXm&g^Bk` zYD3C+I8ys4<2xw00xOELl548#dOj)Z!K+P`6iiD+IhR$|;5v-StxY06ad5%iWkh;Y zu#$6F?Kfyeni~+J5|h)MSHnh5nKm$D3-c^28=bZ<&33-4i6yC#g>`!nE251;`l||? zyIa4bKq`x+%cMlNM63%desK*B+JE`l+UP3pdSE1@uSg#f3(TF7;|@)xXN2G>Kdb=qkW-2P^; zJ#E)k8@~BAh7(Dwn1Rr<@WY%MUm=;j8~n7H9g1-$XgA1iiX)NT_JkQHVFz*>eH&D- z#bHv^a+tE1RF<6ZU16FfGpq{B(Hq~5hlRQ5wWkKd(0vWRHppV<#0=Mn(A0}=EjqG# zM5;7-95*cR;NsgGA1$?A69w%z$#jebP-zxH$CsHYV63e zzf8aa-^gg1Ey{eImKMv@9?qJUBuYzK$F#C$S#FrK&lIWrV1@wGa(n9Ul-R9|*=Nl0 zGNG$*eu1}yxq<@XN2FI;T7Gn&b0uw(npVAD)&R_x?L2n9Y&A15m>u$BXb`p9(w9EVKm#5zmbJW187;Cf#=slrD)$@fd@4zDk%M=*2Xyto*tvW9X}X)Jjc9A{AOCtw#ay6O#>F;+l2ozapnVm5k{$Oa!O9x$MOVo|R$rYiNk>~A zJZ{Ns!tO-2h0~RrLej3abvr9%j@XP#K3*$Evai7iZ0yI@zby_W`-BdDdwQYnoLRW>sL6^h z#vFv!WDhucd}oy2`Q*Rx+ESXnF0>JgFYOwB^rYdtYG1 z8ewj+_~;zhwFY^cvD@|AJPub^i@m~4b7u$GJK*Y~DA^2GwKVFWC*ly_R}luww+TX_fO*b6nYr`8A^b&65+E2x;lP zjbClG0jDo`7*af*xsfn;q1cMU*bYX1bSAu{EMJ89q{b}xIcHatMi@@bWW{ChY;jh% zpIC2qZb>3jVW$9&(p8r!+(hb3t}aV#Gpf&m6LXL017zIN^lG1A3>~g8VX5Nyqp1^U z>Y+Y8e)LWVSahN>IyweHG{L~8mZ3@~B-5g92;rR#aT5g@8JK@D^@OX4->*OVnW5lcfPRGIxVV?r>YRB^N?R(TLP@^O-0Y?rZ@G;$E-;oo)K?0 zRUMt9df=vtw>R?lN7EMoJyOl3NXer?ZYiEhA+o4<4H6`!c0DVKD*1+yKlH10T|^hT zj-DB@Q+%_5b$p@^76zkOwJ$kWcy`jr)Sz;Vwrwp=G!an`BAwRE-;m8!1ovC<8#sQ# z`i70Fz6!&qbwkSu;C=I=2d*>}Y13`j{&7t9qjTs?ga%J(tr6nkRc^{R{9{*EO3AWM z`_&2aZk+kVMSp5xspXkm))g;;SO)Fc9*5qaUoO1Mf?m}H*xe=YFn`f5zY^kcx>M1X zL1WU1j!5BV#?{3!h4ypf1XM!*(J(}CmbaHlo zP@S4F<|Zh&gTwTZ1%+O@Fy197My?}W<-X*k2&3o{^o9IW>b!v{$sAQ6p}T9X7~5yG z0o(!ib6r=V1x6Ca-i!6|X%`k|ei?$Rj0PP^=TbXP63=Kvy|ItEfuQ~ny~fhlXSzaS9svG3_ScgqyIibd>~C&Q%_cRhoF%UPa3 zmnL6-(#-*>h5IdnR5#_e%*?|PxKRQRU&#$SJL1}Gdxv^BP7^*@Y+AiDeoUZ?;vBVm z^C~(8bUw*z?9FD_6~(OKvCQeJ_DX^{myn5(J-wZ9 zs}M&%@uUDNKR_^0QXTapx8!2p(@CvAY`F6CX=F_3KLCHpHh&7Go_eYqi`H1aO~wYU zupCgB>DE9n-oANI6xk6-wy@WivIc>^m|7Fz*tBaOHP_8M zbwd{u4gOR|(ixF4Uzg&-sn3nF&a%0~E`xHcKQ0c#OdpfHpgs4(8^3rh9i{1!fFhqI-<$H4zGi6t}$pCG~H-%6Nk(CHACCu>rWnQVy|326*J>^fFn1*wj%4Cv-^J{cgY zBGz&)c&VWKf0T%156;eoIIM_zzHDY4uA_T#Rj5wCOpBl&$e;>&#AY%rr`pTkViL;O!a|lgr?b@$9o-fG zTusx4)Y*3f9Y-QUfzX4MoM=g7#=qU@C|GC|r7EIQ<*xFxzm>7dC0)qO7gb!NTOcvgny zvZNM8P@WL<@EbdXU3MW$siLI9WFd=MOqV4jhKT5EH#@|GM;=sk-K=ETt(OMEnbc*8 zNGj37Wmnw0Qg*QAi3>S0vbP=)S53mJ4Ln}8X^DYIE_+yzI!fn6QTuaulQQm5%-}Lo z5YuIatn3xweDgghzf%n-)Q=2d>6L?_JEYywk;aZ}JBnn@g@JkV@Y=Z0X~UGhH_XJt zQq48I`ZttJ4;!&wdg={$dJ}j0lE)`TNI?pIetIJwtp=wl$<-gN!^>mnAURg;yrj&- zBBkpccBM7M6VTl>4VE-Bjm0*ZhiCeEdxdbh`|AhRAh#|S5)5f*n(V$`OmMOmtv|13 z8K38y8jVMZ@;<&D%Z$}BY(l!i(N`lpk~T&Uh18~?6V@-2A#pLGIW3e4K64J&JKS5F zs`nEv41EbOj5h2yN9HqDwFnfa+hYb#mfC@$$}cnWLIu?yKMwL&>oL=2^UcG(MXP>; zSfbGM_EvY+N)HED1Ot(4_+&n3$-}jVzd-@kE7&;wqsVbJPHuATl!0)-whD_g(VdkG zKBER}wtbJZI&PYAR%n@5-jrQDQ}m2-|JTxszq&JmR|*knDLkI5!>v9vjh=?XE6wbg zbB!t}3|F*9tlYs0W)f-6CeRFS;m_l?SqEcV2-MeUSVTuU1MwXRb6V@wKdl5*Xft8d zbEiEEQwL`4UCFy}E|$1?@z9I9JFugt3S}u#sSp`IM~qcxf+kxDQw6>0r*4?8%p`M$ z)Z6y$7QBLJHTvMv9d#MfYjVds5jSS*?a9PcHc^LDhRCPdBCSRo|BoAZ-f@9-+jDLS zG!wba2@-5oGHHoHfy8P^mI}_{wAD}Q?~Gq|#`UR7W@t25;18*d(F1q}lb~i#H*py- zC(rj2O|kwWm%^{t&;m)7uSN1Q;q;DI#?-a~uz+kx+;v$942dXUXU9Z>KJA!e4%Abe zzTACCP-zOATt7D^oiMsEu=^n7-^PKKH90YxRYR5h^3WX2$2QK~!i-!t@e2ztizfd$ zT%jhJF+K67iJPG<|Ixgwmi(cQL^U(y$!HN2-+a>OLUWprIt47X>jM!U>ixP=y}h6Xwrc)5A; z)8H3Z#k7b{Zd)Xb`7h)0ge1*sX@hzK_G&pNXdy~#MrX>Zvi?k^J}rZ?p)~$PJ5|B* zUxjT&KlteVbo0fjKGlukh=`9OP8m>@-XLh8=#>OwZ+Bg>#B*>J%$hJIJk@w)Fm~^V zA+%_1)@n4~##&&195;Jsi&;n3j0vS;E1#?ighB0&pIlB&FkJ~w@79y^e= zC@%Y*3VRTX&58z~_f9*H8W*PBm+X~qU) z5?r<){fh>@hp?f0&=W2jsjpEZ7GL(6zn8!@r;eAb*BilVYG~*jFdVydwralDvz_9$ z{H)rBb6V4;JVL-Vwp@#Lvd`t^T9(P|Kv124tI!aicOF+^2px%{4KI-WGZ0}#Fm`r> zk6ZY$0&^YVqom{)gv~>C?Eg|QGYL+#DPDg=2#`HBj9v{U{#h$Nt2^4sAI%mL$ zljr4VX7R4cp4CH+8rv|)Vd?Sx44?1eW*bkC>;czD>?@d#Me;mC0KAf$$*iVyV*2*U zd@b-e__xb}3cRD%WX_W_*Yrp}Rp4>UPu;fBJb8@15h0o+ZJE(<(pvB}N7kGRxo@;m z&fL8w`lYapxO6QpOG|0geu$ohE(KTzHRc9Rqj_`v>|8K z4-siR{XdvtzQU77P88f>$V-EvFL{P`cX?y=C&uawX>fyNWL3m!yPkcC@K@rcZS$Db z$iVSlbz!j8_GrTAC17Re0Vz^I@Hm2$aPDx334Eon_hnXeF({@Ei;_5O2}4MfD=b-(^N_gzHd)M2@3iE-nIqYS8#CcNi7<5o zSL#GkZL?cl_PkqK#Qx0n4%hPhbOoIXG&mz72i$?(txHfx^O7Nmo_P32QT3U`>10x5 zGs~%jQq>+$S_#d*Epc2TbtA(_Xma{idxR*Q%L%(tOG%}E^3+Z(+qj^#+0GS{K~~hE z0)KmFY0~aZb-a<}S(~)>g5;6kPK)Jk6pWH(#6#MxZHP@V>NL5Om37ND z|7;!4MBzA14Y^wnpwXeJEADTF-ENgbH(gxvEO=iT<4UvJ=_-fGZJd0L@NbGzE9UI; zri966ytEcL`=;2h2j`YG`^Z23_=09TKQqW5hMf;wLy(kuo7O7fC#p+u^kJV@s1zKV zq8^8aZ(h_fZwNmyBxT}69BkyTf3ZcQR(cgywt928uohf0dOVeuhRmF2z)ns=sE7aI zd8;$BYAq$Kn@A+L?F20lAP#6CqS@37oTwQr715az10O;CNiTPNMHCF3#}2+Puk#{P zM~f6R_8BXjKN)f;MVTK42|QK$Ez**o-P-%{+(vb zmF@Zm_iPVlIi894#&XUk0iABc{lhIbYoDRS^l?vO2@6rI0zjseM2<$b8)60JzWuGe zUn%Ax*Bp|0&aUR+NnEZeT*Ecq#saEI4h@WL2TAw&(P9;W#GUPBc0%#ywFPS0EbxHSL{}O-jojH)kU$-vt|&g> zZ_Y{U(^!0KNxOJ#Vn;M?Wxo@`Ss&+Q+Fw90l4_j4Y+71v_VbYxNEJE+@WVIb&>i-x zwJLYtxzInSKL7z|&^GIWBPMoBq$F0AMeF(?Af;NBTPa2r}Z*H${b zIvjGmgP5&Zbz`uI>Qb`KoF-iua6eeZK$; z`(vdXvtz^OjLpK!6d20K55Gz4OQH)KWZIE*o%CfSLSYPGXvODO7Dx9@h5}Voi7=3g zPP=L5E|2-&Jzn9QEb?5JjDfQe-5mX0lNBN~E;csLfkss5$)A>=^DMNubCygt+QW!u z;7XLX0^&aNlGxB{0A%!_N-71fs-=T>u!?9*<$5vY-LtZ&9s!LrjdG5@<6CIyau-wy z0~z;gQ%o6Nio?E`VgB&GBS-&s!`An@UBGBmo`D&kfW$wfNCL~=)5cd>A=G@KJI@n~ zcbCXU9~X~wDMkxCSqPEEu9p;rRjKGtv|xaejd>gTD~nxO9SN=yL@#NRrIZlcQboCc zYXXFaU!Hs^NAaI}>hSK9DS>n0#SQN!?@uYbK@IeAej!MO;i>32ABO+og)`J|96k_QPhY_<18y?b{*WNEt;YmH`rRhX|aa^ z^v!pt8iN9FLRdZHh^}oU#epeslN(EX`-~dxu+K#nVG7PURM3>}Nz&V1lSYJ=pS?wg z;9T>8NzMniCxW;+VOr=pGnH+c*gIr=l29G;vPkC0qCe@+PEE@vo$^h5;d1I5UZ-P_ zZh?H!+e%r~6*l7j|2Qk@hr~x;IZ$Jmcu<_ValA?Fk7;WkP2Mg9F02C;TP$L8h{Hy4 z{{haQeVTV9pEfyrOUpuMXOP!BLev7A|9_)X;_U=M{ys=(Jw2MZ<+9!!9KH$7VLQb<(4|9 z4yJB{d4s%%@q8%*6*Sxo3rR$%BaY(RZoPqHq6=OPrde62wUj?x_pFO~`6DHLn_SwD z313V1nIxjh{ynOqcHsA-)Hf=}KLIBoAAJM4;IIcVVms!g!ncwhMX1=+uUeMa*J{#+ zznklsK=&OpIjE;6Y#ZAR`NVsiJZKp)lD5z*=o79~t&T({TWwcz5LLHobCXjqIvi10 z)dxA#%W4!e5Pn8Kn)YhA>bx>04`EE~RCQ&mk^#A&u)h`Useiv}oGl$wAEkI}WVHWvD;7@t9>`i)s$L!AEfAIOE>Smret~=amOo#YQAi@Kdujj_P#j2y=%)ky< zD<|NvJ=u<7EYaaN7`4MNpgY1UyjU7DVKE(uo_8s=FWVmfm4@Q4o=Ct2*$gV64m_T^ zTNI4^O2_L>?s+%@x;*%Cjp&ZKdGtl*Byg`le(Znee<_8LOu>Ky9>Y;RM2E3NIJ=Tf z67ZYMUXyZ2|8TeC=FK>UFloErUKl7n;eYL<8j~C4p#208+e=IFBOHEOtmHix$H4Ut z)So-}xh_&c+`M>QKzoxQ0?oC){8MH-fh$SU9APrNYclft&{gE;C~Kcq0GHIu`*q`j z7kf%5=cUw6Kqyo>+M3wI*wFNI1+6PGvR@RvLLpiEq}$HSTx@FYF{9Y0+&WiX`HQ=G zj+R}~!TXnz$}bchIqcaM(^jhC<*6fyltJ+8)*1w&dZuAStg1;jA^*F0vO2lvW4tyI zsol;+^sf(~`J$>HyA`|NGAt_$Tdr4~^8vb&L1Hn{Nfgmx^->+U8tXczI))P($D%n4 z5Sm6Z5zX|R`d=NnB^EpJQf)jqGOKSW((t3Xsu}8NnB_#M{r{v}Ks4>8$%J`0I5 zodEE_@o~dChIPO==ct?d(4oUC#SkS-?uLeWsT0RGj%c@x63n|(7PAI31E955ozxcR ziOxDdb`51XaP2IN-M*is>13e|L|1h^5V2(+#G9-4RDlTZqiSQQw zEt;?N$&-2WbqbAVsTqGzDY5|bX27CeX#RCbH;0X1AoUqDhg3`;LrU_t@GC|m0@5^A6*B9;xl3|Xtv&%~tsuCVS91~5f}-3n zB#e`XmGl%R6$nYVw*foz{+DHI=cmalhq{Fy=W4MgbyIVQ6b-(bd4;p}C($qqYimJB z%~$KwAnrw-KEi|85Dl5VLUJB9R=aj`gdc7}k?4gGBhN=U6&5*tXw^24*F0%KNZ!aN*y&I7dDH4+~{9d_e0nVC>xn@6t`tf47N_n zFw562TS!^2%5?YubQ$3oS-{hhN_SJD90=Pc=Lqe8X8f!NHsW665D1PRuGN2*f`~VM z#=6WF-_w+j6MH1)qkrVS zloq((UbUCXUnS=B?73>R8u*8v=}t!_ir`|}c-zg3rHrbAr+t()hN6MHJge$yqBhOK z`Gn1_F2_S+SJv2r(kJ|@TH$GZy03KgpuM<0l(LVM$jXg9lDCxg5%}4nhf8Gc9h=$4 zE=6WwUP^WpZkGB2VUbfINZd0me?NDSNT^$NZC*J3vvKKR`L(8kGdVMach~qkLF!O% zKor^)INQ!h2wBnPseTDz#8~d``iq?0*@l?2kV)2ng=I`A0#_Vx>GXLd!&fVu>95~D zWg6l>kH}T)4)Gr!Rbq|`OmP)V3e|n)9t+o^xt!kr-2~3{2jG5hNcG?^7Dc`PxW`aD zU`M!YRcojL>A4(7gV$gd^j)yU+a(Oo+;*JiLerY~G>fRm9|QY4oQ3oH#k-;Qlf2yvz4>q`s&$78+ii zFi}qRt6CNA^=f`?0U{g?AFSh*z%6M=RP>ly5aKXDO)S zEqZvOy-Rucb9j;pqrw|od?OFV2C@AbpVSl8WyuUpY7s_?vs(3}5|xZJ^l&!$MeGMQ zM^B1Wz3&5zp_uZz4jTvY0)<<4c6`iZ57iR|(vBST6>c>uS)H}AG-2h+YtGratE-KK zla&mGLeg4>0o@D6OnZ)_eO7Px%p9;1T2#Q=bHDZzqZYms&zDq4imkSGb}i-NuguDo z&(VrLr123wBr@npycJ!*o>{_KIr{A23EJ_i`Xv1{=$?tRp&JEiq$hB{FHo zy86K-aI|t?LR(Gzq67)x=#`kO=$)%V3MeH|T;(n%xe>=M59&wMX&N(Urj!VwxgH?` zFB2Q}xSdUV3e-y39z5a3PECJ`9*~NTN{Jv+s1e+8VKxQ^smft9wQk8V`50Z+7EB8d zw28}OXh8k}SoQZ|DVu`SynhykZs;n~ON3S2J^4y%Ifr)e#a~9w>u#Hma`6$B&KEEM zFF>KxN_ERdfo4*s86pwR>oMJ4UW%$ZbVcRMhCX3Fo?>aaDVY_X{CTl&Y^No`l>9mr zY(V$i;0t_Onj6n~e7CiC?*IV)+nopYTm8eG!771l#D&Mypkm#|8?mFkOMMQB5m}%c zX@0xQ>>637yGHnF0+F(&unzR5mg301F?lZF+uJMdcv3y<>ow-bu%z60O0*y=KQ>TM zBZf_n{0Zp5sySiJUx`?1U4R(8mp!pdQnuBLLBPNnh+JJi*?WPNPt3qgbB;pocc<`MeGmaOpY{Do;g1`mqVG?QHK z0oY}zar1t&Px(s?j{OPGwvWNSbrz5*x(+c(X<^Pkc?YbXEMn2>z45Fnj)mnzvaC@A zV)z?EE10Ist9&z7Z$s=jOblZnp1b}iW2X9h-D;0EW1E*0`9AwKz4p|mu+>z4We{!; z0fx?+VtuC3^M+2V3N+27P$Nb{;x-8hVO&Bv9S{^l3_5A(53a{g#d6H~IJ?8}#a=j> zOOB2t6=h}zvdvPJuu00Vg3F@!=3qvxKD*}8iCFLX3`%^jC!&~Et}SE7rJ51mWVQ@E zEG#+>%-jNv8?f!H*_7zR=WWZ?yJ+`c6~1GD&uU7nSU(@$%$78k#kBBUU&$-fbwj9ruOh{&41WB3UxKs{HDOG*#B z6{?w?{ayFyGO4(j-H4)(p(VlyQ~#0oyf`>9x<%YYZo?f<{fC+SSS_9IWA97{ZK2qe zSpmd)Msmxx+yhJIGfT)? zz9g7c$Z2?a8R6)CC(~oWXb@?C_PAP2lBHu;6sy>Yio%=q2P_WO!3ogG$by_trzXS1 zcQkot*tMz7YiR4G>WkUuT_nh2F#CRGP|ncV-Iaxi)GubC*bs4+EVX0Hs1FcXR?Bp^ zF+b-lJhL@}zG|kA<@X$gtuN+M-%o?dvjWVPp$tSjHN9}5*`<;MMan%9iDHH?g{0<& zW!1|RLa>TEHUmYZk=yu$j(ujD2~qT|tAyLKv5D%C_uiS+VHe7jf_TeAr;QDDpy0k5 zepju!(y|=1z{=P2r%5Z>Sv!Q=Eb=aZK1;x$8k0=~H*Lr%nS;3W1~a!Q z=lTHr>*7R;l`7EO6h-P`6jDsHN1HA+=SC=1QI+qmT56W5)Mk1BVG+8Naj=cQyy3{7 z*(J)$kRbUp`2bZIgs2bu6K=M6ykMY#CcWZKHMhU|i};QbDoB@8AS0R1{>yc^YZSur znpZD_B2*M2#&MorwuK5d@-1&){qAoS?zh7N9?iG!T+7(`iV9sFt6w4u=N|`5y5X(A@gJ;3 z?JvphsCP)$R%m;`JfK*s$5k2J{u`)i$VB~y1 zZ`M@5{p{H6t)|`U<>=WA$B zrL(<%fujYaT@Z0;aETX~x{lde&Sql@!q3<*jz?V2C9X<+3p723?zV0g^fL~jJL~ARbhOAy7uqb1t zE-tkXOsCnUA`^7kS;iot51Pvwl+0*MRFDHVS!5U-<#y=mAX1XxmQ`6>tEQ`^+pAo7 z2y8LK2vSuBe!T@rZ(Eb&SnN@=jCu?D-JK;k)gZ= z6o=Z(Uk)h8xO}M7^5{(WZbk8&=L2GcdS=Wt=V1zpX)iYuU>K|%Dv{hHfjG;aZz`gW z7GwUz8eK-b4R0$5`qh>%LIZT#SZpk)MgKw7OLSecT_sog+OXY9LQk_vT&R1g?B|!7 zUSvQUajkpDTKLytER9-}{;90(d@w%n)qTVF?J;(ZTu_+X$%hrvSLIwg@l&3%=*S-I zj6@c+l*A{FY0dqBvbFsFVL5kGhSp^^i9B< z?EJVM)n^*lDk>+5TD-zR(G}d(_^_^4?rqo2&~iWK6hTM+qC%ZCiF_}|vEl{n9n`A* zDpUG9im(*hM*i(@HHFvfy0k1i4}d14#kCY*v7YZMSDm)M)z`JNka%!%KJ8maqFVzS zV9Zf2XIoNG5ruht7L(=Po*|9zV!hYQyVsPk+xK8a6PA})(SH{DZ%(W8=K{6D2M5!3 zjRP{Z`B!3{SlF4o9B``Py8Yb^dRPj%OIHEo8@y#7J< z?GMz{lHm$GN{~c6T_gKXxZu%LW*l!o=41a*cWpv$RSLM!w`&9{=Hi0+S!ZHRg4C$S zoDsu(iF~$ODk7@r+VwMHvd7X*%a&1&pY$e=Zv{kh)Nx^qp|U45)iDfFn;`;q@VUSa zHGrO`vpHy{&ZM2j@i8NIO;Tj-r~ilMgy zd^Mip{{Xyyr7a9NRhKfUVor*-->Xok&X=YX6)^O?zrQoI?^>R4N4D~%J12U;p^QdA z4~rj956<(!jzH+}0%S5$DTAfr;7oEw=Zy>eOKVDGfBIJQ3QkN~3%;+ms@Ch)-*gSm z@a$geH5tJ}_%Q(zgY~hI(K$#OijS-{F--E`CzOInPwbGBU4rCx5SB?1_-CYG$A5rF z?%mv|efM8D&V_TIY78wM8r+-lM-Ci3G>b^gq;njZbAsLzjOW`;WfVLA0%bG>^mqH` z?Crw5v3fbaH}msZfTHCV0^!FJ?pI6Zd=<>^pzt{-O!=i_tut!fl)j`@XStxeN1QN{ zo^SwkFfa(M=%Z7#*wg~UU*27;m?G-mWl4CHBz)bg^3xM%88P1}B@A~R_gY;15=ucS zjGg_Z>SoHaU>poXQ@hm&i~645ouupR=a(p>HLgurPFG-0Rj2b^{rD&brIx=pQnUiG?Dgy-_2j2NtKFP^ z>r|Qd)An?wapnC!z(Kp^j-{`(63!Fo^nQNJe|z}i9vCNUuf21>VeRbFxvBfrq2@cz zf7-@B?szKBS!Y-v{mW~7+q$l;@vfG3B4T0*9Q+$OxJk0nW)cA@E8qsU zT%W<3$sN}FZY^gcaWt@6U(IBX`CK`{PQK_LHC#RVdwG%Ikb&$eeagM8L&3p2j(>p0zgcfi{&r0`^HrBRwd^)1<51;|DvSn=Xt!B{Lx(Wd zS+O;SdY^v}GCTcy;#x#_h*wyPE03$0+G0@kb9e$`4(aJitrMKiUz1EA24<3T=#D^R-~;xtmGONGtde{mZjh5wb?}^l{e~b=QHDA9S2!^2MQkw zwXQF;@n(Zkwd;_;>d1gr~jUt##lw} z2A&Qkn%n-ZBY0;uhLp?>MmMQMALN=DMfba<3i?fn>=j1OB=YS}qqtmUn&bl4+Uf3G zW8+0*jrzQw-?cFv)A+4;haY-)IRmBtnU&hHm&qT2RI@-=a@@MdXe?; zhK%q+7=23p55nij8GT5K*YzDBNE*T91mSwS?cdEO%UR5fa+0*ISNQma$lsu}cb4=Q{tV%{{yAzpAyjW&3q!rd@<`k7H2Eg02-2`QG&)dDWx5-9a=Pt!xbzU5{+Y#TCD*Dn<5(Cwsw zIWeVFv8HHIj;)w-EnHDwfz1_fZOS^|#W2cg;_&}1U{vc}s?PW_bu4MecG<#oXskG% zO;h$pcut)kVSZ!+B2uuot-7rnuM0>KW9lNo4E^#FUo4&GBT8IOXiP0FT&TFGCJ1<7 zUc16pHUAn<_{YHhQ5IUQIO1x|mr)4cSfMvzMK`ID6aH~-o+P0rsFi0GO2gSs950R5 zT$zbgL+=bL(!5!SfBi$xgphJrSplu}Va)*}+yAxV|7-6pgW?LlH{k(75+Fzj?gaPX z5-bn`3_iFAXK;59?!nz*a2*)jA-MbCg9LX-uq^-Gt+(FKTU%TEzV)mAa=UN$xmA5z z&v~A6m=+x6NAx`Rgi^vlr!gnOay`uy1sYlD4^{XG zPy&$ajDOyxvT~6mY^|yD{0vXC{Dh<`cHkcw-+|dG)U&U)6CLVCL5;-`SBK2$Q{+&K z`1HZfhhs?NS6Q|;(S&%;)ulRXEtr|@W5b^ADih-aqCKAEC-z-ia0ikDenoh9|0Q0mu9aoZ!wkFMnv0mqN##cwZZDxXPsBirX>1u!new3g<8V;XM&>Iw=*{dM zwpYCtNcIX8#$ulD2M6=ME^oO`1Nl?>W>UhU&&J6G}h#$#T_!Cg)*b9wmfx^jVZ&WF7{3KEJWawJn zg!rLf{{yIG>+=KeZL_g(v%upfrH&rb1~wS^&{QYpmSglweTIFQt6F3c22vib%yjT)}|owX8+@Tp3(OTXgX+x18Lpo zm7t1^iYxo_aoH(lhU*oy*SDU(^7HaJwgy&K@R84Fm4(HfGhJA`71 zwbRAWhh^ewKA(DBNi$Q}oJ2|+UNOH&_m#$H9~f6Cm`d}5d>DSQ@JUSYVx2O!_`Sc% zZ~cn(GnM<=Av?4lc_Fi9rnUs40iNsOdesGXXw?hSO{84n$louyL4mx%GxFgaNu}1v zgq(V(=^sFjRYRJA+oQ2lQDPU5fjB($AqA8KOL|QIS{k*nWO;?~6D|``p+e@v2LD0& zQ)q1~m(`hamQ(fob-8M4epp35njn2xCg4lsuBU6kr!KQKkknB|T~x(q;_*I275#QgS-O8085$MU#o(YD4e#;C%iJoreZyCKea0)ymZ8CjWX&x_`z$)89qh8bxnGTi zVAtb%z_Z;_GF?JNuPK5l+brOJ*rVTn&XHla z;A$>0u;dfce(tcAZQ*Nn=BHh=ZJt4VBC<#NVlb1+gy51A7e%-Uo`+c&PF|j}%5l6@ zm0n%;u^WVh?6B$vA>d#r#%rI?p-B8V7G0e*xAH>~v0K?*NhUi@5j~{RB8Q&PS6xiy zfMl&-;U}g(u>gv3hdxHe9n-i`#p53?VWv+#Nab^`xJ!$C)DRXuZUiP>Qo1hY)atD2 zT1v=LQ#r^WFH}ZVv~bWK4g+^XfphOU3u2hEF=p7;O!zN0l#eE?1n;MZ6P(@-jwWJi z^|yTdxD{NS)F-#b#@Ds>e7_kW%j9pFE> z1xvXFJNTJCIB+s_;d5qsim41h=UkYqWVc1y4C`;)5ObP@teh!Olx!Bm$Q%}r0tZJy z7MdhcbL|{f=7w`BoW898grnEK$jx07_uhQQ}R!`R2QdZK=J{Ea}D+psp+9 zudo(1yS(b>OR(`Od8#^t0n75@IE zy!oNoaCeSVJ<5a+#lAyuWFFTg1va^}c_^CGP5|=8lC;QMW2X)!v1FPO$$hUWBFsF0 zd-%}J`(nwXGA^)@kD>|svQDX_t8z#K+HBO&R5klVlBsPf&ZH9pQloII{g_Blm% zg&$LB~rgxP&dGNr|@ogmVz0N|I z=3oxG%yuOI(VMj%`cwPj4(KZR?ks${>;}un3RB>j?GKTgS+64dQtFRmXj4`=3`kH5 z>~=BO>sS50whIgHo?4@CM(FuopDX#c(fQRok}t7f?qRt(nhW)s49GD1H(aX|ZOE&s zLWQSU5c)=TT^|qmMA7wxQ4?kKK?O~P3cwhCgb7bvX$*PXbVeV4X1~#QGm_De?}jnt ziw0(?=@R;CX)_>Ylo38OimBI+%xf`6$2%PVHAnouvNUiuGzCLMH!Ov*=6+)e!o185 zK%Z8O8Il4X=lNP#WOcGYYpQI}pkgM|ge2^YOrFymRhkB7u2(iQb6b%kD=v)Xo8_Bo zPD163R+#GE8~!qF&W9)}FUP)|(S4Vuve_7Z0zP}d1FP_kTej*+zSN$6eWs%oh#(U$ z5#GCK;|{hZ(VD_gLWX24C*o{ds{bVMC)vw>)))@sUV_y9BK)bSVgPnFDXT%9W|DiR zcBQ>ZoY-q<4b#XEta8{|s#FGr`1}Km`~%2~1P@uP4);zT9@A6r3rm5A8a_79`Y4?) zdwtc^f4h4#*XVrPqU+gN(t??f$?)>;%gCF!tU)E1BES7juHCkO`;JaWo4e!~N_>JV zJ37$SH**sN3$5g2q;sx&{vwksW&!C-9Sf2`=xR|je8LvzsGmIfE!ykmq^ z&8>`+wzsk{<++aGPxP2!*x`TbLjUT%tf{J0dlDxx`YPkgEv1fD~R7f{Yr1u6T;h!<|@ftcM;Sgc*8p_;aOUc5kl2@Jx zMFI&K0%zli#|FtVvzkE1&{dsVPiq8RZ}+j+I;`DP7Gi;oTKvk3#!@%|>+ikI%A|7h z63!h8F`eK$aYq4L*(i^1LsD{0M-pTpGKrZNZy5b-R2RtC59A}(T=EtuX@YpmRq3Cu zn5PT7O3b?t#tH?6Pvt;IZip%td+eV{eK?CVUmD87``By3ceer3$e3V-L*3L!9^TF= z&I{%?zM%{&EA{C`QZU4I5Wd$`w>v!RWyl{zWLAi}DdomPg`121$q}L>;q_tK{#|Si zK!b;nJyM0;?sfCkZADGENJtB|vBfbZZ*(j()9v$R)WoMz zawNyXK_v;$5Eb6~uAawv#`Ck>Vpuysyo8cVl?rBqS*Qwe=j%gjhx_KjZKV@Oj6ZqB zODh5mh!?cer%5E8K*0hJ9C@frdHBbqC5Wa1Xsau<;9G#qeu~;Hg91)+G2~;yt(@6) zO0T5`-#@@N*`e`%ZoaQK<0H+Z^=n?Ts8R#J%!M$6B&2HvkS21yy&hVG;)=oYT#ukH zC`NWErL#7^A5WU*PbZ4jZA9%sdyRgje-a>t-1MZ=y3Q67_22tdUq2zHgW33QF7c8)ve*u7~`B5blgKk+M7v`L9kCV&tL8 znBgOG)qkp)x*r9x@R_@DlVbr|D1%X$E4uV4gQRgn&qjm<(OE&;4jS50X~#`{Z{-xY z;zL)&(SV?z-;)Bn0iRj8dBF~ZevxYPiHfcik#^C`s0dAqdyFIo5E*M~q*{2QFlhaF=HU)SVqfeEL# z?t?D%KN`P~I%dwd=7V_G%YzXrsZjzsC8X$fOtz-U@d;{no*AjO*=yfMZZ{QOcUmx- zbA|2ls?jP>0R%3(Y8?lF-DalBd)X7+R?os_&fB!E z|9a}hatKnejmZvag2X9Cro3W8Dsp0ProV10IOy&seB(s{vd1LOk|ejh@6VPf193SB z@4S(SOxTXY!D~C;8q?5k+xgj_42FGBbmRfWTJUne;ZmeA;O5dGOIZ&twet)Ol07ht z6pXBW@Pza!e{KFKnN?tzF@mO#Nl%yPyF7 z$}_9OHtIX7e1Ni~He5%M$6&oGih+`EmgeL$T!ngcuqb&Xl@VX=g-0gw>^IV2ZMsDA+9G4UzP7nZV7f;h3{FRt zbF2`YD$B5>%9^)z)0sX{`yIPB-?pKgGz_;uIRrd-f)=UQ+ z6O$%IU$ODnnuC){R*%)}C!mE6G!v_83f}2Iu*l2Y>H8PVn;+7RN0A2@Uj<*DcE~L0 zTqqNSw|Q$9Wt0$94zX1_$4R86GPHW>=-~fq-K(&Be-M2oXW?+cSPdlfV@FJ?#zWzX z!&#-zw8K%aii->*2)Dd;%xnVwI_bY{XUAhYs%J$wXh)p8{usT&eJZ(BN+4mO)CV|q z9I)k*lDxo9n=U3iUQMC$SwDG3Ph)Lf>DU@O+jnYtvX=jrP&#=`%78CelBvTc^KXm> zqf!Z*|HeoqxhN*k6o0&c+c+>PAM-BjoK#u6zKCh>c7{sXi~gg86n z`8}&->`vGSC>1X$r&@UYU_3r0c$kK+zf6*tKnFLGjnK>u^%We_p5gI|fiHw3xsjZ% zY0@lll?kl?x^StJX_L6n;GF|drpTTtKLOX;I(Dm+$$Tt0ev9ahPo^?nQk7NP9LP{L zlF61jDU~8@DkyWQ5ibHF2jqDfEem`uPFa^MBpR|_h4#b?GEE3lr_CJ48^#b@vF7&{ z-P~L!qdLms`@*w(f+fpih`c+B#o0`-7vPDPPju2<_4OXW6IS1{K=Gw`rTK63(Kzo`j5;B$B=!kG z;dSJ5uOmw#**}}Ac~wHC{z4dyw=XO+NhIPMO9Rb+jr;MJr0bKGqWV@OrEHWUzRlr5 z;SF18_G5iqv+q70mocLPyMAw3B~5G#+?5%>Y{6yUPYd=!3XNO;0e;Q+u#T2rAcQI& z-fGbjN`J!?+u{Gk6WS%cWFEWfRLrB%L2etnRovr?KV~I;U}l3T5y4ZhJ)($Uc;~ zT5(s7Cge|9L7ENGO;3u7r-o5~`Eu^#av=<2v(8wBcgT@PxwOoq1of@mrtN06lDy7v zFX>z~;g?f4$qmfseD7FK)l3n86^x2eQBf?z47j08$!_&3J>~ozl7_|mmywmvg3GVi zmBbV;xx68>Kkt^`5K8t-R@Y-S!|}JI70}-7y>aI&O*B_m)_}(Gna1j|fEV^f_EPsQ zmk_tYi_@oXL_QRWu>pvfOyNID^))sCdlP3}H{9PdXES(re3yDFi4-K#UY2Ygdr@ab zS;W$sE<$Vf!zyoej(?Qf?-Kqx*uqo zX=$TXDc~?-Th%)r(}A?Hje*Bpt{twWi$kB^7x@R)N>X6Zd-l3Kuu&U!Q9e7H9rfC* zH|s4*QBksCi1Bi#uI8p=6`>h^rTYa|wdlOn6EipkGOV#_wZmO@wGy1p&aOkMEEz>D z9n@QGf2CP|0!N{PagR!CE~iFbiK(2{nD)LU(;{-(>zp&HSCShv8IDeSMpj1lq@u+F zAg!`Qv_#a&=x||luDHK=azHr4B|fxpK$X;z~6M@3(KB95gpRipkp^6J);S z#FP6zOePe6>v6o6+15w8NE1ieFj$mzOU*TN#y=0w>LG8ss}K|Y| zeD?jN5)+W$hE15ALp!?3(#*1v9$7dkh=-otP%>0?Yw+h>Q)_jyZXCcmqZ76`E=sy$ z@pV1Bl4l`(LL?~m;b&GdAgriNgRRmD7-suWk=t%vvxD}{U+=DrqqSc8nDi+ zViesevO!k0nH2H{GXfYViXXXb;#kbsgz%;#GH+?5U*k?1u&Dn@mtW~dT-#)FD`4w= zqnc?CxlbO}daqu*MGdaBV|)C@tsD_6X+;fuvEM!I%hm^wRWv*ua^eVUNZOb=Qq4qq z&9rX3+xcZ=q}6-KkmD7p`?W{RpalgSK z$H)>}n;(YKpHcr{JPk@tv>LVv`&^2nyIJ?WP)*JfO0?5J4yJYNawx*oKuO3zWkMI% zlu_pus(??WRD6Q$K|rSmR#A^kdGi5?46Ih~%v`z7Q^zmZ z=Ry*px;TNnrcdP%_NI7~EX+w?jF|XoO~KHxQzAfxUnHuQXWP4q3iwzdu|X5_#~^7l z$+%^nq4a$7&Fw5k!nCF1X2oqJiy9~@sbb|#`CiUcd{RESDGsLgY*0Ybmi3Btay4^B zgK8sK(n>A>;5j>5j{AB$8Bp7(397M_V3aU3{{(U>572kS;_K~6m{gI`Jow8L2X?^t zh_Ls8mJJJN#gKdeN@5llQS;MLeK1-FU+XBC7@KR;hkhyZ`oR<_N%7I4E=51%P#iGM`cGWAb9n{eTN5hvnHkntIRP+bet*`X`L{fehU4v{&MXofwj6} z8kU41f$K?3<<-cdYc7I7<78wRzO!-%i9g-*zk>4m=6Hr!8n6Y6zD=~GX(q&R>ESk! zYuReL>a}y*F?7xsixd*$TXL$VcGJ*ATKqm%^>UZ*Dle2ye}6NmdO8wYg9;In>ZZMD z`CFa@5bxcz%tY1s)T2J8h_KkT5-x#c6|xI2>!Ss1smOupd-oRT*P1F-T}=IRGphgU z)0AG;yz@PTkH0T6MwrXLy^5ykiMD_EMM<%A$W&V&C;S*4CpLG+98vzf!^U zQ~}xIwKt*eL8`zqbcnMeEYk4$=`g0M);5a((ic7PKKTcQwcJNZG~xRIiPkXJisI!C zE!+GD&o4CDesVN(6fuN$++W2-qK;4FZvyKxG8Jo2a~4$a6CB?H>u_bw1}8Cs@KAA< z_-=LTPV$8{^b#kV;JKVB0c@B8pYXIVGTiBvMjGCFXU}lwh95Dm=B_jy7PYqUqQW_dpicS?*2wKpaHdGdQz~zC%SgJ5K|}2Qv<@ym=x7Pl z7u{%_q@4St{hB==uZPFzu=$wDidMAo;wYnsVOT2npx-7cJ^LH;Ei__{bFNuWeqgdYb zTce3vb}zZCU-*iU&KTX6pM{;pG{x7&`}5v7$$H5z1cHih);vS(g*NQ5e6w67Y|DKI zLzkSC=&pU#GSCttitYm?6qm)!^}zW;f^#s@tF7LhMtTg%iC?>r(X4fSD1V$0pv?5c zuy1?0UH<#u16qWrb-zIdF%t)WRwM|L=2W%55BQ|Ne|z96>^0DXfa@$Y44xwiGNn7s ztf+H+w^rbO12S6*Xj+S*#m9cPQJAlX#JhOh=4@KUt?llv2oQKRxk^6a>io$v?J_qG z^|Db~nrePPbG;Hy8nE5y7O{GMNP%t>S6MJRTX!Y!D`+`BzRth$gY_%;PBHvMS5K9l zT~3d=ahum8KF}>mt>L)*j&`GYA!cxWd!&NXkcVvUBxv-T(`R!~FED@+<%xH4(n<$v z)cOj-O)L|x`34CwQQk!8q#4pp27+sAjn>MQ(LO?n^oj_n?f(4u8c)C!id*!dI(X#E zP9C^}D|ba&s8k z2{{P`dANczp+y`r_4VT)W>#txkxS>lrtN(@(3IUBSO2V4$i;3slj~d=x~fU>rf8nD~@5wTb+eHlzc(L#e_Xi2(ltXua>vpI3XLbNlN_$50%E zM%L``yyBJ@Fw?yLgMDD2iPTnDt+9#<>2h_J%oXpPu{ouAEH-t&7Yw}5b|O*uHS7us z%`gQKVp#{SreH$LSmr!JfgIbe6Q(Zk?5Ao1h>L*}_>@T~W?R}zQNv#rik!2s;+mBB zT{AHj>0T35kLLe#ZGdy8;cuAN5^qjOtg_ysm#^mT)()|Asy{HM{1*@;)^xgy4HDb8 z_d5FrNPlppEM{3qE7tQX-11+^T*>Ei&Ye2lWo(J)DrMDMJAs15Su`bRqk;mqf6XM3 ze1WY}PAS_{Qtt&JDfw7g*5>n$CKDkpUrWsy+ILe3Wu^`1eRcN>*yIyv7CL_7uhZqelkpvm=az!eqHn5FKfLg=Tpl3RsxA+**21Jl844_CQbU%uGAi3f*$XjqnfIZ+dlw9QpU=TqMlpvkj~zN zhMXlzP&0*VZkuhi$7Kc%ly7|e*ew-3II2;gve2vT11w#5G{Ld+BU$$jh07m6DT-Z! z%)Z`{>py^nhMa*r8dkZA-rB_IzSaz|-@5A@ z^=^?0$_c?Kh+%1M`(DL*i>o2<#dFqG^biDGLte$Vj^(8#{gj;cPVKeZ;Nj;Esr%a( zD9amCLfX`Q$>85k+$uQey&Mh&b(4GL`~(vr_m)xu1xzanI-qZB(!aiqEBqj3d?eGg z7*M@JoxzjFdzGv&CStqXN81}Xf5&LI^Ue-tta{-2I7rBq<`MI9Wy9%Oe@{NSg=-_# za$bdDTYpi_HpX1?%*MOjY3fycd2+hoyVDGzNT=Ygxgkwl2>kWHLgNT^t$gCoQV`b6 z^D=jK1XrhjxKMBYVQ3E`a$r4gF3|<@rugkp~9b5Wp7P8lUaE}mRGF2Wr|Ot5ul>H z_C^n8K9xGY)02{Qg1Tn&G_uzKCOBF#^_VA?0Q4Gw*^TheXkqE-ImSaDqwAlRb#U1c zj}Pre`Pp^Pf~C8-P+>)+z{yfIrssi+`@22>hT&A&dK#}ndl4}ABQ;|zY_69z0h)vd ziKuXpkYv^%DSmb{R3dmV{aoD4)g9)lxI)1$zfUNEw3Jgc$&7} z?mJwtA03+~WkyopQqtQ=-Hw*N)tqk@W=UwU(2$TBcB$$PQbhl2rO#QY6Lcy!U@Uyy zL}r9!FcMD2y3|bgm-%Ybyyk-KDAQY`!BAQKtG$Vl^*2JH*U1qv!;%t(W=_~ew0OEf zFJ8)FWx3`$EAdF$m^q(IvH?cJ8o?)g`2%~q`qgU~W#=lTCx`Mo{A_5`8q`t0&AL42 z2eFr!3SX)Hpo$xlbI_z0Q?0>k6Lq^i(VFxYrbT&RHr+6@J@H3X8;q~2@@&3e?_3~p zLcjSQ7Dp5t!kkKNp;J7#YBe!Ym1fJO_twm_rvCUtHPmnRKr^U18FH#OA{|?baPR7O z?v9Fl*SDLYbD^JN>8Nla*{&%8DCtkzFRROVroYxH!zO;p(t6u9#km+h;uCl6OXz@g zN&?lJ#|cFt+ZB7W9JPIYou9i{A~DS7OKaE_GA9oD!;?l^j+rea+H_*tP4zOq#;d1E z$oA@4FN~!UhJS!R(>iADG519l{=;^psrg3#0EaLvl9RD-5$sCrZs&0R(imv$y^-i8 zau%3Ut*|*c=&r%8aFs@Rhl_7__o4>o?e4KgcF@(N*Y*!UL~)+I5ZKb5>x6KgqX@Iw z$}%X*sFr0i=CpC<7HfC*MBVRx|Ckmjb#@Z4ct&ktMg|nd=iGGPm9|9Pnwy^*tPZIativ*t$}9THs6+ z203@;xf%}?g2_~ckI7x{JZ_yB%iciV5a#TJxs#FLdbjO2$LX_eT_3yPV!y4aGGwF! zy?q`@@^TVocMsc1b9Z;J_K)*YFgQK+&h5*L3H7)zN6`~CTz9=J(>?h8M)bO`ZOGG| zU6Y^RjdIg9Xj$qMXHGx{qQ^3M6lS|^-TtSJVQFZ{KKDr~GT!zR_SE`jnmd}(p~z8$ zy+sZzuAJ*kH~fM@M!jY-V_b&sci3<8o=@vC{wimB)&Yn`T&@?hkq8jO)2ii+pO>os z`w-U7tP`TY+Bxu7m6RPVn?*))f9?!;dkG6I)L6p=HHPvy@fviEEHq$C<92+35R`r7t;9pNEUi>@Q6*wjlB({uQ5F0M7R^wB|aVPm3&qYEp zU)xj5|1^Z0))jqpwEso9om&u_AQXQ7(Z3DP<>#E{v^G^lO+9>AOZGnayvxlqF84vH;IsEA0(9`Ntq!~Py6BwFSy?=-7j>DsTJ?4ih&8K7Ss2(!O& zf+p5M5W23828>Rs{WsLKj&C(7c-@AGwNS!v8~Bk)WWo6bAvbnC+r+L4JuiWBYDWUW z{eCdlVUgrjt&^rxi$-U$4h7<0I7!!?vM4QwRoT(FTOVyyu64}-ytR+?+5B}DV^=>*(eP+BjmFxr?7rbE#x@dUWf$@8-e4voY4=#Fz6%Q37 zV)x&s*m9NwCVRZx^Q+hLr~WXvhY^G@u{Yu13JC#g`W?F1S1#9RGOoox4OogY90NX! z)Z8;MrUaTjz)@Ww70q|pDRZi1KyaQW;S67LcIM=vd~JBi#kpf-483|BaLv_7M#%yP z)l2LjK)^b`EkS7(=)IWkf9<`;^%n8Ey2=~5v-w0QZHCxfm-;A{HkMo(>N9@=T2JN6 zoA%@`b`E44*76l8f?jEr6m>qZDrnaeDdBCL>@%J9YRm}-hL&4$Eg%G)wN8$qC%B>!4ShDEq!zRd8Qq@9T%Ic?_#Zf1ACg6oY4!?$#54*^Sg@UDRQc|F_v9)uiKEsgJubu)V~azx|@Y`H~4u-cl=~hMIuCRgVBA`;dh#_L6z#qxHm(3ytEHO$SWZ zZh#Y5lo#zGZoW+_Y&g0oM!kZUrD~O@4`<0NFLCJAkc-n9uieHhEGDrmPjkiL9L><= z`<|ssEX@+&&pa!QXVWwKCC0!(^fe;UzBhq>B8H5Krma^pn_(9pBKphIX+^fk4dri9 zV-viJWp=?^PYlo;dS|>8`>3Y~?+zaee!Y%+Ib-G;z;>dI`2?7yzRrra%Qny5eH_*p zUrQUIK67OHK-s4H0#V|*4WA~WW{FPK{>5f5xO~zKd&(b8+t;AE&eUPj{DX8Z_fRCs zh&V03w!7_=3|S(U7bTv3o*`hzRljs}EY2YmQ_!+6&L@WEdII?&u!EV;0KFN0F~_}) zu~WRcjog5e!n=Qf7KzV?eZGPy{uhr*1DxCtb!#=kYLB5<_j2d3^-NTPY zD#NzEAB!GnhWSsWd1sQ0Kir@AeoQ@{q|J2@tU7Qf$dR)?!0WQ~q-vkgRw+PGXmN(gZ+SK0C7arx{}0glQrowog{E4tG89C$^WZO2c#=I#Zhj>_ zVEhk|X8$M=2YYFpIqrR-)wQSl4}eqr;O@kD#GfI`M))}Dzm4bH)`Iu)o{}Ky*{tgV zU36_VQfPcHF6!l|$F=b%gwpO*>c5LCc)7X#4{;x38$1iQr~SuZ&(zZJwx814?b8>Q z|3iA=$=Xn1<+|k`sNogcOAI8H+tVGD1$!PJ9ge>#FLQ+P|BA0?a_a`IaQ~z=F-@*N z{NiBH18nI+-?!oWID|o&!xGZIruX-zair$}jNlFxt%$hk!yBqm}5HO-brBcYFKnkS>j4>j zJ7Tg+QuSWDhwrsm@!VKexbqJ5=7vC%ko?BHu!I7sznA!{C-$}tjs;gDy(Tn`$kxMB z8<(3vAG$iTL}P&{e_OjQ4>L4Jb#2<%Lh%97)v22AJe|_LW>7X24RWw72K)PAea$Ve zy}i|s&5kCH<+CXh9^%P}bCr_$qj%;X-oytA27gt_*k1T7OJ7{SR5XPljT;4D6uB8w zW=lUYiS=^-;;F>d=pf<-@afi6wP=!A&`7IP{ZJ&hnc(c~F!Qk~Mg2q|0Z*Ew&X#P< zk4aLGi-=y1=r;Gr=(@5thsinnOeX>OjfSU0x`B?=f>X|!{=t!|{jUTPTT@U&U%)0( zRhwMiQjd24#Y_#nUK6S4!}4GHb?e#cmQ@>`=BnRh(9$?MgAX}C@wzvGz_}%b7dVU9 zp~5fg<|Y@=Nbf1dckpTXkz1)d5xq_P0G+^JnVO(rrR(JzRL=fkdu)^s5$eNfl8uf+Uh5Ss%Td=XP>){;x1~3q z@o%U_*uQiiM9c!aEcxl|snHNCD*ft99dzDo7=MhIA_ai`1i5|AZ}uwyZ$(2J<5dwqN%>9Ft*kR0%* zg^#Vm{0Af1*_H4MzeuX<*+uF5kC2sdazK$bghAS$YWs7f8e(W0o5srG*m?MAGy>ZQ z^AD;O|5D#mn^u_R{DpyFC%m)f>9rhwAZ2-$A3GJ=-#5`=;5Ws#N{eM{)nXy|DfZZL z54I*^BU56pesDYUyVE#xICA|y+~3ugS3EV)XM-o}#Lc?Nk8qy-La6;Z(^P!2*g99x zPUPi#frk>zduBll7q6Umy1b(tFUT}~4dSd}aR(;S-_a}1_WbM_)T~cU?dK0K05dUv+x({{o!D}qTp=c3;aBWA3yC?Ly1jJ ziVo?e1R)d7ABV6!;dh^XHk|<;i1)Y~ho>A93xy5_&E;)g0( z6W*Q_P^4av4{ti|Dp}6nLyKTg} zBU~OP44!P`JY6)@$6j>=bb z`tX#zd%Cf0CZwF}2?=FhHGI4{qg=?szJ%uDO7}QQPPcw!SvUCyxDg!I*O%ZB1^~8RT)p_2W6$X?hN*jSQLajTs4VURJxSc-IsXT4nO(7SKr4dN19`ps$GN|D#YldCNBg?jWcT8tMD%&b9SgvA_%1 zwgyhleHhOWV*6H~MBKNd4O28p{RdzpT~nF1QZQp|nlNi~*$apL_ae}>PK=o=-HCWy zMYi%wgsqs<(%-NI-sEP5xx$pZ|944h?%d0CO1<+~Ka7p?q|uh{=M~$dds^pjEi71< zSx~vaRQem?@BTjpB>70HJ{udZAzs2ZvhBo}QR4ik^?!Qp{|lpq4i*!gk5tscWH zR1K{k5v>4I7DRrm_M zlWqBLF9q!fS0Cto*WOD19QEVdU*?(CdhCFmjSf9S2>!}s_-eDJHSuQ_$PB?rg> zb^!pi1ra>$-%ceMMrrW6{3$oFD_+#tJ&cE7e1U`wrD0#(f<#6qelpRhLch7L+qAn$ zr!RpAV{(-R3#K$CTn|D<2%45bSRn2VBnZDB!!SDxNZ z><%}An4DpW(m6S=?3tq%WY7a~YIe=0H+$w5mUL#f(SpEe$QMYu@l@+uqZ3QUX!`C% z^84(D*%`Vu8kMYQmlgJY(GT&Wil(CTD+Ui1g3)mQr%AcSh4?5Cgj_x<91f#69cLJC zAi1h`+MIrq$)qx3JE4$VW3ySU1H)p`*I6nO@e(lzCVd3u!J{~_!)yESaeTE~Og@^} zYU!F3O(~>H@(n$D^(CY>AWe@KoJ`?lnh2$V|N938N`A5aT95B>?-Kx94HOjQdTx7v~KzixdeZ z%$XJ9J)Lej=iGhn?CR#(&OF=Bey7c|xwD* z=x`YK#atk)F@XX8gwbH==dv)*=Evb_!s~Vaj9J&#Bq}6AQIZj!n}`Bp3#g0aqn!qX zG}(hXvx^FaCIw2P4FG>sYbLzpw!=fIjJQ~;n`+4uD{QMK%n6cfy;pqWYy=B_7b>JG zi*QNn@g?kdf)*Utiv~Y5X2CEl*I_ojEcWGSFc@^AsNEBXVFT)+R?UE-=ye2j`{D}S zhE*|RwR$Y{XR^o7P*_>o3L{oh%q0}@tzi7k4qOK#F*SXP1WPDbR zNIwh2@Z76IW_y7DZPsW(r5cnN;>=47f+hXv)Uri9xU9D8V1sB;I`a6W(;&eBje&@t zqz8s35iGFTog>vaJOqXNlQOvy?#eX_`==LF`gPKYht+yCLWO}ZqSk2LzJv=8Yy|?J zzRuzP1R#@u+$I9s(Et5|0_N|<$oOADa?s>j@-~0XXeP{dIli4$C)~s2xX00_dOL(7n zpP>~8Ow3Fmp?N~ke((?CeGyq_9Oii%g3Qe!c?g0QK_Wt{AYqUb0{pVlKg!fLfij14#1Ni^a?4?`-OW!-w%9%TYQf2 zxdsXG{>V#y8K0Nqkf>lx&W7gDJl+JfT<`_CofWj`g3d#tixw?fyhwEMV$qdLmn>Z= zAtov+Cb3RjTtZxY-AYlx^W*3H$A3(PmMvYnZ27Vk%a^ZMy?pud)%;}n>hDcf{yPYG z&!LrzAQ|X^u#hw~Z>5m%N+Dhk81@ogwGa}FYk`p90R;0OVIU~;7c3N6w0OxV@ed34$!wLd zdT~lkJ@DK|Ly>I>*5AHNxdv&hNh^xpZj@-_X8bZeSaWUD(LU64@%dNHA^kHZvNtj= zJiS@nGC+M)Qqwv}J9hfa#iY#A*KI>|EmK?f(3o3UgxdCD#!6`3JV5Py0Zk$c7ib7b z*rKv(KA<2#T6}@(Z}F@76uhwd_)Tr=sV{-&5)7>+T!Yl7wk_lnAhKQKWfLGGeXX1E zQO#gf-!BsWH3hQ2lfdhQM1=)?u7r>fP0WDwY;q>nDH;wZ53jaKuu}S7fHoGCt9qC% zSo?t78#-5`v^Q#o^j_}C4H>Vrn2(5OJZL61dQ>Kc#O}*~d1Tds)tIN7kMf{o7V^Ek z;sm> zOA%}O!*vP@}x zFoA_LO6W}I2HR79H$P5!7jzYkV7y+ql=PlIHWXj}9+S`6JPCh=?-g)H66zKW#Hm%g z>zy}UJKKx5cvq`Xi#w-MF_&Q>DoszTxD@aDnFsAq$sy*4aX&7-%PedwsHdr@#ZhvC z4DU-HbUL^bLyCAe!Eqv^N3h3zxj`+Cl5JvXPUJFNxm}9d;&pWabm{db`xn;^-ugh| zeW2MSm~Gp!HNotFnW|O7l1y2?2IYLBAP9e2QXgaDXs@NMa`)@wr;c$5&&LJjKdbsz%y`qaqHug{XFPO{SqHB_k8-{5|ZN1DRFw_ zfxuKAgtp~D>r%8`k3sjAy*?p*!YJ~Y)!Zj{+?7kO%Q8h#Zp<*E>;*i{Vnbu++74Ac z6IbOItGo*Dl*e_>Vxk(I^g>A74NQt-eeQi^=Erky+}4hNTIx`E)oqfRo$EN#MnRgL z9_|RCM%S?k1EYmm8`k! zt3B~^Br2eh&IUdC8;Ejv2f45C)ipr4o zJ~Q+A+XRYng&_Sy!mkq^|55kdQq22qDWG|RcH0GY%YSczJPUotxJ*#Sw>**p$n}5z z7M>A&FBYUA5fZclR+RrN5m+RCPSA@mjh_YmDxE$JYJ5NnY#(@pev~}Cll-ehRZxB$ zq(5Oa1SPwEFA*on(11=MQB9 z3;@%gpFaTns`x=F|JyIb#|QlIU89Ak&>? z?)*IeIfObL{KxNo!D!zf-vTnM+&zBO3rJfSz%Ak)hz{}pQ_(_npr^a1AIdMp7qk&Iw&r8E5R`%MWiBDXXj7CQD$peuB58x%=f%zr;8Z%#aDe&{ZJ$~VkKpz`pI~&l|59acj|K}3(Aa~TCN*22K1lzc{ z|EX-bD+;tjg$0`h?YA*MbPA33;Uir1v-nTIi#^bR5e7bdCe-?w5B5tVD zE+Ia_AiMYsDlqsjz>obb{xkT}Q|^XnA9Ua!n7i^j{(YvuDnJwHFxrpL>&3xne~Xad zAk-fPXNeCGr2kYZdI}v31nNJPF9lQV@gKnj>rjs05hM!UdB|^q{P#7tQjiz=u9N2T zz5ee4Jzvm@4-YNif`re+2jG$B+KUkN(Gx{{N&O zEwBVzfS!Y(qkL`0Hw9vl0dU07&?(@INkK<|Ylen`!5bvV0ap_e{~HJ?$PluI)cFVn zmPqUY$U;J*zAk>AW>zLvKg$jLjQB3mXYl@K*NlJ41sRxF|IuPXCV^&tf9Xj5(V^o* z37n_}2X+wnSWE&Fq~sT*=)ym#Q*=f9DuucDE2$_dD?xjZVg4?z-l$-yQz+mo>Pb&l zlBA_P-SnhwHO!UG{S8qbp8F#LQPvTMZCoR~U3J`~k@`}5!gRxY{e4lvE>dB>K7K*E zVS3U6q!ev&!p_kk4PD!15r}yimHmLyIhqu)uc4k6xB3THC5FW zq*RrawUv~$l+=`Wsc7q}fU`nvsUMFt=r7Riw62wr$&cQ^m!9;GVTFc`Sf2?$*=hZ>aS}Uh;j)A9y9RTe@f5qJNQ4GF7pTQ z0~%!nHZgkA{Nv_b%Bs6mHEh6fv$Bq^n$Av;Dl2~nHAlO7o(}&jP{GOcpFn{SySW6r z{4KDXtL|xZpsx#<08d{Rca)NsKgwNN>esyL3Y>hq;P*udC8TSZlSpNg`Up{n-Jwnk{z5WblGZ0p8v ztM%`-{l58g@%iuJ;LoToKmj^;;jbY*X%%THL7^RAvV20m7ixjEtgNi0!cTwH+y71d z@6|{BJOL+Ff3!Oc`ZO+i&hQ$bBxML|tP8@xIS8miz`Qw3!JkCrlc0jw7PTLaXCS4~|_b+`6D6HNmn zBUN=1<$Xr`v~|>t_i3rB@6*xJ)G|~y(ggFs7gyaQo?$2-J0njp6+r@CsB3EevC94r zRVvD0K!R2RVXy`o7f6GqhK8EPkMchcR83P`Q(Zw_Sw~Y@kb)s-si=NWRRtyAQ#DYo zq4FI@U4h?9OOS%$f}wyCkb)9*Z4G5X3Wf^uV4xrctkF^fjN_*O9;7<_R2x8ol;4*c zU?V@}_o4>a%TGaDkP6xY=BlfxgIazHs0Hcw5-mYqo1f|cIzcLc(a`{TEmeNG7MKW- zg6UFM(E&L5DZj0bHovWoHXlYun-8O-BY@FS5#;&UbOhLRbof2$2yp7~DFG{AQvpn= z0uTcQO$99lZ3P_#z#0`51r=2V6*UDFbp2ZTmhQ`5-MNKIYYL`6eg+ek~taG$!75n#8mD&Lw26twPs&mf?u!hhH&YgE9G zoR6oJKqu?ExPD&}u6&J#a+Cg1?D<#A|8JM@ca)(XD6sJUtmsrUbTw3eYOn8LLFm)L zp)P?a19z}m|7$I(^e?GK`|-~@ey7{tCC~*}cT`}Ip7iNJw6E0f8c!-1E#>0x4^Ef_ zszK?DpW6?2-$vhgXu@BM0yj?gFIUgMA$P#1({=lAc^2RM{eIN^-}Ef_ zia{{gKRD<=i-6b9&;HtQ=>Oan{PX({2max}KOFdn1OIT~9}fKghy%YLS)%-aM;;0e zB>xbkx0iqL$>RsFowV zdTD^nh4Vn5*{?@r(ZU7u7Yi=|;fo+h4_YV;`u|l4s)R-6EfQJ`Em^t(nkOU-!t{js z6wO<>I7A2p@U2|1YT*_UacO9g%4!2u8HvS~`_{N@RaDXdhx5~{vFzasdu z(Z1hg;w7veo?4@}xNz%>kA{KY)_yss4x$U!xf)HS6>Zm8Z=-4KCc7jkI?*JUPw!Dw z$T6++7X$>)?AUN4<0(JB@aFdbLpf91)7rmc41W(W+;8U*cIkF@*_%&aXLZc%J;N{G z$ti!^F)}Bwd*HZNL~L?y#k|qll5PCbv zdG72?i+WFFJ1g-Z{gk^r$S|Uj`-H{#P8~jMDTRygXeV76(yQXA6j*mGDfGyAxL{i3g=x9OOX{AGz}& zJ1nW+8O}`|8qq|?>lUWbIU8Z$ea9zW}x9?(9o63 z`Oy%U?QGpn!VSX1%}wxEZ$Q!~9z+UjCy!>$RWMqVaww$!4)h$gC6&3M4W=U}do>u$ z9IhXc^#UvA2qWI{d6fZp)dqM~$b+J$@T69YnUKl9#Y_H9E|RJNCh2!_F{5i+XymCe z0-Nb&!CB^wWFZ)n8(1709;D^O`CJ9Y*}Df+9(U#}%O$Z8bjGzZcqJ#A-GiajeoLv~ z&hWHlJ%blh5RANCV0x1I)8hrE2UDU1U*bVZGr_f!Vz&T~ zEyfQjnXOP-SF25QZXmxHn*$;{+I=XJ99+e zxZMajWNZzv!Ky`M)*B4W#Fg=&j{{M!c#uJGDs##e;0$7u8d@yqsGX$YY6C!*CLYYL zm>&|I* zpn^f`eZ{>dG6&zq!^JXyC;HN0226a>Jm{1phhx%>{5p;7wcsphCl$~UR1ahwyC;-e zfBGOdavK=^Xe0L(hs6Xl{c!+(mdad;haJa|Uq8UN<|-Pv_4=j&OpAN<9RMSia1Mci zQ%Qih4~`h-B!4((xXweAT}XIn8xPX>;5`RIe{VTp0yt-GRW!c4duf*NkcI33YrH-9 z=ZKo(cjI=Y*D0A=?Gxj$mo)RBcW3qMkO5@Cs^N4c$~pjuoYi$tBu+~jiee>;Q@@SH ze&I5nHkOcD&1<8FlxcqkS}*Zb`lJm<`qe87jOJ%EgYn`GFCp-~@9mxdDJE1E+(*^1!q z#Tb5ZfLHwoL-UE{?#t=i4PgDx2uN>$)OZY1ah$vq- zvq+37eoKd!xLNoP1>diOo1j@?|tkOgjgev~#3>c7r| z5@CS6t*`~V7|gT<3!WttM&YZ$cR}mfKDdhqz2-2pW^4IWakW!{Uou6C%HgVfCnrvp zLt>-Jx$sp175$e%=r|AB$QVuS-^}m-zs6Ae8OPPev*0K^wc=DvbH1u6f*kPpfRYM|D8n zGJ97MHpz8o&Tv^wj7oH4hBa4-knsp5+f0WabMEi0qkMGhwqQQ1IBfF)wgb|I<+3>6 z=)R(T_ac;-L6oMTEvDN@_2p(>ftn41U);*oyL~aUJbY9OjF1&fjWpoPRjID<>;9@QPjia-}%&F`#PJ}=9g?lYh6#Ir+us8t|rBE zyQU_dOx(q0Kh!{?ol;&izp*QVYH2<0tkRW@toHWKgDI{hNHGhCvCs^h(@iQytd<)( z-pG6o`~xgD!J^)d`gM94ZvLtJ`k5`!#?MI3403x%c+c@N>%&)(!L($(ylXt@Oc2ME zjl7b%e!p0o9FBdKG-cttA`*8XEq-GkM7#A0XjS+fPUL_>StNju^h_UIOOawf^*P$;b z23y{AfYxuZnE5(&dOw5cOKGEu8L)J#sq3cdFH7*C&dZ1|R8hS-KgD&zD`bHEbIn_~ zD~;P`(5{~O8vpe;Jf{w(qnp)%!RtACzkI^g0P0P>C5sA%ep7#>@4faz4iPglj=UD} zyhXjAns3^bYOVE6%Z90q#O0$6=5eGE)BA$B->?Og(T61wFvHy2h&I&z8VE~19LRqM{+-3 zG4XW}5h$EVpj|NkvA}?yo)$&q>mUr!XKO2|se()|&|-BH_vI-3Ow9yGR*=CxfN`uz zx@31tghiW<3^NFGXS z_O?XPg}F)@nYEVr4Bk<9i9 zLvDJT2a}sRm6e*+%%O3<&TPav-Qe~+8?c!H(I;K29!n6@Zrz>~6K;NW>ggVl!&773 zKJWyIkviM{v^KKR$7{rP;;zAL#9fQ0Q&Vuoj!7yHav5J;S<>&Xw~NrJ8<|zpWR2^* zcn`M7Vs+5Z^-Ygo@Ul4g`N^ZOkey@goGIj#bMO?`(VG!Qqoj6aF%!96z0X`Jz>zyl zdc~D2o^1pe!+Fp(RslZM0*mZucjB~0)bcsq$=7CnSeC6V6OQL%Lu-ldkI&F>4O|gU z8H2Qx>8M3>2F~IUO3ZcGf=@AVI2UUM(1E?D7BP6zX%iONN1BY{)aH4kohqcX+EW?i zFOw&mV~*!g9^~quBac}Cla<$eO5I7gz=_t%d^>S}=MMO&6_O?Exza%x94 z?dZwZu_eeNRFyY&9 z=dD~T%~?JrD!ud4I6l+S|I@pX(d>b!4`ODhL|=lgqLy|#Y?7dXEW9*gesSW&+LI>U zXKtZsabuZF7U=7yizj!zt~jQDd$>2uyuBjehGY`wV9Z_a(m6U+tGGiy=E}i{m4>W! z!7W`!iPWgAwi}vTHXG7&vJTLDTEgr-U3$Wp#B@fY;X%XOIl!@5+o5y3;@qlr0e9cW zy5cgE3eK!-wnn+u*tVKg+ceVX-o9m~dJ?x6>n-}K7hdAndG7g|tKsJ?#y6SnvpG7B zP*sTGrkHW*8+v;@Zk8R1GR#0)YO%i2y8J{#kg^ti0QH2 zX|Fg>WAc~YOL$abIW%$yZn0SmJhO1C3`|E?t8GOCNj?>5sKmz_6v9RlaB*93ed`;i zl9ib51hzG~Dy23~XpTCJ!>}Dsadl)_r3gkEviBOX>ubz)Jq)FaJlsx-lV$Z`Szj$4 zQpk?Lm(VBin*I%SVoaYj=D0GV5@|oRjbj%%uZ@~g@sUel1xo`oTTCMx@xbkL;FL4Q9Wf(Z(>dBWf&vrtIeB<2@(rMbn9f1dhsh-&lUZ}X zKtF{abGupe0wP!eGHfOtM-Zc#4+B5~W;2^%yCJ7ca zSq_01R@;up>hd75*@!_pxsNUZMw!={h1Vot1JP|hHa=}}(mp}(3o;<1ET0t*dR z+bsDb#o4gUqSS(B$a%uROAvJ}sRt?TQED7yFWetR%NuU1N*$xfUWKiJ#}ZRYY344X zQF>K47JTK&aUy=kIhC^*wgR2{Y6vlk6W~2UB?AiaTezf2#1!6dWG=X|1$+NgJ7Apa z1T(^QRNo!&0;a&F`kX90*0dh*qHGQ(1D(rA&y0G&3?^^i2h4KTEEeva9G_e?M@^;R z>gGbu+w4h=L%!nfK!2l;#NLZA?guALW3*lRsbg?oN~fQm+^A_O)3SZLw?isr;(=|J z{Y$HKoKp+36@G?@80}SvO8r9VjA7y#(ZEpD;F{TbL5vAP`x!}E>sMXIbqqbR?U~!i zjcUN@m7DYft5R}v7vdGm>W^v0yj0a;zqp)!vv78@?CK)RrUN+x`=hHLZ~Zo& zot6<&wmHjJURgVpw!DPJb%o!Xo{T*7-iC@dlV#e@AGyKZaYt5xQ^ELER&rZ{Z8Kg513*|=!i{UgO1NYR5YZr`&# z%Z*?Cbz7t4XCHm?I6ffk#pIHNc;W6Ai9AUu82MxatsrS`%!xf`a4)Ta!KhoG<6rKR zVQD*NUUIbjiQOhB+jW~=W=G}nB^B3N4a_%q#(A+Xgd9w5dmH3}P+-lC#YlHpu*h9{ z{Ty z67uR$c{UU)v*ak#It0J3A0vI>U2oOIhThC^t-5BzQk515;ib*HQarC6wV`Q`j}+&X za=RX<#A=^(OUsVaIV679RBp|@YlO)`CEX6+yC_0WsCzfz^0se-1kT*`hc&6Q8;Ikj0hMvOx3i0OSGqPe zaJl!>Y*q+~$ybv5&C?6ayDh{4CbQ$eZF{cyN8fCB z)O;|8rOMjG^ysl`(f1zp>Mbaf8z~aoDlse{(HC1{bbZ)=PI<=MvF*+AR+||$v$K{1 z*DmU6#YirQJ9w>X0$Uk!ZhwJvU|jx^3e{wZlg0)j9GlUQvf`rd$5K6|p8ZKp9@UpV zK5>g*XQR9F+#;aumg_3tw9y$Yl(2Sj&(BOzPuk%z>YAh@6Ym!ncWZ(D{z6jor_x@A z_chNoUxnuItj+Tj>69F?(dV^vYBPI%-RRPU^jjRGw1a_gb*eWIp4#Vc*CTEjPmec) z|4jXylf~u)#_7GqaXRhKf5eJ)rOtj}93N{>*VeOs-kZ;TpJ`e-eS=(bqc)s0NR(xJ zGckwG>|TTD6Em3BljF=`c+jrp_efRikaLzlw#=>!;7Q|Wbz#O}YL+vv`QNZ8E{uZP z6a=Bd{Fi>^*iju#)7CHDwp9z_@l~Y@OR=s zlL6nS`Tl?Mi2r3lo01eahQnYXFjtKF$$952nmg{_zd=xR z!+#aB9$~?)anTIh9S9%SvU}k)v()$E!!+j?sj=b2_Snp@f&za6ocim;zoAq^< zzdP{m+N09xCkiF1;17vVPAs)S1x}etW#!}_NL+V0?;MNXT53_*^Xy2D+$Bd+(^c#7 zQ~Q3aPHY;l3n(2N&vmG~I4_!B$b+P2rXNsDqvD_YJ#Mc|4V<|4*76xfCUVGI%W1S{ z<3$4p+cK?XzJ?76bttdgqn@7qu@6>mP}%Rj5rMIX2aVCR$*z;w!yM98!ms`tDWR} z;dsOc#DSE@@X2w<)=Rk$p0~SvQ#~ecsORS(arr??)p>=ROOJR3%AI@AeAH0g<+hy1 zJ8o~@#+i-D;a6OG6f#L&eyD@KC|9%lwU?at8{2HVQMCEEjjipPho6^rhI@wYD@=ljZ7K8aQ#t>S)`scKY@=uhBjl z-kwR*O;!`P)%mUPdrY*oMd+Dv%a;<&p!s8S@M{OXG`dB;wfe2?hocb3i*4trvT zI5$3Ml`LTsc2YchKx;e86B8Qhi+LAsUsIWLI>Dh1&WSs~mFu!#bqvK1Vyb0y2Q4H(pgA_n=R`O9Ye@C?78i==kTiIUg)Qe zJ2zIhAE_bIimwx*!{41Cloxd!?{4tibWvNqI-at3U#^VAz7@GeIhhXv+D`cvc6a*H z&s0Y5Rg!=LmVCWp%igtoA9H!h0M{2=QXH!E4ofa%=Amgcw8L0IdS|6@z%kzwlJhM! zS&eS4V_^(^k8QEJdqh(F+H92&qCt61Otzn7Q&|X4Uv-RV>9$#Kf zY7zGU9hAI&;kB31>NU5pqr{9-QrA`n;?&cn700ugC6=6gVaXlBS6)>U#3c;$t{5tn zqpNI>VQxsa1#KR|W=>r$a@Y9gw>)x%#r)K>$3GmhIjd2=TPN6W=BKx5_>_ml5! zM^2mlc*ZfSJ=+m4%k*7iOz!!Gt%Gm&_oGMpon={d!i^>5ifviGwZ;w490)Z&NcR&P zm7b0wKOaWEl5I}5vS8mlnB7IbkTj8&x6QQ6`5SeL)FCD@QjyNeI$CXyp!MCuzU4u_ z_Ce!D&Q&W;DMVa_qcg<0LwlA-xO3MM;Qp%JoMLd=n#b&+03D_uTXnHR?KT52GnvHRIqoyP)2_- zpIV&RSzo*5awPc?VLcn;jwNB#nPK58A(eX8%MQ@a)HKnyv^zLXDC zLYDRbj>8yc>t&Agmc6yy1V^I*>MWMn89R;e5U)sP%r>8dPeI(N@x6qlBTewS2sn>U zd%0r~No0yT%<1ph_(cz$b^HD;8c-rn5MQ_%0pn`BOb=80MK5sAf)iH~jmUWvAKVgL zBzw9q;>;$jUPk}NiiA|LBcr+M4|N}NySN$?Qzi~LGet%3;keio_Pflly&GZQaMD{< z41V#&6iuUq6oS~kX}`@KSMRU0|NL(JkOX!&$8PbmOH9_LgFc#7Ht}yVnk->YVYb9q zCBh+e__=iwdGlIxa4+TcBR$)2$ZrqcQ|iDTct*U7h+b}^gyYQ_;!I-JNIV`T#5X(DK^Rvbcp$ zw`A`Q`rzHW!#(+RXWLTzBBQ!3HQv?-Ri-KK=AI^!|34^#`LR zI!-uBY?ew{G;=NamV~{=u5C`LN8L_)+^N^x(mFP#Y}>n-^K!_^aIg-s(1J$7zV@#D zxar!?H|Gv6yr8(IVC#ibDCJcf4=ThyT(4WhsoJ?NlsGXbeSuJ8>=2@~A=}G)%6^$d z`}&6pS(o%qz-D8j1+1>hIO?|^Fj9O%@b)E~5 zXVCLvz4_Fq-D3HL4(4uIncYQ4hVo=02Yu{JQ#K^)ifXo{KQ73*aivyt!NoM26=Zo% zPkC{2c)$0iw@)^jXHjh4F;q>8wF@#=yj<6?3)(gyC4DR-nYPoX)b_4#1F^p0v&jaz zQv`$FkQIyNgU=fuFLt{x?>STT_~X>wzJ=mqw|lyZ`?G3aT1N`x%&t;jWhsT64O>0ZGA5DE z)}Kq0>N`r-N760C;|kJVUyYJa$-E+w@F+7q{alLCZ!0@ub=Ho$mpWLe*VNy;^|W)^ zP4nK(x{av8jIQ&2+mh%LZl(L~`sli)>_#Q*a2gsiz2LXV_}Xd1Z2#yUa07g@M^R@o z>{e8g6N((Ve?sPIjBT{9-?iOhx&Cz<>oSe(PT3^Bay&G4ZSR4&zJkZEk2a$Mj#_;f zR0#?0*nVyfc8msWLj`E7LUxz=qke)?K`%Ya0P z{B!mt^-+z1F4kjwKo?`9PV(-u?Pe=4E-6w*xy;O;r;qisHSM(Y!xn!t9H?H!zeKe4 z8*g|aEiq+wdA#9v(ZI+6N=keoy{oL+nYLA#nHuRr?ArQCCpGL-O2uQpp=ka1N;%|h z2ppO+>wb(VCLgQD`+J#uE#^E0&cs^( zUoa(C-XI_HFTZMgN17#-sT9O@u;XChX4?ts>Y7S^hP%GUHb6` z;NxTW3(kZ`Hyhhs;lPXnxKFQhovxwYi_MyEckkcjkL=>Yz1aM3QCO+BV22ff=id~x zgyzKUoZH&Z2|_dQm=#`coE}@Gn!T$Ztc~3X^f5OTclv`})b^3p3=matGNHgMd=)q{ zPNl#jW6vFadmen0CejjeP6tVbEdYTX5tuBwtvo0a`3VamH5@uu$?IaWk}YPVxpZvC z-K;*!o+49m7(_rJXq=})GI|ky4^8a{5=Wy_+c~5m9%O;O9gH^*BkL2lxdZz)83{H@ z!@bpdnA$m7oL-1kR6DD-zi06h`NO*CtWPVYhuYEO@U!FGk0iL`ZBd!? z_i!%UJr?9|cr--JYu{1_oTJet5$aaVnxKpa$4z|^bgx$k!pzsigzF`&6J~b~taPR? zMBZ}N2catqto6m`awF4g-MU`w^4WYazSd0dW%7Dvv)?wEd2r7`+k;Z1rq6&OsK^ps zhm8j>ufA=ld{XRpjlj>+3>S->npj>9qEZJS^|C z*;vEzSV+@)hN4;X2Dt}m$wjJtw1|ZY`*$+ z&zlJ*xYwJ6wuq{nX`HaA%bGNO&%X9fys;z@MO8stQ>4E{rJO2!msBTRa-vr~H@;HA z^6JMVJ<$!loKL;m27PmV-%BJjo0Kwe=B~$<^cktmN3|S1iYfc-zn$o)G%epHp;t2v z>vXKoo<5rTb#1{;`OzSWk`Nv3>D~Ck?Kz#8!3lV_z7xi0V%Ll%Jy6=16MLlLLU^)vi!>w)S1bc=kLCoX zfL5t+ar&KR%ix{(`ubxlatEI&$6r1ofA7Nl1hY{J54tB3NIJq^H6E*Q#z0O>E8uFV zsc(YAp`wOQ78=_JS6m3|Hd|Aj@vfpw^IEH2_fm=84u{=A7u(CZqxphIjQmc4W?Cg_H1iwo(tUZ_Rq zn}L{)0^>NZn2m>Ir@e}RFz@F&I(7#kHk`Qo)#00dg=r~!%ShWZPvjN$=Ka$=s04ln zza}E}mrT>!ivYK8<3#dHR)lMf9tvC+B4)ElT9Sme z4VTA2%o*FXvifG0*>G8-dFR$d4ut}g_Qsjo5`SX=cMCDF+h4 zeuLDP(!SI`vckPapJ>W@!A0^fJILQ6Ec$VWGp)H_OZWjyrSue+193OPsWY2WCrNlV zx^uhJ)riouv+2`y+!-Du&72vZpCNA0{3*Vkc$%VJ|6UtGBkpK2EMAVLtK zy6Vt*OKvwj2~Wll+Pd!%4q**OUdLS<;JigPfWQM*JCobosO{7`TVXkWv%V<{M7b38 z390MJkF>3x-gr|%q^%k^svq5{b3!)tVEVq|;FFD68Av0d`*%IJ;lAH2!pO7DWesN-4#@+TfIj z8dR?Apzho=ytXtjxMNwv0tL%yS_tcaF4N25D zlvcwyt2k^DJwDD>&Sqo8e8f%6O7C1U-Fd`jwBDLNb(|d+ zkxL$|n<`eDaUV=Q9O+R#JW8*3yx@EroLzN#$rZI?Ts?gC$`iXQuV`(Su=!wc^wTLg3LXh*0uSEN(Oe6 z*WEkW<$g0=ymI}CB_q%p*8{&jKeA-%0mX%Qjh$L0uM`-0ZiLv%ejTtGUV9kbaHp;8 zO(@Ft$Y(7ldaur|3#Ej%K^0$x_tOvZW7b9|Vq6Pv6xD7_PM-B%A>Jq44I_!{H&3RA zl?~rq*6;svfFeCx`|@h>%eB=u6QXG*as#;+k3lMU(?IN}xeYA;-h9Qm!Y`M%8a@1W z^ZwKPtHHPCL-sZ+6AYJc_Ib>H#)EG4zUDe__9bfSw~;r-6csy0Kf5^D&1wwnR|)g# z{LM5rQt$_U}d)<$0Z{5AVimoYsv?!l5VJV|^42wT{d|kN3Y` zPb0iH)7gUUA4E&dlQS?YNklBf6t* ziWu<6qT{}dnO|$El#Zt`ZlNZ+*VJ|ed#s;K>JDG05A3mtKEe*ZEE4Lu`HItEWB=k;e-r{8nl78QY)D z$yxwz{vexs%L!%^<|S7SkIgzvX`Ox=qP;vht;X+A<7KR}@5H^1kK=o+Thi{U!0Wno zzD*^48F-M;ox^xr>3x}ion{1=b2~jV?tt*@{WZ85*@Dh)2ZN$OF1fhtRB!L1FBa5z z=?B~cx<#kA9w+yY*(`{dAJRtp_T5rpdQ(%KC<=ivaHps6!Ke{;`$*C_|8O23{BfGn z1M}MduUfIT-MA>cxlPEGHy|9Y7KCzDL^*C};)?UF%($ANV-f-^RQ`f5ib;KR$Yuebo0@-65GcrI0+W<%E_Emt}zUa^bR4 z(JvRT8?ADbrKm2ZUf~S$|8<;Sam0q|yoa+rZ|APJOb#&a;lmyED}wF!P~Uwujj6o*O4ZeHD}C)SwJ)n>MnOJ+^Z{xEF3YV|Dis@8U2FP zI?_C@m0+u4TwRKoBxMy<#tK;lq}=M78ky_Qc$Jm7MQhHMm8nGGmN7BA79MPSl(0;a zsHl7e$v|fGM7h?nN{}T8004ZwuC5Lu@!IYqHghTQCoEdlaVJP@^4M!6IZB7g!amz= zy-#T5Dm61BJx*zkC|guMe0pyAErSKh+Eiw0DxFUf;nsnOh|IJEgMsV(Dl*dDb1$Rh!59~z?Ql4k^9<3c~Fbk>=jI)Tu0e(=HN~1m_x;l*qzyq z7LUt@IWZrC#%g4Aq+Bx=+R#SsjP6NTf1+1Tsc((2#TvF9fwhrkQ+RW=ux!TFG4jfh z^%bZY*OiOQ6LLe1kXRIDu{W$i9 zOGxoj2`TassTtTS?d-FZEt`9`CHv=m!9_Rcj?Jx~!W8Hq4>om++&o_Er4VJkNcFy6 zWs}COZRayywHhkE>9+HfZ616da>jEcd*`XP25X~}o}UzruM07}*Oy{nxL=LBl8ny` z%K<@5OM-Q~CVUy=1qXHBOr0A+TUuPGWtO$KKUSy^tE@T<&eh;MobARu9FAVV zmu(`tqXWw8Boe~B-rUH2yQJdC#rX?RC&`+P%U7CL6S}We^f=ZKYPWTmKtvDAOS(65 zB;GX-#@D6`U*(2j8xlrm+U`d8r@p@SCTMd@Pd_oV&3#$LD4}$&`>5mC?ityO?@@Pm z=WZq@Hq=UPPS5(NV7D$QNy}m3D!rJeca2*=5wAo&yLtt^V8!Z1(J#IU%Qa64k?*aY zkjWknW_X_|EYVExIaYM6za~_^^WJQ)%KXvK7QRsSA>rYVT|Mx(N2GhKejhh~2j`QK zVWVTECTq?u8$SC2y}9B3tC%%jR}Ul4OyqJ1jCYGa(1LFU>=>x-Z>wuIO{760uD}hFYANIlM^mmnB+3&X`S$lasvgzU};1C{KG$)zYg-3PW z?M=gzz<Njg;x=sg=-n{v8*jV8CEwh%5mVeXcto5;H@ogb*1 zBt8=MUa`@)Xreu@(P_|+;Sl{cTq@~hw@QWo3f=va+i$lm3|u{OYG8-3@zJv*9saas zO0V^1Ivk>KyRPM&E5e=j^&m({N}o$aSlsTu{cJqaF5JUgeq?(6fzAkDW6{Lcrsi#C zXY9HxFX|6FQNUoTSPWtyToKvfU2eK7*3VXH>AUH->YC%Oh)W5^D+%Ye3~uu8YE-#! zLp}CY`mWkjgS#l#Wyy2LU(-%Azj$vrVZ7Q?)K|KmD{fSuU%#WXep+gk*ETzGZ|8T0 zU(U|rpG=eMT?a!}J81da_=@JIBItgUiwE{3HFcJ63QphM)pd9Cku{ONXS|o~wC?kC zyJ}-lj1w&Li42Yo9FHCog=883;6<)IgypXl44(bOzn zUyiw){Z(`OQu*XSjCHQ^bjv}4ocD?ui^PUTd;P;DLR-A@wjQaG(0hS7no}C%AlBlS z#TjCa7A$$l(Wo^A|FZ)D;)e86@Tms9g)D*-C9aSwxX{hY|LWi_(VJsNnYQ8$0n zb);qvsr2~1fTl7j3OMMh!M21@aF=McJr(ZR(>4G-uoweT-F7AZBe+dsG`P5VnK_zm z4bG&VfH$V(+lwa8Va|Q!mSg+jPe81Ib)(W$;Z`XB?{he2*AKiL{wfb{*BkFmjdtQ3lHE84J zEyUx)n@M2ZCRQtJj`)nSU{ayJwW>LRz~7CP8;UY@vOK^1sTvW{=Vls^!auqjy>_}D zMX$0+gu2u?8pXolY(V@4^)NIJGdX=d2{sxpdHgtZg1Z$82;{h+vXQK8dqxXcdpp_5 zO|)QdC|fS-#Y=8@9^J6j!gZw%&mUv875BnKxdNd-i=VTPp`Pfqa-zgTpC||d6Rh}} z*R`bd6+pHEzu}Vc+m9CN9oW}ew&_t6%D}8gLGG!YKX&r_f^ES%Ed~r7A7_v8+vam_ zM67-u?9J8=eV9^r@}-_`r`;g-RLIP?x%a_p#Z zwPKBL8s~6PX1^dxHEdh2n9#mC{YMn+pa<3kC zx%2tueP5NO35;V~oSPNhjhDWeU&L&^$Vbku`-pMzPMn@3V9Q>l=!)KV65W6@4z-U7 z(EWS(!$H*kMuve;p6o$WjA55$y=g!8PFodz9kYObr|8(`&6k;M_CO8GdcRjn)ctbP z$aqiN4S#Y^<{u8?6g+o`6t1%kJv7$2`Y!od!T79EFu&jWccga|J7!yJ;kZe)<0iMK z202bFI1?Saz(xX;*gZoI)K@(j^B?`g4!#lleqd*QJ2X^l>Hl+UPOCd6Qc+xxEK}aE zA^d2}WqS!a8GBKg9L>=%gxg2D7~ z!FKZ_%qxv!$!{_r4cevJUDt49G_4kq@enYR_G-Z>oH>s`PZ}{DSp>RHVHy zBqOO>emsJ!K>}lqp^w7g*_-l9KE&z^H>>pT4CTF!_b*?ZRi_AivS$l~Kh;F!Ojg_o zF5UOw7HaF=lBCV?BzByM`C7lc^!N}~AhEx^sXi6MM*v;f$}@fVH<8+1)c0DKHOIuqoHRM^;wZ9E=KAr8T^ANz9m?z zY@LWPZ&PVG<(WNeB<~IJc{OAvQ(UiTom(TfTK&xW_ACDho7|*tHi^1|XS{5GwRiZE zCF%a*LVi$t^o}_~eS{zF&?4HC9n~+2ns;$&)kB*daJIs(wEK3aU#h!7+5zv+kK1Uh zkVy=DHH+?cRLmSfAOLi42yQLJ9sIRdKe+%xOEI%i6#1!90Mti;{Lw%W+(K`Rjc%d; zD>=gd>kZBlg=LCYAE80@_;PClGEP@xh6kIH0q`!@0+rYYN)eH-1A2_flNptAu_D1EH)g3-Qg!GPT{MLM+LA!htJ0HAJ2!>luE<>9}c2GFe)Mu9$zxgRY$S-TP0WRK9t z`GWcZ7yB_Y!PA?%(9ljmb`hO9ph6URXs5{kd$}kZ$;?sM8a0qqgUjj-=g5eP^aP)kI!X&qR|cc6lqBzwQYlm9fL}7A zE*(iYw7_4Tr3G@q%_s)4YmT$ZtIgwbp$SMw0X%P%2z_~V4~w(`nS+SXWrQ;;59saN z{p@L9uybEbNcH~Ck346QLIYxX4?jG1YUkqgb1#MV6ywJVuhfzPR&SH`ThbVlR{PLk z^L1atGKZUNj4k_y+a}-hT$;mSEhb(vP6|9I3A^fq)?qtYIHh8*m;E+M_VANiTJdXJ zvL#_fT34s%N$2)4Wm6jAtSZo+KMOb^sP9ucrN}U z0UN&|{VRR)wd3d`fe~9mvVDay51G}vhMs5@$1LM%8dBvZu68b$J%F;d*`2zh1<0{IuA;exB{zNqgOcc#SPHQ|cxxu(kwone(OTBuW)=CnGW&38_-)?3%kDG4{tv#}B!wUKl^S!Q(&kwxr^xEU*E(9N8%J9pp`qcg?z$?m02F*VZY!KJ=Eues;zP>J(m{Qk@*JyIVROpD257Z@0s6TKAVm;9 z&}XEt(x)+UT~SiJQaG<5V8%%Xg@u2SC@$ma&|)Oqg5u8$o@uY|YssviJ^Kt1VCB>{ zl^Z!gs(aPy>!d!}x#j2;`em!LtO5f9`;C)R!zXD!d25z($sQ{5hviPgW@%NXSl0u@ z-JsJ=ttIZ@wb+5C#fRnc(%a_d_bP?sxT-PL(|NjHkp`m1%TU`$UL0u!%)dg@nOE%1v?u(&|X=G%)gXQpEv%c zFFx?g){-@W$J?2!uE5{HZ$2ZY6wx#yc-td3!8JPkdc#2TJy-=B#=X>l+nf6?`WxA)%&P+}!A|d1a=NHCQRdPQ!pKEOiq4W<@j0fc!+0 z17sa8O*jE0gaBdKE!wG}4T~6(Wn39aMoI`y^l|0&P&`}OVJig00B_N?Vw4GR35AMC z9ztae{wrelKjw!b@LH;sR5!kEu?pg#>7#v#oEJ3Za^VoL%+$DS-y-phWePO@817gz zHvoS?h=yfc6%fNPb72{8Nn;0!P+6E<7BvK;7SIGoNEHRNPuld;SnI)>Pv`s@_DdRi z+N$4(4W4kaTi1Op>D11?vJFChB&%UCL6Y*{v9fs%i>dK(sc7LOmDarB>|!up}Ravyo%~9vI4*1jhw{CJO;|4MIIWo zpT?n{O5>++8&-Y*V8#%E8=Hgv@dOtT8@kFWc+)KL$0+!Towl;qV5B@(6p=>H;h8YJ zfzbUOR(b=BSa8Gz-v(5a8oIm{oYj%g+UkMGegmlXJLM=saf-vX2&gGf@^y#D;3>R0 z62VkTNg({%`6VJLAn=~R(-Vfu)+LR+syjP$)x-AybA)Q+1#t#hWuesFfS8fs)GShB z)my<~9K0Bvo4cmzUUO{D5X&9y7Nkln9^Fp-oirOPPhvi-8^Ne*0u0ok_?lNaAc_*& z$M65%2>UWgUtbeMNm<9d)l(y(p}*=dXcfw{aJJsA!VzvyWP<80z1`xN+jvZNhKd5d zeFIG*Mqn*xjp?}a9^teC1E*m?p5M>K%gjE%1mnbZ=qxrn{0&_H zg=HIdQFP(+I>tnO$EP)%US%*@09`*(-u0i*H3dN$k%STxNP`@~#r#i0)5FYYAY z!gUO!iI>b#;|{CT>je)7IgzLl3oZlfGR!83gHnz9rIR=&YEFs)JjAF(PpeU>nXJqYNZ0ayQ!hWvv2`=+cNEh7U3!Put z#EsJ1V&RH}P;E@Te{LA8??V29+bwQ+CJ(QM39-x*aNF0XxdOUB>n?8b3%wVs1K{p} zB@M{IHmr+Fx|E^*K<{Q)y%N8yipe7|4{%J}f>xwEkEwzKu27WW#K%5uxwnb=O;_OV zIK@#Ge$N?t4lww9404697sKVZ;kev^r&RO0QK~=kuK)MM7EW^HHJo6)fj%k(AJ-pKt6*`_5s$trinVZq;VLXcc(3%m*(pQcVDFU^rZ+6!}|I_ znJWZd_^8+z{bB$&G;6_CYdzzBPzN_th+TPf)LyD;>Xu5q&v>-6VLtvQUj7DdFEHAd zW7%S}q_LeN&M=X^4`nD=Vg~hDUO`)KsDj;;1?b)L0Mj0qv4Gw*>F?K2RrEcWCs+%3 zSyD6idnU(|b=>2DZC*iw`VOopS(Q|odV3`C zs<#0Ya^m{Y;3=XBLI{D! z3K{CtLLjsUc9>tR8r`EHQV`dVpRxr1$~9>$)Ce2sa;7|8fu}xKIA_6jus literal 0 HcmV?d00001 diff --git a/src/common/assets/theme/images/indent_h1.gif b/src/common/assets/theme/images/indent_h1.gif new file mode 100644 index 0000000000000000000000000000000000000000..1cc29ef4171c85cebdacb6a82d9dc397883277a0 GIT binary patch literal 1661 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 Spt~tQr-u$xYxej7C;kQG$}{Bv literal 0 HcmV?d00001 diff --git a/src/common/assets/theme/images/menu_indent_sub.gif b/src/common/assets/theme/images/menu_indent_sub.gif new file mode 100644 index 0000000000000000000000000000000000000000..fb8db6150f78d7e0662502556096d9856043a3c1 GIT binary patch literal 1323 zcmds$>rYb$0L3q_QmNSh7l92kG=PF&(COkUlU1g6xX6&rvAG1Y88Da(m@I5=2{PD> z@eK-8m=!2gsSH?o7PJLwODV5nkRmOm?d|(<@9lk-QU?1oc0Qc1C%>F?PO?rMJd_&+ zL;(Z=YmNHp&*2G<6e{5>4FKP$pM1k;*vqF zF*G*wY&KgH_laj^Wk#uTxUdn4ykGdj=5X_$bs=ub=ktv#X3Q2y^+xN2i81*Uf_f}g z2qkK#gLkVw9P5q)q4nKauFn@)oLvkNGN~*yyvoIUunj<^6Y`o#ER0C?N_rm(UL|F>`py?bAXnAn#ZV-USkAjRq%GFrkxKd ziW3|t)QW+9I~U}Z%v{#_=sds5i{o*pD`TtJmsy|ZPSt*p?%7`(6R&v8OxJYjzoSP4 zgd9!k4-~a#)g8I(4~ayXvB!>a4&HHd(z5?4E%DoRr}b1jymU zA6gjwDO|SR{8_}=9nnYozPWdS1(cK<BEEuwXVf{jI$()bu&JPeunn-&$;jBbFXi{5q^RU#pqS z?Fsz6xi1*0B34v2J@fcxcFN4jotJVr^nkusnT#v*mSPbjv1~dZ=$FW1*|x2M&})HZ zoV}bgz4e?>|IP|Xp736*-=9I-E&=6{RY}ujS>1wDjGuyUq>ctg#&nj`V)r*P>9m-f z#pG^I*|*6F8f0usNFg8&3y-`T6u3uFlzQK;W~Q?XdR~`>Ga~PlC%wJ7SXAvuZrQ<> zgpsB)!8>`zx^syY#_I$0LjNm)b2~)01)(O>lle_4*88`8Zex Fe*v#1xXl0n literal 0 HcmV?d00001 diff --git a/src/common/assets/theme/images/page_top.gif b/src/common/assets/theme/images/page_top.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a3a1022dfaed8b1baa2217135c225dc095f6947 GIT binary patch literal 1518 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 td { + padding: 2px; + border-bottom: 1px solid #cacaca; +} +tr.odd > td { + padding: 2px; + border-bottom: 1px solid #cacaca; +} +tr.even { + color: inherit; + background: #f7f7f7; +} +tr.odd { + color: inherit; + background: #fafafa; +} +tr.odd:hover, +tr.even:hover { + color: #000; + border-bottom: 1px solid #cacaca; + background: #dfdfdf; +} + +/* ------------ error message & quote and code ------------ */ +div.errorMsg { + background: #f5e8e8; + color: #ff0000; + text-align: center; + font-weight: bold; + padding: 10px; + border: 1px solid #ccc; +} +div.confirmMsg { + background: #eff4df; + color: #003300; + text-align: center; + font-weight: bold; + padding: 10px; + border: 1px solid #ccc; +} +div.resultMsg { + background-color: #fff; + color: #333; + text-align: center; + font-weight: bold; + padding: 10px; + border: 1px solid #ccc; +} +div.xoopsCode { + background: #efefef; + color: inherit; + border: 1px solid #ccc; + padding: 6px; + overflow: auto; + width: 95%; +} +div.xoopsQuote { + background: #fdfdfd; + color: inherit; + border-left: 5px solid #ddd; + overflow: auto; + width: 90%; + margin-left: 15px; +} +/* ------------ for comment area ------------ */ +.formButton { + border: 1px outset #616655; + background-color: #eeeeee; + color: #000000; +} +/* ------------ for comment ------------ */ +.comTitle { + margin-bottom: 2px; +} +.comText { + padding: 2px; +} +.comUserStat { + font-size: 80%; + border: 1px solid #ccc; + margin: 2px; + padding: 2px; + background: #fff; + color: inherit; +} +.comUserStatCaption { + font-weight: normal; +} +.comUserRank { + margin: 2px; +} +.comUserRankText { + font-size: 80%; +} +.comUserImg { + margin: 2px; +} +.comDate { + font-size: 80%; +} +.comDateCaption { +} +/* ------------ for bulletin and news module ------------ */ +.item { + overflow: hidden; +} +.itemHead { + padding: 2px 5px 2px 20px; + font-weight: bold; + border-bottom: 1px dotted #ccc; +} +.itemInfo { + text-align: right; + padding: 3px 8px; +} +.itemTitle a { + font-size: 120%; + font-weight: bold; + font-variant: small-caps; + text-decoration: none; +} +.itemPoster { + font-size: 90%; +} +.itemPostDate { + font-size: 90%; +} +.itemStats { + font-size: 90%; +} +.itemBody { + padding: 0 8px 0 13px; + overflow: hidden; +} +.itemText { + margin-top: 5px; + margin-bottom: 5px; + line-height: 1.5em; +} +.itemText:first-letter { + font-size: 1.5em; + font-weight: bold; +} +.itemFoot { + clear: both; + text-align: right; + padding: 8px; + background: #efefef; + color: inherit; +} +.itemAdminLink { + font-size: 90%; +} +.itemPermaLink { + font-size: 90%; +} +.itemBody a img { + margin: 0 2px 3px 0; + padding: 2px; + border: 1px solid #ccc; +} +#mainmenu { + padding-left: 0; + margin-left: 0; + list-style: none; +} + +#main .d3f_head_h1, +#main .pico_menu h1 { + padding: 7px 0 7px 33px; + background-color: inherit; +} +#main .d3f_head_h2, +#main .pico_menu h2 { + padding: 6px 0 6px 30px; + background-color: inherit; +} +#main .d3f_head_h3, +#main .pico_menu h3 { + padding: 5px 0 5px 28px; + background-color: inherit; +} \ No newline at end of file diff --git a/src/common/assets/xoops.css b/src/common/assets/xoops.css new file mode 100644 index 0000000..88f768a --- /dev/null +++ b/src/common/assets/xoops.css @@ -0,0 +1,17 @@ +img {border: 0;} + +#xoopsHiddenText {visibility: hidden; color: #000000; font-weight: normal; font-style: normal; text-decoration: none;} + +.pagneutral {font-size: 10px; width: 16px; height: 19px;text-align: center; background-image: url(./images/pagneutral.gif);} +.pagact {font-size: 10px; width: 16px; height: 19px;text-align: center; background-image: url(./images/pagact.gif);} +.paginact {font-size: 10px; width: 16px; height: 19px;text-align: center; background-image: url(./images/paginact.gif);} + + +#mainmenu a {text-align:left; display: block; margin: 0; padding: 4px;} +#mainmenu a.menuTop {padding-left: 3px;} +#mainmenu a.menuMain {padding-left: 3px;} +#mainmenu a.menuSub {padding-left: 9px;} + +#usermenu a {text-align:left; display: block; margin: 0; padding: 4px;} +#usermenu a.menuTop {} +#usermenu a.highlight {color: #0000ff; background-color: #fcc;} diff --git a/src/common/blocks/MainMenu.tsx b/src/common/blocks/MainMenu.tsx new file mode 100644 index 0000000..36de5ee --- /dev/null +++ b/src/common/blocks/MainMenu.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import mainMenus from '../assets/main-menu.json'; +import { MultiLang } from '../../config.js'; +import Functions from '../../functions'; + +interface Props { + lang: MultiLang; +} + +const MainMenu = (props: Props) => { + const { lang } = props; + const links = mainMenus.map((item, idx) => { + const title = Functions.mlang(item.title, lang); + const style = idx === 0 ? "menuTop" : "menuMain"; + return
  • {title}
  • + }); + return ( +
      + {links} +
    + ); +} + +export default MainMenu; diff --git a/src/common/blocks/SelectLang.tsx b/src/common/blocks/SelectLang.tsx new file mode 100644 index 0000000..7c1480b --- /dev/null +++ b/src/common/blocks/SelectLang.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { RouteComponentProps, withRouter } from 'react-router'; +import { MultiLang } from '../../config'; + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +const SelectLang = (props: Props) => { + const { lang, history } = props; + const langs: MultiLang[] = ['en', 'ja']; + const titles = { + en: 'English', + ja: 'Japanese', + }; + return ( +
    + + +
    + ); +} + +export default withRouter(SelectLang); \ No newline at end of file diff --git a/src/common/lib/LangFlag.tsx b/src/common/lib/LangFlag.tsx new file mode 100644 index 0000000..191fb21 --- /dev/null +++ b/src/common/lib/LangFlag.tsx @@ -0,0 +1,38 @@ +import React from 'react'; +import { RouteComponentProps, withRouter } from 'react-router'; +import { Link } from 'react-router-dom'; +import { MultiLang } from '../../config'; +import mlangEnglish from '../assets/images/mlang_english.gif'; +import mlangJapanese from '../assets/images/mlang_japanese.gif'; + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +const styleLink = { + fontSize: '8px', +}; +const styleImage = { + verticalAlign: 'middle', + border: '1px solid #000', +}; +const langResources = { + en: { image: mlangEnglish, title: 'English' }, + ja: { image: mlangJapanese, title: 'Japanese' }, +}; + +const LangFlag = (props: Props) => { + const { lang } = props; + const params = new URLSearchParams(props.location.search); + const flagLang = lang === 'en' ? 'ja' : 'en'; + params.set('ml_lang', flagLang); + const url = props.location.pathname + '?' + params.toString(); + return ( + + {langResources[flagLang].title} + + ); +} + + +export default withRouter(LangFlag); diff --git a/src/common/lib/LinkImage.tsx b/src/common/lib/LinkImage.tsx new file mode 100644 index 0000000..251e2cb --- /dev/null +++ b/src/common/lib/LinkImage.tsx @@ -0,0 +1,58 @@ +import React, { Component } from 'react'; +import { Link } from 'react-router-dom'; + +interface Props { + url: string; + title: string; + image: string; + imageHover?: string; +} + +interface State { + image: string; +} + +class LinkImage extends Component { + + constructor(props: Props) { + super(props); + this.state = { + image: props.image, + }; + this.handleMouseOver = this.handleMouseOver.bind(this); + this.handleMouseOut = this.handleMouseOut.bind(this); + } + + handleMouseOver() { + const { imageHover } = this.props; + if (typeof imageHover !== 'undefined') { + this.setState({ image: imageHover }) + } + } + + handleMouseOut() { + const { image: imageNormal, imageHover } = this.props; + if (typeof imageHover !== 'undefined') { + this.setState({ image: imageNormal }) + } + } + + render() { + const { url, title } = this.props; + const image = {title}; + if (url.match(/^(\/|\.)/) === null) { + return ( +
    + {image} + + ); + } + return ( + + {image} + + ); + } +} + +export default LinkImage; diff --git a/src/common/lib/Loading.tsx b/src/common/lib/Loading.tsx new file mode 100644 index 0000000..7eb83da --- /dev/null +++ b/src/common/lib/Loading.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import Spinner from 'react-spinner-material'; + +const Loading = () => { + return ( +
    + +
    + ); +} + +export default Loading; \ No newline at end of file diff --git a/src/common/lib/NoticeSiteHasBeenArchived.tsx b/src/common/lib/NoticeSiteHasBeenArchived.tsx new file mode 100644 index 0000000..c44a297 --- /dev/null +++ b/src/common/lib/NoticeSiteHasBeenArchived.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; + +interface Props { + lang: MultiLang; +} + +const NoticeSiteHasBeenArchived = (props: Props) => { + const { lang } = props; + const notice = '[en]This site has been archived since FY2019 and is no longer updated.[/en][ja]このサイトは、2019年度よりアーカイブサイトとして運用されています。[/ja]'; + return

    {Functions.mlang(notice, lang)}

    ; +} + +export default NoticeSiteHasBeenArchived; \ No newline at end of file diff --git a/src/common/lib/PageNotFound.tsx b/src/common/lib/PageNotFound.tsx new file mode 100644 index 0000000..1cdbaf5 --- /dev/null +++ b/src/common/lib/PageNotFound.tsx @@ -0,0 +1,48 @@ +import React, { Component } from 'react'; +import Helmet from 'react-helmet'; +import { RouteComponentProps, withRouter } from 'react-router'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +class PageNotFound extends Component { + + private url = '/'; + private timer: NodeJS.Timer | null = null; + + goToTopPage() { + if (this.props.location.pathname !== '/') { + this.timer = setTimeout(() => { + this.props.history.push(this.url); + }, 5000); + } + } + + componentWillUnmount() { + if (this.timer) { + clearTimeout(this.timer); + } + } + + render() { + const { lang } = this.props; + this.goToTopPage(); + return ( +
    + + Page Not Found - {Functions.siteTitle(lang)} + +

    Page Not Found

    +
    +

    The page you were trying to access doesn't exist.

    +

    If the page does not automatically reload, please click here

    +
    +
    + ); + } +} + +export default withRouter(PageNotFound); \ No newline at end of file diff --git a/src/common/lib/UserRankStarImage.tsx b/src/common/lib/UserRankStarImage.tsx new file mode 100644 index 0000000..dd5f9e7 --- /dev/null +++ b/src/common/lib/UserRankStarImage.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import imageRank2 from '../assets/images/rank3dbf8e94a6f72.gif'; +import imageRank3 from '../assets/images/rank3dbf8e9e7d88d.gif'; +import imageRank4 from '../assets/images/rank3dbf8ea81e642.gif'; +import imageRank5 from '../assets/images/rank3dbf8eb1a72e7.gif'; +import imageRank6 from '../assets/images/rank3dbf8edf15093.gif'; +import imageRank7 from '../assets/images/rank3dbf8ee8681cd.gif'; +import imageRank1 from '../assets/images/rank3e632f95e81ca.gif'; + +interface Props { + lang: MultiLang; + rank: number; + posts: number; +} + +const userRanks = [ + { title: '[en]Just popping in[/en][ja]新米[/ja]', min: 0, max: 20, special: false, image: imageRank1 }, + { title: '[en]Not too shy to talk[/en][ja]半人前[/ja]', min: 21, max: 40, special: false, image: imageRank2 }, + { title: '[en]Quite a regular[/en][ja]常連[/ja]', min: 41, max: 70, special: false, image: imageRank3 }, + { title: '[en]Just can\'t stay away[/en][ja]一人前[/ja]', min: 71, max: 150, special: false, image: imageRank4 }, + { title: '[en]Home away from home[/en][ja]長老[/ja]', min: 151, max: 10000, special: false, image: imageRank5 }, + { title: '[en]Moderator[/en][ja]モデレータ[/ja]', min: 0, max: 0, special: true, image: imageRank6 }, + { title: '[en]Webmaster[/en][ja]管理人[/ja]', min: 0, max: 0, special: true, image: imageRank7 }, +]; + +const UserRankStarImage = (props: Props) => { + const { lang, rank, posts } = props; + const findRank = (posts: number) => { + const rank = userRanks.find((userRank) => { + if (posts >= userRank.min && posts <= userRank.max) { + return true; + } + return false; + }); + return typeof rank !== 'undefined' ? rank : userRanks[0]; + + } + const userRank = rank > 0 && rank <= 7 ? userRanks[rank - 1] : findRank(posts); + const title = Functions.mlang(userRank.title, lang); + return {title}; +} + +export default UserRankStarImage; \ No newline at end of file diff --git a/src/common/lib/XoopsCode.tsx b/src/common/lib/XoopsCode.tsx new file mode 100644 index 0000000..ec3a0ae --- /dev/null +++ b/src/common/lib/XoopsCode.tsx @@ -0,0 +1,128 @@ +import React, { ReactElement } from 'react'; +import ReactHtmlParser, { convertNodeToElement } from 'react-html-parser'; +import { HashLink } from 'react-router-hash-link'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; + +interface Props { + lang: MultiLang; + text: string; + dohtml?: boolean; + dosmiley?: boolean; + doxcode?: boolean; + doimage?: boolean; + dobr?: boolean; +} + +const preConvertXCode = (text: string, doxcode: boolean): string => { + if (doxcode) { + return text.replace(/\[code\](.*)\[\/code\]/sg, (m0, m1) => { + return '[code]' + Functions.base64Encode(m1) + '[/code]'; + }); + } + return text; +} + +const postConvertXCode = (text: string, doxcode: boolean, doimage: boolean): string => { + if (doxcode) { + return text.replace(/\[code\](.*)\[\/code\]/sg, (m0, m1) => { + const text = convertXCode(Functions.htmlspecialchars(Functions.base64Decode(m1)), doimage); + return '
    ' + text + '
    '; + }); + } + return text; +} + +const convertClickable = (text: string) => { + text = text.replace(/(^|[^\]_a-zA-Z0-9-="'/]+)((?:https?|ftp)(?::\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+[a-zA-Z0-9=]))/g, (...matches) => { + return matches[1] + '' + matches[2] + ''; + }); + text = text.replace(/(^|[^\]_a-zA-Z0-9-="'/:.]+)([a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+)/g, (...matches) => { + return matches[1] + '' + matches[2] + ''; + }); + return text; +} + +const convertXCode = (text: string, doimage: boolean): string => { + // TODO: implement + return text; +} + +const convertSmiley = (text: string) => { + // TODO: implement + return text; +} + +const convertBr = (text: string): string => { + return text.replace(/(\r?\n|\r)/g, '
    '); +} + +interface TransformParsedNode { + type: string; + next: object | null; + prev: object | null; + parent: object | null; + name: string; + attribs: any; + children: object[]; + data: string; +} + +const cssConvert = (text: string): object => { + const ret: any = {}; + text.split(';').forEach((line) => { + const line_ = line.trim(); + if (line.length === 0) { + return; + } + const kv = line_.split(':'); + const key = Functions.camelCase(kv[0].trim()); + const value = kv[1].trim(); + ret[key] = value; + }) + return ret; +} + +const transform = (node: object, idx: number): ReactElement | null | void => { + const node_ = node as TransformParsedNode; + if (node_.type === 'tag' && node_.name === 'a') { + const url = node_.attribs && node_.attribs['href']; + const isExternal = !url || /^(mailto|https?:?\/\/)/.test(url); + if (!isExternal) { + const style = (node_.attribs && node_.attribs['style']) || ''; + const title = (node_.attribs && node_.attribs['title']) || ''; + return {node_.children.map((value: object, index: number) => { + return convertNodeToElement(value, index, transform); + })}; + } + } +} + +const XoopsCode = (props: Props) => { + const { lang } = props; + let text = props.text; + const dohtml = !!props.dohtml; + const dosmiley = !!props.dosmiley; + const doxcode = !!props.doxcode; + const doimage = !!props.doimage; + const dobr = !!props.dobr; + text = preConvertXCode(text, doxcode); + if (!dohtml) { + text = Functions.htmlspecialchars(text); + text = convertClickable(text); + } + if (dosmiley) { + text = convertSmiley(text); + } + if (doxcode) { + text = convertXCode(text, doimage); + } + if (dobr) { + text = convertBr(text); + } + text = postConvertXCode(text, doxcode, doimage); + text = Functions.mlang(text, lang); + return
    {ReactHtmlParser(text, { transform })}
    ; +} + +export default XoopsCode; \ No newline at end of file diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 0000000..8a20c62 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,19 @@ +const SITE_TITLE = '[en]Cerebellar Platform[/en][ja]小脳プラットフォーム[/ja]'; +const SITE_SLOGAN = 'Official Site'; +const GOOGLE_ANALYTICS_TRACKING_ID = ''; +const XOONIPS_ITEMTYPES = ['data', 'model', 'paper', 'book', 'tool', 'url', 'memo', 'binder']; +const D3FORUM_MODULES = ['forum']; +const PICO_MODULES = ['documents']; + +export type MultiLang = 'en' | 'ja'; + +const Config = { + SITE_TITLE, + SITE_SLOGAN, + GOOGLE_ANALYTICS_TRACKING_ID, + XOONIPS_ITEMTYPES, + D3FORUM_MODULES, + PICO_MODULES, +} + +export default Config; diff --git a/src/credits/Credits.tsx b/src/credits/Credits.tsx new file mode 100644 index 0000000..d51997e --- /dev/null +++ b/src/credits/Credits.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import Helmet from 'react-helmet'; +import { Route, RouteComponentProps, Switch } from 'react-router-dom'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import CreditsAboutUs from './CreditsAboutUs'; +import CreditsPage from './CreditsPage'; +import CreditsUtils from './lib/CreditsUtils'; + +interface Props { + lang: MultiLang; +} + +const Credits = (props: Props) => { + const { lang } = props; + return ( + <> + + {CreditsUtils.getTitle(lang)} - {Functions.siteTitle(lang)} + + + } /> + ) => } /> + + + + ); +} + +export default Credits; diff --git a/src/credits/CreditsAboutUs.tsx b/src/credits/CreditsAboutUs.tsx new file mode 100644 index 0000000..fc52fae --- /dev/null +++ b/src/credits/CreditsAboutUs.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import XoopsCode from '../common/lib/XoopsCode'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import CreditsUtil from './lib/CreditsUtils'; +import NoticeSiteHasBeenArchived from '../common/lib/NoticeSiteHasBeenArchived'; + +interface Props { + lang: MultiLang; +} + +const CreditsAboutUs = (props: Props) => { + const { lang } = props; + const title = Functions.mlang(CreditsUtil.getAboutUsTitle(), lang); + return ( + <> +

    {title}

    + + + + ); +} + +export default CreditsAboutUs; diff --git a/src/credits/CreditsPage.tsx b/src/credits/CreditsPage.tsx new file mode 100644 index 0000000..288b7f2 --- /dev/null +++ b/src/credits/CreditsPage.tsx @@ -0,0 +1,46 @@ +import moment from 'moment'; +import React from 'react'; +import { RouteComponentProps } from 'react-router'; +import PageNotFound from '../common/lib/PageNotFound'; +import XoopsCode from '../common/lib/XoopsCode'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import CreditsUtils from './lib/CreditsUtils'; +import NoticeSiteHasBeenArchived from '../common/lib/NoticeSiteHasBeenArchived'; +import Helmet from 'react-helmet'; + +interface Params { + id: string; +} + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +const CreditsPage = (props: Props) => { + const { lang } = props; + const params = props.match.params; + if (params.id === '') { + return ; + } + const pageId = parseInt(props.match.params.id, 10); + const page = CreditsUtils.getPage(pageId); + if (page === null) { + return ; + } + const title = Functions.mlang(page.title, lang); + return ( + <> + + {title} - {Functions.siteTitle(lang)} + +

    {title}

    + +
    {Functions.mlang('[en]Last Update[/en][ja]最終更新日[/ja]', lang)} : {moment(new Date(page.lastupdate * 1000)).format('MMMM Do, YYYY')}
    +
    + + + ); +} + +export default CreditsPage; \ No newline at end of file diff --git a/src/credits/CreditsXoopsPathRedirect.tsx b/src/credits/CreditsXoopsPathRedirect.tsx new file mode 100644 index 0000000..97d34ac --- /dev/null +++ b/src/credits/CreditsXoopsPathRedirect.tsx @@ -0,0 +1,53 @@ +import React, { Component } from 'react'; +import { Redirect, RouteComponentProps, withRouter } from 'react-router'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +class CreditsXoopsPathRedirect extends Component { + + getRedirectUrl(): string { + const { location } = this.props; + const name = 'credits'; + const pathname = location.pathname || ''; + const query = new URLSearchParams(location.search); + const search = new RegExp(`^/modules/${name}(?:/+(.*))?$`); + const matches = pathname.match(search); + if (matches === null) { + return ''; + } + const path = matches[1] || ''; + switch (path) { + case '': + case 'index.php': { + const id = query.get('id'); + if (id !== null) { + if (id.match(/^\d+$/) !== null) { + return '/' + name + '/' + id; + } + return ''; + } + return '/' + name; + + } + case 'aboutus.php': { + return '/' + name; + } + } + return ''; + } + + render() { + const { lang } = this.props; + const url = this.getRedirectUrl(); + if (url === '') { + return ; + } + return ; + } +} + +export default withRouter(CreditsXoopsPathRedirect); diff --git a/src/credits/block/CreditsMenu.tsx b/src/credits/block/CreditsMenu.tsx new file mode 100644 index 0000000..99ca33e --- /dev/null +++ b/src/credits/block/CreditsMenu.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import CreditsUtils from '../lib/CreditsUtils'; + +interface Props { + lang: MultiLang; +} + +const CreditsMenu = (props: Props) => { + const { lang } = props; + const menu = CreditsUtils.getMenu(); + const links = menu.map((item, idx) => { + const title = Functions.mlang(item.title, lang); + const style = idx === 0 ? 'menuTop' : 'menuMain'; + return
  • {title}
  • + }); + return ( +
      + {links} +
    + ); +} + +export default CreditsMenu; diff --git a/src/credits/lib/CreditsUtils.ts b/src/credits/lib/CreditsUtils.ts new file mode 100644 index 0000000..8df1ccd --- /dev/null +++ b/src/credits/lib/CreditsUtils.ts @@ -0,0 +1,71 @@ +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import creditsJson from '../assets/credits.json'; + +export interface CreditsPageData { + pid: number; + title: string; + content: string; + lastupdate: number; +} + +interface CreditsData { + organization: string; + pages: CreditsPageData[]; +} + +export interface CreditsMenu { + title: string; + link: string; +} + +class CreditsUtils { + private data: CreditsData; + + constructor(json: CreditsData) { + this.data = json; + } + + getTitle(lang: MultiLang): string { + return Functions.mlang('[en]Site Information[/en][ja]サイト情報[/ja]', lang); + } + + getIndexUrl(): string { + return '/credits'; + } + + getPageUrl(pageId: number): string { + return this.getIndexUrl() + '/' + pageId; + } + + getMenu(): CreditsMenu[] { + const menu: CreditsMenu[] = []; + this.data.pages.forEach((page) => { + menu.push({ title: page.title, link: this.getPageUrl(page.pid) }); + }); + menu.push({ title: this.getAboutUsTitle(), link: this.getIndexUrl() }); + return menu; + } + + getPage(pageId: number): CreditsPageData | null { + const page = this.data.pages.find((page) => { return page.pid === pageId; }); + if (typeof page === 'undefined') { + return null; + } + return page; + } + + countPages(): number { + return this.data.pages.length; + } + + getAboutUsTitle(): string { + return 'About Us'; + } + + getAboutUsContent(): string { + return this.data.organization; + } +} + +export default new CreditsUtils(creditsJson); \ No newline at end of file diff --git a/src/custom/assets/images/book-cover.jpg b/src/custom/assets/images/book-cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1745a810fda2695a20e9bf21faea471dfa125d41 GIT binary patch literal 130143 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 z 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

    dN&hK#(Kt^5l3~*bg*x*1obZa z%KLHXLOjhTp$3e&3}dHO^mQMs>?_tWv&?vEYZYcv(blR!5$M+y0msTspy(JgAxnqf zCu;Y8eYULq;Zx*LHJxG~nS2q4&K{q)cAy*o67Bnes{Fm+P`rje%!+6EJ%K8|vW znsNtgwIJRqJ2J*C2Vpb+s+-|cyOE!4zzZIov_BcM29_ zXWwYmGfS|5keyx4y@>IR+oUJM58VaC*FQZJYxL*2nbK2fv$~;q7WbL*LEUZ2Opj3T zwn0`E2#^DswsBf(^?4e{`# zy0| z14@ZW-;KXM-U{diq*=BC6c-X@JTqAfJKV9pl5VX5LwH|KEsR3W$sG(r6q&b(iH5potTf0?fY2EedomO>^!#!X0go5%CNa0v5hpzB2`A z!Pt96qE%$g!~YN2C5hzzr`kKCQEc4D@0}4F1tAz(kFyaVt$)iUpI%99LKg7$z-msU zkH|`FvZ&k4#E+!vD=YJB%b&WK9;f$COLybl>{15Trvcy^@*aDC-*-C5*=&1p2_|^D z&p$A~Kzg_FlY`emVFm!4*hJG>89VhFbovA6F%L}!F;=EF1ofyOhu|iLXZv@Zkt913 zpEX%@w@m#AnB&>$aC{UWw8v_I3(Ul8h1fRk|FLE|I>N&pi52e9UjTqXReqd4AT<64CBAr+2_ET=zslkwFo zF$^Tc`P@8|{!O%G>)|1Y(06&|#mwb|+)=u8FNKg@M4bFy z1wx4Wl`oTRSs3SMAoc*~j zb*GwR>X3at<9i;mgGc)BCkdq;C@^cMb&zsdL{hKz5vmVV^B>!IoLA9D+@YJQxAy+k zHZ^!`HQ0QwC#=dcJq%d-56~n(h5c*jV1=swg3*v`UEM!Z;FI0U%K?^E9y%1f)rY?b z^&I&6o8phVG#=FTs33Lu@r%;>q0CzwAj2?*hNX+hr{V3R+uw;=z|<9bYE0%p6E zs*f7)FBVPXp@g@2429_3;hNE$14sbtN?{&tSg4;+*V2lyC@jjiu9)2VFeQ>H@c_vV;%|C!!r z1wi5R9$cfX^=FqN0~er6P71Vfk+v($h;6xSJb@7z-NFDm0m(F z4CN}!_MInDlI0NfxVi(WW&UNGv%qD45fE4O$_|vlZZReEW)hAYZyF51ZAy3NxwFjk zGDNqVq#Sb9EZ8MOdHH^Mn|{FA+64&{L%tl-tI6Exnm0e~SwA-|RJPJAMvF~S$Z05>N&FX8-TW0Vdx5|dyx|ePk zGQ>2%;M$S2SgV(HnPxdIHySTXhi?7wTAj$kSRhHqA z0zYaG(MG-&H48C~il!HsVWcT=Ux)EwDnk|TUy<3Y++5j4jdSUWeyQ8FdZku<;9F|U zFaOM`IU4e6>TL$k0kXB&>h2S}vvafCzRryU(eOM4Cj$H5=@{7r%5B;RJXAS6YyXz~ zrnEEjOLAclpXamXKTu+09#+*MyWpoZKM%Cj1ODev1>D-*1C<}BF$HYv)K(v0FNdJz zDDN+^q3=df=Fr6a-@;hBk-vCwXWS{og(i*O)>I*qy0xab%3M|06c${X>f#|9|JKt? zbG8LpBs2QjXyXoW^&<@s$_bt-=xhFJzAh`;s=SSB^*J+dhpch%1XphqPIJs71oEP_^Ul(i`r zid^5MzdmZ{n{q5nqOHV^nwj!Yh67(f^pV7H5|s7a7G>iKD`&n^6MW-_z{P*kH5@+=8nrrJ zG{lbD?7q%Js^~G_( zYvW=6!0b}?0jK$PxXH_P1NDfn;~2t{VAyHzDJTeQ_YDJW*0LG!`hxT0Hz7L zAHxS#Cn*RCNqvJ{mrOm5%*E>>J%zPUqSvO8H(XPHlm<`OBu(Tzii{B9q;IDW2}AD^^v81nIVf( zmv<;GtyURY!8=5c@#h4=Qo>5?=3;`os?GqNic##4e-#!{=3srJs3U0JM*5?>5HKroUXw^9?;C-=C6~qcvOU=4u^VP z)BOkj<)!KWA-Jn^W|#T>G4ub3 zdhc+y-uVANM(t5bjUs9*rB)Afx*gQ=bWTXol8{qy&x&h<;ytiVy0H&cJi z-OrqlO7&DtUCn}*K|1RjOiExmIKm&Q7}8vC0e^Pp`;e{`ws+7f+a~OXF?5xl3Uyu6 zRPinY+c%XK4HD(C ztNzSg&(+UQhh|-!j_9@Z4;k{iK*C^*G;i&+oq}PfU;36tOVn4J$*z^nHe~20ucth0 z&RKWTIGg|OrA?kalZR)-J+Ht&z%3TeSz9f&A_wIrbl4MO**3O{^r4m;KHOdh{x2Ip zEiW!;17x8R&+DNIOeMD83o5r1w);2R4l(6libICMm2I_HgQu8FJ#@|^016=I0n&VO`)kCm}%xm3t%*cY^eP~P_7YB}lp{wOV%U5sU0|1=GEdf)Z z(Oe6R&DgbnxHrk+#$=2(dduVM-*NOoK+VV8DLMdWrt9chbAEhK_T+d-Az=_Bt@Vpt zQNWLQ<9T-G>*{ZdgTde60fAWybD3)gyN0M2$I8rmdp#dhx>F3iO*Fr#6KX1Tf`Fp` z^`YS{U9W-fv|4I(=tOv*!g+Z%ijwO-kL-*dEGsZqePDeJDS?6>X;PBcEd_M)IX&PP zr~|QY0l-i0vc+x#|B}UR&$_!oaq7}le6JusHF@oYtb}ptb^H_V?k^e|qt*!14g%!~ zUoSl4&m?@g^NX~gI@>kF3^O`Y(}9C`l{%NT!YU4UE>~VV;z| zl|5s+Q;@g=*NGbhYLVf#ay2EvMSlU-^JMK^vpL;Gi)T@t)=$hu`ICE@Y>iu1qR118 z({iG3Aa}p%3B-6{cYdm$>5>!1?w=uFEC0csA3W%XcB?%0FHaVns)Fs>c0EPu^4dop z5T7$#E&jdfxOQRb z?2`(~TTi{NM(t)%)sg8x_FI(wDU!dztGhWnD0M0)$^DGOYMF;23nh>r7?9I`)uQ%j zVaO{N%ib?*jO;srNwWOB+;g2HtHC+cRzX#xpL=)ecv~MKFUZqn74^;%+La^TBT@Y0 z;e2AT7d&NtNn3{H5#4Hm)~W!{`_j21RUz+e9+`bu=Ihy7o923h-4j(wrJnD#Eatii z0uGd|kAJD}X8J?y(fmu9{v2HEGoRoQm6K?sW!$ED`^X(Hjetq(&)&HzGHT5BZ`Kn( zcKqTwY3vh9TnR(=hO#8)c$=9$d)*RKz?(MDLJ|r(``+V4p$WCjT_kCF;^9S&7u9`P z_M1SD=(vGcPYD_Gzgk|fv^lIu^?oc*q)K0CV4?P#hAk8p8yjSk^k2%*;6h06iEiM-^v87kDr4r zl}H`gjkKt3rN+ZOa6P1KT&dgB;UPws<2SiQR21_-$@M9B1jQeWNM%~vdy(XUD6WAN zxHwJ1m6CBLj^chIqdXr$5sD*PAM&kR2^Ebw z)~Mnh;1b-wZ-J3hVrB5_0{j%g z0e`-kLT{plP0ZAiq~FME%4LOYOj``ZGp=3B$fYhfcE90rqrIYdhx2)+RKM2AHP^P` zjZzlHJ;OjQ^FKT)IEMnKaVr8+zouRq@IQ}Q-QPG)q8yMsYW(Y)FIK6bxYlNi6%Kn* zk7fD2wC(<_pM!vQb>Y?^`*V-O%>8?6pApRGU9WK&ZT@nJMxmCsQ5Irm$zKInaJM!r z+AY7x!ji`LH2$P78_2sZ`FH^6Y_6^?|rdpWfMp~0nHdlAVXqg1I$Vh zrF`LfWg~^W=~5?V#+q&P4jsh?-iSIYT5iD%fquCk84U0(3UjgD`Br*WP3ca(nqpu4 z0%9{t-LBADW82luEuU-XZk+m?hJy)JX{9Z0m+#e)wpEFOk-`lrq_^WGQ|Y99UiX>C zLH)Dn@ZY%BEu-}l=$Li6m#U>d{3`tT1F_G#%5StFkQ}jZR)DHX)E55SHp|fvyDXl> z+fJ5z)eFl=ja0iw$=CSZw5_lCUFY|JIeyBX%)J2NsNyuC%;);>ZcG2(X=8#L6`Da! zkP`Ear#5<}S$14ibYW+PGbRgaHqoIZtw@0__w^fnGDPIUzr*oN;>5qM?zipPwn`bBTZ8z!JRwehA z*A@|LoXdm4@hwn~%==+3qT$D;DZ<+JKEcHUi3;zMKQk^e>xNngcwxXa|3Gfg*fS)v zoE8M;nh&q+|9JK~wb>h9{%~DzHr@c6WQl9Oa&h7j zoV;tIGhPr=qe815>xFSjPkk&{<0+~j?x)-O=V+)WiHq?*ruPtMeW{9+WFE=N9Hf0t#GcA;iq7ZzY~vx>wZy{bC(TJ z#A*nM`k(m3UpcT|EPmbbGsLMI1S`3eiv5-2$W`3`Q}A>6ZVN4Kemv`|l(|n_>pa;r z3n-wt<+=!1qjsHzFcI=(w|xxLH>aU&^F2-eyb7H*y?Gh)(m^L?A6DEn1sV^!UZ-}> zX)i*5=T1NF8A&z8GBq6p$6@qm`>q6Cj>uC~hys&>3&hj(?Dn_k6(1^2`3vAjUEMO0 zpO}5G9z9_^buO81_#y*Rf8>Re0xP{UGygG}rpF4G>dDVsq%1m2${C!@VyQgeO z($(=RydXX~^6C75$H3o?&RkhHY560>4s)5VF|GOSn^Vy>yle=lPiNRqb|Znq4*TnkD%>>ki2VqVV9 z+*;Y4JC)?L+79rt?&V*;+xELlD_Qv(PgrGA`LfQrSg_J^H-e5IvpBc-LtK|Wr+?M@ zN64$T;Log`=i(A!9a3ApHCM_B(p%5%Ky{4~Pa3sN^2O4QFa}e*Q^n78KIScb`}?&} zQPjsO$0ia!PuXQ~{jnQX4v%dIBzt~hNaXcmsCW2t)O*Z5&|(7XX637uVNRFkE7^Y_ z03$BV9_8_feRp!j=STPCC%nY8+X3*kW!&rcipW{<&x3ASL6ITSf=#ho>X-}p7r>eg z3YQ9frgn);1xK-8`C5a?w%I&;K|0dEbN--6i3?=Hm;RWf%xE9Zv=bNje>)W5mg zV5L+SUE-PzP88h4+lJk353biZk@a)*gL1OzQWSpi^Yh+_mAeZF!#h=8y1JDV`%m1T zCZ4r7DxTlHH0PJi{9z+rm;T&9d$Kysap`e=9$a z2!oxCm=?h=JC^y@i_cp(7NjWmnLkQ~2e@4g&K#tu(ED0SzROE84DZtn7ZFPCtoa~h zf!z^(v$wSNS5y3&nNj%Yb=VcIrGz^SRDKVnbIHHT7FA-c)JY zYg^PRZ&O(X8o#?wCPjB8^Nwz|#}h53|M6B^Ym!DJr>X5u!(F9QMacwn&maZNRurIE zn%@0}i@Sn2=kgvGDZh|p&lG`Crq=)pt*;(Z4Ni}wD`c%O=FqA1=Oo6&ceK)N$BV!!~mx#oBhd{^JB^S8dPR@b3c zJ7sd8ah})rPjk2_EZ7D&jMfu-F!2J$7$jfabcBa~wd#NWwLap`c`ESikM5<_*WDL? ztOlxdXKzY8P$Apnlr`?SS=Pp0+&3yf)vndmRC@h-z}^Qyop+O2-?{eHp(`uC6u)c| zo_)vk`>x*nyx?Rp{d8hxT9=i&=Z_Jty_D4jci2bIZ7X9~|0}yQtE|&;H;G@Sb>psV zqpv81^M3Wy4&K`~`+--H$SStnwzMXx4NPs^5+iAs~nUB2G*v2AKTO13j;sY#43o4&91Z4~tnS8-Xh8S#C|!nxq@S+AlLGtD_-?&W*T zCo+~_WI^BBX&iR)2u*JAJ?ruj--|x`mU4g1ie}6F7;)}VW#>XQrOUL} zj`o2~wV34LWpGXs)umNBX8s%GZEikR=$fBN90Q-9>K}P9Px8=~AF%a6dD__FH>brI zNiRZFr(Ina#SiUjQls1h9SY`6eOifm;_$ z{`Y-QNbuR#s9VKvp6ZCHf5=id?SU4tI^CMnOT?qQW=PPISiN8ds&3~ zt|fp%H9Bq1-}`Q{ekXB&0>m9kR%=&h&_Mdp=e(%S!*d%Z9Tef(Ty-B1G6qa&n)U{7 z?@8y825&P#{m=XRjMT`uB#knYyuCEh#tk;qU`zYwR*oHn|&B5B*|*<1@L5dvNujPAbP; z7kWXu7K;FYIgB_HFnAUu?~?fv7*!~jXEEXqw?f7tYhV5YC43DT2lm9@rdUQ|j)Y5l zA7AU?S-CM{f5T_x3-~L{1N!cQttDLnv3Q$=Eo9xk6vyg#j1Ch9h* zMpSlK6%e0}lqVZ6s7AaLWI>UkJ5Fj_+@r1L9W>HZa*hlqpz(Ws*}osNfIO2wIGZM; zec(AMk6t|exKcuX{lOmm+q1fIC&ScXF_N>sF2)7T-T;PFwn(D56Ba0wTJb$Z8^37! zC>7eZ(ZDrCvA3V)9rXRCR-xmC#Tx07V(ANgjW@!C>T4^N|5Iz&%*&c@WqXmp!EPTR?O6XV>vcQ5TN z^Jq_W8-nvv9C~9;(CjXLw6fE)o4M99;DTq{r}%;2>*@2%$n>mYQo0W{R|N>Q4$1*a zYlqDAnbot(wdMtO2()-t-qJfsLM)43E|U-14CZjlfs?g~b<05))cfSmzEO51MVL*L zTyxWpPyq&WLrheeX+3Ia6&e3!=qQf3?CIK)D|IsIDJ;HtuWmCqBFgb-^F(efW=|FXpqsr)A0dj$#IqjRz^?-TF#a;< z_PZWo(h%csv8l|U6gp>uPwKu3OBG_svOCt`+2GqW`5YA zy4|K8ZOrc7PaZK>+=sXZKN}y=;~BhSgdOoLU3E=VCTFU0M79)&q?rpu^4=%8fK#-o zV42%H8lm}rq-dgIm4_5H#OP+UiJkiRVtP>3-ugg5gL zZ^%}>D+a$l39R^h8MbOwdc~f;VdK)QYf3Fsdfj+2=Q&rs;rE?*0kEv`oqB~=D#-3b z(xskactp>%rkG#R;~UpHFCvTIt(1HGAk8M}u$HjkeT_3;b>C-PW2D?+>Z*9g$l?^c z#mq6pmTd1T_^N|4;`|xIK~@x;a1UpPrChD=K}65Y`$g8i%3QOf(aqZtUH=ckQ6?ZD zh=S*d*z);3<>sKegHn$e+E5TWhpPQjh)v{kzL8cqcdE*qaLCrl89DUcHTL-<7KIL8 z@lfDL2S2rXC$rPW)?$%9J^c2VUvn(QO^Az8y$+~ho_Ca91@o+1sLC)|{EZ{>U2SIHmVJH*6U}7WI3)*0sOTrt1#tWA7*_D_0M5OqaHrKUs=f zm{G0W6KWI>I;9$(Y92d>l4%N+uF(dH!I{bh+>EsE(Ro>Ar?r!(D2F^fLG-pdFX)T~ z31c!eX=%2T%fI~i(HgC6+^#b4a4W#(_I)UAN z9(te7OZE5lKP{vA6l03G1|21ms>a=rr*T2PDkU)56EfQ$(7kDA^dg za$&tnZRj29(}i@SWkKwDqzP`=b1f+ed0n=zT3hyz#)1;5$*l2kUiJ&Cn*dp|fQRcR z2Cek9C8;zs{&A?|VH}b!gtn*H3b$;XPEY$N##I(Y>y)Y~lwUe3Lb0~D;BN9$_(1*F z)2EN}?m3OOaZaOF3W&_LtuF5Lc=oAUF>)`gZV5a_eC~7H&DXICudemm`nhijC%SBi zIhc3fIoot`8zj;~p}h`opCg>7mLD$=Y4P_}t`R|mtOp+eiX+`MQd5VZR zQ9%RNY$?uG=<0k+@3H(KGT0QJwDDmjB0~hz%EvusQKY*hml19_3h#ghS&|ZeYO4tg4~*=OiAw z5~pqP8qB!u9G~}gLAF=h@E@pQ7iX@s<~;12^AA)Z)fIc2R_+#RZ~{Nt=Bf(9l^Tv8 z*1~EvS6n3!IAW`9gAtQti7oq}wF!KhlzDBDZ ze>|FBwe;&aUL%TxApi5IPrfT-BT7OpIJBderkUO~VX*rt*T8Z|8i3mQ_YCl}BHYBs>PhQGw zSeiW?&&0QBy4C!hJfw^_B#-`f(jx>?Jk$vx2A9aB#&d#5Zv9m8FEwnmwwLJm#lBez zBD;|^UGSuG)LDN~1Blp0aePLj9jJLK&#?0C?4-+8&&OcQqp+m#mlt(mt&$g7ut zp#Fu!+WG!7Kv;I|F)-))50qK*znc1R@5HG?MD0s3<^(aX^&%c`0)%k@v!z4yz1zwy zp1ER%0B^lJ%CUwN2u_gErGH8s%@Bpk7O^6hl?I8 z{ysOD93vgm;@0E69rakmwkoKgq)&in64bXrAxiqwMsX|KH0Lst*@wyQ7R`*0mU3F~(sZW8CLhhl_iF@j|^ zkC_>_t*sL+SCPCqy^<}H+GkNss`;au| z-pNSaj@g5b&DnX{beV}msL{SEtJO|DX6dhGeRSLH?GY{d0_S9%@7}$S+&sJq<6XyP zMwoEof_Y@c+pC^%2&9fFZShZ9Kba$cA{kHgpAg;KW~phnnj&m=F^4u&uCD8;hBLLx zdkUt5KF*o%!YtW4#Pb|Df>^kG=9Om(b>B6}Z28SNAa zf?_FqmB8V^V5VEj*%8|ZU722_tmBI$X=&jD%s|V{WPK^a!7D4c!zyYo41E{2s-J~$ z@VWMV`;w$tDoC0q;cnEphor7v};J8OJHjZX28H?mB2MKgViRdn6-4fR9i zG16R?OgQ_u(M5ri5=RiF3jMuueXqybi84kG=LvsoLw`2Icago>6xZZ5A)W>*^dK`2 zT~bQ2GMxf0ruJ`!Wc&`9S;hJyB!QVM7@1M$C+n}%GzW2Gq=_q+lRpzi3N_U;BY$e@ z6Vt?b{qsEcO>XyjUvdJyOM#r_|1^kvn)trAz+wMELZslotN%d#w+MNGi0(t({{UAk zCW)O;HiYx?e-lCih@J27|Jr03ax1TroX?l%f8O}t{jYtCDDnS9h~yv@4X04_FJevW zw!CespDbwQ9`)|93{sNU{x|Xi5&;l4I1N2SZt+7_nBph%XHB#O4k$AXdpuJfgKpn# zz=j!04PumhOZo+?^qoYQuB#a+UYfRw<{zF?3RjkRrk$MvVBl8+-?$z7UpR6sQM30* zOl;P-lHK^4WT;p`pWdUK?In^&F3f%|+j^`UA3tu$%f+L7T0lmdSX0w*;pIrucyWfV zbCQZN2#OyE`K^2BPW}U-$tDd+w4&eU+2+)0s)%BX#`?Gt1IEb97g-$0+5#rb#owg_ zyv~I4FU7C$Q0Gy62srDpsmaLzVlxPv890>;-(&Pgm-Vj-y`rk2W(8~{tZdNhk9*V~ zrtq-Pt%{+(%SjonXI`HD!{%-$Cms_*6!fxpUZ;8nQOC&uP-Qq64kg}3R_zLfnr<>{3-1n;xDTKVrqiM?J(BY zPIGB2DIQYOHSvFZC2mx`iYYY6w8?4;%zpYhi_`x}`IE53;4rd_DYG{@ePy!QMSos+ z8=mrQH2V?Ou&EQ%&A(0sYBAluIz~ZTJbuule#MSaH46tKiH*+<)=x~6UUvrn96r<@ z1(EIR-LC`wfl@HdiUFF$TUkW%{+VrHcB(}a@%!a+{3*S54Bs4Cn{QJ5M7Ww_`UOnEcqaH7^$ zB0OJV&~qYJ*~DUlga?2YlW=UcY9ljb2Mo1#FAT{o78=8L4SFfAaob*P`!8@yY$sDRNC0bnj%XKJS)Nk?ANHo0udI;$hFwe&_M5?$XoC&IiM+sZzft?(;&bfd{6b`4(KHdNwQXRG~HumKQzveRDNkKC0CO} z_2Veuu=Wkat#t}bgT%+1Xma#O92SCvH6V$UW%9~dezlUu@b&RX5KsY=&{w;h+@g6$ za-59cjtT3aNK3R=5QrsV?V`iavS7UOS*l#0QL)QT9jeXl9mgt#2mj@#AGK8P#Lmc4 z!4180*K&Q|hi-YQ=&4z3ji>qsQ=iMyWeM~8a*NnS3VleC+I|ugqr76M679L+ZImv| zHKzU7NrbgaAbFW(b6+oSi;U~Yk-mqLCEFo2)>q-AfXM#~97)QZ{pH*7F^RDqX()vw zNueHDxw9TH0q?im3cBs4WV|KxSx0G%Ebb+W#z~P|bVwRrK(>h&VgJM38FAiUBJG(d zwFfGycP5ujU0>&7zN6;JhtzlabfLx->ml&M13?3l3Ux~3HKR^v=Prq7*h}=f=SU(Q z$aG<%H7F`9l=}evLE%t`#YbVZ3`8@;wQt)<&gI9w9lhapKg4?CEaJB8CrZWrSPB_$ zdmh|L@l9n-u5s6`ay40WCP~y`#`1WYzJ}+pyf0;~B6K?Gp$OUk%y;tB1%U~9lo026 z^PqpAL9y?mh?V!iJPXv3Hz2`IXKT{m97YHbp$L%w zK|&cn(@LEB3@94h=MDIY&PYHnzU6I0;rVBb*Dxf1K0TG(jxtP5ahQxd)b#k$HXp+2 zDPS8;l1DzuGdV5nLH5DP3TIwf6dGI!d|ecJH1`aGCjMUk#8LE9(O4;Q@=}D9*P@NV zQ@2^dGg%)1M6YFu}HMFl!K6brO|uTftIITb5)7XWqUfi=8g?aayUM zf|vHP0nMNK>y80W&Z{1MCJX$b(_=0`mn*GSJ`^&#%zd7-Ox`A$bd>_6`M9Z&FNltt z;YstmXqI=P3oCy$hZp3Nk=vK%+sH1|LLTmlNV5p24d!4()|72yNArMpU`#6b`o$W0 zFO+-v)s@ozVs5U}0&(iqodjii@Q^r)RP}zm8%_~xeO)SIm6o`CHc%;tiiF<4%dBSQ zxO5}wTLM=JJj?F$k^mKP(aNf)FRZNHiuWmhG+dJCTndICsoT~2}RUtOEn1!Ki| zch0XlZK6l-cODu}2p{S0Kfi(uH=mVzj=e2;YV}wC3%)Vi-)_<~a~Gn5Iqw5XOs`Ow zif{nS<--0-O3$<4Z#|o5A1_I)jK({PF42xHIz~_Ha;fW(aQcv8M29HKInbRHx1db` z^s%cHsiw`?(fD$o+iQ~hFPSaAO{9vh`#-UV{&he~A*KVpYqGR7H=g0duk#i=XRkdOj4kXPl=Vfue=+VA zmO|vWt}-fGVp4=#dnkzJxR(+_tR=i9E+T4!llJN{!VgoWaqR z%WQK0MtxEZK}zb^;$tL&3dygl^->R;3d|~V&Pzt09x^*uTi^m8P0Q`hewFU0$Z-(t zejggv@}2bIM(F61F_n|N2Jh1t=eaV+AY*Du zSv<vgW)0cWvxxfLIVzv)cS!&)Y9;z{N^vPz? zy7jT276_~a8nr}x(2`|XhhO}3n&rp`-`5sMog5$IE$CqIPW-&98*ijW#W?hsAFzNh zj`uk&c!P~14P^@Xt6D>pX7n_Qc(3l$UVNgMM|q<`bc?J|P{Mpr?YbDru{>026t=xk zD35FXOHwgL5TS1`X3Bg4%W4Hd0w&m3+fR$Z&GBoW9;{@q85F_&;`h^K! zP<#JzVN07t)B}+T&{`P2knJoLs2r|3|KG7LKtFd7Fw+(?1q9Yzzfn%mt2-h8)4Cak z-}HW>UfrKxWKhei!17sv_z}oBEM+E-^)%Mc^2mPLuNW%Rc66weM7yoQ3!#2w_djNZpFAU+(E!3l*VTJX zFHn10j$TI>PA*kb#g~33B9cQz?8skR>gv2=UJ@sW+CyWjJCXGU;Y1l+bUSBM7H0G* zCUQN~t<7zJiR0bhTqBwkwp*c4e+}ieB5gNLurcuQIyMl(0l#5)oCS^NJ^|?mOX86s z)VC?%&}W=K3E4hbC_4GBTY6x2$jN!$c_JzI%bT-(MFb&*gQ4kw0 zAB#HE!1?6`-NA%>L95ty^*%g1njg2wcl>hGPwG%e({br~Cj@?vXTvOXDMiNxnRx%$9`7rD z7AY-j^hfMhmnR6sCY+mgkp}dbBXH_i$%llh7ImzFIVPmk4g>H2+UIlA9LgJD)w=M^ zoY)pn1n?e)6v0PBGfLIXw7Eb-`dWnojuykO2*O1h?#~c-l!*SCiyXVK@pC+D#R^~; zIT{BeQ)NMPHe!6M*H-hKl@iXX-Wci30T=}=e~Jd>uh~mZqQi0S19IOUC%wNy$_2*9 zed(Ipus=O@IYm3m)qu3F*7Hn-^SFz2iHMNZ+)z7P5OD2_>`d{3bL$~kmg(DW;I(l* zXqQ7e{5?!mCHi^5f_~s`9Q}RXqr#>Z&zeuaF4PA(2^QvOVQY&rM$Lpch~C%jY4aO9 z$2h*t@%gD6(vV^MU+-CfJ=m5)#mQ{G3+VPDz))MpS@U*er9t;0dyp!wLZTMUeXA=& zK2z`uc0Y2qp&@~m??NlApdbA9x*lNtsd^V{R{9la>O1EO%=oA%dq7_|O$q>JOX{_s z5|zz=r-XDPYul#nFl1|X4K|l1Qo_f>Az>jvU*@NLJ8JHjNIeMd{s$uKK`THko63={ z;+DDJg(4pMC7W#2_gw!`LSvkQKujNeOub8yO!_$x3w5TYW`$Cy;_bWdzd@P zLlHP3?d83zqurhleSqf(lqQ}l)WF)1&Uz(m zp;pYd=*BPAlVagkkTAYER5><7fosx%RA$6Op_nH;l;v$cnQZo+!tOk9eT)PTizHK2 zJYCB=ZzRhG=p)g}lbp8%+d29|M5()r!DZxlg1#dyv+vhT?O~w<5t4#)R=(`y+%!fH z<=2HtIZL6YgSHxuEwlrV*6bSimu= zfEVrKkI+zHAszGK51!D~^3qg4%}Z`n_M9)^;-YzB<2^H<+v=ZJqzq9!pwMiU;ZQ7I zx7+*+mwTBxCDd8ECzc5BI4um;786zMD+|dB5(AcRX^;=_XcXa+tLZT-(02h*F{=qe z+|mPEhLxzmnEV*us1JqnCAO3bhAO4UG?EQNf0%$0G{wU$6%i+uc0w?KB^(a>#f!B^rU(aOv3VLT8Q^uGS|^r$iReyjhFC3TmE$6PZeEeG#8KE0z` zr%Umm(3a~xSW4K{e=1&pmK7=JvyY-fheMe%uMW>FfEx_O>k>W^$$&$c5r1ptkksYU zt*~78hn{zt;KY-vmYWzB9@AgVz6&MW*{P#Xf*9j{c|JBb;{WIF(hP9ohkYu8s8xr~ zhw`MpWw=q|6He@M7!qSr5sM^2I6Mb*($NqS%$4Q%kBURL@m=F9SoXe;&)va@s;BH` zAHSjVIJV?2(%DZ(6pJI0XEKovxArJ^``#l~egYLNi2BNN7qw>Gb4=$gS6zeL5pCYU zskhJg?Zq2Etw!x7d59g6XV*pVVrQ@l^|$Tpb+0;WU?e}Z+01IU^g;9qrP2asBuL8|6$O2V*QH<6n}*0lQt7;EQDm zH+Kc_`4Nhf{ov(zzR5?Pnrst##(72@V3v4&%f2WDhW=E@DlF9M9iBGleTo17Nz>-P!MFa!s_1>Vne#6%%T_GHu4h8mKc@nZ$V||pd>gS5PS_9pTpTM1= zYT9?a#|zf4CaBP{AIN_4oY3!xY(F4t6}`%z&Qu!Hq9g0mp;j)T>farkNP03xZkL)% z*j@>5*wquJ@cD~E{n4|zG{WY&1gx;g5E+jd;%F1;t=8n8O+Vc-I z54`Z+-%uw>ga3bHpyK!JST}DY{+Dn==S_$M|F8T>RgitaHF3Rk`U8QeG=b~Wc_=NV zMnwru5GD8WVB=*Dps99p_4fb1@NDjZ+|>Hf4>Qc8tXy-u$fqE#6fKZlE5a02>9Yj6Gjq$B4H&|QWX@dVUYH5RyV5HNE=GLlpnAZZ6P2{7 zsgE+ZAP zW(Q42c1X4lM{&sB3yyrs#U6w?0;7+b_v=7#0n15`Z50^>QC@q_ zZ;Z2AsbJhznwlgN|p)JFC)2jf_2_{u+_Y`Ri9<yfcmv-Wn>=+9!sqZ4Katc8y2)ixl$i1nq_ zc=ljn_i!6F#n!`!6Lr|zz{H)^U?n>x*>S>a4|gsZit3bd%U*q%)3f7vr6J9D@9k-iO`c zxaBvnUNke`8Jxc-fZ(-DRL+E%Z0m}MY*;9~@KBGx9vESnNq@rWmv9pN5IuDBtiIAf zsGXKolg@*Y9NX(5GZ{Nc7i!`-SQIQz<3U}0SZqze66JuF_z09;l`&)zMk-0<$1%1~ zI5mlLPR?8PRXElqTgz5zvc$JPJQB5j(jZu+1u+LcUG9G%cf_2_3gy1$8th%0EDpA| zZ_pjUw{WXDhrf&S?R3S~f~MCOPTfy`KBN?Rpb4dw9!^u$V~XSnB)E)xlzfTbq1-#TH$m}USjPjY|jK6u{zp5x`5KgMPdy! zQ8PieT?>}1^qicEd*J&5m9FX=13Lv|e{#hxYcU#081FUk-qk8&jHPB5f?D$nE=jF+ zde8X0tFBaO;ZJ*NufS6}vOUia)Sz|y-->c$e$bfX8~c#tum*yPQ`kKNfvcHQb4>GD zCLu;uA!O_vM)3o3ZDkMv%=vh_yTAMamtK6?2AB7bjsMLeOw%p89w~>7##;8@4Pvd2S~mN9zo#07EBUQhv>Nl$q-biC@R zz~!|c2nF%@WV$1n*moZJkeL%CkdbKMTrt%^(+s0+vL;E1SHZ|f%Tc%J7G20UIYjT5 zIWYaIW|r>_jgPl?$RxfQU4r;+TWXlA%}$y5vx{sm*J`h887vZ9&P<5ZCD_0-7|;^y zR0c=DZsJ+<;rVOGxDWyM7N{Ih1j?Ia;%$oRU80&_d#q}CF(||Ow>i#kbL&hJEgT8# zc@<%(>ZJF;CU(5C+$9nu`jvp(KXh7Az7?a1^k%IIG<=+T)t{<5r&6kD>a@qEiLLPt zXQUiEWywFZZObM6#Cu~Z*39<_K=qR&h;@AbEh6fCdRnY--pX;i=&P)+N1xQqojjpe z=8Ap8+2<9Xc1;h$_JoytrGujb482I!KGHR;ljRoYRqU#t1!Cp*l&=h*!+TV31o7Zr zl~hEv4FhHgZ5(s+L5PXokK(ykD*!?UI~F^aLF4^XL7wxs3@PjkK9~Qa1&;mpO!RllR^G z!RPpg-``1OIV@CbbU3#DXHryb9cW%3&I;N{LiD0)ByZvw2x$;jOlfzn+ziy=F#P_d zM0BC`PQb^0%$0s}$`X~0lf|8mbY;U825od}h%#{)!Gy3gU`KSgs>;qAtUyUz5RCX> ziPR#z+_<|cxO>|3&xMgd$KCbNvTxE9{qtGXx!%vdC!COBnZjsOkCMD~6xl0w_|JYf z5@JHg@nkbCqHC~-Woo<_8gUb+X$GURc0$pYaRA0xn+l%{=qUSNrCYpz6Yn$1if>_{ z9yNMOEk7o~N0(Y7Gr1Gmmoq@==5l(ANL`Aqm~-#SmBH3Wpd7(8IOU#P0jyi|*X=gC zi07C$0qxK113wi!P0`AEVSKc3AW#m6?4!?%u2ztH$wheB7=+djL%Rau5t@Emx^JRa z=N{eUCKx`TYjMCXpPVo-^E0SbOI)q9PRQG7j}n{dVH&@cC^h~mpDaaY9%Tp=4pG(9 zaTtfQr7^t83X0JwmlGqLAS;)-H2CCa?D)X+<;)v4DRmaLJET$5CZW>DsJ8p4m5;FM z(Wo{_;&g}%7M0W@nUAaQ;9>av&Q5RYhh1}R1FBijc9|}=pRd5^&wVQ8XJ6f@C`xp7 z6Sp?>my{BnqPghXGl@gM`-7c5#KmCx^s&(qZR9~@(?Rkf$9EI(FvgnS+?_qLAF99H z^NP&3EsK|4Nu;W1N8&`mNzm7Tscv(-4L2bdA_)ZDv^zxB$7*91PN2nt)kG|Bevh7o}_SP3h`~!u! zIp!0oQlu~uXA%AV#6RNzzw=a+ErVv|#I=3NK zN?K*gYzOtqX4EqfO*fXA4-&jAIz zNi^e|T#5SDTb1Ew3+4ReJb5i5QiqAB1W8241Bgi(PMAowh@G&+?Cm>!tBa$^eD!$a zWov6)Rd%>k#QGoIh=pRjThnOd!L5UJ;R)X)E@ z+l#gHjp~rg6<;$f3Wy*x@HY-F$NP+3%~zMZp>*2JHflFU!-O6-hvy7rT>quIOIBs^ zvulH|>U-@I7ZY6GYq1(q4;Ihuo&fVsz;zVHOk}{F9e1N>@vna1#H<@8mIii?^@C*7 z_x|qRvcGQHq!Hkub_mnM>jP0HU}%hFP`&dU9x}7)){Nd4`Lj213c&o%7OZL@F*IK! zDZe~R(^BkRje`DwV)UW2x4Kc+Bq0V^U35`$Vc*)YyLRg1i6CLAs1u91fd>tN;qn?2 zI!xF3s;?y!&}k>9D0wHm8{I1IYlC2ux|icPD-!UCie((KC-Z&0%?`jBt)^Pj%3lnn zWcn(pA1n63Bw7&?$a#5nw%vpimBh0o^>HHF-5DHnc`!C9gLaC)H{2^>u-kS%vQjC= zB3(#PGv3N%h7I;0WYY05&y>+D;}Ro|Psrds)G3ILi0%SXKow)uBZM<-7Pcz9{}c`fC-v?eflG6>HTz}0p|O^qVs815i4aVz>+LT zn@~yQ*a-pQo?#jLGG7&k6GuJ$SO0({?aQL`4+oEhs2mdM^=Cst^GI=_o24q<12qph!nhdT$B@rPt6A zmELRUy(E+nNb$Y&e(vXckN5kRBf0k4+1c66?#wyoe5!ma_-r7#G9fRp_Q&`Q*VLb? z2WNa;p$V+s2Wb&R0{(bjn`;5SQ-QTvs0rWoWSwPfSK@0LDsh%%RI7{UePKJA_sl@A z+gXQ>#=fYkyu|l1!gm@HYB_2|r1f+MH0X|5kafg=G?WiS3~3{TQaIj~;1fE%SfJsD zQEgPRGcz+v;?*((3|=if7pN9dUt;jLq+cr-%p>sJd*KqoEItk$7FWh8 z8;W~xrI&707@OrNw$od)eJ-J33yr={A9U4hN$C~>a21~muqJ&2@cH^(98&n$)3T;w zQiJ{=P-<1iNy8xO0v|zMv*>OSx6)o}h+NDw(r1J{Dh%}%x!rB^j4RBN@n=4(B?aDa zOv*)}Ekr`>iYR-faf~mIs|6i{46+*@sU(F@Cx`$y#P((>QVtIW9xbHA*0Us8jvBc& zSjJU8=J=u}$|i&_*^uwqBwKtJ7&>>SG=vsqjB-X#?!ieVu=zA<|M_5>5`6dlY7Q=p z;z}6}F1}KEZWIa?n`y7){Z466^Yo6sv4@crg1hh6u6c5LzhK950y^V2$bw{-m3B-& z?t^TxkikgyMsi4ET;3}{C1+k}JwBS{@Mla{27RN7(|V;2@cnaC{k%^%Jkx#ls+Oxl zB!kS7-mh&P5XcQ)UKR%(E+k%^00T3WGu{I|&~*W7oWyt406`u=^EU07Q>?gJtW75g zu_zrQ!ESA8YLE&awyL(h!GQZ}S~i4DI!WT}=J^7BqDG{(X`8!+0ZM%`nhg?-7kUwG zr*+t)L-fxb{LuHj(9nu;ZnDhP zYBkU@C1;?x$^ERWN=FEL=(k^5f2{j6DV@`cQv*|Y$B?V2@1wH-zI)Jv+PfoVVz^O0 z*S?;dUtU`=T*|TdH1~_+9UX{!v;aYdlv-L=0z@+sQ54&^cboX`UFcKuG zIs3B_B97nZUPgUt-xtWTLH1=%jstNLrBvWxj~GM-vDjM3f2(z2lNsfS?(?XU^R0KO z49qTP{IOp{+7*usm_VZU@Vw6p!*)^g(V1+h1zyp>Fm?u6C+03=7lzeqw#u7SnLjM? z*Dfa)Irm=Z#u9Xssf^f`?C9!bpX_zoZq(l{Ej80TzO_exkyJ# zsm^@FHDb6;v&(3RnXwQheLAu{ui@o*eOy8G_9y2g#np2elR38;xxBz@%*{(w(sAO)OC1vM)^}=0hIKx+>$ZJVjg z-ch^(b1&5)N6}NiL1ZfQ0(|ldj-wo3lOLdorHPQd7-iDcu~Cy^_OL5wQI|o^^K~VNUx7`S41o>ucJ=QsSz4zjD8Z3E_e1We(Gln zSQYT!)$XQS0(bgt-+X%`C`KPOx%4m`-kj0~aQ#asyR%&yED(Ou_xRE!qr)g*vL!RDm13aWl1!jllMR*IFr<#S zy~*N4jw_qp@JmmhOD{I=!&sP@-yPI;;g3hM=7N4~wuI!JInNpK9B8NY`ZuUjU>ad> zftW7~nX&X`ogd5T3@>FzFq1AE>(WQ9fV3B5<53ANrroXZ&_wilhx#EfSi9`dQ zq|LU+3n%YD0*n@ZR;#Ea=!8Ja+$}5(kwIX7F1c_+F4TNoiJK+qTa@Gc24>3HH*$&j zZAcC*6)K-|WF^4wJkIK^1OzNX#sFaKMFb9U5=I&IIX3I?S9RJF@etWgZbLc2=Btdn zVgPoAd5esMd*e7VbmUgb&46#6+!(nwD z2lcyb3}Tz>To3`6$$MlGZ44Lr0u6yCK+h&wq6w-yj;b1x{HgUs8fV66pDQEyBwo92 zeH!i<)6zfLdJ$-Iw;B9|xtl2HL~~P(bk7Po-j5dw(AO#<_g;u=40a;kMe`>_dm!QY z56IjSfhb^=@Z%*inNjnJ8G>UH4UdtY=(9Umoj5VEpnayR%@fi`yiOdxXTDJH(FKJ< z#qcj-+sZ(xjMmvL*Af%yjy*OzwB4H&wFnQ?=!hVz8<-n6ru>Z8ht^bvT_>pG&q4?= zt;Vkb)0cvAWa$alA0N~P=zLWJ!VuG&$Elhy9>8)CbtX} zY$7)H7f~PjqnzP8@3GI)+?N#f3&CXAO-Yg&xkaSX5~GTI<+|)lZjD`zR&`#JB<2w9 z4B^w@#cba1rAzD&%aoz}C&EaRTB0M3=tk(44&=rgLSmCXZ_U2C=G<@-_O2iSR4)en7;#Z?*B#r9a3LU>jpq zCFT3JLg|Pq|5RYJw`z$*S{%+r_3Qw+jhSZy*RvuMMm&(flCptLvo2+BH+-1|{7uzZ z>iqF=ms{de6>t5nD3$GqT`GKinqz-YJov9KB-^rTO` z&;{NAWrD&wO9ryy_}EZMG=2!;qI=Cmv&ElLQEvPvtdfREPlF4`&(4<`wXxh?x4aN= zy-4**V|e=)F3Z^#AKUzf*rW@p%KL`2Es0J)G&6fMNC-`{wFF~=%vku6A6K`v z3GPwTMoJ-#yOOdzGDLCx`Dbhw=x&6peGZ_)X9b-P8b{GI3*HJ-(B=t~R1T0x@W<(T zzJ5Nrx*eG5FFP?SXSB@%49KaBl7f_+EdxE&1z=VJ4w&GHWHEVif6Ogk*|TsOh&rL&5?Uy z7z4zWfU~4%qBthg5)aJXMb34OXDnXjWFe``Ld-wAFJ7-oRkB!&P@##_b={9ga6>G0 zY+?S$4Xw$pv6~e;{nM7X4rnzbT7jZ8CcJQA%g3#4bE1{hK+4C($f-}uH}_xu6D|;F@Kxm4jbX9pm7sGrhR({6LeSb>htGyv=6A{?gUh_&BGSJMk517ltwQ0nZ2Z zeq`D;S_J(Dtpuv0Fs7z#m&m>2Eg4xp8*uW3(Y%YMm)}v5$0B4eFB4<3bL$~J%En2V ziY*hb9UIr}a>!4llm*CxZ_QM@rVYh3^_zG;dYaS{2qQqr1Gvm@K(s#D25UiR8@CXy zsTsPxt&@2UU-k6GL+~Ci2}n&o9e~YOD=~EUV<49LJBvjzK(5Qd_H2>Gp(fQX68d(b$vroYn#C>=N6o{|`yIS&t)`Uta) zX|FeL|K+@5S$nKsZmCe9Gf>QO#=X4!k`kTJ8=2+B4<1{3#hsv0sI1Z`&So1%fZIX8 zdG8o63csBiegigwVys)NA%M9(?401N`D4Z+v)ga8jISe;5#830y=mpwT|xmQ1yJZ||R9yq7dJ zbd{NwZI^N)VS1Gw_Yi0>Oyr-_3ZTco+osI7Md0koUj8h1+{cU8&uIbYFa1+~OT3V9 zTbi>=D4I6B@H8+Lu|0b7mEcF7$Y3Cq1;8;sfX#}06$^cHt(~D}(CijcLg$4;SPf@k z5*++pw%>ei6mx;Tbw&*E%CCVU=p|m?_zfyCtETh|ju$uuupB~+t@HV*e}F=yj(D1> zl22C;4=4pr2A4u3^xVmGD|9X7_c269?3CVbJk zYLT)vn%b_Ua_fassf50nNJ~G5asP^C-^=+c@`FNg)zh-7PWSoARb7n8{*^IC>*ts%=02t$`ia^RtWd81aPYN#q)$NmhrW;Nb(cb=Woy!Ojl- zO*(>neHveLcbo{H@4q%NonV)@ZMV==<8}2rgE9RX3H=99sOaLaS?`C(v*oiO#*bN>G;pDU6isG0v3~e+Ua{VarkE0Up`Ds{G%e_0$vq-v5pXIP8fM?zktA z>I!UPPJxV5-iB=Gdvw)9OT3@(4)1xFKSUrq0Ky+gEP3!`y3~Jd#}JLJw4Bo7Jfp<# z6V3rxt3)0091oAg^>?w1Y=DmEJJ=wS?v&O}*A1rnduT5=c z#MR|1yQQp0qoM~on}u6b&^w77{4COAakBH^Jg*|(1n3GSUwFRArPCA>J0JxGP6r+^ zk?o~>c*bv7#kx#ep2xeIFYOor0lPqVf*y6hKzGCKO&n-NgELJ)a1jsC+J?@Wt+Skm z#QPAc7FpRsYc6aS734;Qm6e!muMCHHCrId)D$zYNUl;*5dElM`(jS(%d?)KrBE5)0 zoih3`&E~6w=aV~^^}A*B62fGbbz}Xm1cjw@axMX*0KM=bd!X7b`$eb>MYnI=xp-e# z_b@N(OoTFeOKa;6)m+FOa4G0%h}`AHSBzCWeinAgoM~w!TME*K+8o_b`<7l2tMYNy zdBULbl7v^*S*}}=u3Gm&l+l&md32!KwYfO8A0tiLklOhHkR01lKV6Zy2$ND}dTn9$ z#LOYvVuIJ5n04#FF#&H}$R5DT(Ig!A8)W8en+L1_ZbT0Y0BreAo*w#By|+4$bf&)-+!^{TGd8`Okg%GqNy3rF4cO-;>a zH?NpXnf7{miocFvdf3pw@rt4cNCL`QoU-p8l&ip7j4y`2X_Qj{=USNB;|wb_$FLe~ zH_E_I=5=yX`z5aj0Ss4w-bk^7@#wdMMDaIe7dC@$M8J z(J1yNxZuc!7Jd90zoNfL~ww0$` zcP1ft%L28eilzU!eSkTgW0HI?GcjK*-~{z-wA?r!W=l)%bu&+s zlZt8BMe3VtDZ?7IqGof&R#My>|+J;dwXj7NfGT*9liRP~t9yV7y<0b*o zfVv04!2n+eKDXWCUOhR%-I}ep>iJAra<}#mbqFYpmWn=men)HE+JY+!YG z5$zK&^!{Rfe6;$mR1MV3YJNP=Y*NLQz_%rwYpZl~*eTO6;(2A$Eh`a_9oKbbzTh6N z5E?~?47}V&I2NoQ&s{6^K5vG*L7A`V;|he$CNv`d^=ntUCC0pFL;=bbIdc7yId8#^ zfD*}MvugV5N=i^>;ODI?6C2eD7PGyzotL--r=Kix%#|YD1AOR>HXkb z-O>t8@TOO}470-6xk{E2li08!*7c*CGiP17sEk0%R&JNYEwwl63o2nQ=5oEe$gbFL zyp?Y&&TFP>?^Jrg#Gf6lm8xE&*2yzX@Xs$y4ue2cOIXwQekCPsA@-FFtyCzwEmZBw z5MB=YW+A37ESq1ouC=x8-lY#_V~|l8b5Ue0UaZaMFqZJGdeS4!(Ot0>#5xQxs%bq4 z)M`Dh*!-9@d~y2ZSv;TM?Tf**8J{Vo1M;5DA8ag7IVXO0kc*i(Oug8ox*auVP@>I6 zk&$;fG_D5;$G!Khse5+cr z!(7Ky@7{*P3UzHar%OK^M*v%-+l!<>KU?xaf7(3ZBx8(+TC?D~zKN;`{JFPn0m1zA zBt!p;tzX|8zv|PjRR2QFcD}WaM>0qHgWdqJkKTHdH1O#|WR)g!2XO%b4%?TK0O3pH3Vo zs;Q1icvL%?YN3YDwK2RhzcZK&nvbPfFg7UuY(LfY6|uU-^5%%Rkrr5>w<10Q3fgmq zWR;Y))!O{*-QD(0^rdV1Ior@Z2j3@>evz!9~k#SgVoQJ^hv7I`E#A_ z@adR$hwQF!5Is?(sV;HX+44axZ7-LzS4S3gcQMSQc){*-Ku^P@VnZcL@AJIv=i9mo z^$|(MriO_%2X)J(uiUpRzGAjCF$EP1F0?>m>be-(($0{P08FmytVvduRGnuZ;S1Z0i?GFp{BsrLs z;|pEB*c*9|Z7ghs(lyt%J_gLEjj8#}YjU=BpcOYoa%8Oy5M@&AC6( z8wM`=4uM3UqoIbUq^DL^0?r_?*3?i$LS=gOxWBgy{*c{i`&N@SqoKp&8sFj44`DL6 zG^y3;;LveJ{_1qe4=g*cPopYps;T6vI_tGolC94&Je>FuFW%qeHXBxMNs`8MTrd&FACI<#9py(316Mg>M&aZ`du##?MWBOX8ckcCgZL zwx88ageD@u`f~uos0X3H%0Z5HwtdxdR$P6oPvW z9^THuI-+2_#H!7x&H6m~RlJuf-x=??^2;ES2Dq4h&WB}x(=r%MTQaw3RP`RNk@KqA z!1z;`l{_t|2S=ZY30k#9*-~HTExQ@U8p`c`q0HcU%ugHMxm>s6)?JDn1D)45`89Tg z$OL*gwT@m^D!@dIlhL-+PF2TBuBN-vcL-nll?A^Vm8{GuMN`B~E~p4siKVIX;NVB0 zMwG7G$8Sn|ODCv#3aSr(H~TD5ZgBPxWJU3q?>J1IW3`UIs92&}M)Yc=y@r}YQ~%TE zp~iCy?9wX3o+MV&aY=SHc*L&%v_Ja#6WYTo$XPek4oBTunlN-JUB12ECSv;urfGay zqDNxlxma>Xq(!ua%!#*>Tdn;QquQL2GbA$-e2l# zTmmh!XCrTmh?-?~vO}~66*TgI`s0N2MF|dAsUnF05sEC1SfHqo>lrV1L)R&W@cp zBDlsGs|G6Gvv9!*>wO(Pg3{P~;ZkP2hc}jXyz8T0RTF&7_#b3H4&y#U#r9HwP4%)w z4r#}rav0gSc1!s78zxxLzG3sMzXPJlUfg&vKmuJ+ow#Vu-?cleM;_Hy+R3jKqcV0n zZYb&kz2FRJLwn zqImGEL%BLW_58Yn`ToNCeG1B?_yAL{Q=x*~Cxu^Gg^+K>+9pn7)6!nKQTldUIM4+S z>h%g%%xNp^Ye;sKSs1gw7yr5(57+NivvADI+l`@h*Gq6H(!N5 zeNr7xoA)08_s=e2^JH6&^4WRG9w3T%m|2R0^xmB=ah(F`(++p$P&$tAqDV!cF<5%L*^gweLtBR zV8ra#fn7KTaQRiPfPX=mly`m&2Kc`-i7WulDf3g2g{{gnpH>i7Gf2M`f+^HEP{>8Gy>#?jijF3(Knqno3ej6J7s1zIn%MQm_ntg z!FqYKJvQh=Tp2efZbP@)&6JbysMubzZU7+CV(4L2CG%ogyV@_67HcX)k4N2e)U@)G zWI1H7?5gRh@BzW>trQzsZZh2ru{(6ADqW+0F##d2nfO_oFyu0VuE!d^JE9hI&{pY? zo876bJ$RCVQ!{G){+$OBE1=Z=Xhfn^M_~5${vNz3a#jAl-2*q_fno?|;}Ieho5w|! za?{Ywu6j4bU{h05FTu$-{i07rC#{y3WryE%YUQMd_7?f%r7CNNDixFByQ93JqaF8q z5epvambybjFR1ya`Ub;gT6iGw@`fNnTi#Q3XC3hq1Ao67c=D`o;!(=X53}8^-j9o8 zp0)vcQzL$f+kRgY^Q7PNU1P9P5p}NPOe1MqWOkByYsUm#3dfH$kb=okX+t{3*)t%g z=424~u;fZZEE`+O3&@JzmtNaEGFI^ZywI$9poC&n>95oZ0>i>gQt)w)!6 zp^mziR&-+2iLpbjKU`9xdEiJOU26N1_`MmK!{-Vjdm*BaKbi4f`qdIJX=ZgWoS`bZ zL9#2+S=ce$dgP|(=56lmAgFDpt=&^y?d>fM?`IbO_sh#jZzLV+RB1xU1#FqV|BAA(KW7WzENaNaZk^$ovH2VErU8)+1Up3iLL$) z7*oszAj(Aj!aASyemm1<|7mwZ#fzDpejV{N!YEav>7qa;Sb3rDh#7h>{EWPd5QvF8 z`tDjWPpNzOcqx+=d1U47=h3u`F?80-`?BNIsp+N$zsuVW(Jg)F=gjMjvIdt#MR& zV8!*{C)DfUPajMKy{ynMtJ+n*l0Ia9VsJyrydGh`uQVf~F;<@Z!>}@pLw!1EYk@w-!RR7%L31zAlj0 zq_idhC*!*E`3?BG^fQo><7#cJSi9_2OsQVvn@>W=n23pe&BFFVY@;Fe?pL*1 zZ0#E`51adDphLo*x-XI6z%PO=LTC0}^sN%RdV6@{p*%IDdyW^=73Q(SLYCK3;Zh$A zjAoV=_w4cD#_dH5WDFn4lf*j=r%K-pPuX92a5Lf=n16058xpI`#2FXqYHTATtFRW4 zTE%1HbThDepYALDvz)Z_+?tQs$g-`J%(uk5Qw61RW^-cvjE@aP-$2-S!6-9Bbs5<_ zF2(Psy83*wQq!Z!BWZ;^eDc+P)P0oMJRD5~{2P4M)ZZ;{&rw;py*$s%y;y!U>;4$aQ8^V>g^!dlxpxN-LZKvE*K~V_y{K{|1+>}Gi%lZ|P*oBUp6o^7Q^46AauYzUyy3%QZmF}3eUiQ!f^c`;4g5=x6f25xzy+^y5!@dD zoMO^+dYa#9x{y;90CvHhpq>EWVcrxj05nrf9DbZ>A_%+5#x>l*i8|Z%)|99VA{-mp)sSXt%~-KAZ!Bx6cLoO9zDGEGK8dK!UIGThXJH~D8bz( zCKw16&8*}g_ML3sDNz9_#~<>nXU2i_kZtI6Dr{e+AAZVK2`6jk!!Qqor#}_-w_tSS z5N*%@v;YOruReLzLayx7+0zr)O90L_t)#k_DC{#aAd9%u`p+|xi1|;@8sSe3&F2H^ z*2n_?$mrx0oO$LF)I5EC}0FYfI#cJ~OvJfc+u=Ipperb7(>rw6;gZ(HRdt0Tx3 z|BM(s?|R(%AkO0Oa|9W&w!u{#B;t+qt!tT$F_M zYHuL$Py2syh!)B|hTw~1yDCPmp^r!1kOfDWkfqnb8 z8x*PT;5UdH5Ks6YRldTrz5H>!ouxYF5dYIj#@`v{1w+B@Z0?!Nw&@6r)GH+lXMEmlBshKo z+1&lN1(>YvJ^r8Bv4vr@_WqhzIGN$^> zGcPYBSOx$|$>o5t0oDm%7=Hd^H@1KDNS;{;{-fvr)sZ?(QhoXS$V+%t;5uyn<8M$6 z-;+$>p%~(=zoQ-r|6>TQubJ@I6VPOVzvd0}$FD+i*hBu6B2`*46uw*{}{w8rStjh)PcZB z;s019fS3g=(rIlT0mJ>rO3s!+j!mOyi#0eb9T%H%e^f=D!2`Vm68%S&h`*|U;=leY zBVb$J`FsB=$>sFF!mA_x4qp^tj{V;X5}{CqXsR5yDhm8F-u_x(*~R=o2aP1a!~g&Q literal 0 HcmV?d00001 diff --git a/src/custom/assets/images/book-toc.jpg b/src/custom/assets/images/book-toc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c663087aa5985fd593070dba7f2449cc2b056a91 GIT binary patch literal 75444 zcmdSA1yo$m_AYpu#@*dLxI=*8P6+Pq?$$sDOM*)v1OgS*6dzY=VOCy+Qf2Rfn}sE0~+a0+zvM&Xvf4R-Vk2m$~!6b5EP zgZxk!{2YbJ15gb_;WvM=>%VaAU+nNN{PCYWMh42LJc|H;jc;!s;0geE+bBJAh@&g2 z9()u8gnXRbeNb2kh2y?y`UwPn3YKb-7UwEvC$y#DF4fAr2i z#)kja`#3z&{Wo?AP&4>9_6t(_FIdm$-}-Pju;a^Q-46Pf$_g_ zV2GjWzj3&mk?Fs&le5Zy^e*mdn*Y|j2WkH2UY@?%|7ioD0;mFyQ9out1P}v+0C7MK z&;v|^oFS+_1OR1UzpwyzSGOQ$MbxNs=400MaTMTV77-E_{+s;&8~OXb{j0I(Gyl9t zAnLzE`M>G>QRDdG8fq+;{CAz*2mrKY0{~_3f7h{30RYiU0O*)<3=RnSSAFPzFBkwW zKm?EjG=JY^fE(aPJxvKf22emfT`fQtFapd08^9581H6F%AQXTCF+d!U47>zh19?Cp zPzqE5bwCr)4)g#6z$h>Y%mPcmI_Dy{A5bs|3VH@g24#ZsK*gYHP$Q@lGys|a&4E@yJD>y58R!oh7!4nd z9E|~u6HO3J3QZAB8_fvK8qF2WA1xg1Ia(Up8?+L%TC_H_0klc9CA4j{BeY8}0LBAT zf?2@)U@5RNSQl&ob^!-~Bf&}FY;Xy<9^3^U122HL!N=g==$Pna=*;N+=rZUU=*H-d z=>F)D=qc!V=vC-#=)>p>=sW0e^g9d!40;S+3~3Ba3^NQ@j8Kd?jBJbwj8=>hj3tac zj4Mn`OiD~HOi4@)Omj>R%m~aB%y*a#m>)6cFn2L8v9Pdcuz0Z^Vd-MoV+CQwVdY}g zV)bLqW9?xfvGK5(utl)dur08Cuw${avEO6&Vb5dlV_)MC<8a_eUFugIkX~g1doxj)#ZGiuVvtAI}{x8t)C>2fT5-9lYQ8 zr1(7e%J^3J!T4$TmG~d=SMkpY2naX{6bLK`f(X(GstJY&HVKe~WP}2QnuJb-QH1$~ zZG`iLKZ$UNIEWO9Y>2{%vWc3BW{8f7afmsIm5J?%BZ>2gJBe3_FG z-jhs_{2;|5GPKM5rE{U#*ZjBy|o`>Fm zK7ziK{xkh010#bvgC9dK!w|zUBPF8(qX%OaV;|!I6B&~nlRHxuQ$N!oGX=9EvlsIl z=3!sK~hHYqk2wk)_jaP!#o%bE@93KYXLp~qA6229Fe11j#5dIqe9RW&##{#he?E*gq*##{G zGX%#3?}WsKyoAbx)`dxhwS;4ZyM)g~ctjjU@Lm^&*(L2H-%74XkxS`GrAUoG#CWLmFzR8?!{5>p(m~Qq(x)=~ zGM+N;Wq!zV$vVrH$?iU4ePsWr_|di;vz(n=k=(XCi@d#ji9Ae!O~FZ_LSbL=fue_E zt>RB5A*BGNR;6Fc(#lVjKdOLL)K!vHrd3H*jaBnhH`Q3xT-9pS;OgS)5$Yc`Ff_C^ zGBj2+88jU=t2N>P!noXM1n!B5KSYTP0SX5YCTB=&Uw%oH4w~Dh`w&t>iSWno{+IZRY+7j8? z+cw)_*qPeBx4W^|wJ)*1bkKBo>i~CDcFb`+a#C>0ayoE+1<~%I z^m~~}*;u($d36PCMRLV$rBCH{l|j{TwPbbmd;0h3HE1=#H3zj;wX=09bshEm^~DX8 z4apyX55XS}8|@mGo3xt-o28oTTR2+Ywvx3bwSn5g+TiVO?b{vZ9dn&por7I6U9H^$ z-IYBoJ^8&9z3F|peb4*u`@{P$Kl*(<9&jDl9kd->A2J(S9M&J69?>2dA5|M28dDtW zAAdC7Ga)_E`AOB6u-_iAP+zH9a+n?M&TTT^D zKf}%7dx!wU{aMO6&3Wa8*u~(b-sR?%_to{UBqR;8>bKPIu|KAN_OC;4ux{SmKDh0= z)4tod_rAaPvk$QUhYNsFF`A1D0Gw3<0D(CGkj(-BF5$oU@IN{J*&+Nl^p}4BOa5N} z3;q{p{wGNS07^dsfKfC6JVssfQCCg{6bC_tzqAlV>Ci+){}WJ}zY^#oD)J8i;nSk1 z$;bQqvwHx*vIBtI>HGWZH~06qC|(1;0D%4{|Kj0)a}%TZeG##cl&E2U-p)V8|7&!= z11P9M+)=ja=m0#Z6x7Zo-W~W$e*U%`bsv7+^wKf`KAgDEZsmzXC!7qhnxV zq1uFp%Fs#-pn+GC2xp^g}W#tu>Rn_mCnp;}i+B-VC28V`6M#sh{KFu#I zE-kNoSzX(K?S9+)zW?Lk5OH>Xae4I%`TNgbyFdW=UuONsvj2l!Bq+Pk(9yx@SbyyT zp@sf6oCF<%MHrJ*Q6J0RpNv%`2Af$RhfB#Ww!?w=YuZ1S{a-UI z_J7H;{}}e)?OFry!5~!Ufk^;);P$2@i5vL;G~{-ipIwv*7*Wbr72$B7>Ys8%TLsOC zl|8$I7h%om?-%x_dl|e?0i*Qsyg zPExLl2v3!6i|?=@g|Kr7(a=3W4kf9DbjYaR=DOAn@QtjnyyR(=iF?SP8X+F(fDGMc zI-X;?A>F-lTMm9_It1c1Q9-+2C=#h?^f#_+kVi^P{Ibt$kTOg5nR4=bd|(EPk4`50Ci?jYO~O zKDaTox>3BXhDIS=uSAf6wUB*7q~@+5Ei!ai81l8wt8Pz(j{l<-Ye1|?68{gQ6O&g` zW0ML@b+o?{g5>caHoKMx#ya~FcVY@M8=KFpiFiWB80la>1;%eCeTp-HbkG-nrFKV`t`K`}Y7k=oHm8Vx|dq({j@D zeH@X)_W%*pwG@(Wg>Zgx_Xb!Be#4e@wg(GI{5;9@iC#oV>L}$`gHI7!68HZQFn41` zHB28eRA1$K0w0Eg9X+gPL=4);e5VSqFbN28>%SPYu=rnpxodj^ zRp)y&x2G(J*7mZbvy-b=Ctai5g+A%xR~e}II@GG~T4d>A4ff&R#>i11)yHfoyE_rS zBSch4^}#>Ii#MX%QxVqJYU$-0K76V4GHObsT5*p8-|jWn>@s~Z-Qh}+<3lzNi+Dr| z&$Z}MdI%pf3cyG6-}gv|v`fpKofSRASkGQl3u|a~D>E( zB9(UGStf`+e%6KEcdn{tV?dlL4MRr*TiRyXPV<;l|2+EQyv=M(iJ3!-vKS1R4?KecZ^#9YIn8Gy*)!r5<5e zrx$h;ApKMgv?F}JXS ztx@~Hgmu2xpv^x-e>c)(mKmV)6s!tBo2w$nnQ&TlW437Tn6}yzeOd&Q82JlF7@0+E znX~Z@oYSnAkEfO=I zzm6t57%H?Oq##Az@S&=RQ2k>82E2dB_IVdm%nen!VhO}iqmA;4Qg7eOJ#*~U1bgOi zfhK!F>x#ZAK>mLvgp?!!s?%Hfb^PRdAl3gj1MtnsfE3H(Uz7O*&;(n@k!JUDG=r)n zSBUV4bhPX}04q$B-?5CGDd0uSTsd{k&DC0bGaF-8>tLf+7>j-qvGU3-swF#~DCu&B z0Qu(=5dkE2Oux0MJ^o48-F(`W=Nkd8H0saH-<`G1+qv|k!-X2mk(Jw!KK8qry9aQ- z6;Ef%W+(3gmvo4N#v`Ti}Mej&&WD5sd3_Vo0y%lbeEQR{B!TDLM?B_pLW)Euo_$^MhsRETU5-BlUxkt?G z>Lt-i$8KbJ(ijRthviD-(Fr4QWoYa`$@Eo zrGApTiDgDUW>9K8Xiec9<(+J>e1U{(x1r z9yu3<^YcbVpcJzaM(H0&(If2%F*MZCIw?=mEb)xsY^Nd{MvU+!^ZBUB4 zel1bX!q3EC6f|HZUUuhyHTD%dic2}TiUs0kdF%an%Y!h?zk zx_DpBU!;>+La_7~E(OWoXxX*@j%cE7x(gpHY` z4e7S$uIsmWDzfw{lf5qrP)zpBf<_0n`$Cf@?Hlfa!Rc3q(l-P<&nmFVRPSccR69v2 zC7Il|GI8x?d*3?Bbn9U$t2%zM@Fe!g+vtj`!?>&)nSCmOeSA~uO7)ud&1!q0ST3dd z*B3j3yL%h{Ct^`#>hRc8wSI)*2Bg4EKtFgrf;?sLOyF%q0So2CNHK6$|aM< z@+ZA*w5=t+I#Xri`O?*`I)iWmBsm9herrsJ6%pj|zH47-{SwLP5ng-88c|3%m34tQ$z>0!3bIKnYw6aDQLi%UUM zhI);2JB=%@3yjNGH1*%o$Q?sz17_cSJTcv64@}u*a08c=G;%Jq(m+Ei4>LSXP5wAh zHmmxVV>=34YkX(TY<|62N39O8k>T z8fw+YveS;D&?{6zI6}$VX8CWt*=_jKMyZ_;vUx^N=0E2{CsI3jqWkFf&_Ug4S)et2 zv%I>v>Zeh~la)t0Wkc>&IHxd6=T|4QzXJqcYO>jFj9{X6Ph5VPXEq~#|AH^nxazR$-SCQmLZ&5OX0s}739}Nb zi7`f2_G&hY{4oSmj30(eCN#*QTwT&pDFPS0A!HsdD{=$qO}cxUbUIzECBpkWT?|Fu z=QvixyvhcROFw&zi>$wR+OGZyE<2Meb-prwb*)HCrK0og8RLr6D`xuR_1W*yl2x_h zAC}^WABvOJflC-S z;8uM|QKqHNO7Fodop?3v#8yNO>ddp)t!-fv2a(*>}&s4^!GH{ z-1yy19n5-Ix~hR|ak+IH$a_F}@wi7_qOfGma)aaUWt)H3R`;8pYW!Ns;uQ919{8s3 z)Gw2K_X^KO=#yn}%R&)dQN;!g5TsPMrV7jnYz=m=k>@q^UrQ$J0dLVQ|pys+t?wPb6ZN@ucZ3jr=lZZ!*&SY z>rk^6HJXbRx<0qP)IF2PekrNnDAU@HSBgBT!p}F5>845i1}he^DskKcDIS5Vk4H4I z-b}s3%b0l+IID*>pJf1kJ;nb&a*p_NerWf#n}?0ey!>`9ib!8F#YGFcabIl^0>99PV@;Fk<`dx=2EX_WT{zRncv+EW@<~lmY%L z9%}7dW2L?Q`?UTt)%Je=7ydw81% z4Msd0+oI`{-hwKuoa7Jwp-QsVoDDL&$a+yX=cuWj8xkMMju&@#YM6&S+F=@viti%2 zAs9-qEd|YNw(@ zR{dHIDQL~eo<1t?Ggr4SeHt6=$M_ z+Q4noq1q)?OZDQuL~gWm(o6s8gf`&v}#84`VXb}1Rfp$H~e zQBTj3tSUmr051RBM;0P0ANF1@$B~|vKhsQh@PNGl^Y`~oJgQuQA9H2`ABV+($k^|B zTJM`1af_T@&6@5@yhE7osx|Dq^R-Nd;ZHj5%wVp0Qrg%&b8Q~(TyEv{59Fnu(D>fc z*5>db>$`$pJ&i8bZo?XQwCnVSZ-!_UQtnhl8$W`N^i=~rMTX%U$~>R)cONj@9gVRusIz4p z@_r{u3(cN)V?v)vIQ8+4r1}bpMeR>A!&uZ)zD#>(yC_jBE&Pt?LJI*8Fe7sk#IL8Y z&DG%wo>#PV2NuU|lD{Noq+(r{#ai@z>WTiy4Fw&RIr;#j!U{|!EgSDInOzrGK3epr zMRK@B@*uuv6_VW8`tN!(;!XMzLOicAX-bz)7SzLbxlc}mX$&Mx@tivB9A`uH8seDXBQFDECkBxoTUi*cqKUoA_ zqIbP`E@`8((w3n+_H)yjVCD%LbdZZNVnC(DJgp^JGT+_x?^)QWSOhVh@ueQ3@Z_u?(_e&@p$x z;Q9Eu^-yJN-I~_9X26w6wdkY#uRP<8VUL#^9sL8QHX>&Wm=U@${q9lN$Qo6INvFs1 zJwOQ6`eX7On*PCKElX)+yWQ#RW`f4Z)ETpEj_?24 zPx-?H4^e=}9R2w!p!Nn0FQj-4nX-I~f_T};U2@SnbF2Yyac3#Dx74gF4zkgi-` z{t*0k>oE*cz%5mt8LN@#B)Q^S)*Qc1$B*ERKSq`4B)0FmhWp9+dNg-*DDMG%gl}q{ zPd${Oo~9MgG1+sq{*tNn1$Q*NoyB_QJF-YWN!xSwIrgwQR$ESrPY`N zv))^Yhu;x*XWnhfJa56=@M7ic#DDWrC8MmbJX-#-vKj|BP3SI1;PfLmbGBd(1}ij0 zp1^S_Hn^t5qFxUO$4@F?U^+|BN+r*nNW z*wN2eSt*rUXS&Gj)kr@n%ApwFPs|Rl@2`f~Ji^mJm?qSDT|6b6#XA}guDJ(T*iD}A zIpa#6tew7Fe@3c-_2aw3)x`UDs%(h?ou#GLz5_~ek#VX(;lZjI16?3g{P!t*2xglI z^}h!&z_DAyjF0--J}g|GgiLQK7V5Xf%^z&P96+6Rh>_7qWSEE&YGUZl@+06HVIZ>T zx_y5WRbp{eAb&Tzd}F%f-g50}lBsdR&z8rPcSzP!>mWf`wx5#jh?;vG>C_0->+}}I z`9-x_)4WkkeW5s0kvzcqNn_2!A4QEcTv*@+ir>Y%M6}Sbmj3QJzTi{pgK*ANxqkN| zkMp%nO}XMQ??}fM^Ar-9CzQC+=k$2m_%tzj%<}d)aUu$LMzRI|9!Hoj@8BI(+9(r=tm(@M&ns=-=OJzFQF8Y5 zpk~g`zf*7=xt>RI-KegJ?>JX^p1^u}n8@8sX{~s(W|dX--N) z?%qmmm*qW7@=`&H$$Z0V%+pzXxcjD~)SbzLQVPrk1j{Xg9Flf*(=JHh0YnV5%+Zx953&Lvg&mx{wla7@M$9p-S-;ADN zI3%e!dijLPEscX8G7}TVC5=A~eVjhpcE>1*b#3FR)}?{&eOGPv!28SELuSW^SMM#N zlEthI$GYx;IIr)WugvBg+Ft3U*6wM{TJg46Iy;k0yi6_R&-an@?xX<@czRYs+J2eL zT3M|Rh<}cgfqZ+(t2Llap%;l*tM!vXi!ha}K&}k^=^v`o9&(qpJ*7Jj(Ge%7$ zGWPUBp~F@57-FESOY$W`A3E#H1h>DZn*T6$tis4|k$;_a-cKr0CN8&Zmj?++;cwl;XNs zZH06l%BfEeEplsr{Qj`QlX}Z7st;3L?eu7~kG=c0E9kFpSbkBwKfxC3CJ=sR#urp) zg59cJ6K3DB5R6xKlKDdyPvn7GhW6mF2Iyd*0g`i7ep~3>$8cc7+ktG@MndJQzUq3r zLVgwTWh$t@?T}5)wH}Vf+&Sb1x548FbpZ(7NCEGP?8BXF86Cr6i?Y1zO1~crYwiG1 zYr>~$02+P5@FI8)={q#X$I6eVk)X`0O*tvGG8wXy>nG*7k){LrUV5zu#h$G>Q3=|PnJG8aGD08z*#C{t22Ns_~Bf9QT-KQueXX7)ulH zz|2V)Xa2Q;yBr3haL|?#!Zt)ZS`$_AqkwbqXQ@d~=7i*=;FqgJ6Ex5|=aZdhX>Q;X z)QLebdFvEJcVv?hu`;B?J90;|#NRqY=;0Uk=jml1v~vN)7l2EwsuOFb&u*YsiWpPf zs{Z(f!(ReN zP#%5g20mnQbz@Fr@$_L$|H+(UANj0R%ON4QLTX$#qs27U>IRAo^xdgG?QaP-_u1{c z#-3kL>G8aJJLrndpUoy9`@z=F0Ih}|?)mwme{E>Ul$J2L*24m`BAd4PKzLms-8Zya zmu8WxBTgb)>ZH$Ts&fD%nbg#c858(3^_oGetERzkh_y%}#KrXGnk7|K-zZD=F8$lU z5lB+xY!u;fOTOlfVr@l!aA0r*b=>sw;iX;D^1(>~EL1~1gE$!IiP0mA{`^pSxt}qT z!Un3)4IgPw_AXoUF3+QB_T?FD8luTI>w%Ss98n7xNrarI=wa3AdSgtzTGvGvUGF-9 zlqq}~nte7vzS!KNv1{BGV@%}%q8@B0x?o&_C0{E*Xm1V@i>x+0n!kE3(;B^$CGh35 z^?v$crbz)OHQEIqi{%N=R#Km^8AK9>mE7VTs0(44hYE>L@<#7Uj@LV8i!*JS2&G2} z`Huh*ByG_fG(B&6=DW2|=o$|SwG=&Z-#=GXAoP=;>4kV#j#=X_==A7PDg{kB;N1fs zZnK$p+Q0tDB=KZzW1&w5`e1P?X%#uCo6+D?-rh_^o{_sI zquTSdJIh&xu%Wwn8pJ;Wgu7IhTYB6vp}b1pdehdvlaZ%-hVl0dXbh~fd)3F!WyQ+S zHWWi5)Zr`7Tc(Iqo6=^q7q-p#cF_B?l7uk7bEGe3>V}`+1Nb){$cSBe>UB3chNVm1 z>&dqX9MS|A5=}xcT!rgCzpUldr>miUc4`w)^epj45t05ek_MT<^g{fpi$-vqoAGdn zp(a81;}Lt!3M1j+Ga(j=FO+Q2Zs3JA?gE7wT2WB6#sv9*w^tR~0PYLxB6Mo-!oi8H zG*bO4t_dM{ytalcZPiRzET{AD0qTlVqW-XeJa&N%? z3i;+P{WY$kNL3)eY*U@@>hmPgRm^LB7dv5UQ&p>i^794GXt`HryOvS>j;U0fhpC)Parpj$kSy7|}lb;6}7)YjZM^IXgnrr7@FRuryAQybe7@Vw_~$FfD8x zJmx2|mbZOs=j3$Qp;sDBUOhzRXRIW3M?Os^r}C3M~hldRr+0B zaJfFGWW?rTeA ziw%q!{pj3*Xvg+bY=Zh%+fVN_w*0P&h=iMvlJKJ^$QYu;6EPgeCHqCEMf>T>pk;*B zIJNAA&ph?(>0jTNucr<@7x49ShbzQHVxsrd6fUNu_Wh2u74Xk??|}mM75R|2#!o~* z1LLslmuOgAVnDCD>|Bh->X(qqBBD2M3nKIYzlR^o44Z}plW2?+ zI273`RHc&uol@rAaym85G0yCiZ~jvN7sG=(dLJOj1lUJ+>1l_lC-=DTG@?Othr)e| ziJJ<3UK=kp$R_iuB)B?~OoaRpjh22jKmiNiKLPJfMm>`b9X^p9$TQA~E&b5a)st-8 z;oP;Da@ttZycQNTz)a!DY3lYnhMCE3PH+8_>xa02RGJL1mrqT`Tc+^5|MAenxqON( zeoI42VY7OQ9PN>0s0pR?Rl!xo&kZm~H=}_95qb@V7bBstO|GI8jjSHlN7KTl&{27+ z8}=Uf*zoBZ2GkT?yVTO1GP{8On&Ua~!Ahgm@A*MjUy+~AiTY*e80hdJ>g^l%Yb?mt z@LFhM%e8z`S8!TJ?NJ~1B4@KF-E$*r7nNZ4ArTr{p>nNXM`O3Se8bghPi`{GqFPLcDXs43-t21}ao(ig`P2sCcX_ycBm;k#K z0iHIecR2g+J>+p@K|9H(33(JlNL6u5f=55aKw=_aY&Gc%dlEii?$AFZ3>D;kE#r9! zirJ^BsFG>l5*n(pN-hSn9Frc zK8d>^hSk03BBBgId6!2%94kyiTf`?~-RZ=uhktw%oH}RmcaBdlADqUoj;)caibc6) zfZHy;Vhy8t-TPg&lYKGV|H#Gf;-xZb3zFL&nY1I;eG16@E3C{|_oF@|et){2*mn^U z&HIy~$@?mO@Y!L69@gk4*==?!0UeA#Cs90|?2E0{NNBN@Cce=0PQG?T1-?_BIeTbE zy(H<>fX%J$2dEKJv>d9BB6PhzsGWWH!qyON`&vaDzW1W{^m2q|;4&vt%K28qh5^V;IYw z=>reiBuIztL#*2P3{?F-#`-DJV9^cRHtxr_PL5`8jYwJuGtw*sxls=3#G$uKG?nW5 z)BB&KGQzm$DUFPc_0LlLZJpT4GUC-t4WxJi2mt7Qh60nsmm9S1#@i3xeO&91eAR_I zmYz(Q_9Nb*6UPW>otK@ZXD6(KctauA#QJK}?QECPbuzP07>V-~R+!Alws-<{Wz0t% zX4rJkv0%kXcVb5tDj%z+;r@dB99~7Py>8#l=4{0))9F!~0gW zZr@&R#Rqx>*jRXk=JlKgetYh=qSx2i{iP;TKJ+Rz`WH4Kmew}&ZDH!ni(pS8Vq}4i zlDF27Qgcr>o^guwLEt2_)Wd<-?ATx7QVnHonTlK)kMm%7c5yI>ooR++%J@#G3_VZE zB|97|9QeJyqkD{~xZy`83N$#@TH3h7hXM)Td35o&h>pH`%yE12sUi2lV{#jXwI|zS z-)nOEF~naWt6{ubgg2_oP~q(@QjgiguDchmuGHDu&oxS;Sicd^s*5PoekwM5D{P`P zTo`4l%%0H1Dd*Wv*2vK{Yw~GaBt85dNQ6TEEEZ7Ddbc#- zTaT6T5qL0nwRMp`mK`O_yn2bxQ0jx2hN-K|9}hWKK?v`G$BQ@GtXo^|;pOk9re0)) zAin=*);WB`CY&6^_Hcs#?LNh&O0z1y<@eXDN}r0~eGnPuW-`zKZ!Cog)Y&ic*Y0)2 z%2W@D3CTpCy%;?ytsYhLUto=vvsvzUQD27Y$g~eLxCjy?-x~axRJ|t0;NM&1+i%bM zogdm^@@BlKfKYLqnGm+W?ei|Udef?}JG{>SX^{=_hlWpo9^VD*uGw~NKFgSjfSM9d zvNw*21!$6azc%_-YDZ799!s=q=oCJSq5Y$tYwo9AOQ%GrE*YOGn$Vpg$&j}!J)@sz zUiVy&5o(U}3W|`Y8ghq0irckQ!*w1wnXlr8&0P5%)_ezcK_Bvw)56vvO5d_Unx|Ty zEa|twzh^N8D(!2&9(7TS#I@h%xVneTdq`|Kliv2Rkta3!u!liH)Hgs}E*sEQd|DsW z7j-<2R>y`XLAuB1Xg^@+tNS$IusuXKi`r~a%mh1GijOx}ofJOV#KR)|NAiysy)M6o ze?PMBUGzS!r_`1)cTC|dDB)11cQ&HL$m-nGoFpa`!VE5mhiS-BTK`zF5nmMSQD*Kq zgDR{&ZJHwd%}_GT6U(;8%ZlIdnT$VEv%V$e!=nQ?@av_ZLSk#Ap=Q$p)KDO|dVRyP z_bcig9c$JmyH|yi@LQg+_teh*?IG%qjcaZt%{vgIF;UJ9y>YMHobToqB1bd%k#3(V zPl={z)L1&E{hzIf_n7V*$mmIirD*Q90`{tvo;V1ebE6zy5%-KG|GO1b%RVokw< zo&>iOd;I{kU8L}xgnb9S#LsY}D--D~Mv-OTpTRXXQ_|nLDQ9#dAlWjU3NSTw zW5P{)=kX9`FFOBMmO*-0(^15Cc#s(wW3p@cArqD0@kK(bdxL9Zx?&=%JLTley8`15 zQaVH*MZ=@}b)dKbiiQyAN5~Iua-rNO@7dfW^at!K2{0#WOJ8eF4GyvUkQxxq4*iUY zNejF%sjNAW=FhY`qOB+_x0HEq?kiwG?(&G7lG$~ws1rdIe|%Xdqtmk@7GbS+58TOm zyY!@TpuAu89#3rHn9<^_rrJ*C>>}gjm;u1XQ%E)Uq3Hj342$C2^d!C>^}%?^7Oo?h z+;uuc*_%9?ohNYgpmySXJ7tn~h7W=sukpAZ`-iElL*MH%XZ&(AOspy~5Yn?A`E2KB z4BXVBQ;lZL#PZd%?wFp77ArMBEd!ZBJ5``z=f66ry}@okacK1bu)C_K?oaEjiL z7<+Zx1U)6`EDGyxv7b?vC%aOL`j^~M;`67~)By#tTuNd`+B?xE0L z_g31%jhOE`+NYJ>+pBa(c&jX!y^l$HY9em#QaK3rV>E!Gft19<9{j5`@J;7eTbH_b z@4G}S2UDJ5e~PAHjJ~R-#eVm4f>vYVmo|RJMG?`AE+Nzj`CQ(e0c#*UG~v`c=#ktn zg@u+Wu91bc`kMNK6)CKH=js(XyAez8B}U9SeMjI zcoSK;bJHh4`)qx6)dJ_!Fl!^8zcgiq$uLeY*|2y zUDty{&>`s5*kvv#B7vW^W4`48*5c3cUehb(gUE#wIigYOHcz`(@Ic#%XUdC0gHEDvlX~ft0C^5`O+~qQuMnJd-nH&S z!v!RZ&y)@q);Fv?_*_yF7SW&cc|LdS3`2M5S25L?H?+8$(~;EGQFr88%l?YqZT8c? zn`S^Zqd-^e`l+A}>LW?Z!m+oBrtAc|5D#Y5DLtWXFAy0BQQqZBlEt`|JGf)$Twz}j zEJrb$xUIpEg)g;DU&TkOWvMo8^m2u1D{fcM7Hgp0F*0?#Oldi74i`|%6|wPF0;W-m z!W^o&i$OlZ^eA#leHEK8drq41Z=5!*)X%6V_-%{i9b1PTkKy*1#9@wmf5MIW3_|tX zz1;y^Q#F za`t(3*VJKLS6qWruI7jrwSLwIZRrut6(g=!-K(}H9W7yuo4cPp-xP3{0v00UX$&b& z-gpQXJu;v5{Qe6hCt_1p7Tcw%;MCJv3RW?BJg{8X~7oHHY zxWtB&24An@CH6ELJ56-2xE&`!+Be!U*A)+JpNjVoV!JumS^9rU(`{IO%bFs$UDHiH zEfcPXwXY4;M!v3qO2R{m5qP_4mD~A(#0OnJE4o&$7z;^0oEqH;EM`Zt>i$cLzj3&rdwPw-$3>9V0aiwlC{x9Y=frc{jBD{-eB z6)mrCbREBss&))(Ip9v=iDm(N>k#YACGwzHq7wDVv8_(z)XCqPX z{LGU}!~Cm|Q0@U#b){7>E(%_NVge(K6bSS#$@sM)<@h0Y5oD%jWrjFafhd~h%LL<| zX5uznPABFQ`C=V>-Cw&XX2(OsR{UrFxBJ@{dj2Uf3QTVp2|7_HZfCw+@2DkKd3L2I zh`lrYSU|NjogY=Q_9m$NRh|2Lhv(SJj-PU4&MnkUQly(QtR-p?lDpY4@ZuX|SJ+qG z;ja45Vn{h`pmYZAByJ z`d8>@F&Wcg)?7A=!Phz>meoFDp68BLI9_|t*$2g5VNVxnbUW$3!xPY?8E1B>OqUh9 z2e1U8P+vh7cyD>xN+^}6`wGc;hI033UyhgBqodoLx^@A)_1Hy1AAfftma_m%06@7N zWU7!2D)TJ_Y=*sEklIU`ng~ltGltKZPX-*&F*pLuoL&MyRW&1E-gHk8qwzbFlV7%% zgP*^SK8`ZeqoGF2~?o=gS^r}^-LAgg05)oYwBCc96fJ&c0;jb zI@jWfMC8#}FK04Lhj*Ct2(LnieQPy5CGY8Xq`AZtHQk~U!ABqZGy(Nm^wxfcdtBn=e&>VOqOUSe^0+uJ3Y6~*oV40b*qJ-?0MCT z9PD7;k>-}O6X%?u+LUdH5g97%Ezuoy;O$Go`lT;aZfnx`hE-tP-QliB?Zb~`2Ai!q zR(xw+d)wNHADYBbrLsG0ds~T(0}gmj+YFWX9}sfs)sTC@7Cut;i>TIZc73u+-~H^AJ3O? zgf`YVV3!jA&>a;)h3k0>Q_HX*^KSI!agNVM|GqZaQjp+H+q7Dt>3 z;-$3DDPL;JjJO}9s0B@wj7&^TECjqC{MTGZUl769LXxn%5P4YFNl?WBG`u|TzCJF) z;OfM7Q`s^OM~ky(R(w+9wv-p1Q|=}&owa*~_?E)L66bVd&>s}czKe?E1bkqc^0kw? zi&5q|%Cl=NhenL{&@{{j7(@)oCoP!_`gn2M>Ipc;dZqz>j{ahsJ*EEUr8Xjff5K*Q zm5F8fdYEJ7d^QXu`VZi_KH!vTlxnP96gTu~<)PeDHT;=nmR;aFa7QKn9@qYkGO&v^ z&q&_c?SVo;p>03i)d$vXzG*7Fbk_BY#*5K`Co8kxkJwY!j*Sb0;znUOiy1xa?P53(>o+2A4o9&`Z+eOPPlo+M z#z#8)2A*(4QK%__CY=9B0Da83T5l4)(X!Ii@pA-o@Bb8&R zV)r71>j&khP|?vXiCLlM$xS2Eg=Wx{74lqgeSLUjr~Zb9OP6MZfu>>%`h~I?XC5q~ z#4h*A+b6&TtJjXg*%!Xx#LjgZ$F`(D&it)b+dLF4Be%*km)qpGtTU2Ej}Jo(o8W6! zac2npr zV#bQNIMKVu3XrWiyr@#hmu+}hP_=o+=DzGuGgpmr`-tcMCni%-L{Cy zIc|TK!$Afiz}Oz8TLFy0;rj0$p@iVlLXtO@wIXk1h5arZ*5geEcLmdC`0n zwLf@geHGP&^(oo(=%{b-fha~DuIsmfWVaYrFwN`IM8w-{O?l`d()%AkYPd2Zl;0Sm zo#HR7GSWdA`=`?YIDx(pw^V9IZ***)v=jY4O`Oq@%g>fwi2ecpGLQ1BHGCh}N8i_bH-m0_z z;&Hh5Y5g@lHEMMMj8|#OZooB3Vf*o3xAq?Y%yK%y7F)`G)t>9V6}IUdrdVC#Xxt~8 zVuI0#Yl-Q6od!a+Aox%V zn|bF2NhLe$U7vk*MssCPo%W=U{tn}cf7pz)ccwpdL>Im9;Xk;S@4@LeFi@p|Ul@A< zz9y~M_@klODt!ddpMZnd;A!QD9PtjNC^(fVmRbX`ShC4gk4R2ihtka_^ z#lO3yW*WBD4+`4legKHSLQAgRqeWxF1)!k=p#dk3CJSd7OXl;Yj)hJ6pgR7zV%(5Yj9c)7GSdecJ;U9Z~y|AnRfpJtd@-CEe}iz z0-3PO`tx3r>$Y0!gNW=rDp7~Mt!BiT569=kw7AEQzH$Y@hU2CHp?CiQMpf{wZecUZ zto+dg}y;p>ZEp_SMrBZZj+)ivY!r^GA91mMnKb!#iIH<*jE)T zk`8(sPNU0?P%m3B* zIA+`6u|3pL^S#!4-Gudc*H5}WJel#Pz8&>@fezPNI)HyDP3$cCV#rRu6@8UjXS22a zW0))R=IMd3ooZ*&^WCr1OwwtAkj?jVHP}QH!v`1xvcTRDV^{26##_4dt;rAk|~DX3>`ou6|uCRrPa+mN^< zy`h@+a$@ZFTk0sHhS3}NU43lAbplu4ed0uqMF~IS`uD5;h22&%FAG!(34h^7ye6bd zGCRX;gmcYVBD1d@G*PuR@jJDZmInN$FR4>!;+xzUcjd6JJpYN{PM!KFLx*$?q{dCb ztF9Q)-rkrw&W8j_OJ%$OCy$XyXRgcbb?8GrxC4*7;V`Kpi}d2&ykE$!lxNIhJR@df zas*XRlCfBT8~IbcsknJ8T~Td6O3!syqOkG#rA1mh8|N4umv zwvUn^+NZG9lKT#GTGW__MUs&ZJS)m)(UKDioQgA zrayIeG2x9CHCHv+j3;vxlVE?>hm4fsxhq$uv_6opyF80K`*WkDD5$s`!uwOuH<|w< zZ|f$N40W!u0mh37rI_GSccTrHZ=S#W{paTBsLs*oTU(wWs6ZOI^rRvIUuN~ioEEq4 z82+_qe@rmlUJvtKx@7W$VQ@^-uFlt1=>tc;oSinI3NcNU&&u-xS%twyk8Eh|B)%1T zoNOQ0II0X4(H$Beg*@20RR%U0IBJB+|2R5% zu_wnZZlACJ!HJu*n2?1{*OLs{ZVg|x`ww6>=UIW_Pp)kdrE$AjlFlRiBd?u9_R=c# zqds+7tdJ28^~~E2w_cZgV)SNN%XU1!OjTK;emuC2MqsmNrB!p_BB}A@pPwq5!Sx9c zJ+0HZ%)NBlGDR&p8SLehajo5^rf4i{$<9I56wTw4l;(?9Qz(cXyvs*R4D<-1;W1K5 zp{5wE5>Ul&dAo9+`G?s%1@6UAOK;?=_Tp(Em$GuU;Q$%m;l^ zMoEGPD|p0zIQzu?L`{l2aK*jJXkz0EJJmUdJ{ z5)uQ^^3T`|jS_l2jABBFV_U52xC|mj7_7p&aYMbH#IKt+wJ&XT5;7DMnKW2zTEF+* zmIffJH*Ozdx<`uLkuuoPU>{W9wSG|LrrUFUN-m^|aB*wXMSr9Klj&Z=<|O36LP*8c zR!|44jp}`PP{`4lLP>3D+1E7b$#zn>3iZ1nzscX@{x#xrrpgke(yTHVY9E)l8!vL{ zS98oV<32~Ao5bgg5c0WCo1oxklH1uyqYT=Ki0h%pCYRZ7V+}7a1xa_y5X8{DdS7@|Z)LpsOS9f`@P@P6x} z*elS9yX2_@Z2Y(zXfniXp?OO0>|`1e)ErlD&lhZg&;8x8E#-X+AQVrQHuCe0xl6lq zrH3+YcjMe;XfpB3Jf&|QRO+m7FJFqCM!_e_-%0i=59RGz1IpZHRR@*WtiT+?#D>`Xvhi7ugcaVWMsV! z=L4RRs?GCfAZ>kH-A<;u({QuGR4;vVrG>Q&-6^6xI01!pjO2nHJp9lw}t6 z44)q=WEfSTX~5U7QM9d12_!KqC90L;h5$x34=aEG4(|VdpPq1>Z(ko(L>$pCA1;c` z-)#;OM%k(iHtARBf|-Kf{Cvo-iZ?mRl%dxDi%9JYWta>8XE@TGs$lb*E>|yUmp<~0 z0_u2Wg^9!haRo*L^P?`}3sim&2SOE@cP*`C+0ngFdV$tqG6BhJTpp+N}XMY>7=<=1YhGa*H z7G9>@ziIv0B=$%gVE4=qrTq8~9b17a)cx7BF6-%@_k`Q#xo{%1dz>DbJ>K(6jKz{`S#Um8;e31 zFNW|87s28JC&Z>2V`O4(ox>{KeWsOLcd>TD%70TWIkb7RB~~8i{dtjU1xVe)F9w7+ zw{ymNhk?da+`{zsweBMCWkJ#qaXa^Wyd{y7H3orQWJB&UfiH!buN*vIiZVXp@t}UC zXuSFMV9D^ZGEJhUK1rOL>EPT}V)-X{?tVOqaS*)bZC2=pfA)}(!1KKAMC+u@E|}E< z_q)g3nxfzoFhT6AonBgOm7-OKJCFhb=IxwECZGK3S<n&3x7_lV;m6Xam0uikECyAWdgP$7J2@#myxStN<(62B!8Q6ipWU%PIX9a9 z83U6h3$dS^|Efjr>*TnGFLAoX>zCu!BdHGWn{T}Or zLu*!T?0)OJr8L$TNR0?h6LXm(+&-r#Nu;L;PQy%5lu1E(BHjLlatpy{6O>MW&ieZk4qpWwge@Ucx${JDy8p55CNxwF{Cs|ZMzeTas`N?qVD*Y6ZdS&nke|J_EK$nG`Aw>r#))3AJM=~e zdh{9%iEch4f#wY4C_n2!UzVebNny_ z?Iso_^insUCHVawN8Z?)+RxoO!4za-RT>BMecpC>w}t7Vbxkw)h)=;R;=1*k%KR|* zxqGtuk}%YydjPpnKTbGjo7yUKWy|VL>WChmu(2AH$>e&@tN;tn6nrZEaJ`oU|BqQ_ z8>N-iUll_v9IkRpGjE2?8QR$hP`7J+xyrr zXeYA+Nl;->=DgKuL>uG``!_dcj^xPuVECfx3#yy1#=nfhs^}(P4}+uAB_B>7THB|!@i-tsq~_7;SRO~M_uzWc*P)bj%&O*S|@Qc(=z zN*006B%PepZtu3K%7=X7S8b5h8Scs-j3N(Xx>4OaNW9U7@*7~jBgC-G_76R-nQeQ@ zDkohl>_P6ldHr+?@qI&--Y=#7av8~R3f_@Ld#hHYBIe24N5A@hK!LeZ%6Ew4bGjEn z{3$Je6L*YgJvz2BcZFRBjh5yO++f^}5OAfPe%Q~E9*OSekMXacz_e+k&t-xgWL#P2 zBNBTQar!HSYF+9_XXuy1p2wN5&t25_tv1wa575KZ$#3nObblG}Ic)umWQr>M0<6r? zXEkQxO{XU2{j~GwBbDP1C_FR5jeFM#dxs7*N~Cu8yQN>RF0Yl!kC1thYAU97Mbtq? z<{%x`%&mJK{|N7b7M>pfPrR2x$HplN?n0ui2A~YP6VSjl+<)>Vw&UPUjy)*Z-~&b$QM;d1-Eu6}`PYflxwf`0q*dbc>V>J6pYUGD)ewd_fZUy%A8wRRp|Ds2qJ4NLI8eiUALj>bcLQQ zy({LF(RGy9WZ7hA9E? zzrKT{#m<9tV%kwUkBA5XAqKR$v@VhK2`}F3|6invbJ`)#>cvlFBwnGPz9uce`2TxM zsN3HBDf=2Jdt)ElgWoXY<=-hv2-TW?(bj1_e!?-kqvKrgTK@YO13AYVMlmJ={Lc$A z+vMSF9zjo(%XWZ-hZ1EA%kI2C;vw8Z7i0zkLLXw&yr&jpO+YO?FDXK1h*P2JJ2Hbn z0+>4{Vu+1lFpzjynX@wm89JHx+V*%rHI1b16NlT|RpwuKBYw7Bc0_0=W*EX7=jcvb z(}hCVY3IL^xN@rH;Q4e#+l8P7Ys#A(SzY-epAI^MK#FtgR_p6iazsHX&&r<@;k}jL z0mxOW5B_65YR#*h{nKAB~Q3W$>o2n4NTCH zlF?&oeMXe%Q~{I@=2v+(7rI472r*SwhG9{<6)f;72oswSAk5oxqfahw0T$wbw9<5% zKVV5xc&1*c>;)RLKpMs0;+JmP!JN?*(Z`ZU@j|@~{OF*)QQXPynKc4XJyW+5j@z`$qT*#09GdjFY z-KC3Eq0#nn70IcZ0(qq${0DFn57x_GCj++`aHM}03)@e75DkcraNqu5vf3XaeAz23 zIXQW!xolubltob_*!NLND_6>s4?Nu?^^+wh=uY)nco4WPy3^ z&b*ZI&sVva)zzT0t0hk=zEBQdsJd`pM$qzb*8 z5Sc3_G<(Y2d?~sL8eHyS>7C!f(3iQn=3Ti>XVfu> zi>TjX6s=~u7wC_S+t0zxE5~)O;Mv2@W(g9}uWlZJS&KgXEUYNSZ1;~TI-vgE>Xt!A zhwh0M&YH94q}u&WspJdtIy;8;G{8yamVuM(s|?>gr2u{?RO*L17zFh7aEor)fAvdm zqHf!wX051$Yqc)qD)rk#^;mI2*{z1Zp>ei1DT1Ho{sVYWQXI-xMB&D{z{EeP_@H~n zMVLkp|6*~>oS*`W7>IjAQuBMEsqhcviaCo}wD)>W8Dw>Suws-nh#?+kKpCx7L0=CO zVW)2j#nufy^tLULprRH08~#R}D`q5QZ2_lW^^zS%kmJIb+%LO>{fj7|CKm%|%%7U7 z+?T!82#0(#a?PDvQz_Z!D14S9Day=$$fbLsr z-QcT$ivl9=GE7DZe-bLw6p{btD#A5X!TkNi>#h>2)rJrec`#e7+NkWdI^9740fUzsm0rD0|MGK>lGKwtA4#L;Y17yHX}E^TjH7Rg%>WAKBJi(9RsCOU<+qy3 zSV(`ir>(xIhS0sr8UL8&IkNta<4s0M`W7fzWG{l*J){w2Rn}5h)-|hNuHkqiwXWkR z$dmj0revi*urYN@Ssm5}n7I+|`FS_o^U}eOkvIIK?aHeC+9%OEVK~PapB$2+H03jO z!esND*GZR8&EXsIuPUG>0h*)t(YTaP(=>chN` z%Rv%T$+oleD46YC8RRK@Yr%bdOY7qJAto{RP*3eB2q=x9{WmA7ERfsEV(| zn$*no3D`3~pWpM1t1Q1t+HJI-I22^ohLr&C#$dt`0k2OS5{#&xa@kJIW(jiw2+3}A zWC5_z2hCE+M7CDfgLCCAwFjWG?Zk?diLk^F0F9Nqkq2PQ4dteYcr-YZ zG#@4MVAs2wNZwrkfTlI|OnQG_HO5^5w^Ae1hx`h5 z<63W>T$A3pv5*4oc1}jbu9e4&CMc=}`$4Zg^J=FU*6Kc-aSJ3>6FlJ9HGK-z+-&=q z)s8;7-6lJhB!QXMt=p}$*slHH0#yx(kDT@XT+Mw>3lrE~XO!(DRz(C>>smw2B;r{} zq!Xk`t=Vxd4#b3i%sZKs2Z*FKs+p)=4rID9;0X3 z!AOR>F#gR7@?uZItKrsjK$YXdDwfRtKj4q~Eec6hp9?s}qfQ1(#i9G;w&xXGH z(SnP*^in)j>C6c6w7)RcvH{iPwc3%S^R=LmqN}>=wGRx-TCZz+1JnP$eDWW_0yy63 zhVm0T1xYFLa@}$-DDo+qBB#aoNaJDhCS-f(=$v}K zMchxhN6fwzIG4$*O5p)x9Sfg}mZ|8>EbHW3`u8rtdz&F!nC$akWv@w}!gCl^e8pNh zwE>y9|8Vn%cMI<>>$!mVqYQl&Xwh4qt!L1+;W`S$T663xrs*@y>8%SbXn4s3gj6@+ z$mjQjR9&d{{q(}yt{?gSTrzgA9ez%w1r4nCIHP1)F{&(o|3;4OZ{;W=znw}#nxQv( z%MmRBams`4K9IX2@;+<*BH1C>xG9sXksyh$bUg5VA^o<7HH6)x1HEt=pZ9NRYh%U0 z-)?SuT)aqJ;6K2-?Ww`Ea0gZxc{>OD6U^vH1QkpI8G(NgPSm)>XJ7!~>1~^DHm>Zl z(}{h1%!AkY-S6{%03wAY!q(v;x^0h$re9~V6>}|c02Xnjz-DUGku(|>B;mgH;W+U@ z1turHUbd~-IIw0WqLii7(p zm9L@hz7%kExxdx1FYt3(kg@4V&Bi>)=m;|efje|!e@y-@Z zUj=H^WO$3=@GBJ{c?h#WU_HG?Q-Fgqjym)o5@YfwJcVBW2gr{7 zdXuioKDswlnjJtUtN3S1@4>tNJJ8>wMb92;`}?7Aexs-*Af2SJoeJS^G3cR#`%|}u z!-zHd0ed;uJJjI=Ex+@hv_E90LiUqX+*Q_O272%oVUKZi##XBz(w2Lqhhy%zDF8AY89;XQ%ymvTtYy*HNq%&Rbo~w)0O40P+EErQGro*O}-OmAm zxSsn=e+I0~0ga)2yk!G@OMu?XFNqh9Mif`Xd+ldM-Jg8?2Kf|Kx`U#dI_RZRahs0) z56}pI=Pyc*%|uESG#7F&TMXwRic2>BB7%^X>~mX6*>iFUZ@1n&t*t$2g^uCkv$`s& z01pAL9D`l{Rjg#6Z`f6m%{;nBHh=V-Jtcd!rBl(9 z6UC41Pdp|itQ23~A8Sp_=3J`6-YRz>Gj?zgVfUzYPDHAkQ1rz~SeSDVk9qpo zH|a4eontTF^sN^ps8@;K9mek;;9b@O#*PfcNBF37j5(P|3w3ZZo>nwY;!4gd`rvsR z5RBYrD6gp)-VLxNJ6OW3+e)pjLS0RX&aGt?EFZ8(`Xp~hh3qvTf$P=-9oenO2nLWc zKZL}i2%YJk7gLzF?zXJr`GL1leBc9^B~sf}_HS=o2HrI@G-q%Q`uTT!{Q-Gx^yU>F zv@l!=)^&Ou8dz6PqBI;H;I{ox5mJSdy-<|#{(|Wqbo|<@!=*8D+2;n?4gx-qekyj_ zVyb)h`u=(D7s|P3W^7-Q-pxy8bezWXC-TmiTFtFnzwR2H&psia;J?1@I>p~+gn#H^ zoW@Y>qhz9Cu6M~OJfwk9|1#p)AQG%^%pCST?T~~^eEiCD^b=W9q5sp9cb$H)kireTAS`(!$kbrSd8v)={vXr`YyG7A@ZOSSp1f zGOSxZB3h_%l#EouiQUL*A-|H2Zxo@V(MBcRy!d6VgD znveRL8bT=VkA^{VPnvNX*1|uQ#`Ea?KKwoSv=6Q6w1JIPYg|ex2(3Gi4!WVcpH^Dq z`Q)-z;V##&NNH-HAA!!geTBeUm#<+Rhr@BwqH|eKA_OVyXx0*tJ%FMRL8gu;J3XrK zP^Lq?q0o`SMIn(~4~2G45nC>RZ*`H$`o~Ltnw9z`lMsnf_HTu+1JZwb)^)0gtS2~p zCL#s^OHp)1m4_jLsU_36$jj*L+=_wD@{W$&w+Uj0--iH7n%r9pDQ3f;z{Ifnp#jz3E1u7Z zIAp$Dd@wZgf`hs_ZM`#i#au(%?f#VUacT`V0@<6S;sS|R=EAsa-n?Z=8TUk-ZsI~MOnKs}`IZ5#D}i*!Ay z&94c_cu0eK=zqRt#613sCNNlMD9gp>7;r~5HbqPbx`_D>3+lxNp^Rv4JnR`f_Z!e% zChq@ivgfn~<$61HEghW+PnD-=wOx4_$iC3D)Re8=s$z_WgeA0QZVfOl%e#>a@R*z` z59&$sKMl$9mfD}@Inqn?qvMS~KUfWz^j0PQZFHn>|CyPn6XT%bP6+^o3_#~CK$r8J zZSy=aq0UhfpUOYd5%C+RimUD#h6KQ87x{Y)M{p6^etAK0B@11)NH$JfQpu75&j|b8 z;bKW^`&QYz=xG{9Mo)hpic6d$#U>;+@{%0-JDjf}WzG@>608%~=**dLF_|5nl<(On z212Q{tpJAyBvZZ&h0kKXPJN%-Id@)8T)AXVwAUy!Z+GBsW6t z?$L3}Y!Q!3`nMJ~-?O#)^(DdDS|(dSZ{&xSg>l^SBURx@UHonU#Q1e$T@2>N4Y>L* z&B5^sj`$QYoBD%ca{KPyFIClpO=3u}8dS*HV9RaQAa5|&=h_*`WAR}G-t&Ml$GFp- zhw>A(DjPZ7_#m=ZX4iQ;!G5ri|NWTm%7Lg$`MuGT&1VgQRQkso?}MIB&dbtlVLw|! zC3Kgx-Xrz5_0y02YaQS&F zwmDBv^SDrMiQpLvX=9@SIBLdmw}|j}`k}JGlCXcMF3&kCxba2u-Qp{PhJTOt11OV# zq<>1jMz}%G2F({2{w@1=Ip*9={_>%^%;x28|t-Z%yjr zrYI;Ul?AUHG-{m|dl_E7o+Q!@60vydiyQCG(Y?XcJRvJ}qTb4GP?U1;D}%|+NOq3D zSPl&Fq`w$54C>IT9>s7hZT`<>S7RH|p|d!g*VYJ)KfFz&Xtpf)1sZCQ@$UpYqu5Bm zsuh_=+Ua0ML-g9|-4q~*&6i1Kt!x^xxNbTb@TpQnC@w>yY zv-G=^PpCtfW2OE2Dm*ucm6Nk0_2hvTg7Z_gG6fN6{Vc*0vWgttH7`KP^>A1hP@G?# z{*bn2y8ZpD`KgFTI_)-NY6!gu5q{NgKUMbauUO*#dvgkxLbW6@{#sR z4nFH~t~hn3x4I)MeJ_cK?SAGRlGk-UAt!i2O2kng%tpD?T-bE^Y_!f>hfa%_dV{sf}T#h}uIb`^> zjIREpWYuXs8NK0@@CAgQVHAI=PP&6C*znt>QaKvW0N6fz>OjR z_%3O_CJ7Bp!R_$i+)_)%w!?zl*^9ujQps8zF{K{+-;r){DB?FScK8pgHf2?`DC z?@l#?*>Z;M*`ew>Jw4dTU2+w@Mi7X*+-SGT?y?>t;zC6(tFf(M$W}5)nN}mF@Bp_| zME&IDuc%7L1yo)D?5y&BzL#8bQZT4JcEr~B9G^=d%YaqBiLTvjSmO)eiH>*kHV^+|uFI zdi0&baI1~(hlffFf28A_WKB1NAtt6x^fFm`f*^Kq*<;>%djhk*t==KFZ!MQ%kin;( z)yI>bMp=eP)iX$Jj>2Qw>ypvHUhmu-bm_ZSZb;Ral-O=)3waM6H)-W&2YK2;YUB4o>dJI>>H zo$%qz1kW@NaP^skDze=rfwwYZX`o& zvu-nWms!H+Q151mnd%+ynN|84R=GA0*cBU=elDCGbIkDKrUE7fr(iFUx`H>VL&HLW ztpK?`^BB#rXrLQ$FUfrPPEC=GNtWHt+a8z2UJrO|Hgn*6k^D03^pH^%qOd+&UZHXx zhXTJ0lV0`OGKu$^3ZR{(I)2nF`q?KF**Xl2?;*tw?shAv&fPOl@7$Seo$ndgzg|8S z-dbZ(@KKr^tMWXorj;h~`|O8^RL%oXL?u1?TRweNgLRB>^u6-I=7s*gR3IhspDh>P z+|Ui%ze~^NMF%X51mqzJh2gHyf&D-74?{}}d(W{Col{U~`oB7)2 z^<-z>8}a_Yay7BntFP1EbNb53%GOJ%xU<-kf~>ATDD(cFq{JQnudPYLR0h4gxE7J2 znw{2_FGj>@gq#(=>PHymaEP zyEZUFuKPXE*G9jUn%LVc<`)TXRHT8i(OTrk;zV`n> z*5MaZ(AMvfe%@=Zdwi9P9!-V`79X+Gyf<$A*0t=PFX2;dr7r2G20NuKj`|t5L9*_h z7L$bXcP#^iDK!THW}6)u8UI;)2i=%MX`yOTM@3|}YPc`qc`SOXAe84Rvc=id-P`gl zYHx}=_fthdC@AZrHiu=}u^e1`zDEQbc(Y@X3=8&iu5**NdwdgujT$w3XL2}voHj20 zP0JsWMogA6@hXS762M;7;*(sH`od%f_la-1ixgig%^`?c1^V_*;dsN7iGD5$!zb-b+?^GxQ&T`qG}{;D~%` zCQ9Xact7q6 zuV;57M9(w4YRTqvHhCLrqBcgLGx3ZFbdU!SDCL&Lg@gQ`-70*+lFb0zVv<=cEr~pU z!rU9DJc*09Ny#f?QvhI!Kp#9`SqWyn)J2Xw17Nua((Qqdv2}3QC~GB2d&6(5JP?5d zdS`84=Q!ARfbD(;K$#K=S&JBvw}{k^Q`zN0BeFZ}qf`(lb*GY~*|>A75M{5$IxhV&OI+?6U?q69;e6?Eq%o5QHVLjE_l%Kun~9o<=P_&WR^aJIc=do{A`1Bew;2x85U9@NH+0IS@t?7HxC>ZFL+4 z>%7J6Z_+-U`${i;w?`XJQK&@QJwi9#>MnTgpi2%BYmzx@gvo286^Fzy#5C=!xX#g& zAWKVq@}Ge=;b~DsZWL^bEr6Pi!;TsR^HOk3OxINQ$`SuB9_fGnUHG$h7XtB^udaH}- zT^i_Q~CMfTF;%zV^V>mPcT z%jQvypuY-Z4yiw%hcToG)|Sd~r!YaVaT?$dCHZd%Yz26OhivYPcj?p2929Q^g}HR8050yq~}=fk?XY z2WtGHm+XGp?pY6d;ostPJUpBk+Yx$aLItKLf37(X7e21j6LVf^Wsy9xu&|vd3wMU) z-6;J`k-gUC(kgwI?MYS`mH8t{ui?!8SyJ>g&m+L!Os%_5e}n}GM2p9fq&IhBU23Hs z0}pqI-^@2p+RAYf2dX-?SZprP%l>}Kh#Lr|Qu7bgQ4VI_8W*11lW!b|L(Sd&C12O( z7^LStRs;#i&@_J2_8u#Jnx!c>y&$fa{zc@l$W&*JFml4ln96oIeuvTu@ONPQ%4?Q5 zS&N-VEOJEw!{~FcKJh0N1QC58pmy;QtwelR{Yc{Z%oUR{sGW^*nGZdf24~ z@+&qx_c|GL}VQfSMYZO}KvU;3HuQFGq=i`OxN}X|*1a71xY1>G<`(y;; z!eL-{@LS@1o8@rc^`bcDyNal;P@YDd09NJTHu)sSD53wh{kzud3s&mFiap|nzI=Tw zC4oKNp9nTAE~=CZ+hDbFD4l(E!-ZR_D_{0=D8)+G2)(P_%l;u% zFKH}pB113X)ceaff;$2HiyXVV+;A>8U~?U!d*|qNmyt6V>>(N2ZL&wykl?f+a`}*_ zCraDmEq`ZvdNE~d44x(Eh>{9Mgx2cBjY|iYmgu)w(IZ9W9tiT%1L-3IQTj5k85{7( z16Bou>Y<-qCtpc6fsP8_o{4G>G=XJI2I_abaw6{vuPTm{WH>ozCWY*QC# zznpKum6wNLe-MZf<4lIpijj?xyU|FRI!ckP&osnx@1Ds22QX|iFttcq-NI%ZO1=Fg zT)#CQ>`OU0%dYkCBx$cZ{pagqcW3_;UV=`sKKz9|aQ9TpX%XFG!4N}W;}^H`7}ei9 ze>h_aLK6VzsZ_UI^Ovdb!XKiQvyk>w*jF%qrKB~Hn)14)je#YfzdkfggFFW3Xtkt! zy1l&AcYZ#5D|o2X8(L@pV3(T$z<&AN$hgS>nQ_^7@VEd4YcQV>BTC_eLMw_`4rhKFlr&lm9au9=|8j6$D2l1?bl<(4 ztGgAWJ6`H@L&$qoxK^n z777|-=upmaMJkEvB3cRuFvnfGvU?CeOyXngo z)^VgGC&7Qp7+jL4rgY=s;+D(uOMt!M$^2F;g;E(mBzn@tA3O~%kaSGfP z9s1_*o`1O+Lg8-Qrro`8=7@M_*#_uL`%*ZlxDcY9a4U)=0XxmWw7(qrZ1lMzLP@dv zkF_Y~4vkZO5htZc3_|2gwQ z?6+*SbPrQU3)VGacN?qMWfb7&+o~qj{wo@O^8H-r&=Ddyc{lxuUTO9lDKpV_l#z*i zW?_q7n2{kO-30k>j@W%^QzKJ=&zvP&YF?+)awJT7qarWbipY5-0#}h11zYMX|Qm)9xtV&|I$_q zYs+I{3egw)In0nnbF^!C#U^l1Ezt7tZAHUuWpZ!cP6wY{HRejh|R{eVPX?K!H)YjSeHN1~>LV93@ zz($mxtK!?birAiUjDj`h*;1F9-(8s_$iu%gaq5abhUnAZZ; zu6+|#aRuVrK`r!fQ8QOXNu22K%pmuFDXHvDqN^=&cJ8hpZJ+RTj`PgrvQo_vJHItc z3j+v`5*@LNXF0;GUWP0Fu+o9s-kM_?hqe2tMQG8DR}zT)4Cs+-SRl zTNC+&AcQn=h}*=GML#b1Zhx$H!}Xmin~-s-^Z~6$6|;cZE5=8}s>Ef=DgT3_NB{`p zZVYaJ6@3_vg)y2vEZV`MDTeQ4XP4&0FPL=tSBQBLrz3LHdRG(Aarr-ADEq2@Vc+&P z*295)(~obBn=w*7i6y!y$xR=TROg7RQcA@Um#tQh^;W{ZwP!kTLtJjJF^=*Z*d`62 zB;SH|wI=+ji!fQy3(+?Dd>1*iGi_7)Rc*l&DHk>OpXvNCoadFZyLlFW-(K9wTpn^jb* zaC@%l=5;(c?cMl{Gtk-AZ&dC#C<(nk9FZD<%O`Xe1z?Q^?xit`^oW0m8v2^b?E}jH z#nxNKHTnL3*rS#1P66qV&VitWh#-PANHa#~KpN==0i~6ek{I2iq&r3rq&p||yRYxV z|9#&N_H?hou4~tMo}c&oI2c(j?PtEz)>tbL#N{gQ7ilo<^kk7qgDVh+Fvy9?CZvWwIBUCjl{2LOEjUpKe0uaoKC z=S~}q+Cj0z7AE!}pQl=oPCT2`q2+ALU6xC!sHT4lQs@rG;BcGjl(~Q5fdW$Q_*MSO z#RUdyjfq!54aQY@?*7Ili{DHFeqO6YAv^%;+3>5l8g_gvp1#0G4*M@(^>qB!z4H4D zv*UJvYk#QY3A7HDdTnvq0e9Pst&Tch?i%rb?UoPZ9@RfzBsU?~eGU3wB)H{X9Z&{? zq`HdoNu<%OE-t=zFVOo#$8*pFXb!VIXJfR6*pGRLHXfJs0M$RFoa`BwUJF`(qdb;` zT$!ZjgksSMBJ<_(?z%_sQ)LV%-;*Vgkf{1B4UkF9FyqZhxo{6P9gL%ZtRU9KyUl*^^D`Z!DqgHOurXlz-I#L(KWLX> zdGS0?BWb0phg*ls;M+Q%Y8n^RrK<5AIu>QBGGH?0)ye1}qaVeB*p`>}{f*&~eUl4%Ac~+2MM|+_SjJ=iyafs4NR_UnCJqGy>Iyl?CQD>G7<_hV zR1$q<3JI!#H@C@qj?CSBtX(J+QN>I{#&DbmgSN=Vpu1X8$c%)0`8ygkJx{fqx*JNP zHA_nT^AXtaXNq{T@#nEqWsYCv$<06Um%jQBJ;mD%_}tUMbS4ikG`dcOmJL8%Q@c3v z{(7=~Jymg4l#=`W@eaoZ0eX4(8WiXZ3+l~d5FdZC>Ok|zjZQ6I+6|;_YOXa9yN+60 zUfRd`Bob}0#s#vb4nvv%drN4n;0)VoVq-a zfcJ_N#JcJ-9a6h#fH>l0P~3TJbHhsSup$Kavr61{gfODwiYQIy*$~W&LdN>S3oQI8;io09(iex=!7cdN>X;- zeiwgIpsJ>s$-#T(Vp`2#LP#r0>Tw%Vk1_SFhLw@qECBd^fztdc7dmRd= zhmFzcFvteT&n91s|1jiA#x{F9yv_5q!Zu?ecuX57|%0hJ7YQk zh46YJ0otxN5In(uIZAyla6|81E-UyuLy(>Po27S(D5;7;)(sc`Q%m=b#-LJv4?s&3 zL~RI*?Y~)l4(82x+c0@7pnx(G*sk+d`c2#YFoTjHHb{+l8;o#S`^icdHNe$W5{|G- ztONzR4V=;RBWV!EK~yjeK%)cr$%cs{s*BL6Z=SHWw})Fj=P{ESS+mRW`KpJ+lEMRo z&i|>Zn1U410jE>bAI}t`+NATxJ=xCQH5T&9k7#Xe%MDuD=!)2J*-0_UumsG>acy*x z?jr@Rn+p~lGW=eTBRv-dKlnCe&|Xk7OIo#iGTWDyz~{Vp&3DEJOz)Xy>bSnx56An+zr0e+BwYRu`d_a9z97Dw&i1 zPA1mo)9}jid;UA8&+lU2Xr3FJYcN+)?^(6;5q^ApKVmVg?zwe8q(6LMUYN-hd8t5z z_9Nm#+^XdKgt+bu)z>r{SiVhpN2Q3BqUmsioqYpfAuFBl20G+U$D{nEi_in8#weF# ztGOR%0@aIK8njNE-{~ih{+{c(!L8#QZS9VUMNRuw8&Spz)aJ`X=KU>PJ*}~oa;DH* z)BMLN8~V3oy&Ors>JRrGcpQu@{8*ui4@A@T@uI3zk9|c3Mv%Fz#rrJ#k7COM{I0kn z>Ku1-5q$)4BtyYq6?9zz3~(XVWpqFB6lz?7zJMXL(yuoSrm20Wgz8KRG{vNmuBIB+ z!MIx580RMx{$ghtJu4soU6LG~kgqxzy*hWG&y9tO|3d!pD0{l|qUh(pn3%YQ1d458 zY)q0-^BWUy!}JrR-o5A%u(9F2JCKj)!gvk)s>cXJ7f1b+o`qgKW7i&qcoJ z#(p{fMpO~T!kdrTsp?&ND0*4cHSh*>e?MV;mQYuWHh$BRw<+FVE?8Y0)MF^oTs)LM zN5h{Hx>0GJj6rMh1gw3oEh3U@&bWj4oX3JzMkru)Fz(4jM(1m~_b{=W$LcKGO$t`n zN>cpRH|={K7o{wy4SFK~^x^pcu-KI8OGWq*c1T6`*6vA&Ku?#lVAV)g+XT^BWpBI= zZY&$zg|q-%K0K8(Lcg(^szt%9ioKJf)qw9??eO!>=6}jA;kC*o@-XRr98bzGw!zXY z=(lVNPmkM-GVx-z5}ueT7YU}XAw?WHDAi=@7+o>`HT8QKeK@Ew-Ze7&@sLwF&U9Jx ztdHtTycqb?AjGPF7vTSpS)AYWIlJ-zWR#r~|JOJf0P_wp1-Tum11y4KK1mC$$iBa6 zIM!c@N(X#~XhRpIb{*`!no7=Af8B zox~uE4^4JJ**hHCcmRZng~se`picxh48=o3!D zY8OE)JY?W{zcl-(zGBOS9KoH?Ds+vo&1_Ztw4t2v=H~Wew7^z+i@ULTKUI$UQ}(t& zGjXe%yAbmt7<1TpvF{u8^*~C{l5aYyhi;bRbut!?7XqZ>%M`Eq|EkseSF_P)12hN> z_U1$#_^^_J)#sTS0a%DzYh?Ice^%abG{JAZ$LCUAOn)$2ZZ{q|(Ri=WC3gzwfsOg7 z-h$U>)T!V+&(qD3D7Elc(YaVb=CU_CF&-)>VOBv<;>3*H%iB&YS` zq4xNx#jMytY-#1p_X5sOO_7Y%hn^`TRLj{g`fHQ76md$|yO zlx*h36F)>oN1Gx{HM4_F|8KzXAr>qEYrQr-Q$Q%tKTbBbY=0MusP803yRR<2lt}lM zxR$)W;q#K?lfI~0m6A(YFU21?@s|61M}#iuV}1cpHVW=P#HvrjfnROt?aJ!6YY%?j z%%X7k&nn9_IwVV-Ge%;1zjB&XH|SR4;<_IF)b5O$1wW5@VHqlt^^$z4_q_ke$5F6S zS0=QmIQnZp#;`L;KL=>x9HIG8c_H*c3F6=3YXn7)H320HdnM|vZOzTbDjpoWHA)(< zYPi!Dh-xB`1JBz2TfiP_ZbB81=6ciquTcc{fzXN$uZ8qO9_}eergxPFL!(pevgJ3p#lY-k@NvVktY-2IV#8+O$x3Ly^ud(40 zCPN*v$wC7(Z#C=)IIr6>Um4lATOM|IjFRy%Q~uh}lJ!_^H3Dt51)$XBm`-K;!2%JB zE;f^%#+5Gx78|19z7PvhKgwwu1#Yi9Eqfm@%W1=p|F#fho=vCQh? z@ZbiM1aGXNf9@(%peb~L- zj?Cp?OV`?`F7a}vRStFgKI!GZU@8LC`_qSK!`KM4`q;fnP==wG4QE*v>DI_yYBHX*WU=-(jTkqaqYKDRrzvU&Q{Wlnx-U7WP zG85x{ih)fhu|6BB!ui)f)BL|3S0JzP97}uPwQ|7b6rY{CpD$`c!7h2D*Z(eoSmhg`XqG(Is(-T@*ZFF{N%5Eg~4v$m7f($Htf35A`fZ5IKl3McHXY4u} zSJGw87Dgudup&Nsz%@RBJU#?YB|+B6AHnF)A16=|S{TNC;P}7G;TH+*Xtlb-FKi#OKX!Ic;6b{^u>=}PLG7eWeBZ*Z z-%lU4$&y4?wz*VvZ)6?uz5RXmF7H~6_JF5k@QCaJ-#HTIo>)g`mZc?z0S~zQ0HYs9 zMdTI18|v^PjMnsWFM9QjJSP`vFW0Gk8eG4;!!8+G|NAXIBm}p?891&;#P6Ol%A8xFE=#h+{eFD%gq1 zj6V-?R@s7mCZwieERX4`XZeMo_P>6~1mTcw)98qgf5giR0!LZ`(`-Kd4|JNeClgpg zwQ|%ujsDytL9dHnCCHkb6EX5_&K$!B$$lUX^Jvox9QYr(h@whZ=CDb|=1Nv4Hv@V{yTw7{tj%NMNPej?kRGcTWpX9)F4 zfZ|n&&3(|prQCOmt$M2l1~?fQN1(v9zFqwDwXU|4rOw(Va%cN)G?Eo zQTXX1MyY#ngv-<8yudH09r9p?1UUKUn zqI-5Sw@)quY&Q`y;%ON%LiGnr8s+MOC+Tx^933${WW~|5Uw=iX8PX+T{`jL)h{@G4 z?PZ+DU~d#&9p!xaATm65=bgb+uf<%@E-}!)s8N#cjUb>;$o%M z?(+P~QRRWQieVxKv_C0nFmDhmG-UaTT@X z5t?U*Y~H_F+8o3B2?Y3b;Ahv(->q`gREHgxhuPP&wh)oP#+`ub6IC?&v0wXjP?bdHcnT)4YHeV zt4H=Ql`;?q+OCd{za{2v&x@=+yr=rLXMUOnozKYdSQ#cRb7zCbDu7iz)w<%?43xjb ziKN15+&oegWgPFfGq}LBL(8xr{j3e=ocsaQku8xCQdTd^)Zo*d-eh=!ZB49KYr!{Q4WOULObFpwo*(~mvF*R(%qDf{gtXH*p*)iGGbA?S?vXWO@sG%v_@LOB0#tmi1blVq>iv(8lG zIdQ2gjoIdyxpQ56&vn)amgmd7m^Ga<_)r_pz4Bxlqarql}CBC5Q5&Y}OG$&3%VD7+-H{}_ES|c+s zHPnQ%@26KjX>L1bVoEpZ|KQk)KS)Kxw&c9}1axR$75G1pN=Mt-SV(y{is)U>xE4ih zjtFI3cd2g_mH*U`i6guFq0QDs^4nPDmRMB$Nz{_bOkrKt+k{Cm@2A)HrX0y52Y_OM zR_a4~Kbfm&ilSW5W@PWEOIPMvh**x0&ZL}xRh79W6JUXXXMM~Z>$VKpQu~IhUCqa> zXUpn}NO=wG1Qv1C(F)}EI8_dT_+dSMP6Ofo(%_;hiIQTIdZX;Upa2NHapDVl+H6Q8 zv0+&4$;+^?yn=g;(<1*55KqB22WH|>go<=_+j9SNJIuviMp+*oSn;TLUx2tvY_zUC%*aX1}vsF7PSlJAHGfeM-nuJJ+&?0p|5rnSp<< zCPw>h_RhJln6B*2-ImS#Sdp9l^CE>WgR?j3`Gmf_6xO`|`#Y0+-_y08r4_tKawhW4 z0hxF0RYnB6ZQ>2`Zy0d2`2PCN>eg^LsrWccl;x8wvT90t(*~2wb<)*$B0D$dV;|*| zH*#qD=KP!+y{h);jbPp+Bpes2M1O;!<%bR46(WMCv}CDa*{HTo#9BSg5!vbH^$WCD zfjzTK2RV_xQLMonJckFPrX@P0;rI8g`fm-Ww@vs=z2Q_dA;Bc8Im;hH#yrgN14q^< z!4mh{59J-tB@?}3^tvn(8AUg*49hVZI8V5F!twakPYZqm)+9`e>Lxn!VM`kX1 zqy4?V@|`TA6b4m`?Y>UW74N8-S}CZ3h!f};ez#Vt_94W*Z1`&#GMh~*tf=tzsXV2} ziKZp}GYo80Cm4{VC&=uC-4mb=q5^sLZ;#U?!^B^%k2>5aMssw|TI9O1WHiV(zKi+< zD#hO~8p`{YAlautA@^Zp;4Hp6(%;H$J@!c1eD;dsGsj%R#JJqYIa?{Y#Up3Afz=V5 zHtmyCg+TeHPbAY7d0BB*?H^*_*QETboI0P=2v&Phk^h?=m=530j|PG6O*hA*z%pmW zohTR5L8QP}KSvqoXzD!1_iRm5j?T7eg?!sDE(){k2k{wq6MFvYX z?5s&Y0nD&{?fEWXx;6c1=N}s&gE$!Y{n#`u$9iU}-Wg5b8n%fE+6qDA0jPqZmFOyC zCM6en@MLL_vuQxulY}V`-iqf;zc*fmWMjHM0X?XAe=3S(wTn^VC?~wUtR73Gx;H@Y z6adR*a`q`9uhv%XL%Mq&QTt#;=ldm_nN1N|GbR4n;uMgDY`5z$YurbHoj&t8`k<~@ zQ=J1;b>xq!`Cdr~&b>@|s)uufEA0k7yg!nvV5pHug0w57f94|gH7hGiahGK(2M>on z&$_&O5cxgbX-B7rODS^Mf!Dr&#n|Z1}Jhvh&KQE3kpVFZ+Syu zb4%}D@sEUDO#ezoYvYcIcpNGI)wF^HvQB%&YZ%u5PBG+~I({66(LdL&b=2?Tu!x{_ zm#T<$VcL~6e^TY|j9W<@?&2cQyXyR1W|>zt2OVbjO$!gi!_{DqRlReJ%8=T`J22U< zMvby4Ph3{2YD3SUr7H-i!>8$;oRQRk(ZMJ~n%Qrl&feD=rRY4hse4F1EbtsMtvmOs zzefz7JbRy1tU2~ePngNADQ+ijeFFCk&-*p^nDl``5;{^dZ@_1jAwk{vV?8`(8#W?H zWtG&V#28=rmm%0)HsQ7Cn=`?T3gzm*IsEhL5yiDg!2oT{8C~c2ZW39&Y@`7W@7@|@?u^!^OGTym2xahb zt4kgH&M65CQ)Ez(3Ir|fYx3r0tTwj`^&ti8Hdf5_ey3a=UM`i#LhA(LCZ$qVzT4m@ z{K&>EAW`4uabkw$r;Ek>8SP)pA@iV?#3YFCiYvvFCjxn0 zegt6PQBIc+c8F^o!~G1R@)ZV{O=E+ID%O+249^jT*PO95J^oT-aTRq=P*MgcKN`q#ZQc87-t z&zF2&@{wyF_2jIVnM7a*dzDCSR*GwQI>Z00qSutC0W&z5tLJAI7zY>fA<80Pm@;nPnM1~h%ERv`^9>KUoo zxqz02CrjUIa)@j|qWG5%wtAQ7#Etimiic*g$w23X?+ObIbc7Z-bK@MNNm^f7U?vjF zq!6(+as!7Bwlm@^C*l%Dq&O0}^2g0W?1kD9p$8UW!VfORT5h|z+VTh$wzOc->ej`m zOjEfKqrsX#+l;>*bu4Q4&=J*^T)$T@y*X1vJ*5`MUeCAPDjoH0M$not{N=J};7Olf zKw`M3rX_0H#5h3bGwjnB$cL<`On=9VpGzIAq8AxhcCs}wpgk4eQDy!~gcE-wak5g3 z;mR15B4diyOM~0UsKd)OCVMbT=8|suiGISy(ROIRx&Vswi@^3!exdchFndc$i<)fu z^+#58WcN*rLUbD+s*UqDHhzg2&B%H9C zaiTu{bK+(H({SA?JWbt^k}G(Hq|)E_6d+y5u4f!JSMQtQpV=1tKr?iIfcf;wm|wqy zRGj3Fb-i}m%C*K9*ok%D!43SzkzfL2>0c!}#nzvbFsHjrWLiP1m4rKqF&J?Dj@i6Z z{m@oh*TP_EB^!2A#2E=WMvQE!E9DEW@gj8$VvcCR8VSD?V7eZfDuZ&5F-6ct zvcM8b%Bmyz{|9m*0t-dRjK{X=odP`Vu*+AcKhXs*o7$kh6#COh?cfM?{5~E+MwKn{ zwjJ8>){-N=Q>sTYATZ$w(B$aq$^7SV4W3^ZELT{5jMj5E3}sq&Rh8$)ny6<9&&4|J z>td2w*LP?M2rd7)xWw;xxA;mCb8U5Ru8n%< zy80pS=w7|V{^*QFE#rMBwe6ggWxAe)56gE)!!-Q-WViYn#w3|}l696Pm-URe4zgj? zk%mF*X?y4O!(1{HB9Y_eCO`eMy=`zxN<-w^ricX1jTOW7mNwozgjB_{^q0E4>~suM zNtISR>?Q&@u3-u55JFFqAl3-b2b%M8<`NmqWmMr6I!&L|*~vM2G;O zzXK=u?2 z?-K1CUX8Zcya?q0SLT+K7`1`)@bf`i;UUs26(xEsf83mSFHgImFZI_6(`dNVVf%6Mp*GCG|P&*y%$ilfndYY37mU!4-i2PbKHL8G$=^J`sU`n9g z#4!T>a)o44f(EIs_vgW3iA8ckW{cG%oeu?IDoBeijig_HL!G+(h>!(M#MM(5r`1KP z&xtZCtRk<-I1`ji6&Loq(pYC(&5>9eHrL4kK2}u@jcdTU0lSOK#=%W<-VyH+c9Qaz zZw8rKjoL8(o86(f?%z-INh}S9lJG!;_)z11D_-_E|D_0;A6K{YV~q-MJj6}&EZZde z99*hWj!Pj5Ad=WlI}232A|0F@OnGzmxHp@k*!`7?d&m_*wb#Pc=YkE3M1=#%Cm(x{|?op_sY{v*nde$1Z7^C#!XIF_!@wcCAG)eCC$g^8oVxU zaqh?SpZ|IUHD#b$fdeiDry#r2ZO>XbW!YKyT0&-hdp-6fKjSd(76 z=MeRZZieh3$YOivner)QH5Z>id$(4U!a!$X_*5IYDW1*Vl+{IfMH-XpkWL7s^ zTf}_;D^p8A&pX_-q(Q2h$OS31QPVN?arNXwM@@U^6a?tXC|x%Yc=rL}vVTK#bOyx4 z5;+S826cfmYea0VIpE<A|kCV zGT@|smbb}tgD4k@SX+?jAZrE42haQY*2oTAiVc=n>od31&MQQ6Ul}Vd&9+S7b*?*) zNf!jSVVDcxClUQ)ZNly$BkpLV=QJeFq0{ zfAa@99LTOEAR9tgnbHwG-ptQrL=W^Qm%H232Upd3BcoIX+39HA-y|(`V+RKWs;rZ+ zL=|D-b~x8Pl!GZucQabPW*DvJS=e6}qdvE?#xhF29me^CU{o4uT3KRe{TTI76v#-z z1i7UgFlkKRS}dHWF#4%#Bd|VNFUk`nEE^Xv^QkrByg8pF-}UL9n*M1u58C4_7QsR( zE}+9gv;a$yg(^LoKKzXsHioMcI$9+gMkr%Sfaf=5-A4VI$G9=vGHttbtqBv2bl$0m zYUK3Yl$jud! zsz_6FSBp!+sB^?2jj!*Y9ynse(y zl1j%!@O^?>zan_yXOgf*62u<#Glu*Bys9KoT%lr#(dL-`=0J+lOtdN;7BvJGe)iGYAdgj;y&Qc$=3fLsAj%@jVy5JcD^T(`abaYY@4{#hOrAV+NggV zv1Zknz~H-Ke=OLQ9GCj!2ibigA-S*g2(#!zM4LWJi2C3IM1ew}-ju-bjA^W(46c-A4VP_;ne)3`?PBl@AAtq^&HsJZGM|kC!=5Vj~K>3$#tOxs{vtukNGx9 zln^CnB0^rkpN%_HK%VJdSulezD^!+g;#U(W;qIZlp&h^}`>&Y5>@@0F$S+&Ji?L8S zv@}Li=$!sCHGYX($Z$kz@_M^8=i+azdK&(RSr##EX^iJq-g{ZrI4m&9sb8sj^fSf&^Qf6bc5;=+y# z2IBcWxl|9CU@**TlcX<^i6xPlaONtH#TfBWiG?Og$H_!a9vu-n%sZ1&{W_?_`T8JFd1{6Jy*C?fov+_6qy8 zUvt=hVfCvMx_IM0nKr-gbAnEn)pbk50)N|cYQI@t(DoB8MX@H*6?cf#3$^k#mnrAeJJ-Hm{i_e<`<8)?E)_SjRw@4qp)9c#*Pz!JT)|K|f zNf6WNU-pg^mF?X%PzqN*HNRGkKCTaN>B(i9@~kA$Hhz^l6d+^24Is;ehqi^8q_CNv zNQqw_Z5LRSbfuWD87>qwy@E!k3y=75bDV1x87-5%r3an1v#j@xW!*`@cDg*!L$?Py zXQnGht3}nSR+OSo1-r;8?_D)K` zKOj`2A>Va$5=Bxf3HzVL41v@J6$D9U7k5tcv++Ub+n`0wtyAP)&}p7JhrS>jOW&&RaND2T<;fm%`wGggW~+`dP%5YNCh%j6_IAuadE?B zcs7NK*g+O8%HV#0r`}YZ&1t}G6QnF=vovAR-7ece07nt zJKm9(&L{cmq+r7&Gt_+r?nEW>Hr4Mn z*H5Bufd!PDru^(;o=!y1>b7b_3;cIu3MnTxAIaf?k1C626@HQ$xO!74+z2nBI*>7s zv@J8O>S?>DK{T>Ed$Bi~PoX{%5=H*4Ydp!FV&3T#@9c}>2 zwbfL;OO!YLrJ2|n(=l~7T(rz4W&GIGYy5+sIJ;i<=ufSF7Xh^e)6puh|Z9Id7`c+TyaQq>pcEM65!A1N|kXB0X# znDL$w0qPZJxCX;sK>)Z%12!o(YtU26&P}-SjfV3NYc?@&WkXn{>gmw`K(AWPUjLn| zlx{hPhc~GG4c6d@r=DREwA9zdzFK$+pdKPTMtN9;@&2p>Tvzz$BH=&fw--Zd8{mXS=?4Bk>m3BAy0da zftA8pX+cT3s^9#(in~-*B)a2k@K&CcBCSTD0~YF4%f=aXDH6JeTJ%&(4oKr5rO@-jQc z!%lxfoJi~CWTn8p#;-knYW;?Jij^ha$TouTQs9J0$M4O%}IFo7wxP@EHuTtS}qz4kq4hAqIz*@&iBk zXwKh4Qq>}jzX9o!1tRI`{3;x4T;G1&vh&(62pC7d=LXqK#`;$?3ZR?F{Wz2O zPU9sCLexBCIE(pER73h@NNw4T^lfT5R?JbO&(Rw#x_m-;WA*kKo5{>+)0z7BcK#VO zPiG(xLa=Tk^J6iIII3 zje)wqJ1nAh(p7bEmGcTW(Lp^b-E@9e5REh$K|l4I@!YdI8@ z-hV{f6dI!4H}%kw>p2o6q^tqN8kNqg;xlP6!4u@`Z=QP6nIwMmivb;qwenm(;LeTh z=(NuPUq$t2@0yA_mJ{Ll_o9#cAxB1(!CPCNMgMnf_um+=&E-0L=HBY(BVvsT?h<+6 z3WUr~+qYU?Hfl~4_E57;_;~#d-r*o7d2{`S8|(DL$1|4j!ywB%T62F!^vRiI@1t-l z+HT`uoYKH_zfu4Cw}VrqL9`%8tLO`OvusiPQ3jogd<5TuoYkG-z31r(f+(ox1f@k1 z)DuvIp6+e2Hu^%(pdwURzhvOd##?nnZ&SqEm2Qin6zYz+%2jv*(;*VM9U~!x1@iIz zc{QItxi`u0Lyk+xG$TkC26A_I$N1?&fHpJit%F%9rGId}pa}p!TeS*ietUE`0>ZwM zqRS^4wC{ulB?NLmkSv_`AL!Nl5YyO2Lus;r zgc+3-yrr!;Yj=`&?c7)>p~X5>HQ=EMf)6A_#(9l0Xq|oxSzmebXQS1WX2|2$+JdpE zrclnaiovK?`6>q~Ty))uc->9mjmW-cA=cN6b=YG$m_) zjaGc*a^${w)+sH=h7yX(!>iv$+o6mfR5#kI>QI%E26J+H{MR>{R(1g;%M6RNe^p~d zpO;y#f2aIHGu$Ps_MqsgZe_pq+EZScFzoGT7>DB@Lgyf)$>nyi!t;Fe?B>Z6f7X`Y zrzMHiY%>B?UPtb@Gb#NO2R&L84w3G!1q!E@Ya&?3ahe)Q3ywuf+3h?wh2mI9uO58* zWmqBtc~{L3MA5OmeuR${Q~ZaUfDrz`6nt$UwCTbZ|KmzeUa6Vp0!YjEcT<79 z2f0`*r@4E`i~k%RNTCQh!4B@3f@nZ-DpllU`SeY_qTp^xdM_g(ibpg>z1+yIPbksq zIv?05Mu?!gH9XE;Jt&65lsA*GE8`dp-?z$u&M@h~s_8BD$b|Af%R1w{@Bt zoBhP~?TbeJMeer&v%vaFJA0R@UE~scs;ci>Kf$kC+FWogk$%Oy=<`ORCdXUqGN3myG4KnP;1Uar1Q1;4Fv!Nu8KpP9M|a^KUy(rfOx*Tz zzY*$^1MG1ePQGP<0jgd#)@24=ckR7H%3dh4(E8(?(Zu*0->DUsq4@T^yc$nmO&U3z zEB($fo4)hWju|=`j{hiZ)6fv3ql*K!XH#U=PhI1l{vXJxb#6+i-h~?Km(lCHnKE}i z^%=;Pz+Anc({*HHhmX3^&(8jPG4NOe{%xnb##fuKqKEf-C30#ezeQ8~{C1`Dy zr9pRqs9kTTH!&`d2Q6I)OVG6YczQV3GJel~TlAI1zA@o;N2?)Ch|~Dnv*gN~Rk4_& zr1HvItearDE#!Yj&1e4u^{+}yU$I0X6=LPy0|$LiM}zFjeai*XzGP9~u0J!DQn%oo zL`p?RX|Oxe(mrticOiLd5u!x~5VsO}IO(bOt)CiAl7RL_YKlRMIu}QZrV}ljP!od8 z(TY>W4G`LAHRkf7&m?Sc&( z%DxMCXK`ljkALxiwTz>D`haIZUSH-(oRe7VFxPbT74$Q#5c4yw&3Br?7;&EM4AxI+ z%lc9v5+7a7d?yp)Y|o;FeAizJz};d$eJ{TGxpN^#D6~;VqE#rIbHWk)Ox^9Tw7T5i zxQ<-4J+@iwc^ieMrhcLT3=~U@0&PScYVI_>waQ_Q%t@StLb(*pz1Tm8RLOC|xw$r- z0)>p!i5STI9ZVhjl#e5R%a?#R)I46q4O(}k1&E5K4l>oTj`snmc)M;hb|9;_egxH@ zsPtN+URzuxNN6rX_BBh_OV z<0Ds=Qd{HQTl1yNALlj(lU1x%j!_)nbq7P=v-8>|PW8XGW=k`ccNfikOVs_QjA)-5 zt3Sx@$fcJah^Tk|G(%?+c?;+{3+9VB%;WmnCCGl)k^cBG6ffnuViB`i@}flgvbyc% zk`Ot>C^F%ynrKOWW7f0uQ~H_NkZu(J(tUeMZPb=RtK%0-eE?oFwm|EQi^JWo#RA|- zT3li-P0dy2P7b+p0YJd@_SjV}@)e&zE7e!-PXr*{;Nc{+c-=71DwZs{*K>T;-^?L@c$S{uccsRd%CP> ziA$NeJkGwFskjO@$uk1=|DLZnx!0@OoiN^4_bL+8aKA8AXB44hCl^X%2i2}KG8G;H zhdyN`uuhd(IkGZz#Eipm@q&gI)d147JnH$1<8jJS%qv4iXBFg7p;Wh0SE%1>EP?Y) z`G7rFOj6LTWw5mDf0c|(pPmC2S`%Qb6Hk9=^v!$Wjotr1>M2sF5m}$I72acPqPEmH z`l%W515F?-$1-gfdaZsH8yUK|5!~ih`|3QEotV@~2}2$LDLRo#caLOVIJQc?r^Rkqrr*PM5KX{?bN{i`5ysfe{TVEL z#X`0K$rYIpqeIOUcFYm>%&ym_sC^hxJhn-GX%O)Q%Z(wrYt-#gcGh3I^gkO%MpS(# z+47znfN!j6VZ>Y-{J7osx?K+fQmAdxVa-uJMK-Zf%p ze^IZJWweOtCv&c)D>{L}@6JjPpAP~jS)wLJgQfFu_Vkf7-6#0= zenpcVGnWs{$hq^at4xCpU7vdc3iSN{Z-GZ1HBJFBBSb^1&~+x?*C#Kt=!ArYoos% z6(6*r)f+?rakaNHowV(Uz+$fXWWtj!sg7T!tt?W5qn~-BrT{q!@$lz@pOxJ6Yhu)^ zSM_~QdHVKj!qb@c zRB4RfG^C7;tu>8(!*1H7M3epCCimeEA3bbvW*+VA85G6LJX!CgZ=!K>*f*W!lAh_l z$Sv6P34!yQcn%n6UB!EFpCVO0aKQc=z^x8Z-=B&mmS+Rg`_y(LLmbx_fE>Bc9p z&c^tI*#sao0+B4(ZO~J{&3?(-v(w57zk8&Nk=fEHXK!u4F+^AGhH0qil=29)Ln{u{ z=tDa#%%iUV2cqOUji^Qqn@Vo<=RtrcS^b)FNny%?rUic;WmNhK?mSP*OKj$db}r+G zkgIlm)rMNF7(cGX`f8fBgG_9n4hl#?DBmVq?y8qY=}0e)P6D08k@Uw=P{4QK%@RBD z{PoWK#=FcI&#oiO(G3^x=;L#9oX1Ap9JQM=C6?gR_FSyFkxf+$S`Q_1;=cly-0vyj zr+M)fGZb%I+7dr@PUTJ^k1BuL#4K84?69+Mzidnn^_#Qns$Psite5mTS@m8cuM!$u z5Exb49MvEp?tAu$FjA9HG7H5S;U@8s;%4`kH!T$r%`>U@5Ntj&RGohZ&!*+60 zi1Sr>tljf5X>42dpAjl4E73M=9H5Qx0AGs$XxXl}Us~KBHya;JEf-#94pm^mYF+)2sq$zN8>cjgRoDrQrdUwY$Akn5Bx~_fs8b z6a3EgYuLL;ufz1(Rigz2_PMdrv*;W$y%^TJUusfj2+Uw^^nh6&kP#w)pO7u>RhR!M zUTmMNQ}=I3({}#EfQM(#RpM~Y_3*Qe#svi>_*~TfIMO^(c}3=71(m;Fbwv0rRkpWj zu_rT|ek0^&M77@9 zOkcW?<$M_MM$W-2c8!X2yu7HxuMN^ps;rtIRB|`GrB+DN8V*toYj=z#NN2qkV)%ij zSHE_&+(5PP;9~bL*Ywt!55JAM2g+S-4SQy1 z!1gtSVNmfO7DY(z`YrwWsOq)HneK2Y67neb|FHGe4^95>8}^XylI})Qx=W-)B$O_d z90*8H7~L%(-3`*+pu`Z6?$M)r1A!^=e(ukY&+~o$h263HbzSFq91UUWov5c~ztcsJ zn$9}hD+X<6UK@CC0BqiO?pH))YTDZc!A($6v=ZXbn1##@NNbmW{Z!I!ZX<1a!7aTu z5v(&!JH;TkAFL1uW1&11X9-o5L-|BFK{b>j!;{DD>-S;~bULGDu)N=kg;@y;pIMf* z-}9EWB99zUr&$Z~C(~gn(YVAM_x*~T>aX4BBo3J|(b~SHfdhUHgM$8gDF^1Av+}(* zddcBU62HSdI{{E;F0W#A>o3w3>w(c7OB>^)w>^#$#2!lqcSJM%gO17S1}3a5mlNEh z4kszPR^KqH>mL^YVs8>j&Iu-B!Y@d1oqBR^03MYm@K$TDcF5`d@2}@Ozm?zR5?%7w zbUqXYK3zeFUcKo>Q7y#5Ys#H-61b1$EK#f}CgEqa3FT_6Eh=&KFAA43{{sz*Io&GK z`&()w! zb(7({Z7P9(9due9M3f0vcma{GdiCm7xNRxWmdr%}|7ThR$S<)G)jT*II8g$ecxtX) zf^@s`Y$(5?;mVwpreC3U^F4AEmcuBGpIuRr5^3F<0)l^v zy|EUgxbIgR2rLS5A*?QSIYTT&Y)gQXR7Yuhw`+L4b~v%X1v|f)07IN|wYbKYptK-U zG!o{YoPG5-kPvcbG=B=!LI}r}U%=o#MO3g1Z@Usaf!dEI`OiLH(rXCrN6C%4Rx^WE zf8mt&w~P$z&I^8syfEu+Plpr62)lSKrEI`uaz4^od@fKLQ`u!+(9n1&>*4Y)QuD5L z?Bkg}uk-Gn5FML7ntgMXqu*s3s5Strx)PIol33pK2VjaMy=p+aBOZVtc&(ACylPP# zVb&0NWu#lng!@hAJZakC*pv8eBXLaH+B@N3BeMHfvJ)54LiK+-u9?)&=UzM88b({g zTYHDNqBi0WAXuL@WC{snr_Kbomc1McRN5EnTk(ZmI6~o%1OCFT=4;w}gqdcVD9#Vv z@sFMLrPX`pq$^F^T(f11fox8GYuTJeZTU=K@x$brTEPR;bQxL-hp!Rjf8*6@c)&K< z|9A}NyvH}m52ei9qOCO>nmfP}3?jBE2`U7lHFm3+KRz<>kFF+$Pva^BkoMR?b0%BJ z!!^!gS__BW9#C<5PB78KA~(67>oRt_n&_F&ry%xf;Y^~RZ0(r-?%1cjou50;<;E}` zJQF>TIr!vtc-#J(`#h0*3dZz|MXnzS(4r;ye(?f0Qsp?m)ex=gWF!|rX873hmc6on zK33hq7{SownKu8&5-?%Y+vilEn+;~K8Nh-Quqvh+3T>~(rYx$o>B1}J_rveVJJR6F zKX486m9GnPg>>FqgUx!UlEeiKmWDFmff@EqacAsuj#h%oT^|U$pCwDOWPY+6-P(26 zV$P@$9*XNV(afJXfj1sz&|FOV-gU!_2!6ZFhQ8BLG zs$YCL+lUq$VP5DgDkCnq;^!K=b}1eoSq#I~7fbtSJujJiLl22LlEFF^r^dds71F)k z#7r!Qd_N!1$>Fc-I$yn+Yr^efTJO~dU^F%B9P)&Fbpex@ArdP>A<%%te|D;PQwK#q zZmvt_^mSRq9;sDQJaPlhi)Oc%^NrF^9<*WV1}+N;*h9fNXRgKa#mI=+d9_rux5A5o z2R3T>JJb+c123Kp17DQfCH|T&N34$A%LRdZscKV8fR8lqdR~@Qd$HFZVb@~J!e03f z@24E~+x)+UBif%$mVw0F*?xkFUf4G&xRY5XVXRpQQ5j227f-N$dZ2AV{oI6Ch~ORSWJq9uS1 z%!f~uuTy4Plv(c>Q^cbYyZcH~6M7LiocOJ)yyiqSx&Xq}yVvhLz~=4z*1XWHv-7k2 zBI^7&B6r$i-q=0U60mOONH60@wtbQtqSkNncy5%!DY`*o zVLFK+Jg4MY#>j6&;~K7`#8zACm+btns5amAfnV$ zK1*HozJ63-T$M__ldN|c0R8=dr%H9c_k)6>tf5yOfO%#AK#_)C>o}M#)C=6()gAV` z%%#stv+^NVp9jEf)mflP-+;-Y?B>H8N;XRS|>RKPc9YbR7>+wH9O%QZ3e{>rtMVJQW``p9LF zd?I%BYj!&?&;SEK`nUy?A6gUtnIb;gqzGh(muGp*f!k-SVcc!Rd8lB$k`ihjlG>?P zz~ssi37$C<6wmXADKZ2#YT12XJA#M)?HZ!cv`vvKPi6_+=ghFI!}#$YSQok=+oJ{L zjgdPqQG(IlE%P-cozb#imA!GX$VmM*ztbCK*%hOm1~up2Yg;OgtqYzNy-6wPouT#-BK1USEAaSH1_UK9eVNMk&31XbN&9C5PHfpMJWx zEL^eP(B0y7fpT^+>T(xL)QULF+maaj)rd;|2kN~%zzwkgYT<979%#=yVMkfJjG+_% zb%Xyv2%4DMd+l21bffA1D65sdl#NBBT-j%x_FyWY7boBG3lXg35AL3q)*19I3xo## zE}(sshuS^VL-kqWBVe$(8{)KSIQiZegii$61oSxckj>X0rpA$>B7v4Pg z+zUfoL_h(}81|`G4;tmW6Cio=v#U1Maf!Y~1P+EbJGqzjrD8p6#o8uQCp=G{)N=g{ zQZn+b&(sr5$CSQ!MWPcZfW|}=z!-GVyreKva>!pGQM@#4+>cw<-^0uuJzfm4|4^y< zK1I%PPj1VE0xv9NU%tLM-S~*Xsr|A_FdbvLWO@rIfA3ZK0zy4WtX4w zE2*+0rmvDzD;;xj=M*h)_rR3!d$hL&b;@+4OlJ=oIvrP?`Lr20s1%}!lP|3E0-4YW zJGDkZ|07W_^Unv8o0zYuA+Ib^FK-&yntB?W@^|z)HM$ZtIkc+}&(0RL$f~GUjfvSC zK@U>6GG&weR}KUHG*Abd9XX|FE0Ki~1`Jp98T)#z zK#4J&+GwqY>5T`*Kdt2dnK$47N17HbJhVyvClZ}kV{v>792yT=VrP+Xb+0(_+21Hq zNds!UvgHVmgpMkBr;oe;4*)q5C=1m>JJ+C-UN7x7FSIB{(AzhH%Y^c&1kd^&^bT{)2uKSMBfu@QE!K> zxTn3uQ5Ugn$iy;)j@HKofo)+A!Q$ECOtqVsj||@|GWc07yp>G^-K7E*9typL!>mZ> zt%m}6=5b>H`jeo;uxw4j z74&AYM#B8eX=8LR#ggyt)Yrd+53BE;$F|np;HRozJ2Ffvg~U$$NlmD}gdn8T!HB*} zokp<=*xj4c04(;aGnQTb7ehxNE;ykH`}S%1;Te{z|ZLyzK{)k7Ua_ z{59=DRn*rnxh2*HJv#{UOe(RaabLZ`0c*S(?p*qFr%MZ_f4YC_B%AB0<;c;TuK6p* zumJkKjAMHVW5w6@Y?4^b1);-zfZ(p(*0k-Eoy@btKAYEZW{0uom6@#A@{x}||AlA7 z^;r~0U0Ld|E=V1vm|9Q#`Djj?bykAT>+TFG@6VH9n5VuaMI?Jao+h(}bY@dzMSBE= z=tI?8QuTU}zuTVt{-+Dyns<;*EMkg(GCOmy z$`Q#{3McvX<86kt{@T2+B6~|KI-v|=udQHrAwl@;9MKi0n|8WmV#Wnxvg1iA#gty*zX>+N2y9oRlz zq4|l*CPn(Uj(d`zJ-6~Wxm=dvGSM?O@d65Sr$>Gib24#cyR%|~H&f5m26%SR&BKaz zpV*C`*K`{HNi!RprKK*PBWB^$q?$C6KTVg~ObfYchLQy{b4&gM_fnX&C5c+=-e_?p z^yGLH?OhSQ9C}C2*Cc8yn@Y7AcXrlCcNEC;IE<3NxrNQy0ji>@0KASAaU9Jj7drXx z!J>+4Mm!igAnyk?Q7sByD=j($2|9b5U|bJpO8uq6IjCVFSk%l(Z2bGEfV&QMv%Fp= z0*s#)Jn)1D)JVsPF*@v?FE`&3@Mdr*kZ1`ig9y;ok(KxLCAGo);`{1~b_nnI$KNcA zrri%Fj6hGXt_Y>Ey^)4I9~_1kB*@Er*p55usa7!X-_`by`U^Z#pGS6G3)Usn0pT3a zKmz~EX>Y-|K+{EhmDo*bg>u~qIh0ZO+{iKR`C3slb`&T%^;dn8yj;mKeZ^@4GD>p^ zP!R+TdZ6D9OTBek++d1vId{RDJ|-`sb-BP1O4ACyz)IRCa?W3DA&pDlz-eDN7vE&s zgj8E0)62G(1?%PcNt&*fTkkJEPz{zIF{K@aYTmDu8v{c?I)U8a!1QVyy)hNsqNlAx z_u|OMl5M4xr5{$*i$af^)sBx$O%1(W>)lh?43Hh)DQHt_f!|r>|0{v~zeI8=hj{A* zdSp18Cq$779R{=F?7E|lC^6CU50Df!lAdq;!K4KPoog22A&?qjtj!Cx+sLFyw)O?i zD+%dT?QpIW2f1<#ceW{+PxH-a?Ez2uCf)5M(%-Y|3{|Fo4l{d(Uu3;8&S1spxC+LB z)W;g%+#xLs2K#}2>(C}qA1~z9?6_+Cl2_^c=?B#s@YNbumo6o~sWH)3nnx+=Snu5< zz3-OBJ>R%6ZU0a`u~gK#gR@s>~{Wsa}WfeZ5C1?N-n~|8xm+X zn#B5hL(=e;+r{&iWtUd2)TtD053SFYrD-B(U%%oRe&~n={TmjnE$Ym6tlf?Uzxdn4 z4w`CtZ+rV=%aF44ur|=u{MB6cVc&lsX?Xd=%H-*e%tiLq1LaQ8fE&gAr~g0^-i440 zm4zPXhwQG58=aQ2J;|EnuHSeJuc*>R@#N3{E#-lOS`H$v3s#d1(L5ivgJ?B;%MX41 zY8QKh%6rS=95^g9}^o_^vY!3RVm#O|ezx4xchmPdX8^H-}6`CzVA4KVv8 zw2jlY{0kg1;mEE=^<9lZK%ae^+!#ao5Om6qme01~fCwubBm)263rw>=M@N%1X_Sso!!<sZACl`CUY#KY|Iumh(EMdcVAh z15PF43xa2YbrRaEI__uN&fTM}nZs^%S zN|FPQjObX>#8-a|CvPXdt{d!C`8C3N&woV zx5~X&wcDhP<+%bpW5H4^j!@OZ{VqY{n{c#RiBm>fMxS8VnNfBq_^OmTRj2J}QC(9s zS|f9uvO#4O#P}YFlrK!CmRbD1v^Z*`q0k(goL#M^=Jg0qky%}xYjrrur=96h+d9)w zofnKfx<%pDsWsDDPBZR!Y$ZK*Uf0WYp&yXn7nz%qtkCDR?HOVi|ITB6fD>p2J z&%>m733v9fys18JBEI@Hy>#{cYzw`!%x+i*?C7&Y8T5LXrnxfpnvUxXQpW?jBS2!Hx{-zCk-*7iTPvs)>RA~l_-6QG0VjO)a?&=S!e*u6czWLaL?LsBR$;Zz2AWHiIq*$*1u7&sFF$JH%} zrh&PaSDHx;dQcKLXH8l!zDZ_z!ecgL)3D%r#@230@o)c9)5Vb9ImV?Vc;X2+lCcZ> zjp*9Kk&6@70GdR0V=#(_q@KX^5I7K)M@^dK33o#>Jzwknt7yuoJzM+Xq~%|f0>=OURIYu z+(Pj@tB&iX!75d3C6Rggo98mD?|ceccm|u68jiDbv!QL0o>Sgl?}M6T+Az{&=~PMdN6}EJuLqCxcqG%{>yMbw}FF zn9Da9=Ud0k<#s9u7MoXA*JL7umnvUscnGv;A3tcY;3TmY1eH3WbVcGTe zSg71X=Lf1)bE`vNzC}WTe1oj1jPMs*5uTR~bhuQ@%TNy_N!dQ>5n${camENDS zkn($ds7d^5j4t-Km%BHJU@N|sE@YSyY@m1dlfNB2O2oJFP_9T_o}h3xycAROimT?j{z(3?NB!<#9AZn9|Tj zjEV8vaAJNHQD%8@{fT-0_-~x`LzO&NIq>OW4A+R12iH!N1v&k6G#X`Zp9dHuk6z@z zW*v&DiHxyTU?wir+IMfzFP3!MWv3#c-sONK&&Kpvsv$vy%iP8XA?GMn6JZ6mm7~&Y zlWiN`4^~Vql^#*x9}rhcxC!J!k8bM{9(5@^X5JoEjntSqlYfzdTTWE0(0%YSvXz@X zfY{k%EAwe`_acHR9bqEsxP>K334$PQ9M6yfv*)63a01*_4mF_q$w0je@1Wu-w8%5$ zufeWO{nO%L%EXGNm}$StP-+{UAGVm(0Z5l!Uwu86VPk7Y<}jt^@26r7qj;Tb z%LfGRKs){^r8U_mG!QiyIKk3!1c;vK68OVRk(mVp>Xwe!lD?*@|kZRqNq~1EqgG?ACJbO9L>v4ShjH_$-se$~= z{qRdsYuU7RoP|qE=h6%-G4=DoT{K?M|Q9jX&3GdD^?(cnr+C_ zOQ(|xd?9b=JUOLf+R?5jI2>zZZ)QS5hJCy0PpJ_6n^<7@J0%Kv@hDXkcS*qZa2K+9 zl*lJzE34N2W!H;k`>`}TtLN`xAD;6`xgKh?^75_YDJ6iQB}j%FyQr;#;R%PKDui5s z=bh@nKl@mHuWxPMl1|3IxfmEUrQZ=qeh*2t(1>{iJx+IRo&g&yLf0ik#h`hBtRP`N)y3!G1s_|q*Nq5E9x`v^Jtq+UqycU-#q={$OdJ7K&dAHOj8M5U@T zy`{Droo2prp^Vxo{wQWctv;vg@7TlNvcYSyKD?OOD681~XJ|`=HIYSos!R2eu_VQ4 zsE@!*i|rPfE^$8IzgQG8!%YyqYvfHbI)g-_SIkfgCl_a><}7`^WAi_dAeBbb4c3+Q zt3OWxPVH6TsBCUqwzw{${)yAG3dfPbMbwERar&iL89rwU?+Wp8Rfn#`(r?%Z?Iweb z#L1%4lf|EZDw2lCvjpUQSz-_$-qT2jYBEz4HD+kp{%wqy8Y{tMQATBp0S974p6AWG zrE9@gTjr3)c|TS^6C`0ZK12v&#ESCD^x9J2OLeMr7M@?BR)z7oae zv9XTma0sZ+9{kQ%N$l5pP#h)*q>w7X=rJPd7Bj1cl`sZu5U>KV$dy?*ECWXsnF?UC zZ8h>5m8BW*gal+Xj6fOrrQ9Q|`0tc_{PGsHG$WCg@aa!~f0Eqnj3NGpuSJq}djj--gFO{#NBaHc=DqhU(Gv^!S4is+8g}iYs zWOdMQDdD_MXfNf&2x;M)4dwT2hQuz^VHg{9s*5%-WQunDU{Z<+vb$dRqws=|lnnC4 zwzIFTM{T}GyjjhS(@4ZLJ?>XN9UIq2qVi{yV0&B$OtI@slSB;!+1(^`6#`bLfGiY3 zayPUDPdJZ|h#xWOiXY`#ORuXV3dv3Fc2g3OzpfYRe#olx#1D3?jq3Kg-58Da-tndcoz7jJYr5pOcGY6Dl zp$Gr_sJM~TzYop+ai0Xf=5?69l^LwY_WmW!C%Y8EvJwg(`OyY=A#W4CYuRCLMCNGE zAw|1VW729fRn8P@fkBbqkDp@C#l9W{e;z!N=}{{*KM8wXU_Q$>9|JN|K;Xx4uzs5K z^PFw-1TNUgW-}G6Z0pQi7kQE7*25)P#oX%Rb5W+|A7^P~EeZK1Cd8!0W;=?Zg{?Jc z{J|NCGb_k90ML0R_*Nk`kl?NrtWCD&>=}fT%->hPPe~0~9X?M6hMU@eO)*1{MKvn^ z?q^ISCFOlKca%8}02CuA$@V)oYjn<_Szru;C3-QtJQZ9%SoZU2AKlvG&Gc*Ah$6wy zM*LxUO|NJUKp)=H){T!SVYs^WJAeb358d1=iFIKq&c?E-7PZYsM+&PtpD7vJKBhRT z%M9-KeV+tgoiZrjK^;PvENQq`?aQ%j`>?9GUuR#1#)Acg1YheW-x63zx`%z`AE*to zRl+rcu;|WwKxxEc-ALvL*6%`gGc5`C`n1~wO2uLf)#onLXomxQ)j-fup3@zw`Nm_j ziUe;#>meym>!1PE0Pl(+%D17Hc(wcCFLR8@*dxW&Et2E&hO%ob9w)Sb04{Y_4J2&D zuRdCWiT_j*{<>gg8VI)}z<9%%R(m61{k%;RDh9OGG z+u;qSY=_xv@mBM1@3IW-V>M$e$9|F_e}snR7yeDVJzXJQpXtzLat1Q|U=D3me9Frd z$zHdEak*!Lzv;l`bZ=tOOxOVm`R>5I%vjKT8{vS=oZg%FE~-edHkp4>8clNc`ZZUQ zoZ>Nlrf?vRR!wHV{TbUm8-kGOEzF94K|<%vl5UKI`klOisX|y(YdV)^D2@@JVzvA9 zKAy6mw6c&C7uo)!R&H>UvL%Ra1JXRq%z;v?xoxMp1zy+=DwX42>8KRcFabo zxr1)K76q%b>PG z3l`o*$ct{SYrQw;BEP7nXOwAEz%&$)%QR?W{77t4Lxb}t8efL)SA{`02-v%@pPFPJ~E(S zSw3FOq(sQDMcyG_v(DH;)phXQz6x^hEDJYTf@^w)EBcruJ35T9>@ zGP#fOFp$~pDY|mBBH&wJjgSpZJB+wftRu;p&gb#UN$6}Mp|h?p7W8A@OQ!z*L*a4b ziC=BFne!{)JY!2{^*0to5n7tpF}9VcHR-JM4w*cEeP-|gRYfSsZ!8ZxeQfR#DSaa4 zbHy>jch-*`rB^cB^)C@z+}@J%WiOG|#$Za!24RI7X4?)RCOJVi$AmQI}@H!RrwD}VKDASqhuWfSr>waBqQRM=NxJxmvR z+0r~&(=;I_!fndn$@JSZU9q(`02rv9=OE$ZFq(Yf=^f<4DU5+h#T9eJo7G+?*=01j zou7zT=4W*>^ab+e=AUnz1v+P&^Kx8|7Hi z`t<*LE-_Hn`Y7t8yXW^W7kW6bG8FlnkPFwa1PZl%v30KQ7FJ;t#Wv)^@_`K$PY=3h z2pi50Xg`&yh9v#$Z)qPErn-MKA4ss~lrJ>xFkk0}XzUkNpAg9j6#r|JmdzE7(Q8~G zqc~m#tTvf?gtrx}f5OxIw{_94|7=nd3r*>@&oGR3w(3yu@8eE*eBaJV|EO&j8oyS)y|NlsF#Xf$wOzJtg#|q zzhDv`PXq)i@i|zU|LG3&V;uI=^=RxoC=IshK`JalXBqB#JICOhF(kwC>MzE&(lBKX zr0d!Oa9?%-9;>cd@$nr0C{lTkRStm~64mD%DWo#u7)asMQPk8a47!YqAu3eEhbFR4P8Au93*#(you&oAw^+Zj0v=g%TH&@y;V zx8T{T#rRe9vz+bXyL>8SPgm-O_V&aR?U5jng8)Si4oT0BwzbrJ;Qubly18Q5jYS2e zC9jHbdpc@^A~Zz$#tK7Ksx8rV7kX{eLTB6o^)=uG+QdZ(cs0d~A7_jQKDcKGq4nq9 zy5Y=E=g+VCiS3WCG}}6I^coD>mRwQ%;*C!{$YTTwFEOY-L2L%uFW%)s{9jyMi$AN< zy1{F=dbSnwX6=_kjzl9Cnb`^;;UqG;L9uEU$2=+Kr6mAu0h*#h5}OgL&uB43Td3B@ zZ(tg1dQnx(y*50KqWWMa^O+ni+F!jJ{z*FFFSXFl|Gz4?J@6$mZ;!z zn#0nGcT9`pRR2IOBCx9sk8hCm8mELzb?@wQ&W(|ZsVndu#$UG`rFa$!d2=KOtc~7y zcy%AeG!=e5p)vGNGRnLR$bvBNNy2?gU0@1l(P8(vl~+VZuyE$V*QP&5Zy2{aaF4gH16KI6&p}knUX2!-IYT`jo021$8BANQFM~ z`1mGWQWnyxFR*y{zBxfvM8G1XBj0oi^qv&3`y%?I`-xiOg2JtY7l1jMwh>C)_+LRx zo#gtI^9TQOOAE>#H^VOy4E$+ZZJQFx$726%1qF@9#5LHRzQ8KqejNAa94V<1R+t z_UF1a=4$SK>GgCXO+u!PkF^CnU;<^JKM*J&kvG(Zo7hV1Ftp@nheS~)dlvuPMN6Up zShcwt0jtrT-M3F^%VUjMPq(P+XF2TbUDG|CfqLC?(-)i1Rvl9o4y_9B+lhuhL{oSy zD~kr`fC7EdK(N6YAP!Z;dYMnf?Yy3AVPWaZ%-*P%%qZJDZaXVB*%ZKc_xyN6Fs`s# zsZK6m*=?l!%hx|@h$ZG9z$&1CilOY&#A!UAV;HH4^DTk{>xsf4=9TOwu;YTc1Z@Fg9UX_AXWN~~f>4P(d+XB&S(#MB z&ZY%7L6_uR-tR^xwK4BwyPIkxfqHLCJvpR$n57+e(6M!s(i!EH-cKRXAq?efix(6S zsBIa)ZpjIJ{xWvD4-shdoc6EtMMms1c3a5IObAh#3K6NEnz;E7q2CDF@R6DvoE@0# z1AuM{?RQclm~y$(K>Nb1o+5<`5Y{v+_wp#oBHO7l!5QZ}+Xl(HcU8oEDKFn&zEM6g zwMI7Gn}ZQW6+cn@uv-?)#MTc?2SeJuf@8VLDq# zH5;vb2`}$RziLr?$I;u{BPP22*`9^(53}=Dul-N12DG{0@Tn4+_*8=5exqlZU`wQ< zpyIlJ0P!4g&uWjs3)Mu1--awA!-0_$RMK0dudGM`+KPVZJroTC0)DOI5P55*=xgzg znbL)OE#l$QE}x92x58Av5@z92&Cp;XDSi2`iIzDyeMmIncl4m~L++Vdk8_n!eKnIh zimeAfOn~t72_279)DKz`Dpe3Ih=hNoEz$4l;zh9NQ;W^xm%Ew1vOuM3q|xWGB% zGJ8}?T=BXc%Up}o<1D;BbHq!x1zRqXV3$10TbK6G57>S62E9#xTz%c&(Hgo|mnYx! zB||8AfLUDKYg{(e1eC=U8?1RWq#qrNH_hX{IxP3`3^tSWS`UW{$gF$SO2N#yqkIL& zoctQoKIsc`c?CTq>^q`*r4hmC#@~Syg_Nrz0+@qh+Vja0_a^(DD>N!~-FBr7L$#R2 zUG97+%%m7pZEZL~>b^*^T%rfwE#_|+VP%lG*Nf##l)7I^U3m1I875GoAMFxl@C<&q zGT2(Ft9yw3tbyG7msmgva}dO3ea*hbBX)wDsni8*-Cpqx?;C9VmBv070ydu3)%Sh` zW}pL!BntDx^lX78YWjuQW8>)+Sep^4obqKZ?l)FN3mbIqef8QxcY-T?6_#xu!PQr~ zS^!2N`&y%GFe0IF&iw6pFu*syv$vvKtK zr{GZY(VUtKYtHXw_N;H5rC(e+*tkTy8#~^5ZBnc_Wvkcv6W7&anR)NtGz(4^2pGt{ z{5(M~8ph7DZHFcGX-QQLzKh#HB+YuCvOaPiN#m-5G_+B zL9}@XxC*l0sfV0;%Pr2=r_YLkaWflIYF2k;81%4Z+$=~u&As$+g@t2n;t;JB;gbmn zocsV$^Q)>j+{einn-uZO?45J`oZoAW4~WVGv<^^|PgF35S#i(2)m%C)o3W4N>F#NO z)Ve{Jjr1003)1Z@R~hRGj>o=G&FCvLmQ}}WiW`OKf)KV&AFdyjLB^xuY| zCENVy&)i|p2ts9^VnkIrSCyl~2LJglI~fapUsveTadDkhb2XyL@T!qkV;1oyLv3KZ-6=Bgn)}6G#7*XyyT=TDr#1VwHWCO6<3EV5~ zxB;xCO+qicdma?e_WcGEYO>@@mG$A`^SZJ!74d)JZD(M{#F?>hEg}OPt>-B$-wHAT zMTw5~pi;BcU|bLxR0g#a+v8gbc_h}*S|~!EtZydBcrOc8#~HX$=VAbeOHl@xOy46F`UeyIhs_QKbz}1xW>4>>Xrf!n=UbMG zA6MsgyJ8pY+ug+L1;t&W_+F*B5Br}4&J|!}Y^y?Mtz-Haf$`}VH`^xvOgnJ@EQbnb zGM2Jw*1JeK6j+A@ByP~VefjASTE%>mN0kvdB-v)YwN-d@P+zR7~NXp4&dFI*>S!9-`k-UJE+ z+Bi=?^~qR4Jk3#(sTKD!Gn~ly!FP`^iYWx{jLQ$h@V_hVI{$(A&y9E-M+}^M=KJ4o zQd>e5k$nlyD273ddkzGX$L*kwXQ9QXlvQK71MPb5Bf4D;B@Pb0uTPp9xPujUXC5V? z+$hrF?w}`*R!Ydp`W^f~%h$Z(-P(lS#tn!PG*i|8R7%L_ zM!oiH%d0If+YVq*Ya=WZpa7c14nJn(_;J__3{*dXfWkeZ^UP+e;*8J}NI%lfJxU${ zFpNhU#WcIpi9-01R3K9)#Ynl1FVkR^cLC{VEGMi2K7d)KOf4^bXJvjI)M8b##X=7} zOq&B`bMgw@-QSNlxKb7bYih}F1X42hJYrAr4BYc-kE}nKuCE@`+qFLAj=DRzQ;ZTt zdoY>UKEGjI`mM-CF98SxnU)ivxG zA}QNZ>SdaV&5m#%J~e-yIH*K9dTQGtMxL#PW3<#c+Y*-N_x8x6hMI1 z$Cw?2+D!MDqI{MNnrDj}fJerOUznt|$KArza?qP<;?Ozc?p^p#`sdbMJ{j<*ZCe=Y z&IK*j11zKv5IX5CN@Cte#dUnOJOOgs81NO-a~~evbNJFf)l)OJx)+~SbpLk{b05PR zq)1+dq{Rj$_hSUWR#{2L+O!!h3)Y5@2~WZ&!X=CTG*Kjv{KaiCrO=Wf)sc5~EH)(UYszjzRO zOCQ(hax(Keu{0?b_*Ph-p@?gT*Azt_*QPV{=ZyB@V+%H&nl1a$$z51?cB2+#D(>+> zbF6;Yn)*+I+>IPcW4NEFl$mYr&pJEe2G2gLmRcj~vty~f!AHJh!=_FHQbuE$Ez-nn z>u9f&BdB%&5;11m&^ceENRIlH&lU_f7qE6rF-@PPN|>HtIe)Zg3t{@v>WO?Yc5uTo zA4oJ(We#ot=G~r~rr?=D+Alm;yLJ(hmDq9a7o$8fljt&}+&fgRQSDYg%`${w7ww>r zJiAXQifiPmJ&f`nqBiO2oFC}$?D>%CGKmK|s#R2kKI=vY%ZuQ~l*tBvdvT?h>eHq_ zwm5L~!M~X-gv*gMn*)qVg%$F%?!|wgn_{#j_C@6O91n`RSF*8Y_2^ey7xos!VE-9c zVdL3m`Idr<>2Wp#C!sZ?yh=$(1!r50<4hlyq- zLEZAw{u;)-%H0d7Qrm3Hk;Iu6;H=BCzf$Y*uuyfNupD)2w$LQQ)6eI&oC@h6PmNzF zx_fai{5ZdKwzmib-)DfP=@LK#1MGwyIm8l{&U(%ES*SM6pn~e_oMAyv#IuxLvlGFJA;sUbVwt)rAa!yam9X13&-rOwJ=`~* z+OwVJwJbxPP}#Yb4tZm)x^ANMTJIWSMQ-OJ#>y*F-utTk?_KV1chBmpVQMfW2E&gr7bf^IIuf?U9`#jkLI&vn~F~+jhCn0}m z=5|5_8BIg>ChJbG{&qL{^0S}8K`Xhrb6x>r#*GWtf3F2yTAlsJuN1-spN!nlLR+jk z$!}qM_G@4MqTs<&-&`y_(R0;FafAQ~ zv_z$h9>f3>D$nWSDq95>pxX z8|wc|n4OH!Gnau8{1bAoniIYIW^LMH5cBlP`Q~y>8LG@nKh!aL2D_zcz55Ej5ARI8 zH7KymKG5uFjg+(GU1hH=jkXolPt7NO#Qzc{h?G7^ z+z*!HW5?fSa%tNLd6o%eGf(;A;ar2KPCSg}en!Ix*qnaNw? z;UfdDKv{dLhAPVnkFTv=)@9E95W%|-1KX>txnvmqY9CgPqoZ)Z zU@1nMc(VmBN`M{2)bY5mC=k?CA2_#Xx|W%8`d62EH24m6zt@&8g{=?)@&Z~2!77I; zb@tXIT0F!4)=v}strMlaIzI(9rf&x|uZ?oL-J~bEzCPwyuIEQJyK-Kc?~pM zW4)J9q|vR?tr_i(f5unC{T0MUg#Vjvf6UmJ?<|&1Iv=shH zpBVoLAnwb!CWhBWD>o*Sd|i3+O%2HhKosP>iLCF^G^Z(cDLw*!wCe82W;J9>ARp?L zVs4xBL(>v@@56FCWclx`D3#AQbt82GDcnykoMafwyUf=~2!`H|BR~BTmZJXrlE?$I z{|8cS&OZ2+Xo?SVg))5?OZof;<42`8F$v(0raq+q?kw9IdX(~N%Hh)?YcENTzcLz&l`U^e6iWT+8QYdt)^_<#b7E|_5@Mj8Xf>)Pceu)evbb}QZlnY5S9MJ1K zC3n0~I+RdjEkyN4`v!k+3JV#e_;O-z_RrTUv0`lSQ~p=KlB<8+X>eSK66{_F!Nm|d zBd69p!?pZ+NT1}2BV6Og?zDTsD(eIry@u|N5J~kEp5-$xb9)V( zIN=5R?rtuya9{kt^s`w0cywGq9k>8P-k}O&FPSkU*(LZJ?j)f8Vou<-9ySXk1@|e& ziml)5(zZ|*ih6AGhI?M#v^a3KfD9;5#%5m(Seomj6r&{m+*Y{+vHVWjfA-|(%v5@% zy$;}U|n{%i*|u0JczWTixj7M(Nhm=@G-~ zbM5)hpNqZoQi3M|-#fyQR?larhVn3nHds5*GgXHfw`M(L>QJSpf$s60U7ec6vAYA% z*5ow(k6(ol9v~%8a5rpAR5ak^s{Y35p-@ro-tnPI+(m3CVJm?0r%ylWnfJuUN!Uzj zM^8sb`aT|B-VCy<=8W?8ofGgqol;-0nZjz{s+>67x-=Ka)VWz@s9)FHxWWmfwLDY<+5NCoSChYXWFRavLheOS#u_N@VDIW`6M1jvV)Hi=oJp^x^3B9e z+U*mSsY(;vuUu9;wJLjfP*bozvA$*(;}K>?B&^u$OoA1eb5yEZTf5%)MX30_cKsxy z&}K4`ZqLp>h$YCIj&a^aK=aN_bD=Sp8ieSV?-4{@4Rz7{uqJSH zI`>F#qNh)!pk+}&H{)1=d;7#XSCJ3hi7NS7fFq&HY=NG>XFHp(zIO1H-{j6@K= zHXr!?_+`jRN@#uP>t~E>tG!>Nm~-Mi4ibN}0OxC$!Z%rqO;UkcMFwZld#A2ho`seP zQRB^tE^r`Jq_=YUa~q2FQ)x3hpfB z=WpJ?Kkm{VE^2=IaW2vtn8yZwo7WM4Cj0Ud*3`fD;s^CVg8M(HBtW};#xR&2(PMV% z6UaMP4}AsC&$)Sj2_FR8$+xWrGgmWIlQ5FUA5aaU`GRO67dsA7t#a1UkI(!|syD{d zIw>tz;0b)XLQ>dI3RAo@aNXo^NS|W-i|N#&m6>|w9cW{U&Ongl0gL?G7}q{lbm~h~ zVDpw6sl|#~fD3DjJ%xqZ7t!zL<9kgJNzfvO@hgupW!iriH-5m72ywBJ(ApbtJzCK? z@9L6&p_eA4Gp4R`#h%W~c7@pe-v6z}=c@__C*~$#aK9RPByT_~x$T_vew3EyQfM(2 zaUvxOdF^p_xm>qCD3?)*<&bNX*o;UZRax|6QZno_*Pd`ft{f#diCpcIx8z`8hPBdO z9RjV4|D7VYIc7$Nc<=d^VkHh5op)PV_X>^QIpCIK$|eoH^|~NG@~en$JrkNV&A-*i zV(-(4_{JfNYeDh+N7badBc@;MUXA>RlK-cA}GBYL=aHAQYD1mJ18YUkkGqy0*EN({r5M=HNV3rN;nAS%P<* z#NtCG?LS!7J&H^pnf^WU`|ywVrS3>H$3tfZpMsu|Oqp6`Uh(08!YSg#t+@%If-fzx z&g`=T+Zzf5%en2MhwBzP;qJ8gcm)X(WB_(Of!!78C%3sQ z)+U9;;3Z@xw77Ux{5s*iG#$6LM7Voc1vh%lC1zj1JPJ+#fj0*Tg1gvWQ+fV z`)MAq#JTC+3E15KLj$G&#DWo?4yMzq6P7yS#U8)g3GzO(RWn|{FLT<7!)bE)`$7Fh zAn$S8-8TOE*DGFC(S%{R=a)n!*jkIB)RP)*eSw6&X}*x6j4TpHR=P*hAk8!;7!U@Z znWUnXpD1sS&D3Ln+>to>9f#W)v2f(gh^S?reLeeIA9SqF#l8(kkWBYFu2;5nKR0OVmkmz69%S)`p`~zarEuNdz zc!qV;Za5EdaxAidndEvX%z*`0xnuak=}!u;xPxb9yUe2F-04YsfyS-n120Z^BKNd*WAb( zZ>dvmm7De7!}w|O!h64mR+U?zHujNub^*xt($Y+JVvUyUo#v%($<^tvOUS00% z3m%LZx*IMnUY~QIF1wJPySq4@AROWAjDN>sNv$xrBN|esD<)kdN12xK* zaCK?zUFkI8WR2AF?b4ynq-^th|C2vXG}tQtrNVNI%ymwmQgdxU`=|s`eweAU5i{be zm``c$Qj1B_w-@z95guki1VHU01wG^WR`(A%8>(k8B=tb!Q(KU#F zKonLUxnRIHaRZfULX>}#r^nC)d*Xl0{6v3Y3C4!Vy6Lt*Z=U__Vb^-hW&0lOq0>&+ zUvwRPk2v^Ts>@2Cp&`u~a3Cy1GDz)%LwxtV(j?4JKNK#FQI;lxwQgDfJ^{{KxuFK_Y*A!0rw0ZDC9xRwRuBnN8# z$+~R)kjF*+a&I5|g$B1C-rzvsVNtoSdJ@XF6-|Ojfh_2YGy4!_xgzfNdqe%7h2Du* zocvjDLN70SzIqhR&63}Hn;m>{6%dDn~8v;Y)AlTx7 z$_-xHew7vnZdKMfRGtQ|{KCMy2rp3Usr-?}ZpESW#8zeNf*o>G@aO1>1HTk9) zVf-)&0|@ayGV_@fxNqM>5SlfY9R1k}I|qB!>RUlVB)qGsdd!sKk$JXeNx3H&&^w4~ z!$xAkJrNdz-`|xYn83Is=~)@f#P8QKpoUEuM>=w1LcHrXMmy~{W1wHrTX}cnPe-@7Ppx&M(VRR%7KF&Q87{gsXGZFy*>ZayqY@eMPCps|8R7EYaBUi>RxPXFd z$8R(B_xK!~mAf@es4;JZUNFJ1(Lo$9Zce#|K-4D7&9{zJlM3e@qKBGna{%^2TytVGaU{3t5q z-V}N%1tmcg3Pb{)`tLzDBA~vYqI{Y?r=IOFrYV`J6wT>?G<87%<-m`&t8LN_9Cl%S z1R5Ud;=_X&SuUn-9A64Sswz{|FAb9h)V9Hc$HB=Ev71mfw zKRM+%XN+R}oTSB~|SoTAf$Hd5yWu7&g?10q<| zL4IM^FVjm7=dn>jMP;afO%q(@i3Pk=`{clnJ6kaAqHlY}E_=RP3_;qb(W$t)XB({` zCiQ~KXU!=>m8bbKt&V#1%vc6Xq{tu$Rp#=g!kP zqh?8PT8V%+ZqkIzH(6VlsPqI&K$`1ESkHS?xi;2bT^D>$gl{s<&~gNGZ1}x2v0Ix* zz&TU$L%#x5H-tCV zmKCOv$V2$$8N0vGby+UpP*a$+M;hcADV$awpFX@hxb}Wa^7silLg9~p9!q`KFs;NL zmf4axC)nfXm8u!#nKX%z57BLhOyA8@)oB8}2SyazKmRy;xzl6M(SWOK_PS$)X%3Q& zw-yW8Xn)hQT~lztZF++_^vBa^(a4;nm^jd8%!kVGu5mAuoz(Cy`OEiwb^^P3cN-S0 zMmLc^A4Sj9WBo>;6JpPsjhRqsI}h z;l$IH#XVX{apzQ7t^pRXGVS>8(`tf_UsUe{w9?lQ&F0Bj8!3dZJ5hr!_0*gcg4eg+ zJoaliuuPO=j9hmKU4{Dx=F^31;(jH{9oPe5zGQ^8z@}{5AAP684ArkbLF>)vN5Gdx1!+mj9sY}Ye)@JS2E^>d!3yAl|yl$&MBGTR)b-^ zIIdtzT<*|cjx3j2$(RZ#>!2@JznQMvltTD?-GV`z7y+p2<2gDC`O#T_~nPyj_Ee{t#aN3Z!==`id2xWBV-)UnpPmDkR?SWots;pKbHaC!;&p=LM-cM~K3#aYA@m zE>eVStFgh=$Yk_d%?zx@J42U0h{@;M{Q({@kCeFoqimhad7?VoXpy~q5A{9Q=ksQw zZ2o^L3dg6M&c(Y21tscf41!+j^&sQxy545}7G;QrI~O_FoQ>K{Zcf*Uo{LVsg1e^+ z@>7$>btY&#-(ce7t$%m$vH&@r5(v$w^E4XsE)S6`b3Z!Ew3)1wsPdM$@%N|JCS34X zpI?jnN7vJ6JLhEITCc>wEV>O3UzDdM&$V3@S+7+tFIi=Tms2>yciQHK`5bfa= zZ=0)*r3icEhNSib31xOD7;G_qP{+e?7H~9c*N)pe*(rIyjUzXE{}OYDElD$os(eKw zc}2St-fvIROe{{WvesTrzIkRL{!r)YyRdGPRU+1vZlXs|`N?gX;B!$<$EE2)bJ)(T zxUxa+KOnOvY)wrhP5PXzfk4tNPV^H&5Rj@up9en;Ob8oRYVT5Zh`myoXpt>bKMgdq zA#8mzbrZayCHonPalP*&w9*;UF?7u*J=^bsYO3%sDXR#6;d|EXf+r}u-?Wqrcjdtn z(6?BYJ()=L;=aYp_y}ejkBmmzXHoXFzm|8P=jp{?0i^N*v%X3_{vo_x&fw21=6k!N z;wogs6M5&xSwJY*XexgiV~zQ8nkaV1>{Oa|LjS5cz7US2~(r+ox-_@RS}3KiS`SG4`VqwdL6sMO~s%I-o*)Z%3t z$>?5;QHW3_tUU`wkW9`mN^%j63OmGePe6^UGN!Z4CKQx$@2a}#Z%9!}G?{mjFxR>b zAtQW^tE(bago(i`394k+DNG*2*1@s^z1F8Yry*EUVDG8in;twUEw^SjSVt9kOnP0R zH!R^T8G|}+0z)u9hUE~}ikClZ}^H7FA zwO{P;|5ZhS7X8U?I}IV zgMfRYuH}1hgY)aysNFED;2VUcI|=S{5}dO zX<}b{feotJa18mJ10nlCQ&I3MCZH$1+*#sLAQhdVmgkBW#qWL_Aa&|FT>sZOhkrv$ zwdJ>JKr`v{BY>8GwPDLethreDkMs$=9q8;Oh4yx4@L#{y`P47@!5D?ahm~Y{58@7e zk*Cd*!Y1M-sIM>X8Q*(AF7GwR z^O2+B@3cA^OANYt#L&B``UlI)?d%LuEdlxM>51);M`GZfJ{}qrjBGzN)-GD1U{MpI zTx?N)!M(kUyOkBs(0_dt)exzD>*oEX7trh;z#cexH$+l)#t?Zlv+q@Lk;%9E0O_^l z#Wt#`aa!RnE?yi1U9W$sx60dB!Nzy(r|w6#6(B@(PE!Bh{D)$)_Q(PupQq zcznUI#A?dn%Mv4_qBs+$PaqNM1XhmZn z&C=gE5YUVJvuyR}g~aq>Vi-&sg|`0ljSrjo7r9bYGc7X@gHK_0Lz9b8#3JE~DYN8T92L^nH1+QF!jSh`ItcVUbzrn<>Uc+WsKN#tI z8Wfbk_k2Vr5ZWJNsaG1$J!Niw0*H7EE)qjN#0-qy^(-Q(mfLv~{n`~o^-iW8nAo<_FK2a|2l7 zaRpcDHZEtcW!Q+ta5{FkoYf-H;(miFD3Uvi_HDZ z`)1Cj7Y{nf_qA=Ch!k0Ft9Ey~Cx-o-iVK+2Y(7~J5x@3HofnxyUsFbWyT13HKxhCX zRtcHRB%_40Ojrx?s$}_{{q8oNl{o5K;dZ;{hH*32?329eN2}C1swa6XA9x-C=x$hK z9nE!n+tahl@wtegmITOA-g(NG-pTV*#|bl_r3C?Exn-rXQ4EZC34x>~?ZOXSt z*u`Hc+MLr~gopjDuefPVX~K3okY+qzRM$RJzThC9bA#QMem=inY>w(DBA>?n*RX<$ z-{a-!_=obp(GTal`Q49YtM%-epB+aZr4D|O>-z@j@XdcSS8kEZU)=%_^&dM~%T6!F zG?58S{^MN>9%$p+Pc%4xPz44(ouvairotypD1{5oMs^_KYqulxs&JPDxg?|ZP{KV>J{7x8nR~^V$FN29x$%$vl^fls@z&yNgcryp zZA-1)A^JMRxHgCxz{~$J`UJTp^In7sQ_6tC>A4V){(J6-d@^CubYWG@w(=MW;r+}i zq{LL6W^fUkryKJ7Qv`z>=Y;;{sp6I~@O<-Gzk!Xi88}rP97@pY0_Y2hO-1U-=LO2T zYG&^9Ti1qCf&tt|@Ne{yTAL&d(*{Y?HW~#V8-I!eX-Y3LzjK;V=-3sRbd&jSnSg(>0srlo`=9P6 zaEJLI7soK*#0UnuPz30uuOINP!oY!S378dV?OzxBDl!2#_J2(Ce@$7BLIm-jEbzY( N6Y2k_kM#e{{10003mX+uL$Nkc;* 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 !lw?kdVpK#w;pd~nU1rq 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 z

      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
    1. xc0`qQ$uSJ9_Q31=P%;> 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%0D+~HhZW4n?8jr*-DCf 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 { + return ( + <> +

      Members:

      +

      + Shinji Kakei: Motor Disorders Project, Tokyo Metropolitan Institute for Neuroscience
      + Yutaka Hirata: Dept. of Computer Science, College of Engineering, Chubu University
      +
      Tadashi Yamazaki: The University of Electro-Communications
      + Soichi Nagao: Laboratory for Integrative Brain Functions, Nozomi Hospital
      + Shiro Usui: Toyohashi University of Technology
      + Yoko Yamaguchi: Neuroinformatics Unit, RIKEN CBS
      + Takeru Honda: Motor Disorders Project, Tokyo Metropolitan Institute for Neuroscience +

      + + ); +} + +export default CerebellarPlatformCommittee; diff --git a/src/custom/blocks/CerebrationOfDrItosNewBook.tsx b/src/custom/blocks/CerebrationOfDrItosNewBook.tsx new file mode 100644 index 0000000..ab1c19a --- /dev/null +++ b/src/custom/blocks/CerebrationOfDrItosNewBook.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { MultiLang } from '../../config'; +import imageBookCover from '../assets/images/book-cover.jpg'; +import imageBookToc from '../assets/images/book-toc.jpg'; +import imageGroupPhoto from '../assets/images/group-photo.jpg'; + +interface Props { + lang: MultiLang; +} + +const CerebrationOfDrItosNewBook = (props: Props) => { + return ( +

      + + + +

      + ); +} + +export default CerebrationOfDrItosNewBook; diff --git a/src/custom/blocks/NewArticleAlert.tsx b/src/custom/blocks/NewArticleAlert.tsx new file mode 100644 index 0000000..9678dce --- /dev/null +++ b/src/custom/blocks/NewArticleAlert.tsx @@ -0,0 +1,4181 @@ +import React from 'react'; +import { MultiLang } from '../../config'; + +interface Props { + lang: MultiLang; +} + +const NewArticleAlert = (props: Props) => { + return ( + <> +

      2018 March

      +

      + Neuroscience and Biobehavioral Reviews Volume 86, March 2018, Pages 176-206 +

      +

      + Assessing cerebellar brain inhibition (CBI) via transcranial magnetic stimulation (TMS): A systematic review
      + Lara Fernandez, Brendan P. Major, Wei-Peng Teo, Linda K. Byrne, Peter G. Enticott
      + - https://doi.org/10.1016/j.neubiorev.2017.11.018 +

      +

      + Neuroscience Research Volume 128, March 2018, Page 63 +

      +

      + Corrigendum to Projections from the lowest lumbar and sacral-caudal segments to the cerebellar cortex in the rat: An anterograde tracing study [Neurosci. Res. 114 (January) (2017) 43-54]
      + Matsuo Matsushita
      + - https://doi.org/10.1016/j.neures.2017.12.001 +

      +

      + PLOS ONE, February 24, 2018 to March 02, 2018, Published: February 28, 2018 +

      +

      + Subclinical recurrent neck pain and its treatment impacts motor training-induced plasticity of the cerebellum and motor cortex
      + Julianne K. Baarbé, Paul Yielder, Heidi Haavik, Michael W. R. Holmes, Bernadette Ann Murphy
      + - https://doi.org/10.1371/journal.pone.0193413 +

      +

      2018 February

      +

      + Neuron, Volume 97, Issue 4, 21 February 2018, Pages 796-805.e5 +

      +

      + Retrograde Signaling from Progranulin to Sort1 Counteracts Synapse Elimination in the Developing Cerebellum
      + Naofumi Uesaka, Manabu Abe, Kohtarou Konno, Maya Yamazaki, Kazuto Sakoori, Takaki Watanabe, Tzu-Huei Kao, Takayasu Mikuni, Masahiko Watanabe, Kenji Sakimura, Masanobu Kano
      + - https://doi.org/10.1016/j.neuron.2018.01.018 +

      +

      + European Journal of Neuroscience, 20 February 2018 +

      +

      + Beta-gamma burst stimulations of the inferior olive induce high-frequency oscillations in the deep cerebellar nuclei
      + Julian Cheron, Guy Cheron
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13873/abstract +

      +

      + Current Opinion in Neurobiology Volume 48, February 2018, Pages 146-152 +

      +

      + Local and long-range circuit elements for cerebellar function
      + Le Xiao, Peter Scheiffele
      + - https://doi.org/10.1016/j.conb.2017.12.016 +

      +

      + Front. Aging Neurosci., 16 February 2018 +

      +

      + Increased Degradation Rates in the Components of the Mitochondrial Oxidative Phosphorylation Chain in the Cerebellum of Old Mice
      + Aurel Popa-Wagner, Raluca E. Sandu, Coman Cristin, Adriana Uzoni, Kevin A. Welle, Jennifer R. Hryhorenko, Sina Ghaemmaghami
      + - https://doi.org/10.3389/fnagi.2018.00032 +

      +

      + Front. Neural Circuits, 07 February 2018 +

      +

      + Anatomical Evidence for a Direct Projection from Purkinje Cells in the Mouse Cerebellar Vermis to Medial Parabrachial Nucleus
      + Mitsuhiro Hashimoto, Akihiro Yamanaka, Shigeki Kato, Manabu Tanifuji, Kazuto Kobayashi, Hiroyuki Yaginuma
      + - https://doi.org/10.3389/fncir.2018.00006 +

      +

      + Front. Physiol., 09 February 2018 +

      +

      + Circadian Clock Proteins and Melatonin Receptors in Neurons and Glia of the Sapajus apella Cerebellum
      + Leila Guissoni Campos, Isis Vieira, Isadora Robalinho, Giovanna Piffer, Joyce Viégas, Henrique Bosso, Rafael Bravos, Luciana Pinato
      + - https://doi.org/10.3389/fphys.2018.00005 +

      +

      + The Cerebellum. February 2018, Volume 17, Issue 1, Pages 1-3 +

      +

      + Cerebellum: from Development to Disease the 8th International Symposium of the Society for Research on the Cerebellum and Ataxias
      + Hassan MarzbanEmail, Mario Manto, Jean Mariani
      + - https://link.springer.com/article/10.1007/s12311-018-0919-4 +

      +

      + The Cerebellum. February 2018, Volume 17, Issue 1, Pages 4-11 +

      +

      + Epidemiology of Cerebellar Diseases and Therapeutic APagesroaches
      + Michael S. Salman
      + - https://link.springer.com/article/10.1007/s12311-017-0885-2 +

      +

      + The Cerebellum February 2018, Volume 17, Issue 1, Pages 12-16 +

      +

      + The Ferdinando Rossi Memorial Lecture: Zones and Stripes Pattern Formation in the Cerebellum
      + Richard Hawkes
      + - https://link.springer.com/article/10.1007/s12311-017-0887-0 +

      +

      + The Cerebellum February 2018, Volume 17, Issue 1, Pages 17-22 +

      +

      + Presynaptic Mechanisms Mediating Retrograde Semaphorin Signals for Climbing Fiber Synapse Elimination During Postnatal Cerebellar Development
      + Naofumi Uesaka, Masanobu Kano
      + - https://link.springer.com/article/10.1007/s12311-017-0888-z +

      +

      + The Cerebellum February 2018, Volume 17, Issue 1, Pages 23-27 +

      +

      + Protein Kinase C in the Cerebellum: Its Significance and Remaining Conundrums
      + Hirokazu Hirai
      + - https://link.springer.com/article/10.1007/s12311-017-0898-x +

      +

      + The Cerebellum February 2018, Volume 17, Issue 1, Pages 28-36 +

      +

      + Epigenetic Drivers in Pediatric Medulloblastoma
      + Martine F. Roussel, Jennifer L. Stripay
      + - https://link.springer.com/article/10.1007/s12311-017-0899-9 +

      +

      + The Cerebellum February 2018, Volume 17, Issue 1, Pages 37-41 +

      +

      + Self-Organized Cerebellar Tissue from Human Pluripotent Stem Cells and Disease Modeling with Patient-Derived iPSCs
      + Keiko Muguruma
      + - https://link.springer.com/article/10.1007/s12311-017-0905-2 +

      +

      + The Cerebellum February 2018, Volume 17, Issue 1, Pages 42-48 +

      +

      + The Molecular Pathway Regulating Bergmann Glia and Folia Generation in the Cerebellum
      + Alan W. Leung, James Y. H. Li
      + - https://link.springer.com/article/10.1007/s12311-017-0904-3 +

      +

      + The Cerebellum February 2018, Volume 17, Issue 1, Pages 49-55 +

      +

      + Crus I in the Rodent Cerebellum: Its Homology to Crus I and II in the Primate Cerebellum and Its Anatomical Uniqueness Among Neighboring Lobules
      + Izumi Sugihara
      + - https://link.springer.com/article/10.1007/s12311-017-0911-4 +

      +

      + The Cerebellum February 2018, Volume 17, Issue 1, Pages 62-71 +

      +

      + Migration of Interneuron Precursors in the Nascent Cerebellar Cortex
      + Annika K. Wefers, Christian Haberlandt, Lachezar Surchev, Christian Steinhäuser, Ronald Jabs, Karl Schilling
      + - https://link.springer.com/article/10.1007/s12311-017-0900-7 +

      +

      + The Cerebellum February 2018, Volume 17, Issue 1, Pages 72-77 +

      +

      + Targeting the CACNA1A IRES as a Treatment for Spinocerebellar Ataxia Type 6
      + Parviz Daniel Hejazi Pastor, Xiaofei Du, Sarah Fazal, Andre N. Davies, Christopher M. Gomez
      + - https://link.springer.com/article/10.1007/s12311-018-0917-6 +

      +

      + PLOS ONE, February 03, 2018 to February 09, 2018 +

      +

      + Correction: Mutational analysis of ITPR1 in a Taiwanese cohort with cerebellar ataxias
      + Cheng-Tsung Hsiao, Yo-Tsen Liu, Yi-Chu Liao, Ting-Yi Hsu, Yi-Chung Lee, Bing-Wen Soong
      + - https://doi.org/10.1371/journal.pone.0192866 +

      +

      + Front. Neurol., 05 February 2018 +

      +

      + Hypothesis: The Vestibular and Cerebellar Basis of the Mal de Debarquement Syndrome
      + Bernard Cohen, Sergei B. Yakushin and Catherine Cho
      + - https://doi.org/10.3389/fneur.2018.00028 +

      +

      + Neuroscience Volume 371, 10 February 2018, Pages 119-125 +

      +

      + The Effect of Cerebellar Transcranial Direct Current Stimulation on A Throwing Task Depends on Individual Level of Task Performance
      + Nobuaki Mizuguchi, Takashi Katayama, Kazuyuki Kanosue
      + - https://doi.org/10.1016/j.neuroscience.2017.11.048 +

      +

      2018 January

      +

      + The Journal of Physiology, Volume 596, Issue 2 15 January 2018 Pages 139-141 +

      +

      + Heading in the right direction: the importance of direction selectivity for cerebellar motor learning
      + Miranda A. Mathews, Fatema Mohammed Ali, Rajiv Wijesinghe and Aaron J. Camp
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP275441/abstract +

      +

      + Neuroscience Volume 368, 1 January 2018, Pages 229-239 +

      +

      + Convergence of Primary Sensory Cortex and Cerebellar Nuclei Pathways in the Whisker System
      + Carmen B. Schäfer, Freek E. Hoebeek
      + - https://www.sciencedirect.com/science/article/pii/S0306452217305134 +

      +

      + PLOS BIOLOGY +

      +

      + Neurotransmitter-mediated activity spatially controls neuronal migration in the zebrafish cerebellum
      + Ulrike Theisen, Christian Hennig, Tobias Ring, Ralf Schnabel, Reinhard W. Köster
      + - http://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.2002226 +

      +

      + Frontiers in Neuroscience +

      +

      + Delineation of Subregions in the Early Postnatal Human Cerebellum for Design-Based Stereologic Studies
      + Anna Fichtl, Andreas Buettner, Patrick Hof, Christoph Schmitz, and Maren Kiessling
      + - https://www.frontiersin.org/articles/10.3389/fnana.2017.00134/full +

      +

      + PLOS GENETICS +

      +

      + Correction: Alkaline Ceramidase 3 Deficiency Results in Purkinje Cell Degeneration and Cerebellar Ataxia Due to Dyshomeostasis of Sphingolipids in the Brain
      + Kai Wang, Ruijuan Xu, Jennifer Schrandt, Prithvi Shah, Yong Z. Gong, Chet Preston, Louis Wang, Jae Kyo Yi, Chih-Li Lin, Wei Sun, Demetri D. Spyropoulos, Soyoung Rhee, Mingsong Li, Jie Zhou, Shaoyu Ge, Guofeng Zhang, Ashley J. Snider, Yusuf A. Hannun, Lina M. Obeid, Cungui Mao
      + - http://journals.plos.org/plosgenetics/article?id=10.1371/journal.pgen.1007190 +

      +

      + PLOS ONE +

      +

      + Implicit learning deficit in children with Duchenne muscular dystrophy: Evidence for a cerebellar cognitive impairment?
      + Stefano Vicari, Giorgia Piccini, Eugenio Mercuri, Roberta Battini, Daniela Chieffo, Sara Bulgheroni, Chiara Pecini, Simona Lucibello, Sara Lenzi, Federica Moriconi, Marika Pane, Adele D’Amico, Guja Astrea, Giovanni Baranello, Daria Riva, Giovanni Cioni, Paolo Alfieri
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0191164 +

      +

      + Brain Research, Volume 1678, 1 January 2018, Pages 330-336 +

      +

      + Variation in MUTYH expression in Arabian horses with Cerebellar Abiotrophy
      + E.Y. Scott, K.D. Woolard, C.J. Finno, M.C.T. Penedo, J.D. Murray
      + - https://www.sciencedirect.com/science/article/pii/S0006899317304924 +

      +

      + Experimental Brain Research January 2018, Volume 236, Issue 1, Pages 83-97 +

      +

      + Acute and repetitive fronto-cerebellar tDCS stimulation improves mood in non-depressed participants
      + Simon Newstead, Hayley Young, David Benton, Gabriela Jiga-Boy, Maria L. Andrade Sienz, R. M. Clement, Frédéric Boy
      + - https://link.springer.com/article/10.1007/s00221-017-5109-y +

      +

      + Journal of Neuroscience 31 January 2018, 38 (5) 1277-1294 +

      +

      + Meis1 Coordinates Cerebellar Granule Cell Development by Regulating Pax6 Transcription, BMP Signaling and Atoh1 Degradation
      + Tomoo Owa, Shinichiro Taya, Satoshi Miyashita, Mariko Yamashita, Toma Adachi, Koyo Yamada, Miwa Yokoyama, Shogo Aida, Tomoki Nishioka, Yukiko U. Inoue, Ryo Goitsuka, Takuro Nakamura, Takayoshi Inoue, Kozo Kaibuchi and Mikio Hoshino
      + - https://doi.org/10.1523/JNEUROSCI.1545-17.2017 +

      +

      2017 December

      +

      + The Journal of Physiology, Volume 595, Issue 2415 December 2017, Pages 7477-7493 +

      +

      + Axonal GABAA receptors depolarize presynaptic terminals and facilitate transmitter release in cerebellar Purkinje cells
      + Javier Zorrilla de San Martin, Federico F. Trigo and Shin-ya Kawaguchi
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP275369/abstract +

      +

      + Cerebral Cortex, Volume 27, Issue 12, 1 December 2017, Pages 5652-5662 +

      +

      + Distinct Cerebellar Contributions to Cognitive-Perceptual Dynamics During Natural Viewing
      + Vinh Thai Nguyen, Saurabh Sonkusare, Jane Stadler, Xintao Hu, Michael Breakspear, Christine Cong Guo
      + - https://academic.oup.com/cercor/article-abstract/27/12/5652/2559299 +

      +

      + Nature Neuroscience Contents: December 2017 Volume 20 Number 12 +

      +

      + Altered cerebellar connectivity in autism and cerebellar-mediated rescue of autism-related behaviors in mice
      + Catherine J. Stoodley, Anila M. D'Mello, Jacob Ellegood, Vikram Jakkamsetti, Pei Liu, Mary Beth Nebel, Jennifer M. Gibson, Elyza Kelly, Fantao Meng, Christopher A. Cano, Juan M. Pascual, Stewart H. Mostofsky, Jason P. Lerch and Peter T. Tsai
      + - http://www.nature.com/articles/s41593-017-0004-1 +

      +

      + The Cerebellum, December 2017, Volume 16, Issue 5–6, pp 877–879 +

      +

      + From Mice to Men: TRPC3 in Cerebellar Ataxia
      + Esther B. E. Becker
      + - https://link.springer.com/article/10.1007/s12311-015-0663-y/fulltext.html +

      +

      + The Cerebellum, December 2017, Volume 16, Issue 5–6, pp 880–912 +

      +

      + Arteries and Veins of the Cerebellum
      + Matthieu Delion, Mickael Dinomais and Philippe Mercier
      + - https://link.springer.com/article/10.1007/s12311-016-0828-3/fulltext.html +

      +

      + The Cerebellum, December 2017, Volume 16, Issue 5–6, pp 913–922 +

      +

      + Viral Vector-Based Evaluation of Regulatory Regions in the Neuron-Specific Enolase (NSE) Promoter in Mouse Cerebellum In Vivo
      + Yoichiro Shinohara, Toshinori Ohtani, Ayumu Konno and Hirokazu Hirai
      + - https://link.springer.com/article/10.1007/s12311-017-0866-5/fulltext.html +

      +

      + The Cerebellum, December 2017, Volume 16, Issue 5–6, pp 923–928 +

      +

      + Cerebellar Gray Matter Alterations in Huntington Disease: A Voxel-Based Morphometry Study
      + Paula C de Azevedo, Rachel P Guimarães, Camila C Piccinin, Luiza G Piovesana, Lidiane S Campos, Juliana R Zuiani, Eliza M. Tamashiro, Giordanna Pinheiro, Augusto C Amato-Filho, Fernando Cendes, Iscia Lopes- Cendes and Anelyssa D’Abreu
      + - https://link.springer.com/article/10.1007/s12311-017-0865-6/fulltext.html +

      +

      + The Cerebellum, December 2017, Volume 16, Issue 5–6, pp 945–950 +

      +

      + Impairments in Walking Ability, Dexterity, and Cognitive Function in Multiple Sclerosis Are Associated with Different Regional Cerebellar Gray Matter Loss
      + Matthias Grothe, Martin Lotze, Sönke Langner and Alexander Dressel
      + - https://link.springer.com/article/10.1007/s12311-017-0871-8/fulltext.html +

      +

      + The Cerebellum, December 2017, Volume 16, Issue 5–6, pp 964–972 +

      +

      + Cerebellar Contributions to Persistent Auditory Verbal Hallucinations in Patients with Schizophrenia
      + Maximilian Cierpka, Nadine D. Wolf, Katharina M. Kubera, Mike M. Schmitgen, Nenad Vasic, Karel Frasch and Robert Christian Wolf
      + - https://link.springer.com/article/10.1007/s12311-017-0874-5/fulltext.html +

      +

      + The Cerebellum, December 2017, Volume 16, Issue 5–6, pp 973–978 +

      +

      + Permanent Cerebellar Degeneration After Acute Hyperthermia with Non-toxic Lithium Levels: a Case Report and Review of Literature
      + Fabian H. Rossi, Elisa Marie Rossi, Michael Hoffmann, Welwin Liu, Ramon Rodriguez Cruz, Natasha Antonovich, Arash Rezaei, Elizabeth Gonzalez, Maria Clara Franco, Alvaro Estevez and Florian Thomas
      + - https://link.springer.com/article/10.1007/s12311-017-0868-3/fulltext.html +

      +

      + The Cerebellum, December 2017, Volume 16, Issue 5–6, pp 988–990 +

      +

      + Hypomagnesemia: a Treatable Cause of Ataxia with Cerebellar Edema
      + Idoia Rouco Axpe, Javier Almeida Velasco, Jose Guillermo Barreiro Garcia, Jose Manuel Urbizu Gallardo and Beatriz Mateos Goñi
      + - https://link.springer.com/article/10.1007/s12311-017-0873-6/fulltext.html +

      +

      + Journal of Neuroscience, Vol. 37, Issue 50 13 Dec 2017 +

      +

      + Morphological Constraints on Cerebellar Granule Cell Combinatorial Diversity
      + Jesse I. Gilmer and Abigail L. Person
      + - http://www.jneurosci.org/content/37/50/12153 +

      +

      + European Journal of Neuroscience, Volume 46, Issue 12, December 2017, Pages 2875–2884 +

      +

      + The effects of cerebellar transcranial direct current stimulation on static and dynamic postural stability in older individuals: a randomized double-blind sham-controlled study
      + Fatemeh Ehsani, Afshin Samaei, Maryam Zoghi, Rozita Hedayati and Shapour Jaberzadeh
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13731/full +

      +

      + NeuroImage, Volume 163, December 2017, Pages 177-182 +

      +

      + The cerebellum's contribution to beat interval discrimination
      + S. Paquette, S. Fujii, H.C. Li, G. Schlaug
      + - https://www.sciencedirect.com/science/article/pii/S1053811917307656 +

      +

      + Frontiers in Pharmacology +

      +

      + Prostaglandin E2 Impairs P2Y2/P2Y4 Receptor Signaling in Cerebellar Astrocytes via EP3 Receptors
      + Lucía Paniagua-Herranz, Juan Carlos Gil-Redondo, María José Queipo, Silvia González-Ramos, Lisardo Bosca, Raquel Pérez-Sen, Maria Teresa Miras-Portugal, and Esmerilda Delicado
      + - https://www.frontiersin.org/articles/10.3389/fphar.2017.00937/full +

      +

      + Specific Temporal Distribution and Subcellular Localization of a Functional Vesicular Nucleotide Transporter (VNUT) in Cerebellar Granule Neurons
      + Aida Menéndez, Juan Ignacio Díaz, Felipe Ortega, Javier Gualix, Rosa Gomez-Villafuertes, and M. Teresa Miras-Portugal
      + - https://www.frontiersin.org/articles/10.3389/fphar.2017.00951/full +

      +

      + PLOS ONE +

      +

      + Short-term succinic acid treatment mitigates cerebellar mitochondrial OXPHOS dysfunction, neurodegeneration and ataxia in a Purkinje-specific spinocerebellar ataxia type 1 (SCA1) mouse model
      + Austin Ferro, Emily Carbone, Jenny Zhang, Evan Marzouk, Monica Villegas, Asher Siegel, Donna Nguyen, Thomas Possidente, Jessilyn Hartman, Kailen Polley, Melissa A. Ingram, Georgia Berry, Thomas H. Reynolds, Bernard Possidente, Kimberley Frederick, Stephen Ives, Sarita Lagalwar
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0188425 +

      +

      + European Journal of Neuroscience, Volume 46, Issue 12, December 2017, Pages 2875-2884 +

      +

      + The effects of cerebellar transcranial direct current stimulation on static and dynamic postural stability in older individuals: a randomized double-blind sham-controlled study
      + Fatemeh Ehsani, Afshin Samaei, Maryam Zoghi, Rozita Hedayati, Shapour Jaberzadeh
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13731/abstract +

      +

      2017 November

      +

      + Cerebral Cortex, Volume 27, Issue 11, 1 November 2017, Pages 5170–5184 +

      +

      + Asynchronous Development of Cerebellar, Cerebello-Cortical, and Cortico-Cortical Functional Networks in Infancy, Childhood, and Adulthood
      + Judy A Kipping, Ta Ahn Tuan, Marielle V Fortier, Anqi Qiu
      + - https://academic.oup.com/cercor/article-abstract/27/11/5170/3056481 +

      +

      + Neuroscience Letters Volume 660, 1 November 2017, Pages 135-139 +

      +

      + Roles of N-methyl-d-aspartate receptors during the sensory stimulation-evoked field potential responses in mouse cerebellar cortical molecular layer
      + Yin-Hua Xu, Guang-Jian Zhang, Jing-Tong Zhao, Chun-Ping Chu, Yu-Zi Li, De-Lai Qiu
      + - https://www.sciencedirect.com/science/article/abs/pii/S0304394017307723 +

      +

      + European Journal of Neuroscience +

      +

      + Lobular patterns of cerebellar resting- state connectivity in adults with Autism Spectrum Disorder
      + Giusy Olivito, Michela Lupo, Fiorenzo Laghi, Silvia Clausi, Roberto Baiocco, Mara Cercignani, Marco Bozzali and Maria Leggio
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13752/abstract +

      +

      + Experimental Brain Research, November 2017, Volume 235, Issue 11, pp 3437–3448 +

      +

      + Cerebellar compartments for the processing of kinematic and kinetic information related to hindlimb stepping
      + M. S. Valle, G. Bosco and R. E. Poppele
      + - https://link.springer.com/article/10.1007/s00221-017-5067-4/fulltext.html +

      +

      + The Journal of Physiology, Volume 595, Issue 21 Pages 6585 - 6789, 1 November 2017 +

      +

      + Collateral impact: a dual role for climbing fibre collaterals to the cerebellar nuclei?
      + Jasmine Pickford and Richard Apps
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP275091/abstract +

      +

      + The Journal of Physiology, Volume 595, Issue 21 Pages 6585 - 6789, 1 November 2017 +

      +

      + Synaptic excitation by climbing fibre collaterals in the cerebellar nuclei of juvenile and adult mice
      + Marion Najac and Indira M. Raman
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP274598/abstract +

      +

      + Journal of Neuroscience, Vol. 37, Issue 47, 22 Nov 2017 +

      +

      + Concerted Interneuron Activity in the Cerebellar Molecular Layer During Rhythmic Oromotor Behaviors
      + Guadalupe Astorga, Dongdong Li, Ludivine Therreau, Merouann Kassa, Alain Marty and Isabel Llano
      + - http://www.jneurosci.org/content/37/47/11455 +

      +

      + PLOS ONE +

      +

      + Mutational analysis of ITPR1 in a Taiwanese cohort with cerebellar ataxias
      + Cheng-Tsung Hsiao, Yo-Tsen Liu, Yi-Chu Liao, Ting-Yi Hsu, Yi-Chung Lee, Bing-Wen Soong
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0187503 +

      +

      + Frontiers in Neuroscience +

      +

      + Structural Covariance of Sensory Networks, the Cerebellum, and Amygdala in Autism Spectrum Disorder
      + Garrett Cardon, Susan Hepburn, and Donald Rojas
      + - https://www.ncbi.nlm.nih.gov/pubmed/29230189 +

      +

      + Frontiers in Neuroscience +

      +

      + Secretin Modulates the Postnatal Development of Mouse Cerebellar Cortex Via PKA- and ERK-dependent Pathways
      + LEI WANG, LI ZHANG, and Billy Chow
      + - https://www.ncbi.nlm.nih.gov/pubmed/29249942 +

      +

      + Frontiers in Neuroscience +

      +

      + Propofol Exposure in Early Life Induced Developmental Impairments in the Mouse Cerebellum
      + Rui Xiao, Dan Yu, Xin Li, Jing Huang, Sheng Jing, Xiaohang Bao, Tiande Yang, and Xiaotang Fan
      + - https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5715384/ +

      +

      + The Journal of Physiology, Volume 595, Issue 21, 1 November 2017, Pages 6589-6590 +

      +

      + Collateral impact: a dual role for climbing fibre collaterals to the cerebellar nuclei?
      + Jasmine Pickford, Richard APagess
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP275091/abstract +

      +

      + The journal of Physiology, Volume 595, Issue 21, 1 November 2017, Pages 6703-6718 +

      +

      + Synaptic excitation by climbing fibre collaterals in the cerebellar nuclei of juvenile and adult mice
      + Marion Najac, Indira M. Raman
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP274598/abstract +

      +

      2017 October

      +

      + Current Opinion in Neurobiology Volume 46, October 2017, Pages 58-67 +

      +

      + New insights into olivo-cerebellar circuits for learning from a small training sample
      + Isao T Tokuda, Huu Hoang, Mitsuo Kawato
      + - https://www.sciencedirect.com/science/article/pii/S0959438817300521 +

      +

      + Biological Cybernetics, Vol. 111, Issue 5 +

      +

      + Fuzzy neuronal model of motor control inspired by cerebellar pathways to online and gradually learn inverse biomechanical functions in the presence of delay
      + Marion Najac and Indira M. Raman
      + - https://link.springer.com/content/pdf/10.1007/s00422-017-0735-9 +

      +

      + Frontiers in Neuroscience +

      +

      + Motor Deficits and Cerebellar Atrophy in Elovl5 Knock Out Mice
      + Eriola Hoxha, Rebecca Gabriele, Ilaria Balbo, Francesco Ravera, Linda Masante, Vanessa Zambelli, Cristian Albergo, Nico Mitro, Donatella Caruso, Eleonora Di Gregorio, Alfredo Brusco, Barbara Borroni, and Filippo Tempia
      + - https://www.ncbi.nlm.nih.gov/pubmed/29163054 +

      +

      + Frontiers in Neuroscience +

      +

      + Cerebellar Vermis and Midbrain Hypoplasia Upon Conditional Deletion of Chd7 from the Embryonic Mid-Hindbrain Region
      + Alex Donovan, Tian Yu, Jacob Ellegood, Kimberley Riegman, Christa de Geus, Conny van Ravenswaaij-Arts, Cathy Fernandes, Jason Lerch, and M. Albert Basson
      + - https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5632662/ +

      +

      + Frontiers in Neuroscience +

      +

      + Human iPSC-Derived Cerebellar Neurons from a Patient with Ataxia-Telangiectasia Reveal Disrupted Gene Regulatory Networks
      + Samuel Nayler, Joseph Powell, Darya Vanichkina, Othmar Korn, Christine Wells, Refik Kanjhan, Jane Sun, Ryan Taft, Martin Lavin, and Ernst Wolvetang
      + - https://www.ncbi.nlm.nih.gov/pubmed/29081736 +

      +

      + European Journal of Neuroscience, Volume 46, Issue 8, October 2017, Pages 2339-2354 +

      +

      + Beta-band oscillations during passive listening to metronome sounds reflect improved timing representation after short-term musical training in healthy older adults
      + Takako Fujioka, Bernhard Ross
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13693/abstract +

      +

      + Journal of Neuroscience 4 October 2017, Volume 37, Issue 40, 9795-9798 +

      +

      + Cerebellar Cortex and Cerebellar Nuclei Are Concomitantly Activated during Eyeblink Conditioning: A 7T fMRI Study in Humans
      + Published By: Society for Neuroscience
      + - https://doi.org/10.1523/JNEUROSCI.2133-17.2017 +

      +

      + Neuroscience Letters Volume 659, 17 October 2017, Pages 69-74 +

      +

      + Cerebellar pathology in childhood-onset vs. adult-onset essential tremor
      + Elan D. Louis, Sheng-Han Kuo, William J. Tate, Geoffrey C. Kelly, Phyllis L. Faust
      + - https://doi.org/10.1016/j.neulet.2017.08.072 +

      +

      + Experimental Brain Research October 2017, Volume 235, Issue 10, Pages 2971-2981 +

      +

      + Atrophic degeneration of cerebellum impairs both the reactive and the proactive control of movement in the stop signal paradigm
      + Giusy Olivito, Emiliano Brunamonti, Silvia Clausi, Pierpaolo Pani, Francesca R. Chiricozzi, Margherita Giamundo, Marco Molinari, Maria Leggio, Stefano Ferraina
      + - https://link.springer.com/article/10.1007/s00221-017-5027-z +

      +

      + Neuropharmacology Volume 125, October 2017, Pages 166-180 +

      +

      + Cerebellar perineuronal nets in cocaine-induced pavlovian memory: Site matters
      + Maria Carbo-Gas, Josep Moreno-Rius, Julian Guarque-Chabrera, Dolores Vazquez-Sanroman, Isis Gil-Miravet, Daniela Carulli, Freek Hoebeek, Chris De Zeeuw, Carla Sanchis-Segura, Marta Miquel
      + - https://doi.org/10.1016/j.neuropharm.2017.07.009 +

      +

      2017 September

      +

      + Front. Cell. Neurosci., 20 September 2017 +

      +

      + Motor and Cerebellar Architectural Abnormalities during the Early Progression of Ataxia in a Mouse Model of SCA1 and How Early Prevention Leads to a Better Outcome Later in Life
      + Mohamed F. Ibrahim, Emmet M. Power, Kay Potapov, Ruth M. Empson
      + - https://doi.org/10.3389/fncel.2017.00292 +

      +

      + Front. Neural Circuits, 20 September 2017 +

      +

      + Cerebellar Purkinje Cells Generate Highly Correlated Spontaneous Slow-Rate Fluctuations
      + Ying Cao, Yu Liu, Dieter Jaeger, Detlef Heck
      + - https://doi.org/10.3389/fncir.2017.00067 +

      +

      + Journal of Neurophysiology, Volume 118, Issue 3, September 2017, Pages 1888-1902 +

      +

      + Climbing fibers predict movement kinematics and performance errors
      + Martha L. Streng, Laurentiu S. Popa and Timothy J. Ebner
      + - https://doi.org/10.1152/jn.00266.2017 +

      +

      + Journal of Neurophysiology, Volume 118, Issue 3, September 2017, Pages 1622-1636 +

      +

      + The cerebellum does more than sensory prediction error-based learning in sensorimotor adaptation tasks
      + Peter A. Butcher, Richard B. Ivry, Sheng-Han Kuo, David Rydz, John W. Krakauer and Jordan A. Taylor
      + - https://doi.org/10.1152/jn.00451.2017 +

      +

      + Nature Neuroscience Volume 20, Issue 9, 26 September 2017, Pages 1319-1321 +

      +

      + Unexpected help to repair the cerebellum
      + Baptiste N Jaeger, Sebastian Jessberger
      + - https://www.nature.com/articles/nn.4640 +

      +

      + PLOS, PUBLISHED: September 15, 2017 to September 21, 2017 +

      +

      + Spatiotemporal network coding of physiological mossy fiber inputs by the cerebellar granular layer
      + Shyam Kumar Sudhakar, Sungho Hong, Ivan Raikov, Rodrigo Publio, Claus Lang, Thomas Close, Daqing Guo, Mario Negrello, Erik De Schutter
      + - https://doi.org/10.1371/journal.pcbi.1005754 +

      +

      + Journal of Neuroscience 20 September 2017, Volume 37, Issue 38, 9249-9258 +

      +

      + Impaired Feedforward Control and Enhanced Feedback Control of Speech in Patients with Cerebellar Degeneration
      + Benjamin Parrell, Zarinah Agnew, Srikantan Nagarajan, John Houde, Richard B. Ivry
      + - https://doi.org/10.1523/JNEUROSCI.3363-16.2017 +

      +

      + Journal of Neuroscience 20 September 2017, Volume 37, Issue 38, 9101-9115 +

      +

      + Synergistic Toxicity of Polyglutamine-Expanded TATA-Binding Protein in Glia and Neuronal Cells: Therapeutic Implications for Spinocerebellar Ataxia 17
      + Yang Yang, Su Yang, Jifeng Guo, Yiting Cui, Beisha Tang, Xiao-Jiang Li, Shihua Li
      + - https://doi.org/10.1523/JNEUROSCI.0111-17.2017 +

      +

      + Journal of Neuroscience 13 September 2017, Volume 37, Issue 37, 8876-8894 +

      +

      + STIM1 Regulates Somatic Ca2+ Signals and Intrinsic Firing Properties of Cerebellar Purkinje Neurons
      + Changhyeon Ryu, Dong Cheol Jang, Dayoon Jung, Yong Gyu Kim, Hyun Geun Shim, Hyun-Hee Ryu, Yong-Seok Lee, David J. Linden, Paul F. Worley, Sang Jeong Kim
      + - https://doi.org/10.1523/JNEUROSCI.3973-16.2017 +

      +

      + Neuroscience Letters Volume 657, 14 September 2017, Pages 22-26 +

      +

      + Expression of the GluA2 subunit of glutamate receptors is required for the normal dendritic differentiation of cerebellar Purkinje cells
      + Masahiko Tanaka, Tomomi Senda, Naohide Hirashima
      + - https://doi.org/10.1016/j.neulet.2017.07.054 +

      +

      + Neuroscience Letters Volume 657, 14 September 2017, Pages 159-165 +

      +

      + Valproic acid exposure decreases the mRNA stability of Bcl-2 via up-regulating miR-34a in the cerebellum of rat
      + Xufang Dai, Yunhou Yin, Liyan Qin
      + - https://doi.org/10.1016/j.neulet.2017.08.018 +

      +

      + PLOS ONE, September 02, 2017 to September 08, 2017, Published: September 8, 2017 +

      +

      + Alkylation induced cerebellar degeneration dependent on Aag and Parp1 does not occur via previously established cell death mechanisms
      + Carrie M. Margulies, Isaac Alexander Chaim, Aprotim Mazumder, June Criscione, Leona D. Samson
      + - https://doi.org/10.1371/journal.pone.0184619 +

      +

      + The journal of Physiology, Volume 595, Issue 17, 1 September 2017, Pages 5945-5963 +

      +

      + In vivo analysis of synaptic activity in cerebellar nuclei neurons unravels the efficacy of excitatory inputs
      + Yasmin Yarden-Rabinowitz, Yosef Yarom
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP274115/abstract +

      +

      + Neuroscience Volume 360, 30 September 2017, Pages 230-239 +

      +

      + The Syk kinases orchestrate cerebellar granule cell tangential migration
      + Aurelien Benon, Choua Ya, Laurent Martin, Chantal Watrin, Naura Chounlamountri, Iness Jaaoini, Je rome Honnorat, Ve ronique Pellier-Monnin, Nelly Noraz
      + - https://doi.org/10.1016/j.neuroscience.2017.07.057 +

      +

      + Cerebral Cortex, Volume 27, Issue 9, 1 September 2017, Pages 4537-4548 +

      +

      + Human Cerebellar Sub-millimeter Diffusion Imaging Reveals the Motor and Non-motor Topography of the Dentate Nucleus
      + C.J. Steele A. Anwander P.-L. Bazin R. Trampel A. Schaefer R. Turner N. Ramnani A. Villringer
      + - https://doi.org/10.1093/cercor/bhw258 +

      +

      + Neuro Report, September 6th, 2017 - Volume 28 - Issue 13 +

      +

      + Longitudinal analysis of motor symptoms and histopathology in woozy mice, a model of cerebellar ataxia
      + Hayashi Takemitsua, Onozato Tomoyab, Wanajo Isaoa, Hayashi Morimichib, Takeda Hirooa, Fujimori Yoshikazua
      + - http://journals.lww.com/neuroreport/Fulltext/2017/10010/Longitudinal_analysis_of_motor_symptoms_and.2.aspx +

      +

      + Neuroscience Volume 358, 1 September 2017, Pages 181-189 +

      +

      + Contribution of the suPageslementary motor area and the cerebellum to the anticipatory postural adjustments and execution phases of human gait initiation
      + Aliénor Richard, Angèle Van Hamme, Xavier Drevelle, Jean-Louis Golmard, Sabine Meunier, Marie-Laure Welter
      + - https://doi.org/10.1016/j.neuroscience.2017.06.047 +

      +

      + Brain Research, Volume 1670, 1 September 2017, Pages 32-43 +

      +

      + Neuregulin-1 protects mouse cerebellum against oxidative stress and neuroinflammation
      + Junping Xu, Chengliang Hu, Shuangxi Chen, Huifan Shen, Qiong Jiang, Peizhi Huang, Weijiang Zhao
      + - https://doi.org/10.1016/j.brainres.2017.06.012 +

      +

      + European Journal of Neuroscience, Volume 46, Issue 5, September 2017, Pages 2108-2120 +

      +

      + Chronic pharmacological blockade of the Na+/Ca2+ exchanger modulates the growth and development of the Purkinje cell dendritic arbor in mouse cerebellar slice cultures
      + Pradeep Sherkhane, Josef P. Kapfhammer
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13649/abstract +

      +

      2017 August

      +

      + The Journal of Physiology, Volume 595, Issue 15, 1 August 2017, Pages 5301–5326 +

      +

      + Mechanisms underlying vestibulo-cerebellar motor learning in mice depend on movement direction
      + Kai Voges, Bin Wu, Laura Post, Martijn Schonewille and Chris I. De Zeeuw
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP274346/abstract +

      +

      + The Journal of Physiology, Volume 595, Issue 15, 1 August 2017, Pages 5245–5264 +

      +

      + Facilitation of mossy fibre-driven spiking in the cerebellar nuclei by the synchrony of inhibition
      + Yeechan Wu and Indira M. Raman
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP274321/abstract +

      +

      + Nature Neuroscience Volume 20, Issue 8, 14 August 2017, Pages 1361-1370 +

      +

      + Cerebellar granule cell replenishment postinjury by adaptive reprogramming of Nestin progenitors
      + Alexandre Wojcinski, Andrew K Lawton, N Sumru Bayin, Zhimin Lao, Daniel N Stephen, Alexandra L Joyner
      + - https://www.nature.com/articles/nn.4621 +

      +

      + Front. Mol. Neurosci., 31 August 2017 +

      +

      + Distinct Activities of Tfap2A and Tfap2B in the Specification of GABAergic Interneurons in the Developing Cerebellum
      + Norliyana Zainolabidin, Sandhya Kamath, Ayesha Thanawalla, and Albert Chen
      + - https://doi.org/10.3389/fnmol.2017.00281 +

      +

      + Front. Neurol., 29 August 2017 +

      +

      + Impaired Cerebellum to Primary Motor Cortex Associative Plasticity in Parkinson's Disease and Spinocerebellar Ataxia Type 3
      + Ming-Kuei Lu, Jui-Cheng Chen, Chun-Ming Chen, Jeng-Ren Duann, Ulf Ziemann, Chon-Haw Tsai
      + - https://doi.org/10.3389/fneur.2017.00445 +

      +

      + Front. Cell. Neurosci., 29 August 2017 +

      +

      + Cerebellar Atrophy and Changes in Cytokines Associated with the CACNA1A R583Q Mutation in a Russian Familial Hemiplegic Migraine Type 1 Family
      + Svetlana Khaiboullina, Elena Mendelevich, Leyla Shigapova, Elena Shagimardanova, Guzel Gazizova, Alexey Nikitin, Ekaterina Martynova, Yuriy Davidyuk, Enver Bogdanov, Oleg Gusev, Arn van den Maagdenberg, Rashid Giniatullin, Albert Rizvanov
      + - https://doi.org/10.3389/fncel.2017.00263 +

      +

      + Front. Cell. Neurosci., 22 August 2017 +

      +

      + Mechanisms of Spontaneous Climbing Fiber Discharge-Evoked Pauses and Output Modulation of Cerebellar Purkinje Cell in Mice
      + De-Lai Qiu, Xian-Hua Jin, Hong-Wei Wang, Xin-Yuan Zhang, Chun-Ping Chu, Yuan-Zhe Jin, Song-Biao Cui
      + - https://doi.org/10.3389/fncel.2017.00247 +

      +

      + Neuron Volume 95, Issue 5, 30 August 2017, Pages 1103-1111.e4 +

      +

      + Inferior Olivary TMEM16B Mediates Cerebellar Motor Learning
      + Yang Zhang, Zhushan Zhang, Shaohua Xiao, Jason Tien, Son Le, Trieu Le, Lily Y. Jan, Huanghe Yang
      + - https://doi.org/10.1016/j.neuron.2017.08.010 +

      +

      + Journal of Neurophysiology, Volume 118, Issue 2, August 2017, Pages 655-665 +

      +

      + No consistent effect of cerebellar transcranial direct current stimulation on visuomotor adaptation
      + Roya Jalali, R. Chris Miall, Joseph M. Galea
      + - https://doi.org/10.1152/jn.00896.2016 +

      +

      + Journal of Neurophysiology, Volume 118, Issue 2, August 2017, Pages 732-748 +

      +

      + Cerebellar patients do not benefit from cerebellar or M1 transcranial direct current stimulation during force-field reaching adaptation
      + Thomas Hulst, Liane John, Michael Kuper, Jos N. van der Geest, Sophia L. Goricke, Opher Donchin, Dagmar Timmann
      + - https://doi.org/10.1152/jn.00808.2016 +

      +

      + Journal of Neurophysiology, Volume 118, Issue 2, August 2017, Pages 778-781 +

      +

      + Motor recovery beginning 23 years after ischemic stroke
      + Peter Soros, Robert Teasell, Daniel F. Hanley, J. David Spence
      + - https://doi.org/10.1152/jn.00868.2016 +

      +

      + Journal of Neurophysiology, Volume 118, Issue 2, August 2017, Pages 986-1001 +

      +

      + Responses of Purkinje cells in the oculomotor vermis of monkeys during smooth pursuit eye movements and saccades: comparison with floccular complex
      + Ramanujan T. Raghavan, Stephen G. Lisberger
      + - https://doi.org/10.1152/jn.00209.2017 +

      +

      + Journal of Neurophysiology Volume 118, Issue 2, August 2017, Pages 693-702 +

      +

      + The cerebellum contributes to proprioception during motion
      + Heidi M. Weeks, Amanda S. Therrien, Amy J. Bastian
      + - https://doi.org/10.1152/jn.00417.2016 +

      +

      + Current Biology, Volume 27, Issue 16, 21 August 2017, Pages 2442-2451.e3 +

      +

      + Role of the Cerebellum in Adaptation to Delayed Action Effects
      + Liyu Cao, Domenica Veniero, Gregor Thut, Joachim Gross
      + - https://doi.org/10.1016/j.cub.2017.06.074 +

      +

      + The journal of Physiology, Volume 595, Issue 16, 15 August 2017, Pages 5525-5544 +

      +

      + Functional expression of calcium-permeable canonical transient receptor potential 4-containing channels promotes migration of medulloblastoma cells
      + Wei-Chun Wei, Wan-Chen Huang, Yu-Ping Lin, Esther B. E. Becker, Olaf Ansorge, Veit Flockerzi, Daniele Conti, Giovanna Cenacchi and Maike D. Glitsch
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP274659/abstract +

      +

      + PLOS ONE, August 05, 2017 to August 11, 2017, Published: August 7, 2017 +

      +

      + Comprehensive investigation of CASK mutations and other genetic etiologies in 41 patients with intellectual disability and microcephaly with pontine and cerebellar hypoplasia (MICPCH)
      + Shin Hayashi, Daniela Tiaki Uehara, Kousuke Tanimoto, Seiji Mizuno, Yasutsugu Chinen, Shinobu Fukumura, Jun-ichi Takanashi, Hitoshi Osaka, Nobuhiko Okamoto, Johji Inazawa
      + - https://doi.org/10.1371/journal.pone.0181791 +

      +

      + PLOS ONE, August 05, 2017 to August 11, 2017, Published: August 8, 2017 +

      +

      + Microstructural analyses of the posterior cerebellar lobules in relapsing-onset multiple sclerosis and their implication in cognitive impairment
      + Amandine Moroso, Aurélie Ruet, Delphine Lamargue-Hamel, Fanny Munsch, Mathilde Deloire, Pierrick Coupé, Julie Charré-Morin, Aurore Saubusse, Jean-Christophe Ouallet, Vincent Planche, Thomas Tourdias, Vincent Dousset, Bruno Brochet
      + - https://doi.org/10.1371/journal.pone.0182479 +

      +

      + Front. Neurol., 02 August 2017 +

      +

      + Pure Endovascular Management of an Arteriovenous Malformation and an Aneurysm Both SuPageslied by Anterio-Inferior Cerebellar Artery: A Case Report and a Review of Literature
      + Hassan khayat, Fawaz Alshareef, Abdulrahman Alshamy, Abdulrahman Algain, Essam Alhejaili, Omar Alnabihi, Saeed Alzahrani, Ruediger Stendel
      + - https://doi.org/10.3389/fneur.2017.00382 +

      +

      + Front. Neurol., 04 August 2017 +

      +

      + A GABAergic Dysfunction in the Olivary-Cerebellar-Brainstem Network May Cause Eye Oscillations and Body Tremor. II. Model Simulations of Saccadic Eye Oscillations
      + Lance Optican, Elena Pretegiani
      + - https://doi.org/10.3389/fneur.2017.00372 +

      +

      + Front. Neurosci., 03 August 2017 +

      +

      + Impairment of Long-Term Plasticity of Cerebellar Purkinje Cells Eliminates the Effect of Anodal Direct Current Stimulation on Vestibulo-Ocular Reflex Habituation
      + Suman Das, Marcella Spoor, Tafadzwa Sibindi, Peter Holland, Martijn Schonewille, Chris De Zeeuw, Maarten Frens, Opher Donchin
      + - https://doi.org/10.3389/fnins.2017.00444 +

      +

      + NeuroImage Volume 156, 1 August 2017, Pages 190-198 +

      +

      + Network-targeted cerebellar transcranial magnetic stimulation improves attentional control
      + Michael Esterman, Michelle Thai, Hidefusa Okabe, Joseph DeGutis, Elyana Saad, Simon E. Laganiere, Mark A. Halko
      + - https://doi.org/10.1016/j.neuroimage.2017.05.011 +

      +

      + The journal of Physiology, Volume 595, Issue 15, 1 August 2017, Pages 5245-5264 +

      +

      + Facilitation of mossy fibre-driven spiking in the cerebellar nuclei by the synchrony of inhibition
      + Yeechan Wu, Indira M. Raman
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP274321/abstract +

      +

      + The journal of Physiology, Volume 595, Issue 15, 1 August 2017, Pages 5301-5326 +

      +

      + Mechanisms underlying vestibulo-cerebellar motor learning in mice depend on movement direction
      + Kai Voges, Bin Wu, Laura Post, Martijn Schonewille, Chris I. De Zeeuw
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP274346/abstract +

      +

      + The journal of Physiology, Volume 595, Issue 15, 1 August 2017, Pages 5341-5357 +

      +

      + Heterogeneity of Purkinje cell simple spike-complex spike interactions: zebrin- and non-zebrin-related variations
      + Tianyu Tang, Jianqiang Xiao, Colleen Y. Suh, Amelia Burroughs, Nadia L. Cerminara, Linjia Jia, Sarah P. Marshall, Andrew K. Wise, Richard APagess, Izumi Sugihara, Eric J. Lang
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP274252/abstract +

      +

      + NeuroReport: August 16th, 2017 - Volume 28 - Issue 12 - p 705-711 +

      +

      + Radiation-induced cerebellar - cerebral functional connectivity alterations in nasopharyngeal carcinoma patients
      + Ma Qiongmina, Zeng Ling-Lia, Qin Jiana, Luo Zhiguoa, Su Jianpoa, Wu Donglinb, Qiu Shijunb, Hu Dewena
      + - https://journals.lww.com/neuroreport/Abstract/2017/09010/Radiation_induced_cerebellar_cerebral_functional.1.aspx +

      +

      + The Cerebellum, August 2017, Volume 16, Issue 4, Pages 764-771 +

      +

      + After Effects of Cerebellar Continuous Theta Burst Stimulation on Reflexive Saccades and Smooth Pursuit in Humans
      + Silvia Colnaghi, P. Colagiorgio, S. Ramat, E. D’Angelo, G. Koch, M. Versino
      + - https://link.springer.com/article/10.1007/s12311-017-0852-y +

      +

      + The Cerebellum, August 2017, Volume 16, Issue 4, Pages 786-791 +

      +

      + Cerebellar Pathology in Familial vs. Sporadic Essential Tremor
      + Elan D. Louis, Sheng-Han Kuo, Jie Wang, William J. Tate, Ming-Kai Pan, Geoffrey C. Kelly, Jesus Gutierrez, Etty P. Cortes, Jean-Paul G. Vonsattel, Phyllis L. Faust
      + - https://link.springer.com/article/10.1007/s12311-017-0853-x +

      +

      + The Cerebellum, August 2017, Volume 16, Issue 4, Pages 792-796 +

      +

      + Spinal Cord Damage in Spinocerebellar Ataxia Type 1
      + Carlos Roberto Martins, Alberto Rolim Muro Martinez, Thiago Junqueira Ribeiro de Rezende, Lucas Melo Teixeira Branco, José Luiz Pedroso, Orlando G. P. Barsottini, Iscia Lopes-Cendes, Marcondes C. França
      + - https://link.springer.com/article/10.1007/s12311-017-0854-9 +

      +

      + The Cerebellum August 2017, Volume 16, Issue 4, Pages 797-801 +

      +

      + A Comparative Optical Coherence Tomography Study of Spinocerebellar Ataxia Types 3 and 10
      + Fernando Spina Tensini, Mario T. Sato, Naoye Shiokawa, Tetsuo Ashizawa, Hélio A. G. Teive
      + - https://link.springer.com/article/10.1007/s12311-017-0856-7 +

      +

      + The Cerebellum, August 2017, Volume 16, Issue 4, Pages 802-811 +

      +

      + Gap Junction Modulation of Low-Frequency Oscillations in the Cerebellar Granule Cell Layer
      + Jennifer Claire Robinson, C. Andrew Chapman, Richard Courtemanche
      + - https://link.springer.com/article/10.1007/s12311-017-0858-5 +

      +

      + The Cerebellum, August 2017, Volume 16, Issue 4, Pages 827-839 +

      +

      + Computational Theory Underlying Acute Vestibulo-ocular Reflex Motor Learning with Cerebellar Long-Term Depression and Long-Term Potentiation
      + Keiichiro Inagaki, Yutaka Hirata
      + - https://link.springer.com/article/10.1007/s12311-017-0857-6 +

      +

      + The Cerebellum, August 2017, Volume 16, Issue 4, Pages 852-858 +

      +

      + NESSCA Validation and Responsiveness of Several Rating Scales in Spinocerebellar Ataxia Type 2
      + Thais L. Monte, Estela R. Reckziegel, Marina C. Augustin, Amanda S. P. Silva, Lucas D. Locks-Coelho, Orlando Barsottini, José L. Pedroso, Fernando R. Vargas, Maria-Luiza Saraiva-Pereira, Vanessa Bielefeldt Leotti, Laura Bannach Jardim
      + - https://link.springer.com/article/10.1007/s12311-017-0855-8 +

      +

      + The Cerebellum, August 2017, Volume 16, Issue 4, Pages 859-867 +

      +

      + What Do We Know About the Influence of the Cerebellum on Walking Ability? Promising Findings from Transcranial Alternating Current Stimulation
      + Antonino Naro, Demetrio Milardi, Alberto Cacciola, Margherita Russo, Francesca Sciarrone, Gianluca La Rosa, Alessia Bramanti, Placido Bramanti, Rocco Salvatore Calabrò
      + - https://link.springer.com/article/10.1007/s12311-017-0859-4 +

      +

      + The Cerebellum, August 2017, Volume 16, Issue 4, Pages 868-871 +

      +

      + Low-Titre GAD Antibody-Associated Late-Onset Cerebellar Ataxia with a Significant Clinical Response to Intravenous Immunoglobulin Treatment
      + Timotej Petrijan, Marija Menih
      + - https://link.springer.com/article/10.1007/s12311-017-0851-z +

      +

      + The Cerebellum, August 2017, Volume 16, Issue 4, Pages 872-875 +

      +

      + Cerebellar Transcranial Direct Current Stimulation (ctDCS) Impairs Balance Control in Healthy Individuals
      + Águida Foerster, Lorena Melo, Marina Mello, Rebeca Castro, Lívia Shirahige, Sérgio Rocha, Kátia Monte-Silva
      + - https://link.springer.com/article/10.1007/s12311-017-0863-8 +

      +

      2017 July

      +

      + European Journal of Neuroscience, Volume 46, Issue 2, July 2017, Pages 1790–1804 +

      +

      + Cx36, Cx43 and Cx45 in mouse and rat cerebellar cortex: species-specific expression, compensation in Cx36 null mice and co-localization in neurons vs. glia
      + J. I. Nagy and J. E. Rash
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13614/abstract +

      +

      + Front. Neurol., 25 July 2017 +

      +

      + Malignant Cerebellar Edema Subsequent to Accidental Prescription Opioid Intoxication in Children
      + Daniel Duran, Robert Messina, Lauren Beslow, Julio Montejo, Jason Karimy, Charuta Furey, Alison Sheridan, Gordon Sze, Yanki Yarman, Michael Diluna, Kristopher Kahle
      + - https://doi.org/10.3389/fneur.2017.00362 +

      +

      + Front. Cell. Neurosci., 28 July 2017 +

      +

      + Erythropoietin Protects Against Lipopolysaccharide-Induced Microgliosis and Abnormal Granule Cell Development in the Ovine Fetal Cerebellum
      + Annie Mcdougall, Nadia Hale, Sandra Rees, Richard Harding, Robert De Matteo, Stuart Hooper, Mary Tolcos
      + - https://doi.org/10.3389/fncel.2017.00224 +

      +

      + Journal of Neurophysiology, Volume 118, Issue 1, July 2017, Pages 267-279 +

      +

      + Recreational concentrations of alcohol enhance synaptic inhibition of cerebellar unipolar brush cells via pre- and postsynaptic mechanisms
      + Ben D. Richardson, David J. Rossi
      + - https://doi.org/10.1152/jn.00963.2016 +

      +

      + Journal of Neurophysiology, Volume 118, Issue 1, July 2017, Pages 471-485 +

      +

      + Temporal integration and 1/f power scaling in a circuit model of cerebellar interneurons
      + Reinoud Maex, Boris Gutkin
      + - https://doi.org/10.1152/jn.00789.2016 +

      +

      + Journal of Neurophysiology, Volume 118, Issue 1, July 2017, Pages 234-242 +

      +

      + Musculoskeletal geometry accounts for aPagesarent extrinsic representation of paw position in dorsal spinocerebellar tract
      + Raeed H. Chowdhury, Matthew C. Tresch, Lee E. Miller
      + - https://doi.org/10.1152/jn.00695.2016 +

      +

      + Journal of Neurophysiology Volume 118, Issue 1, July 2017, Pages 254-266 +

      +

      + Parallel processing of internal and external feedback in the spinocerebellar system of primates
      + Oren Cohen, Ran Harel, Tim D. Aumann, Zvi Israel, Yifat Prut
      + - https://doi.org/10.1152/jn.00825.2016 +

      +

      + Front. Neuroanat., 21 July 2017 +

      +

      + The Temporal Contribution of the Gbx2 Lineage to Cerebellar Neurons
      + Nellwyn Hagan, Juliana Guarente, Debra Ellisor, Mark Zervas
      + - https://doi.org/10.3389/fnana.2017.00050 +

      +

      + European Journal of Neuroscience, Volume 46, Issue 2, July 2017, Pages 1790-1804 +

      +

      + Cx36, Cx43 and Cx45 in mouse and rat cerebellar cortex: species-specific expression, compensation in Cx36 null mice and co-localization in neurons vs. glia
      + J. I. Nagy J. E. Rash
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13614/abstract +

      +

      + PLOS ONE, July 08, 2017 to July 14, 2017, Published: July 10, 2017 +

      +

      + Neuronal correlates of cognitive function in patients with childhood cerebellar tumor lesions
      + Johanna L. Reichert, Monika Chocholous, Ulrike Leiss, Thomas Pletschko, Gregor Kasprian, Julia Furtner, Kathrin Kollndorfer, Jacqueline Krajnik, Irene Slavc, Daniela Prayer, Thomas Czech, Veronika Schöpf, Christian Dorfer
      + - https://doi.org/10.1371/journal.pone.0180200 +

      +

      + PLOS ONE, July 08, 2017 to July 14, 2017, Published: July 10, 2017 +

      +

      + Bilateral effects of unilateral cerebellar lesions as detected by voxel based morphometry and diffusion imaging
      + Giusy Olivito, Michael Dayan, Valentina Battistoni, Silvia Clausi, Mara Cercignani, Marco Molinari, Maria Leggio, Marco Bozzali
      + - https://doi.org/10.1371/journal.pone.0180439 +

      +

      + PLOS ONE, July 01, 2017 to July 07, 2017, Published: July 7, 2017 +

      +

      + Can cerebellar and brainstem a Pagesarent diffusion coefficient (ADC) values predict neuromotor outcome in term neonates with hypoxic-ischemic encephalopathy (HIE) treated with hypothermia?
      + Gemma Arca-Díaz, Thomas J. Re, Marie Drottar, Carmen Rosa Fortuno, Katyucia De Macedo-Rodrigues, Kiho Im, Josep Figueras-Aloy, Patricia Ellen Grant
      + - https://doi.org/10.1371/journal.pone.0178510 +

      +

      + PLOS ONE, July 01, 2017 to July 07, 2017, Published: July 7, 2017 +

      +

      + Cerebellar anodal tDCS increases implicit learning when strategic re-aiming is suPagesressed in sensorimotor adaptation
      + Li-Ann Leow , Welber Marinovic, Stephan Riek, Timothy J. Carroll
      + - https://doi.org/10.1371/journal.pone.0179977 +

      +

      + Neuron, Volume 95, Issue 1, 5 July 2017, Pages 51-62.e4 +

      +

      + Selective Optogenetic Control of Purkinje Cells in Monkey Cerebellum
      + Yasmine El-Shamayleh, Yoshiko Kojima, Robijanto Soetedjo, Gregory D. Horwitz
      + - https://doi.org/10.1016/j.neuron.2017.06.002 +

      +

      2017 June

      +

      + PLOS ONE +

      +

      + Cerebellar ataxia and intrathecal baclofen therapy: Focus on patients´ experiences
      + Shala Ghaderi Berntsson, Anne-Marie Landtblom, Gullvi Flensner
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0180054 +

      +

      + Using c-kit to genetically target cerebellar molecular layer interneurons in adult mice
      + Samantha B. Amat, Matthew J. M. Rowan, Michael A. Gaffield, Audrey Bonnan, Chikako Kikuchi, Hiroki Taniguchi, Jason M. Christie
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0179347 +

      +

      + Journal of Neuroscience, Vol. 37, Issue 26, 28 Jun 2017 +

      +

      + Right Lateral Cerebellum Represents Linguistic Predictability
      + Elise Lesage, Peter C. Hansen, and R. Chris Miall
      + - http://www.jneurosci.org/content/37/26/6231 +

      +

      + Nature Neuroscience, July 2017, Volume 20, Number 7, pp 943 - 950 +

      +

      + A cerebellum-like circuit in the auditory system cancels responses to self-generated sounds
      + Shobhit Singla, Conor Dempsey, Richard Warren, Armen G Enikolopov and Nathaniel B Sawtell
      + - https://www.nature.com/articles/nn.4567 +

      +

      + European Journal of Neuroscience, Volume 45, Issue 12, June 2017, Pages 1538–1552 +

      +

      + The control of eye movements by the cerebellar nuclei: polysynaptic projections from the fastigial, interpositus posterior and dentate nuclei to lateral rectus motoneurons in primates
      + Vincent Prevosto, Werner Graf and Gabriella Ugolini
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13546/abstract +

      +

      + European Journal of Neuroscience, Volume 45, Issue 12, June 2017, Pages 1623–1633 +

      +

      + Probabilistic vs. deterministic fiber tracking and the influence of different seed regions to delineate cerebellar-thalamic fibers in deep brain stimulation
      + Juergen R. Schlaier, Anton L. Beer, Rupert Faltermeier, Claudia Fellner, Kathrin Steib, Max Lange, Mark W. Greenlee, Alexander T. Brawanski and Judith M. Anthofer
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13575/abstract +

      +

      + PLOS COMPUTATIONAL BIOLOGY +

      +

      + Robust transmission of rate coding in the inhibitory Purkinje cell to cerebellar nuclei pathway in awake mice
      + Samira Abbasi, Amber E. Hudson, Selva K. Maran, Ying Cao, Ataollah Abbasi, Detlef H. Heck, Dieter Jaeger
      + - http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1005578 +

      +

      + European Journal of Neuroscience, Online Version of Record published before inclusion in an issue +

      +

      + Eye movements, sensorimotor adaptation and cerebellar-dependent learning in autism: toward potential biomarkers and subphenotypes
      + Edward G. Freedman and John J. Foxe
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13625/abstract +

      +

      + Current Biology, Volume 27, Issue 11, 5 June 2017, Pages R415-R418 +

      +

      + Cerebellar Granule Cells: Dense, Rich and Evolving Representations
      + Aleksandra Badura, Chris I. De Zeeuw
      + - https://www.sciencedirect.com/science/article/pii/S0960982217304189 +

      +

      + Journal of Neuroscience, Vol. 37, Issue 23, 7 Jun 2017 +

      +

      + Long-Term Depression of Intrinsic Excitability Accompanied by Synaptic Depression in Cerebellar Purkinje Cells
      + Hyun Geun Shim, Dong Cheol Jang, Jaegeon Lee, Geehoon Chung, Sukchan Lee, Yong Gyu Kim, Da Eun Jeon and Sang Jeong Kim
      + - http://www.jneurosci.org/content/37/23/5659 +

      +

      + Proceedings of the National Academy of Sciences, 6 June 2017; Vol. 114, No. 23 +

      +

      + Learned response sequences in cerebellar Purkinje cells
      + Dan-Anders Jirenhed, Anders Rasmussen, Fredrik Johansson and Germund Hesslow
      + - http://www.pnas.org/content/114/23/6127 +

      +

      + Neuroscience, Volume 354, 23 June 2017, Pages 30-42 +

      +

      + Wls expression in the rhombic lip orchestrates the embryonic development of the mouse cerebellum
      + Joanna Yeung, Daniel Goldowitz
      + - https://www.sciencedirect.com/science/article/abs/pii/S0306452217302695 +

      +

      + The Cerebellum, June 2017, Volume 16, Issue 3, pp 623-628 +

      +

      + Differential Pattern of Cerebellar Atrophy in Tremor-Predominant and Akinetic/Rigidity-Predominant Parkinson’s Disease
      + Camila Callegari Piccinin, Lidiane Soares Campos, Rachel Paes Guimarães, Luiza Gonzaga Piovesana, Maria Cristina Arci dos Santos, Paula Christina Azevedo, Brunno Machado Campos, Thiago Junqueira Ribeiro de Rezende, Augusto Amato-Filho, Fernando Cendes and Anelyssa D’Abreu
      + - https://link.springer.com/article/10.1007/s12311-016-0834-5/fulltext.html +

      +

      + The Cerebellum, June 2017, Volume 16, Issue 3, pp 629-637 +

      +

      + Progression of Gait Ataxia in Patients with Degenerative Cerebellar Disorders: a 4-Year Follow-Up Study
      + Mariano Serrao, Giorgia Chini, Carlo Casali, Carmela Conte, Martina Rinaldi, Alberto Ranavolo, Christian Marcotulli, Luca Leonardi, Gaia Fragiotta, Fabiano Bini, Gianluca Coppola and Francesco Pierelli
      + - https://link.springer.com/article/10.1007/s12311-016-0837-2/fulltext.html +

      +

      + The Cerebellum, June 2017, Volume 16, Issue 3, pp 638-647 +

      +

      + No Medium-Term Spinocerebellar Input Plasticity in Deep Cerebellar Nuclear Neurons In Vivo?
      + Hannes Mogensen, Fredrik Bengtsson and Henrik Jörntell
      + - https://link.springer.com/article/10.1007/s12311-016-0839-0/fulltext.html +

      +

      + The Cerebellum, June 2017, Volume 16, Issue 3, pp 648-655 +

      +

      + Cerebellar Pathways in Mouse Model of Purkinje Cell Degeneration Detected by High-Angular Resolution Diffusion Imaging Tractography
      + Yuri Kanamaru, Jianxue Li, Natalie Stewart, Richard L. Sidman and Emi Takahashi
      + - https://link.springer.com/article/10.1007/s12311-016-0842-5/fulltext.html +

      +

      + The Cerebellum, June 2017, Volume 16, Issue 3, pp 673-682 +

      +

      + Cerebellar Neural Circuits Involving Executive Control Network Predict Response to Group Cognitive Behavior Therapy in Social Anxiety Disorder
      + MinlanYuan, Yajing Meng, Yan Zhang, Xiaojing Nie, Zhengjia Ren, Hongru Zhu, Yuchen Li, Su Lui, Qiyong Gong, Changjian Qiu and Wei Zhang
      + - https://link.springer.com/article/10.1007/s12311-017-0845-x/fulltext.html +

      +

      + The Cerebellum, June 2017, Volume 16, Issue 3, pp 691-694 +

      +

      + Cerebellum from J. E. Purkyně up to Contemporary Research
      + František Vožeh
      + - https://link.springer.com/article/10.1007/s12311-016-0835-4/fulltext.html +

      +

      + The Cerebellum, June 2017, Volume 16, Issue 3, pp 695-741 +

      +

      + Targeting the Cerebellum by Noninvasive Neurostimulation: a Review
      + Kim van Dun, Florian Bodranghien, Mario Manto and Peter Mariën
      + - https://link.springer.com/article/10.1007/s12311-016-0840-7/fulltext.html +

      +

      + The Cerebellum, June 2017, Volume 16, Issue 3, pp 742-745 +

      +

      + Fast Progression of Cerebellar Atrophy in PLA2G6-Associated Infantile Neuronal Axonal Dystrophy
      + Mario Mascalchi, Francesco Mari, Beatrice Berti, Emanuele Bartolini, Matteo Lenge, Andrea Bianchi, Laura Antonucci, Filippo M. Santorelli, Barbara Garavaglia and Renzo Guerrini
      + - https://link.springer.com/article/10.1007/s12311-017-0843-z/fulltext.html +

      +

      + The Cerebellum, June 2017, Volume 16, Issue 3, pp 746-750 +

      +

      + Selective Transgenic Expression of Mutant Ubiquitin in Purkinje Cell Stripes in the Cerebellum
      + Bert M. Verheijen, Romina J. G. Gentier, Denise J. H. P. Hermes, Fred W. van Leeuwen and David A. Hopkins
      + - https://link.springer.com/article/10.1007/s12311-016-0838-1/fulltext.html +

      +

      + The Cerebellum, June 2017, Volume 16, Issue 3, pp 751-752 +

      +

      + Commentary on the Paper “Progression of Gait Ataxia in Patients with Degenerative Cerebellar Disorders: a 4-Year Follow-Up Study
      + Mariano Serrao
      + - https://link.springer.com/article/10.1007/s12311-016-0841-6/fulltext.html +

      +

      + The Cerebellum, June 2017, Volume 16, Issue 3, pp 753-755 +

      +

      + The Known and Missing Links Between the Cerebellum, Basal Ganglia, and Cerebral Cortex
      + Alberto Cacciola, Demetrio Milardi, Paolo Livrea, Paolo Flace, Giuseppe Anastasi and Angelo Quartarone
      + - https://link.springer.com/article/10.1007/s12311-017-0850-0/fulltext.html +

      +

      + Learning & Memory, June 2017; Vol. 24, No. 6 +

      +

      + Memory consolidation within the central amygdala is not necessary for modulation of cerebellar learning
      + Adam B. Steinmetz, Ka H. Ng, and John H. Freeman
      + - http://learnmem.cshlp.org/content/24/6/225.abstract +

      +

      + Frontiers in Neuroscience +

      +

      + Activation of the CREB/c-Fos Pathway during Long-Term Synaptic Plasticity in the Cerebellum Granular Layer
      + Daniela Gandolfi, Egidio D‘Angelo, Silvia Cerri, Jonathan Mapelli, Mariarosa Polimeni, Simona Tritto, Marie Therese Fuzzati-Armentero, Albertino Bigiani, Fabio Blandini, and Lisa Mapelli
      + - https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5487453/ +

      +

      + Front. Neurol., 22 June 2017 +

      +

      + Decompression in Chiari Malformation: Clinical, Ocular Motor, Cerebellar, and Vestibular Outcome
      + Nicolina Goldschagg, Katharina Feil, Franziska Ihl, Siegbert Krafczyk, Mathias Kunz, Joerg Tonn, Michael StruPages, Aurelia Peraud
      + - https://doi.org/10.3389/fneur.2017.00292 +

      +

      + Front. Neurol., 28 June 2017 +

      +

      + Cerebellar Dysfunction in Multiple Sclerosis
      + Alastair Wilkins
      + - https://doi.org/10.3389/fneur.2017.00312 +

      +

      2017 May

      +

      + PLOS ONE +

      +

      + Story time turbocharger? Child engagement during shared reading and cerebellar activation and connectivity in preschool-age children listening to stories
      + John S. Hutton, Kieran Phelan, Tzipi Horowitz-Kraus, Jonathan Dudley, Mekibib Altaye, Thomas DeWitt, Scott K. Holland
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0177398 +

      +

      + Ectopically expressed Slc34a2a sense- antisense transcripts cause a cerebellar phenotype in zebrafish embryos depending on RNA complementarity and Dicer
      + Monica J. Piatek, Victoria Henderson, Amy Fearn, Bill Chaudhry, Andreas Werner
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0178219 +

      +

      + Unmasking adrenoleukodystrophy in a cohort of cerebellar ataxia
      + Ying-Hao Chen, Yi-Chung Lee, Yu-Shuen Tsai, Yuh-Cherng Guo, Cheng-Tsung Hsiao, Pei-Chien Tsai, Jin-An Huang, Yi-Chu Liao, Bing-Wen Soong
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0177296 +

      +

      + Journal of Neuroscience, Vol. 37, Issue 21, 24 May 2017 +

      +

      + Allometric Analysis Detects Brain Size- Independent Effects of Sex and Sex Chromosome Complement on Human Cerebellar Organization
      + Clasen, Deanna Greenstein, Jay N. Giedd, Jonathan D. Blumenthal, Jason P. Lerch, M. Mallar Chakravarty, and Armin Raznahan
      + - http://www.jneurosci.org/content/37/21/5221 +

      +

      + NeuroImage, Volume 152, 15 May 2017, Pages 207-220 +

      +

      + Dopamine depletion impairs gait automaticity by altering cortico-striatal and cerebellar processing in Parkinson's disease
      + Moran Gilat, Peter T. Bell, Kaylena A. Ehgoetz Martens, Matthew J. Georgiades, Julie M. Hall, Courtney C. Walton, Simon J.G. Lewis, James M. Shine
      + - https://www.sciencedirect.com/science/article/pii/S1053811917301842 +

      +

      + Current Biology, Volume 27, Issue 9, 8 May 2017, Pages 1288-1302 +

      +

      + Sensorimotor Representations in Cerebellar Granule Cells in Larval Zebrafish Are Dense, Spatially Organized, and Non-temporally Patterned
      + Laura D. Knogler, Daniil A. Markov, Elena I. Dragomir, Vilim Štih, Ruben Portugues
      + - https://www.sciencedirect.com/science/article/pii/S0960982217303275 +

      +

      + PLOS GENETICS +

      +

      + Hypothermia-induced dystonia and abnormal cerebellar activity in a mouse model with a single disease-mutation in the sodium-potassium pump
      + Toke Jost Isaksen, Lieke Kros, Natascia Vedovato, Thomas Hellesøe Holm, Ariel Vitenzon, David Christopher Gadsby, Kamran Khodakhah, Karin Lykke- Hartmann
      + - http://journals.plos.org/plosgenetics/article?id=10.1371/journal.pgen.1006763 +

      +

      + Journal of Neuroscience, Vol. 37, Issue 18, 3 May 2017 +

      +

      + Movement Rate Is Encoded and Influenced by Widespread, Coherent Activity of Cerebellar Molecular Layer Interneurons
      + Michael A. Gaffield and Jason M. Christie
      + - http://www.jneurosci.org/content/37/18/4751 +

      +

      + Trends in Neurosciences, Volume 40, Issue 5, May 2017, Pages 309-323 +

      +

      + The Sleeping Cerebellum
      + Cathrin B. Canto, Yoshiyuki Onuki, Bastiaan Bruinsma, Ysbrand D. van der Werf, Chris I. De Zeeuw
      + - https://www.sciencedirect.com/science/article/pii/S0166223617300309 +

      +

      + European Journal of Neuroscience, Volume 45, Issue 9, May 2017 Pages 1177-1185 +

      +

      + Online and offline effects of cerebellar transcranial direct current stimulation on motor learning in healthy older adults: a randomized double-blind sham-controlled study
      + Afshin Samaei, Fatemeh Ehsani, Maryam Zoghi, Mohaddese Hafez Yosephi and Shapour Jaberzadeh
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13559/abstract +

      +

      + Neuropharmacology, Volume 118, 15 May 2017, Pages 79-89 +

      +

      + Monoaminergic modulation of GABAergic transmission onto cerebellar globular cells
      + Moritoshi Hirono, Soichi Nagao, Yuchio Yanagawa, Shiro Konishi
      + - https://www.sciencedirect.com/science/article/pii/S0028390817300941 +

      +

      + Nature Neuroscience: May 2017, Volume 20, Number 5, pp 633 - 634 +

      +

      + Cerebellar granule cells expand their talents
      + Matthew I Becker and Abigail L Person
      + - https://www.nature.com/articles/nn.4552 +

      +

      + Nature Neuroscience: May 2017, Volume 20, Number 5, pp 727 - 734 +

      +

      + Cerebellar granule cells acquire a widespread predictive feedback signal during motor learning
      + Andrea Giovannucci, Aleksandra Badura, Ben Deverett, Farzaneh Najafi, Talmo D Pereira, Zhenyu Gao, Ilker Ozden, Alexander D Kloth, Eftychios Pnevmatikakis, Liam Paninski, Chris I De Zeeuw, Javier F Medina and Samuel S-H Wang
      + - https://www.nature.com/articles/nn.4531 +

      +

      + Nature Reviews Neuroscience, Volume 18, Number 5, May 2017, pp 263 +

      +

      + Cerebellum: The little learning brain
      + Springer
      + - https://www.nature.com/articles/nrn.2017.47 +

      +

      + Frontiers in Neuroscience +

      +

      + Maternal Different Degrees of Iodine Deficiency during Pregnant and Lactation Impair the Development of Cerebellar Pinceau in Offspring
      + Jing Dong, Heling Song, Yuan Wang, Min Li, Ye Yu, Yi Wang, and Jie Chen
      + - https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5446996/ +

      +

      2017 April

      +

      + PLOS ONE +

      +

      + Cerebellar volume as imaging outcome in progressive multiple sclerosis
      + Matilde Inglese, Maria Petracca, Enricomaria Mormina, Anat Achiron, Rebecca Straus-Farber, Shmuel Miron, Michelle Fabian, Stephen Krieger, Aaron Miller, Fred Lublin, Maria Pia Sormani
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0176519 +

      +

      + Vertebral artery terminating in posterior inferior cerebellar artery: A normal variation with clinical significance
      + I-Wen Liu, Bo-Lin Ho, Chien-Fu Chen, Ke Han, Chung-Jung Lin, Wen-Yung Sheng, Han-Hwa Hu, A-Ching Chao
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0175264 +

      +

      + Current Biology, Volume 27, Issue 8, 24 April 2017, Pages 1249-1250 +

      +

      + Rapid Evolution of the Cerebellum in Humans and Other Great Apes
      + Robert A. Barton, Chris Venditti
      + - https://www.sciencedirect.com/science/article/pii/S0960982217303597 +

      +

      + Journal of Neurophysiology, April 2017; Vol. 117, No. 4, Pages 1474-1482 +

      +

      + Role of the cerebellum in high stages of motor planning hierarchy
      + Robert A. Barton, Chris Venditti
      + - http://www.physiology.org/doi/abs/10.1152/jn.00771.2016 +

      +

      + NeuroImage, Volume 150, 15 April 2017, Pages 112-118 +

      +

      + Activity and connectivity of the cerebellum in trigeminal nociception
      + Jan Mehnert, Laura Schulte, Dagmar Timmann, Arne May
      + - https://www.sciencedirect.com/science/article/pii/S1053811917301271 +

      +

      + Nature, volume 544, pages 96– 100 (06 April 2017) +

      +

      + Cerebellar granule cells encode the expectation of reward
      + Mark J. Wagner, Tony Hyun Kim, Joan Savall, Mark J. Schnitzer and Liqun Luo
      + - https://www.nature.com/articles/nature21726 +

      +

      + European Journal of Neuroscience, Volume 45, Issue 7, April 2017, Pages 932–939 +

      +

      + Dorsomedial prefrontal cortex and cerebellar contribution to in-group attitudes: a transcranial magnetic stimulation study
      + Lucile Gamond, Chiara Ferrari, Stefania La Rocca and Zaira Cattaneo
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13529/abstract +

      +

      2017 March

      +

      + Cerebral Cortex, Volume 27, Issue 3, March 2017 +

      +

      + When one is Enough: Impaired Multisensory Integration in Cerebellar Agenesis
      + L. Ronconi L. Casartelli S. Carna M. Molteni F. Arrigoni R. Borgatti
      + - https://academic.oup.com/cercor/article/27/3/2041/3056322 +

      +

      + PLOS COMPUTATIONAL BIOLOGY +

      +

      + Dysfunctions of the basal ganglia- cerebellar-thalamo-cortical system produce motor tics in Tourette syndrome
      + Daniele Caligiore, Francesco Mannella, Michael A. Arbib, Gianluca Baldassarre
      + - http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1005395 +

      +

      + Neuropharmacology, Volume 115, 15 March 2017, Pages 51-59 +

      +

      + Expression of the K+/Cl- cotransporter, KCC2, in cerebellar Purkinje cells is regulated by group-I metabotropic glutamate receptors
      + Serena Notartomaso, Giada Mascio, Pamela Scarselli, Katiuscia Martinello, Sergio Fucile, Roberto Gradini, Valeria Bruno, Giuseppe Battaglia, Ferdinando Nicoletti
      + - https://www.sciencedirect.com/science/article/pii/S0028390816303288 +

      +

      + The Journal of Neuroscience 29 March 2017; Vol. 37, No. 13 +

      +

      + Cerebellar Roles in Self-Timing for Sub- and Supra-Second Intervals
      + Shogo Ohmae, Jun Kunimatsu, and Masaki Tanaka
      + - http://www.jneurosci.org/content/37/13/3511 +

      +

      + Neuroscience Volume 348, Pages 1-346, 21 April 2017 +

      +

      + Further studies of the effects of aging on arginine metabolites in the rat vestibular nucleus and cerebellum
      + P. Liu, N. Gupta, Y. Jing, N.D. Collie, H. Zhang, P.F. Smith
      + - http://www.sciencedirect.com/science/article/pii/S0306452217301161 +

      +

      + Journal of Neurophysiology March 1, 2017; Vol. 117, No. 3 +

      +

      + The inion response revisited: evidence for a possible cerebellar contribution to vestibular-evoked potentials produced by air-conducted sound stimulation
      + Neil P. M. Todd, Sendhil Govender, James G. Colebatch
      + - http://jn.physiology.org/content/117/3/1000 +

      +

      + PLOS ONE March 18, 2017 to March 24, 2017 +

      +

      + Different subregional metabolism patterns in patients with cerebellar ataxia by 18F-fluorodeoxyglucose positron emission tomography
      + Minyoung Oh, Jae Seung Kim, Jungsu S. Oh, Chong Sik Lee, Sun Ju Chung
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0173275 +

      +

      + Nature contents: 23 March 2017 +

      +

      + Cerebellar granule cells encode the expectation of reward
      + Mark J. Wagner, Tony Hyun Kim, Joan Savall  et al.
      + - http://www.nature.com/nature/journal/vaop/ncurrent/full/nature21726.html +

      +

      + The Cerebellum. Volume 16 Number 2 +

      +

      + - http://link.springer.com/journal/12311/16/2 +

      +

      + The Journal of Physiology Volume 595, Issue 6 Pages 1847 - 2202, 15 March 2017 +

      +

      + N-Cadherin, a novel and rapidly remodelling site involved in vasoregulation of small cerebral arteries
      + Zhe Sun, Min Li, Zhaohui Li, Michael A. Hill and Gerald A. Meininger
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP272995/abstract + +

      +

      + Gaze-evoked nystagmus induced by alcohol intoxication
      + Fausto Romano, Alexander A. Tarnutzer, Dominik Straumann, Stefano Ramat and Giovanni Bertolini
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP273204/abstract +

      +

      + European Journal of Neuroscience +

      +

      + Online and offline effects of cerebellar transcranial direct current stimulation on motor learning in healthy older adults: A randomized double-blind sham-controlled study
      + Afshin Samaei, Fatemeh Ehsani, Maryam Zoghi, Mohaddese Hafez Yosephi and Shapour Jaberzadeh
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13559/abstract +

      +

      + The Journal of Neuroscience, 15 March 2017, 37(11) +

      +

      + Hebbian Spike-Timing Dependent Plasticity at the Cerebellar Input Stage
      + Martina Sgritta, Francesca Locatelli, Teresa Soda, Francesca Prestori, and Egidio Ugo D'Angelo
      + - http://www.jneurosci.org/content/37/11/2809 +

      +

      + PLOS ONE March 04, 2017 to March 10, 2017 +

      +

      + The brain-specific RasGEF very-KIND is required for normal dendritic growth in cerebellar granule cells and proper motor coordination
      + Kanehiro Hayashi, Asako Furuya, Yuriko Sakamaki, Takumi Akagi, Yo Shinoda, Tetsushi Sadakata, Tsutomu Hashikawa, Kazuki Shimizu, Haruka Minami, Yoshitake Sano, Manabu Nakayama, Teiichi Furuichi
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0173175 +

      +

      + Neuroscience Volume 346, Pages 1-450, 27 March 2017 +

      +

      + Facilitation of temporal prediction by electrical stimulation to the primate cerebellar nuclei
      + Akiko Uematsu, Shogo Ohmae, Masaki Tanaka
      + - http://www.sciencedirect.com/science/article/pii/S0306452217300362 +

      +

      + Frontiers Article Alert Tuesday, 7 March 2017 +

      +

      + Frontiers in Cellular Neuroscience
      + Ethanol Modulates the Spontaneous Complex Spike Waveform of Cerebellar Purkinje Cells Recorded in vivo in Mice
      + Guang-Jian Zhang, Mao-Cheng Wu, Jin-Di Shi, Yin-Hua Xu, Chun-Ping Chu, Song-Biao Cui, and De-Lai Qiu
      + - http://journal.frontiersin.org/article/10.3389/fncel.2017.00043/full + +

      +

      + Frontiers in Neuroanatomy
      + Disynaptic Subthalamic Input to the Posterior Cerebellum in Rat
      + Saad Jwair, Patrice Coulon, and Tom J. H. Ruigrok
      + - http://journal.frontiersin.org/article/10.3389/fnana.2017.00013/full +

      +

      + European Journal of Neuroscience +

      +

      + The Control of Eye Movements by the Cerebellar Nuclei: Polysynaptic Projections from the Fastigial, Interpositus Posterior and Dentate nuclei to Lateral Rectus Motoneurons in Primates
      + Vincent Prevosto, Werner Graf and Gabriella Ugolini
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13546/abstract +

      +

      2017 February

      +

      + Frontiers Article Alert Tuesday, 28 February 2017 +

      +

      + Crossed Cerebellar Atrophy of the Lateral Cerebellar Nucleus in an Endothelin-1-Induced, Rodent Model of Ischemic Stroke
      + Hugh H. Chan, Jessica L. Cooperrider, Hyun-Joo Park, Connor A. Wathen, John T. Gale, Kenneth B. Baker, and Andre G. Machado
      + - http://journal.frontiersin.org/article/10.3389/fnagi.2017.00010/full +

      +

      + Frontiers Article Alert Thursday, 16 February 2017 +

      +

      + Frontiers in Molecular Neuroscience
      + A model of induction of cerebellar Long-Term Depression including RKIP inactivation of Raf and MEK
      + Iain Hepburn, Anant Jain, Himanshu Gangal, Yukio Yamamoto, Keiko Tanaka-Yamamoto, and Erik De Schutter
      + - http://journal.frontiersin.org/article/10.3389/fnmol.2017.00019/full +

      +

      + The Journal of Physiology Volume 595, Issue 4 Pages 1001 - 1420, 15 February 2017 +

      +

      + Active integration of glutamatergic input to the inferior olive generates bidirectional postsynaptic potentials
      + Derek L. F. Garden, Arianna Rinaldi and Matthew F. Nolan
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP273424/abstract +

      +

      + Neuroscience Volume 345, Pages 1-314, 14 March 2017 +

      +

      + Cerebellar contribution to higher and lower order rule learning and cognitive flexibility in mice
      + P.E. Dickson, J. Cairns, D. Goldowitz, G. Mittleman
      + - http://www.sciencedirect.com/science/article/pii/S0306452216300197 +

      +

      + Frontiers Article Alert Friday, 10 February 2017

      +

      + Frontiers in Psychiatry
      + Practice and Learning: Spatiotemporal Differences in Thalamo-Cortical-Cerebellar Networks Engagement across Learning Phases in Schizophrenia
      + Michele Korostil, Gary Remington, and Anthony Randal McIntosh
      + - http://journal.frontiersin.org/article/10.3389/fpsyt.2016.00212/full +

      +

      + The Journal of Neuroscience, 8 February 2017, 37(6) +

      +

      + Cerebellar tDCS Modulates Neural Circuits during Semantic Prediction: A Combined tDCS-fMRI Study
      + Anila M. D'Mello, Peter E. Turkeltaub, and Catherine J. Stoodley
      + - http://www.jneurosci.org/content/37/6/1604 +

      +

      + Brain Research Volume 1657, Pages 1-384, 15 February 2017 +

      +

      + Cerebellar Purkinje cells die by apoptosis in the shaker mutant rat
      + Nour S. Erekat
      + - http://www.sciencedirect.com/science/article/pii/S0006899316308460 +

      +

      + Frontiers Article Alert Monday, 6 February 2017 +

      +

      + Frontiers in Human Neuroscience
      + Cerebellar tDCS Effects on Conditioned Eyeblinks using Different Electrode Placements and Stimulation Protocols
      + Linda Beyer, Giorgi Batsikadze, Dagmar Timmann, and Marcus Gerwig
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2017.00023/full +

      +

      + The Journal of Physiology Volume 595, Issue 3 Pages 599 - 999, 1 February 2017 + +

      +

      + The pledge, the turn, and the prestige of transient cerebellar alterations in SCA6
      + Lauren N. Miterko and Roy V. Sillitoe
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP273301/abstract +

      +

      + Transient cerebellar alterations during development prior to obvious motor phenotype in a mouse model of spinocerebellar ataxia type 6
      + Sriram Jayabal, Lovisa Ljungberg and Alanna J. Watt
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP273184/abstract +

      +

      + European Journal of Neuroscience +

      +

      + Dorsomedial prefrontal cortex and cerebellar contribution to in-group attitudes: a TMS study
      + Lucile Gamond, Chiara Ferrari, Stefania La Rocca and Zaira Cattaneo
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13529/abstract +

      +

      + The Journal of Neuroscience, 1 February 2017, 37(5) +

      +

      + Granular Layer Neurons Control Cerebellar Neurovascular Coupling Through an NMDA Receptor/NO-Dependent System
      + Lisa Mapelli, Giuseppe Gagliano, Teresa Soda, Umberto Laforenza, Francesco Moccia, and Egidio U. D'Angelo
      + - http://www.jneurosci.org/content/37/5/1340.abstract +

      +

      + Experimental Brain Research. Volume 235 Number 2 +

      +

      + Cerebellar tDCS does not improve performance in probabilistic classification learning
      + N. Seyed Majidi, M. C. Verhage, O. Donchin, P. Holland, M. A. Frens & J. N. van der Geest
      + - http://link.springer.com/article/10.1007/s00221-016-4800-8 +

      +

      2017 January

      +

      + Frontiers Article Alert Tuesday, 31 January 2017 +

      +

      + Altered Hippocampo-Cerebello-Cortical Circuit in Schizophrenia by a Spatiotemporal Consistency and Causal Connectivity Analysis
      + Xi Chen, Yuchao Jiang, Lin Chen, Hui He, Li Dong, Changyue Hou, Mingjun Duan, Mi Yang, Dezhong Yao, and Cheng Luo
      + - http://journal.frontiersin.org/article/10.3389/fnins.2017.00025/full +

      +

      + The Cerebellum. Volume 16 Number 1 +

      +

      + - http://link.springer.com/journal/12311/16/1/page/1 +

      +

      + The Journal of Neuroscience, 25 January 2017, 37(4) +

      +

      + The Role of Neuroligins in the Cerebellum Highlights the Diversity of Synapse-Specifying Molecules
      + Jessica Messier
      + - http://www.jneurosci.org/content/37/4/739 +

      +

      + Neuroscience Letters Volume 639, Pages 1-214, 3 February 2017 +

      +

      + Analysis of gene expression in Ca2+-dependent activator protein for secretion 2 (Cadps2) knockout cerebellum using GeneChip and KEGG pathways
      + Tetsushi Sadakata, Yo Shinoda, Yasuki Ishizaki, Teiichi Furuichi
      + - http://www.sciencedirect.com/science/article/pii/S0304394016310163 + +

      +

      + Cerebellar Insulin/IGF-1 signaling in diabetic rats: Effects of exercise training
      + Mariana Eiras Borges, Alessandra Mussi Ribeiro, José Rodrigo Pauli, Luciana Mendonça Arantes, Eliete Luciano, Leandro Pereira de Moura, José Alexandre Curiacos de Almeida Leme, Alessandra Medeiros, Natália Oliveira Bertolini, Clarice Yoshiko Sibuya, Ricardo José Gomes
      + - http://www.sciencedirect.com/science/article/pii/S0304394016310072 

      +

      + Frontiers Article Alert Monday, 23 January 2017 +

      +

      + Cerebellar tDCS: A Novel Approach to Augment Language Treatment Post-stroke
      + Rajani Sebastian, Sadhvi Saxena, Kyrana Tsapkini, Andreia V. Faria, Charltien Long, Amy Wright, Cameron Davis, Donna C. Tippett, Antonios P. Mourdoukoutas, Marom Bikson, Pablo Celnik, and Argye E. Hillis
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2016.00695/full +

      +

      + Neuroscience Research Volume 114, Pages 1-70, January 2017 +

      +

      + Projections from the lowest lumbar and sacral-caudal segments to the cerebellar cortex in the rat: An anterograde tracing study
      + Matsuo Matsushita
      + - http://www.sciencedirect.com/science/article/pii/S0168010216301754 +

      +

      + The Journal of Neuroscience, 11 January 2017, 37(2) +

      +

      + Formation of Long-Term Locomotor Memories Is Associated with Functional Connectivity Changes in the Cerebellar–Thalamic–Cortical Network
      + Firas Mawase, Simona Bar-Haim, and Lior Shmuelof
      + - http://www.jneurosci.org/content/37/2/349.abstract +

      +

      + Frontiers Article Alert Tuesday, 10 January 2017 +

      +

      + BNN27, a 17-Spiroepoxy Steroid Derivative, Interacts With and Activates p75 Neurotrophin Receptor, Rescuing Cerebellar Granule Neurons from Apoptosis
      + Iosif Pediaditakis, Alexandra Kourgiantaki, Kyriakos C. Prousis, Constantinos Potamitis, Kleanthis P. Xanthopoulos, Maria Zervou, Theodora Calogeropoulou, Ioannis Charalampopoulos, and Achille Gravanis
      + - http://journal.frontiersin.org/article/10.3389/fphar.2016.00512/full +

      +

      2016 December

      +

      + The Journal of Physiology Volume 595, Issue 1 Pages 1 - 413, 1 January 2017 +

      +

      + New old drug(s) for spinocerebellar ataxias
      + Visou Ady and Alanna J. Watt
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP273149/abstract + +

      +

      + Cerebellar physiology: links between microcircuitry properties and sensorimotor functions
      + Henrik Jörntell
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP272769/abstract + +

      +

      + Progressive impairment of cerebellar mGluR signalling and its therapeutic potential for cerebellar ataxia in spinocerebellar ataxia type 1 model mice
      + Anton N. Shuvaev, Nobutake Hosoi, Yamato Sato, Dai Yanagihara and Hirokazu Hirai
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP272950/abstract + +

      +

      + The dynamic relationship between cerebellar Purkinje cell simple spikes and the spikelet number of complex spikes
      + Amelia Burroughs, Andrew K. Wise, Jianqiang Xiao, Conor Houghton, Tianyu Tang, Colleen Y. Suh, Eric J. Lang, Richard Apps and Nadia L. Cerminara
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP272259/abstract +

      +

      + NATURE NEUROSCIENCE January 2017 Volume 20 Number 1, pp 1 - 125 +

      +

      + A neuronal PI(3,4,5)P3-dependent program of oligodendrocyte precursor recruitment and myelination
      + Sandra Goebbels et al.
      + - http://www.nature.com/neuro/journal/v20/n1/full/nn.4425.html +

      +

      + NeuroImage Volume 144, Part B, Pages 255-314, January 2017 +

      +

      + Tell me twice: A multi-study analysis of the functional connectivity between the cerebrum and cerebellum after repeated trait information
      + Frank Van Overwalle, Elien Heleven, Ning Ma, Peter Mariën
      + - http://www.sciencedirect.com/science/article/pii/S1053811916304311 +

      +

      + Nature 541, 87–91 (05 January 2017) +

      +

      + XRCC1 mutation is associated with PARP1 hyperactivation and cerebellar ataxia
      + Nicolas C. Hoch, Hana Hanzlikova, Stuart L. Rulten  et al.
      + - http://www.nature.com/nature/journal/v541/n7635/full/nature20790.html +

      +

      + Neuroscience Volume 340, Pages 1-562, 6 January 2017 +

      +

      + Repeated prenatal exposure to valproic acid results in cerebellar hypoplasia and ataxia    Original Research Article
      + Stacey L. Main, Randy J. Kulesza
      + - http://www.sciencedirect.com/science/article/pii/S0306452216305929 +

      +

      + Neuron Volume 92, Issue 5, Pages 931-1148, 7 December 2016 +

      +

      + The Timing Is Right for Cerebellar Learning
      + Conor Dempsey, Nathaniel B. Sawtell
      + - http://www.sciencedirect.com/science/article/pii/S0896627316309072 +

      +

      + Frontiers Article Alert Tuesday, 6 December 2016 +

      +

      + Repetitive TMS on Left Cerebellum Affects Impulsivity in Borderline Personality Disorder: A Pilot Study
      + Giulia Zelda De Vidovich, Riccardo Muffatti, Jessica Monaco, Nicoletta Caramia, Davide Broglia, Edgardo Caverzasi, Francesco Barale, and Egidio D’Angelo
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2016.00582/full +

      +

      + PLOS ONE November 26, 2016 to December 02, 2016 +

      +

      + Cerebellum Transcriptome of Mice Bred for High Voluntary Activity Offers Insights into Locomotor Control and Reward-Dependent Behaviors
      + Kelsey Caetano-Anollés, Justin S. Rhodes, Theodore Garland Jr, Sam D. Perez, Alvaro G. Hernandez, Bruce R. Southey, Sandra L. Rodriguez-Zas
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0167095 +

      +

      + Frontiers Article Alert Thursday, 1 December 2016 +

      +

      + Cellular and Subcellular Localization of the RGS7/Gβ5/R7BP Complex in the Cerebellar Cortex
      + Carolina Aguado, Cesare Orlandi, Ana Fajardo-Serrano, Mercedes Gil-Minguez, Kirill A. Martemyanov, and Rafael Luján
      + - http://journal.frontiersin.org/article/10.3389/fnana.2016.00114/full +

      +

      + The Journal of Neuroscience, 30 November 2016, 36(48) +

      +

      + Cerebellar Shank2 Regulates Excitatory Synapse Density, Motor Coordination, and Specific Repetitive and Anxiety-Like Behaviors
      + Seungmin Ha, Dongwon Lee, Yi Sul Cho, Changuk Chung, Ye-Eun Yoo, Jihye Kim, Jiseok Lee, Woohyun Kim, Hyosang Kim, Yong Chul Bae, Keiko Tanaka-Yamamoto, and Eunjoon Kim
      + - http://www.jneurosci.org/content/36/48/12129.abstract +

      +

      2016 November

      +

      + Journal of Neurophysiology November 1, 2016; Vol. 116, No. 5 +

      +

      + Cerebellar tDCS dissociates the timing of perceptual decisions from perceptual change in speech
      + Daniel R. Lametti, Leonie Oostwoud Wijdenes, James Bonaiuto, Sven Bestmann, and John C. Rothwell
      + - http://jn.physiology.org/content/116/5/2023.abstract + +

      +

      + Responses of cerebellar Purkinje cells during fictive optomotor behavior in larval zebrafish
      + Karina Scalise, Takashi Shimizu, Masahiko Hibi, and Nathaniel B. Sawtell
      + - http://jn.physiology.org/content/116/5/2067.abstract +

      +

      + Current Opinion in Neurobiology Volume 41, Pages 1-190, December 2016 +

      +

      + A comparative approach to cerebellar function: insights from electrosensory systems    Review Article
      + Richard Warren, Nathaniel B Sawtell
      + - http://www.sciencedirect.com/science/article/pii/S0959438816300976 +

      +

      + PLOS ONE November 12, 2016 to November 18, 2016 +

      +

      + Whole-Cell Properties of Cerebellar Nuclei Neurons In Vivo
      + Cathrin B. Canto, Laurens Witter, Chris I. De Zeeuw
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0165887 +

      +

      + Philosophical Transactions of the Royal Society B: Biological Sciences January 5, 2017; Vol. 372, No. 1711 +

      +

      + The impact of cerebellar transcranial direct current stimulation (tDCS) on learning fine-motor sequences
      + Renee E. Shimizu, Allan D. Wu, Jasmine K. Samra, and Barbara J. Knowlton
      + - http://rstb.royalsocietypublishing.org/content/372/1711/20160050 +

      +

      + Neuroscience Volume 339, Pages 1-678, 17 December 2016 +

      +

      + Dysregulation of the endocannabinoid signaling system in the cerebellum and brainstem in a transgenic mouse model of spinocerebellar ataxia type-3
      + Carmen Rodríguez-Cueto, Mariluz Hernández-Gálvez, Cecilia J. Hillard, Patricia Maciel, Luis García-García, Sara Valdeolivas, Miguel A. Pozo, José A. Ramos, María Gómez-Ruiz, Javier Fernández-Ruiz
      + - http://www.sciencedirect.com/science/article/pii/S0306452216305012 +

      +

      + The Cerebellum. Volume 15 Number 6 +

      +

      + - http://link.springer.com/journal/12311/15/6/page/1 +

      +

      + Experimental Brain Research December 2016, Volume 234, Issue 12, pp 3689–3697 +

      +

      + The direction of the postural response to a vestibular perturbation is mediated by the cerebellar vermis
      + Chris K. Lam, Craig D. Tokuno, W. Richard Staines & Leah R. Bent
      + - http://link.springer.com/article/10.1007/s00221-016-4766-6 +

      +

      + Frontiers Article Alert Tuesday, 8 November 2016 +

      +

      + Increased Motor-Impairing Effects of the Neuroactive Steroid Pregnanolone in Mice with Targeted Inactivation of the GABAA Receptor γ2 Subunit in the Cerebellum
      + Elli Leppä, Anni-Maija Linden, Maria I. Aller, Peer Wulff, Olga Vekovischeva, Bernhard Luscher, Hartmut Lüddens, William Wisden, and Esa R. Korpi
      + - http://journal.frontiersin.org/article/10.3389/fphar.2016.00403/full + +

      +

      + The Pedunculopontine Tegmental Nucleus as a Motor and Cognitive Interface between the Cerebellum and Basal Ganglia
      + Fumika Mori, Ken-ichi Okada, Taishin Nomura, and Yasushi Kobayashi
      + - http://journal.frontiersin.org/article/10.3389/fnana.2016.00109/full +

      +

      + PLOS ONE October 29, 2016 to November 04, 2016 +

      +

      + Fusion of Human Fetal Mesenchymal Stem Cells with “Degenerating” Cerebellar Neurons in Spinocerebellar Ataxia Type 1 Model Mice
      + Fathul Huda, Yiping Fan, Mamiko Suzuki, Ayumu Konno, Yasunori Matsuzaki, Nobutaka Takahashi, Jerry K. Y. Chan, Hirokazu Hirai
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0164202 +

      +

      + Frontiers Article Alert Friday, 4 November 2016 +

      +

      + Transient Developmental Purkinje Cell Axonal Torpedoes in Healthy and Ataxic Mouse Cerebellum
      + Lovisa Ljungberg, Daneck Lang-Ouellette, Angela Yang, Sriram Jayabal, Sabrina Quilez, and Alanna J. Watt
      + - http://journal.frontiersin.org/article/10.3389/fncel.2016.00248/full +

      +

      2016 October

      +

      + Journal of Neurophysiology October 1, 2016; Vol. 116, No. 4 +

      +

      + The inferior olive is essential for long-term maintenance of a simple motor skill
      + Xiang Yang Chen, Yu Wang, Yi Chen, Lu Chen, and Jonathan R. Wolpaw
      + - http://jn.physiology.org/content/116/4/1946.abstract + +

      +

      + Contribution of intravestibular sensory conflict to motion sickness and dizziness in migraine disorders
      + Joanne Wang and Richard F. Lewis
      + - http://jn.physiology.org/content/116/4/1586.abstract +

      +

      + Neuroscience Research Volume 112, Pages 1-70, November 2016 +

      +

      + Differential effects of primary motor cortex and cerebellar transcranial direct current stimulation on motor learning in healthy individuals: A randomized double-blind sham-controlled study
      + F. Ehsani, A.H. Bakhtiary, S. Jaberzadeh, A. Talimkhani, A. Hajihasani
      + - http://www.sciencedirect.com/science/article/pii/S0168010216300864 +

      +

      + Neuroscience Volume 337, Pages 1-370, 19 November 2016 +

      +

      + Memory deficits, gait ataxia and neuronal loss in the hippocampus and cerebellum in mice that are heterozygous for Pur-alpha
      + Mary F. Barbe, Jessica J. Krueger, Regina Loomis, Jessica Otte, Jennifer Gordon
      + - http://www.sciencedirect.com/science/article/pii/S0306452216304560 +

      +

      + Frontiers Article Alert Wednesday, 19 October 2016 +

      +

      + Cerebellar and Spinal Direct Current Stimulation in Children: Computational Modeling of the Induced Electric Field
      + Serena Fiocchi, Paolo Ravazzani, Alberto Priori, and Marta Parazzini
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2016.00522/full +

      +

      + Neuroscience Letters Volume 633, Pages 1-292, 28 October 2016 +

      +

      + Exercise-induced expression of monocarboxylate transporter 2 in the cerebellum and its contribution to motor performance
      + Daisuke Hoshino, Susumu Setogawa, Yu Kitaoka, Hiroyuki Masuda, Yuki Tamura, Hideo Hatta, Dai Yanagihara
      + - http://www.sciencedirect.com/science/article/pii/S0304394016306851 +

      +

      + European Journal of Neuroscience Volume 44, Issue 8 Pages 2515 - 2645, October 2016 +

      +

      + Cerebellar output encodes a corrective saccadic command (Commentary on Sun et al.)
      + David J. Herzfeld and Reza Shadmehr
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13345/abstract + +

      +

      + Individual neurons in the caudal fastigial oculomotor region convey information on both macro- and microsaccades
      + Zongpeng Sun, Marc Junker, Peter W. Dicke and Peter Thier
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13289/abstract +

      +

      + Neuroscience Volume 336, Pages 1-146, 12 November 2016 +

      +

      + The C-terminal region of Reelin is necessary for proper positioning of a subset of Purkinje cells in the postnatal cerebellum
      + Kota Nakamura, Mako Beppu, Kaori Sakai, Hayata Yagyu, Saori Matsumaru, Takao Kohno, Mitsuharu Hattori
      + - http://www.sciencedirect.com/science/article/pii/S0306452216304122 +

      +

      + Current Opinion in Neurobiology Volume 40, Pages 1-188, October 2016 +

      +

      + The role of the human cerebellum in performance monitoring
      + Jutta Peterburs, John E Desmond
      + - http://www.sciencedirect.com/science/article/pii/S0959438816300770 +

      +

      + Neuroscience Letters Volume 632, Pages 1-230, 6 October 2016 +

      +

      + Ethanol exposure during development reduces GABAergic/glycinergic neuron numbers and lobule volumes in the mouse cerebellar vermis
      + Pranita Nirgudkar, Devin H. Taylor, Yuchio Yanagawa, C. Fernando Valenzuela
      + - http://www.sciencedirect.com/science/article/pii/S0304394016306292 + +

      +

      + Autoimmune neurological syndromes associated limbic encephalitis and paraneoplastic cerebellar degeneration
      + Zeynep Özözen Ayas, Dilcan Kotan, Yeşim Güzey Aras
      + - http://www.sciencedirect.com/science/article/pii/S0304394016306280 +

      +

      2016 September

      +

      + PLOS ONE September 24, 2016 to September 30, 2016 +

      +

      + Cerebellar tDCS Does Not Improve Learning in a Complex Whole Body Dynamic Balance Task in Young Healthy Subjects
      + Katharina Marie Steiner, Anne Enders, Wiebke Thier, Giorgi Batsikadze, Nicolas Ludolph, Winfried Ilg, Dagmar Timmann
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0163598 +

      +

      + Journal of Neurophysiology Volume 116 Issue 3, 1 September 2016 +

      +

      + Cerebellar role in Parkinson's disease
      + Jasmine L. Mirdamadi
      + - http://jn.physiology.org/content/116/3/917.abstract + +

      +

      + Building Neural Circuits: Wiring and Experience: Spontaneous activity and functional connectivity in the developing cerebellorubral system
      + Carlos Del Rio-Bermudez, Alan M. Plumeau, Nicholas J. Sattler, Greta Sokoloff, and Mark S. Blumberg
      + - http://jn.physiology.org/content/116/3/1316.abstract + +

      +

      + Purkinje cell intrinsic excitability increases after synaptic long term depression
      + Zhen Yang and Fidel Santamaria
      + - http://jn.physiology.org/content/116/3/1208.abstract + +

      +

      + Decreased cerebellar-cerebral connectivity contributes to complex task performance
      + Curren Katz and André Knops
      + - http://jn.physiology.org/content/116/3/1434.abstract +

      +

      + Neuron Volume 91, Issue 6, Pages 1185-1414, 21 September 2016 +

      +

      + Dual Function of NRP1 in Axon Guidance and Subcellular Target Recognition in Cerebellum
      + Ludovic Telley, Christelle Cadilhac, Jean-Michel Cioni, Veronique Saywell, Céline Jahannault-Talignani, Rosa E. Huettl, Catherine Sarrailh-Faivre, Alexandre Dayer, Andrea B. Huber, Fabrice Ango
      + - http://www.sciencedirect.com/science/article/pii/S0896627316305074 + +

      +

      + Purkinje Cells Directly Inhibit Granule Cells in Specialized Regions of the Cerebellar Cortex
      + Chong Guo, Laurens Witter, Stephanie Rudolph, Hunter L. Elliott, Katelin A. Ennis, Wade G. Regehr
      + - http://www.sciencedirect.com/science/article/pii/S0896627316305037 +

      +

      + Frontiers Article Alert Tuesday, 13 September 2016 +

      +

      + Ontogenic Changes and Differential Localization of T-type Ca2+ Channel Subunits Cav3.1 and Cav3.2 in Mouse Hippocampus and Cerebellum
      + Carolina Aguado, Sebastián García-Madrona, Mercedes Gil-Minguez, and Rafael Luján
      + - http://journal.frontiersin.org/article/10.3389/fnana.2016.00083/full +

      +

      + The Cerebellum. Volume 15 Number 5 +

      +

      + - http://link.springer.com/journal/12311/15/5/page/1 +

      +

      + Brain Research Volume 1648, Part A, Pages 1-526, 1 October 2016 +

      +

      + Neuroprotection comparison of chlorogenic acid and its metabolites against mechanistically distinct cell death-inducing agents in cultured cerebellar granule neurons
      + Faten Taram, Aimee N. Winter, Daniel A. Linseman
      + - http://www.sciencedirect.com/science/article/pii/S0006899316305108 +

      +

      + Proceedings of the National Academy of Sciences 6 September 2016; Vol. 113, No. 36 +

      +

      + Reassessment of long-term depression in cerebellar Purkinje cells in mice carrying mutated GluA2 C terminus
      + Kazuhiko Yamaguchi, Shigeyoshi Itohara, and Masao Ito
      + - http://www.pnas.org/content/113/36/10192 +

      +

      + Frontiers Article Alert Monday, 5 September 2016 +

      +

      + On the Effect of Sex on Prefrontal and Cerebellar Neurometabolites in Healthy Adults: An MRS Study
      + Dominique Endres, Ludger Tebartz van Elst, Bernd Feige, Stephan Backenecker, Kathrin Nickel, Anna Bubl, Thomas Lange, Irina Mader, Simon Maier, and Evgeniy Perlov
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2016.00367/full +

      +

      + The Intracellular Signaling Molecule Darpp-32 Is a Marker for Principal Neurons in the Cerebellum and Cerebellum-Like Circuits of Zebrafish
      + Lena Robra and Vatsala Thirumalai
      + - http://journal.frontiersin.org/article/10.3389/fnana.2016.00081/full +

      +

      + Brain Research Volume 1646, Pages 1-600, 1 September 2016 +

      +

      + Specific age-related molecular alterations in the cerebellum of Down syndrome mouse models
      + Nicole Créau, Eva Cabet, Fabrice Daubigney, Benoit Souchet, Soumia Bennaï, Jean Delabar
      + - http://www.sciencedirect.com/science/article/pii/S0006899316304280 +

      +

      + PLOS ONE August 27, 2016 to September 02, 2016 +

      +

      + Impaired Spatio-Temporal Predictive Motor Timing Associated with Spinocerebellar Ataxia Type 6
      + Robin Broersen, Yoshiyuki Onuki, Abdel R. Abdelgabar, Cullen B. Owens, Samuel Picard, Jessica Willems, Henk-Jan Boele, Valeria Gazzola, Ysbrand D. Van der Werf, Chris I. De Zeeuw
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0162042 +

      +

      + Cerebral Cortex Alert Volume 26, Issue 9 September 2016 +

      +

      + The Association Between Eye Movements and Cerebellar Activation in a Verbal Working Memory Task
      + Jutta Peterburs, Dominic T. Cheng, and John E. Desmond
      + - http://cercor.oxfordjournals.org/content/26/9/3802.abstract +

      +

      2016 August

      +

      + The Journal of Neuroscience Volume 36 Issue 35, 31 August 2016 +

      +

      + Pharmacologically Counteracting a Phenotypic Difference in Cerebellar GABAA Receptor Response to Alcohol Prevents Excessive Alcohol Consumption in a High Alcohol-Consuming Rodent Genotype
      + Josh Steven Kaplan, Michelle A. Nipper, Ben D. Richardson, Jeremiah Jensen, Melinda Helms, Deborah Ann Finn, and David James Rossi
      + - http://www.jneurosci.org/content/36/35/9019 +

      +

      + Neuroligins Are Selectively Essential for NMDAR Signaling in Cerebellar Stellate Interneurons
      + Bo Zhang and Thomas C. Südhof
      + - http://www.jneurosci.org/content/36/35/9070 +

      +

      + A Novel and Multivalent Role of Pax6 in Cerebellar Development
      + Joanna Yeung, Thomas J. Ha, Douglas J. Swanson, and Dan Goldowitz
      + - http://www.jneurosci.org/content/36/35/9057 

      +

      + Frontiers Article Alert Friday, 26 August 2016 +

      +

      + Frontiers in Cellular Neuroscience
      + N-methyl-D-Aspartate Receptors Contribute to Complex Spike Signaling in Cerebellar Purkinje Cells: An In vivo Study in Mice
      + Heng Liu, Yan Lan, Yan-Hua Bing, Chun-Ping Chu, and De-Lai Qiu
      + - http://journal.frontiersin.org/article/10.3389/fncel.2016.00172/full +

      +

      + Frontiers in Cellular Neuroscience
      + Modeling the Cerebellar Microcircuit: New Strategies for a Long-Standing Issue
      + Egidio D’Angelo, Alberto Antonietti, Stefano Casali, Claudia Casellato, Jesus A. Garrido, Niceto Rafael Luque, Lisa Mapelli, Stefano Masoli, Alessandra Pedrocchi, Francesca Prestori, Martina Francesca Rizza, and Eduardo Ros
      + - http://journal.frontiersin.org/article/10.3389/fncel.2016.00176/full +

      +

      + Frontiers in Human Neuroscience
      + Influence of Transcranial Direct Current Stimulation to the Cerebellum on Standing Posture Control
      + Yasuto Inukai, Kei Saito, Ryoki Sasaki, Shinichi Kotan, Masaki Nakagawa, and Hideaki Onishi
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2016.00325/full +

      +

      + Frontiers in Neuroanatomy
      + Feasibility of Diffusion Tractography for the Reconstruction of Intra-Thalamic and Cerebello-Thalamic Targets for Functional Neurosurgery: A Multi-Vendor Pilot Study in Four Subjects
      + András Jakab, Beat Werner, Marco Piccirelli, Kázmér Kovács, Ernst Martin, John S. Thornton, Tarek Yousry, Gabor Szekely, and Ruth O‘Gorman Tuura
      + - http://journal.frontiersin.org/article/10.3389/fnana.2016.00076/full +

      +

      + PLOS Computational Biology Published August 19, 2016 to August 25, 2016 +

      +

      + Inverse Stochastic Resonance in Cerebellar Purkinje Cells
      + Anatoly Buchin, Sarah Rieubland, Michael Häusser, Boris S. Gutkin, Arnd Roth
      + - http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1005000 +

      +

      + The Journal of Physiology +

      +

      + Transient cerebellar alterations during development prior to obvious motor phenotype in a mouse model of spinocerebellar ataxia type 6
      + Sriram Jayabal, Lovisa Ljungberg and Alanna J. Watt
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP273184/abstract +

      +

      + Neuron Volume 91, Issue 4, Pages 711-944, 17 August 2016 +

      +

      + Differential Dendritic Integration of Synaptic Potentials and Calcium in Cerebellar Interneurons
      + Alexandra Tran-Van-Minh, Therése Abrahamsson, Laurence Cathala, David A. DiGregorio
      + - http://www.sciencedirect.com/science/article/pii/S0896627316304147 +

      +

      + The Journal of Physiology Volume594, Issue16 Pages 4467 - 4684, 15 August 2016 +

      +

      + Does modulation of the endocannabinoid system have potential therapeutic utility in cerebellar ataxia?
      + G. J. Stephens
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271106/abstract +

      +

      + Are Type 1 metabotropic glutamate receptors a viable therapeutic target for the treatment of cerebellar ataxia?
      + Emmet M. Power, Natalya A. English and Ruth M. Empson
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271153/abstract +

      +

      + Cellular and circuit mechanisms underlying spinocerebellar ataxias
      + Pratap Meera, Stefan M. Pulst and Thomas S. Otis
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271897/abstract +

      +

      + Cerebellar ataxias: β-III spectrin's interactions suggest common pathogenic pathways
      + Emma Perkins, Daumante Suminaite and Mandy Jackson
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271195/abstract +

      +

      + Kv3.3 potassium channels and spinocerebellar ataxia
      + Yalan Zhang and Leonard K. Kaczmarek
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271343/abstract +

      +

      + Neuroscience Letters Volume 629, 26 August 2016 +

      +

      + Increased anxiety-like behaviour and altered GABAergic system in the amygdala and cerebellum of VPA rats — An animal model of autism
      + Lucia Olexová, Peter Štefánik, Lucia Kršková
      + - http://www.sciencedirect.com/science/article/pii/S030439401630444X +

      +

      + Microinjection of acetylcholine into cerebellar fastigial nucleus induces blood depressor response in anesthetized rats
      + Changzheng Zhang, Wen Luo, Peiling Zhou, Tingzhe Sun
      + - http://www.sciencedirect.com/science/article/pii/S0304394016304712 +

      +

      + Effects of norepinephrine on spontaneous firing activity of cerebellar Purkinje cells in vivo in mice
      + Ao Guo, Jun-Yang Feng, Jia Li, Nan Ding, Ying-Jun Li, De-Lai Qiu, Ri-Long Piao, Chun-Ping Chu
      + - http://www.sciencedirect.com/science/article/pii/S0304394016304670 +

      +

      + Frontiers Article Alert Monday, 8 August 2016 +

      +

      + Frontiers in Cellular Neuroscience
      + Alterations of Cell Proliferation and Apoptosis in the Hypoplastic Reeler Cerebellum                             
      + Carolina Cocito, Adalberto Merighi, Mario Giacobini, and Laura Lossi
      + - http://journal.frontiersin.org/article/10.3389/fncel.2016.00141/full +

      +

      2016 July

      +

      + Jounal of Neurophysiology July 1, 2016 Vol. 116, No. 1 +

      +

      + ATM protein is located on presynaptic vesicles and its deficit leads to failures in synaptic plasticity
      + Graham Vail, Aifang Cheng, Yu Ray Han, Teng Zhao, Shengwang Du, Michael M. T. Loy, Karl Herrup, and Mark R. Plummer
      + - http://jn.physiology.org/content/116/1/201 +

      +

      + The Journal of Neuroscience, 27 July 2016, 36(30) +

      +

      + Transmission of Predictable Sensory Signals to the Cerebellum via Climbing Fiber Pathways Is Gated during Exploratory Behavior
      + Charlotte L. Lawrenson, Thomas C. Watson, and Richard Apps
      + - http://www.jneurosci.org/content/36/30/7841 +

      +

      + European Journal of Neuroscience +

      +

      + Cerebellar output encodes a corrective motor command
      + David J. Herzfeld and Reza Shadmehr
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13345/abstract +

      +

      + Frontiers Article Alert Wednesday, 27 July 2016

      +

      + Frontiers in Neurology
      + The Cerebellum and SIDS: Disordered Breathing in a Mouse Model of Developmental Cerebellar Purkinje Cell Loss during Recovery from Hypercarbia
      + Michele A. Calton, Jeremy R. Howard, Ronald M. Harper, Dan Goldowitz, and Guy Mittleman
      + - http://journal.frontiersin.org/article/10.3389/fneur.2016.00078/full +

      +

      + Frontiers in Neurology
      + Metronome Cueing of Walking Reduces Gait Variability after a Cerebellar Stroke
      + Rachel L. Wright, Joseph W. Bevins, David Pratt, Catherine M. Sackley, and Alan M. Wing
      + - http://journal.frontiersin.org/article/10.3389/fneur.2016.00084/full +

      +

      + Frontiers Article Alert Monday, 25 July 2016 +

      +

      + Frontiers in Human Neuroscience
      + Decreased Cerebellar-Orbitofrontal Connectivity Correlates with Stuttering Severity: Whole-Brain Functional and Structural Connectivity Associations with Persistent Developmental Stuttering
      + Kevin R. Sitek, Shanqing Cai, Deryk S. Beal, Joseph S. Perkell, Frank H. Guenther, and Satrajit S. Ghosh
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2016.00190/full +

      +

      + Frontiers in Human Neuroscience
      + tDCS of the Cerebellum: Where Do We Stand in 2016? Technical Issues and Critical Review of the Literature
      + Kim van Dun, Florian C. A. A. Bodranghien, Peter Mariën, and Mario U. Manto
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2016.00199/full +

      +

      + Frontiers in Neuroanatomy
      + Eppur Si Muove: Evidence for an External Granular Layer and Possibly Transit Amplification in the Teleostean Cerebellum
      + Daniela Biechl, Alessandro Dorigo, Reinhard W. Köster, Benedikt Grothe, and Mario F. Wullimann
      + - http://journal.frontiersin.org/article/10.3389/fnana.2016.00049/full +

      +

      + Frontiers in Neuroscience
      + Cerebellar Functional Parcellation Using Sparse Dictionary Learning Clustering
      + Changqing Wang, Judy Kipping, Chenglong Bao, Hui Ji, and Anqi Qiu
      + - http://journal.frontiersin.org/article/10.3389/fnins.2016.00188/full +

      +

      + Frontiers in Neuroscience
      + DNA Methylation Profiling at Single-Base Resolution Reveals Gestational Folic Acid Supplementation Influences the Epigenome of Mouse Offspring Cerebellum
      + Subit Barua, Salomon Kuizon, W. Ted Brown, and Mohammed A. Junaid
      + - http://journal.frontiersin.org/article/10.3389/fnins.2016.00168/full +

      +

      + PLOS ONE July 16, 2016 to July 22, 2016 +

      +

      + Analysis of Gene Expression Profiles in the Human Brain Stem, Cerebellum and Cerebral Cortex
      + Lei Chen, Chen Chu, Yu-Hang Zhang, Changming Zhu, Xiangyin Kong, Tao Huang, Yu-Dong Cai
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0159395 +

      +

      + The Journal of Physiology +

      +

      + Progressive impairment of cerebellar mGluR signalling and its therapeutic potential for cerebellar ataxia in spinocerebellar ataxia type 1 model mice
      + Anton N. Shuvaev, Nobutake Hosoi, Yamato Sato, Dai Yanagihara and Hirokazu Hirai
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP272950/abstract +

      +

      + Neuron Volume 91, Issue 2, Pages 205-496, 20 July 2016 +

      +

      + Purkinje Cell Collaterals Enable Output Signals from the Cerebellar Cortex to Feed Back to Purkinje Cells and Interneurons
      + Laurens Witter, Stephanie Rudolph, R. Todd Pressler, Safiya I. Lahlaf, Wade G. Regehr
      + - http://www.sciencedirect.com/science/article/pii/S0896627316302483 +

      +

      + Frontiers Article Alert Monday, 18 July 2016 +

      +

      + Effects of Transforming Growth Factor Beta 1 in Cerebellar Development: Role in Synapse Formation
      + Ana P. B. Araujo, Luan P. Diniz, Cristiane M. Eller, Beatriz G. de Matos, Rodrigo Martinez, and Flávia C. A. Gomes
      + - http://journal.frontiersin.org/article/10.3389/fncel.2016.00104/full +

      +

      + The Journal of Physiology +

      +

      + Cerebellar physiology – links between microcircuitry properties and sensorimotor functions
      + Henrik Jörntell
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP272769/abstract +

      +

      + Frontiers Article Alert Tuesday, 12 July 2016 +

      +

      + Frontiers in Aging Neuroscience
      + White Matter Microstructural Organization Is Higher with Age in Adult Superior Cerebellar Peduncles
      + Richard A. Kanaan, Matthew Allin, Marco M. Picchioni, Sukhwinder S. Shergill, and Philip K. McGuire
      + - http://journal.frontiersin.org/article/10.3389/fnagi.2016.00071/full + +

      +

      + Frontiers in Computational Neuroscience
      + A Hybrid Model for the Computationally-Efficient Simulation of the Cerebellar Granular Layer
      + Anna Cattani, Sergio Solinas, and Claudio Canuto
      + - http://journal.frontiersin.org/article/10.3389/fncom.2016.00030/full +

      +

      + Frontiers in Neuroanatomy
      + Smaller Absolute Quantities but Greater Relative Densities of Microvessels Are Associated with Cerebellar Degeneration in Lurcher Mice
      + Yaroslav Kolinko, Jan Cendelin, Milena Kralickova, and Zbynek Tonar
      + - http://journal.frontiersin.org/article/10.3389/fnana.2016.00035/full +

      +

      + The Cerebellum. Volume 15 Issue 4 +

      +

      + - http://link.springer.com/journal/12311/15/4 +

      +

      + The Journal of Physiology Volume 594, Issue 13 Pages 3483-3848, 1 July 2016 +

      +

      + Biphasic modulation of parallel fibre synaptic transmission by co-activation of presynaptic GABAA and GABAB receptors in mice
      + Rebecca D. Howell and Jason R. Pugh
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP272124/abstract +

      +

      + Train stimulation of parallel fibre to Purkinje cell inputs reveals two populations of synaptic responses with different receptor signatures
      + Suma Priya Sudarsana Devi, James R. Howe and Céline Auger
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP272415/abstract +

      +

      2016 June

      +

      + Journal of Neurophysiology June 1, 2016; Vol. 115, No. 6 +

      +

      + In vivo analysis of cerebellar Purkinje cell activity in SCA2 transgenic mouse model
      + Polina A. Egorova, Olga A. Zakharova, Olga L. Vlasova, and Ilya B. Bezprozvanny
      + - http://jn.physiology.org/content/115/6/2840.abstract +

      +

      + The Journal of Neuroscience, 29 June 2016, 36(26) +

      +

      + Implications of Lateral Cerebellum in Proactive Control of Saccades
      + Jun Kunimatsu, Tomoki W. Suzuki, and Masaki Tanaka
      + - http://www.jneurosci.org/content/36/26/7066.abstract +

      +

      + Frontiers Article Alert Thursday, 16 June 2016 +

      +

      + Frontiers in Neural Circuits
      + Cerebellar Nuclei Neurons Show Only Small Excitatory Responses to Optogenetic Olivary Stimulation in Transgenic Mice: In Vivo and In Vitro Studies
      + Huo Lu, Bo Yang, and Dieter Jaeger
      + - http://journal.frontiersin.org/article/10.3389/fncir.2016.00021/full + +

      +

      + Frontiers in Neuroanatomy
      + Extensive Direct Subcortical Cerebellum-Basal Ganglia Connections in Human Brain as Revealed by Constrained Spherical Deconvolution Tractography
      + Demetrio Milardi, Alessandro Arrigo, Giuseppe Anastasi, Alberto Cacciola, Silvia Marino, Enricomaria Mormina, Alessandro Calamuneri, Daniele Bruschetta, Giuseppina Cutroneo, Fabio Trimarchi, and Angelo Quartarone
      + - http://journal.frontiersin.org/article/10.3389/fnana.2016.00029/full +

      +

      + Neuroscience Research Volume 106, Pages 1-78, May 2016 +

      +

      + Oxygen–glucose deprivation increases firing of unipolar brush cells and enhances spontaneous EPSCs in Purkinje cells in the vestibulo-cerebellum
      + Yukihiro Takayasu, Masato Shino, Osamu Nikkuni, Yukari Yoshida, Nobuhiko Furuya, Kazuaki Chikamatsu
      + - http://www.sciencedirect.com/science/article/pii/S0168010215002606 +

      +

      + The Journal of Physiology +

      +

      + The dynamic relationship between cerebellar Purkinje cell simple spikes and complex spike spikelet number
      + Amelia Burroughs, Andrew K Wise, Jianqiang Xiao, Conor Houghton, Tianyu Tang, Colleen Y Suh, Eric J Lang, Richard Apps and Nadia L Cerminara
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP272259/abstract +

      +

      + Cerebral Cortex Table of Contents Alert Vol. 26, No. 7 July 2016 +

      +

      + Early Cerebellar Network Shifting in Spinocerebellar Ataxia Type 6
      + M.I. Falcon, C.M. Gomez, E.E. Chen, A. Shereen, and A. Solodkin
      + - http://cercor.oxfordjournals.org/content/26/7/3205.abstract +

      +

      + European Journal of Neuroscience Volume 43, Issue 11 Pages 1413 - 1534, June 2016 +

      +

      + Distinct expression patterns of inwardly rectifying potassium currents in developing cerebellar granule cells of the hemispheres and the vermis
      + Federico Brandalise, Rafael Lujan, Roberta Leone, Francesco Lodola, Valentina Cesaroni, Chiara Romano, Urs Gerber and Paola Rossi
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13219/abstract +

      +

      + Brain Research Volume 1642, Pages 1-612, 1 July 2016 +

      +

      + Ethanol preconditioning of rat cerebellar cultures targets NMDA receptors to the synapse and enhances peroxiredoxin 2 expression
      + Robert M. Mitchell, Nuzhath Tajuddin, Edward M. Campbell, Edward J. Neafsey, Michael A. Collins
      + - http://www.sciencedirect.com/science/article/pii/S0006899316301378 + +

      +

      + Oxidative injury in multiple sclerosis cerebellar grey matter
      + Kevin Kemp, Juliana Redondo, Kelly Hares, Claire Rice, Neil Scolding, Alastair Wilkins
      + - http://www.sciencedirect.com/science/article/pii/S0006899316302360 +

      +

      + Neuron Volume 90, Issue 5, Pages 905-1140, 1 June 2016 +

      +

      + Functional Properties of Dendritic Gap Junctions in Cerebellar Golgi Cells
      + Miklos Szoboszlay, Andrea Lőrincz, Frederic Lanore, Koen Vervaeke, R. Angus Silver, Zoltan Nusser
      + - http://www.sciencedirect.com/science/article/pii/S0896627316300204 +

      +

      + The Journal of Neuroscience, 1 June 2016, 36(22) +

      +

      + Functional Evidence for a Cerebellar Node of the Dorsal Attention Network
      + James A. Brissenden, Emily J. Levin, David E. Osher, Mark A. Halko, and David C. Somers
      + - http://www.jneurosci.org/content/36/22/6083.abstract +

      +

      2016 May

      +

      + Journal of Neurophysiology Volume 115, No 5, 1 May 2016 +

      +

      + mGlu1 receptor mediates homeostatic control of intrinsic excitability through Ih in cerebellar Purkinje cells
      + Hyun Geun Shim, Sung-Soo Jang, Dong Cheol Jang, Yunju Jin, Wonseok Chang, Joo Min Park, and Sang Jeong Kim
      + - http://jn.physiology.org/content/115/5/2446.abstract + +

      +

      + Cerebellar contributions to self-motion perception: evidence from patients with congenital cerebellar agenesis
      + Kilian Dahlem, Yulia Valko, Jeremy D. Schmahmann, and Richard F. Lewis
      + - http://jn.physiology.org/content/115/5/2280.abstract +

      +

      + PLOS ONE May 21, 2016 to May 27, 2016 +

      +

      + Robust Machine Learning-Based Correction on Automatic Segmentation of the Cerebellum and Brainstem
      + Jun Yi Wang, Michael M. Ngo, David Hessl, Randi J. Hagerman, Susan M. Rivera
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0156123 +

      +

      + The Journal of Neuroscience, 25 May 2016, 36(21) +

      +

      + Optogenetic Visualization of Presynaptic Tonic Inhibition of Cerebellar Parallel Fibers
      + Ken Berglund, Lei Wen, Robert L. Dunbar, Guoping Feng, and George J. Augustine
      + - http://www.jneurosci.org/content/36/21/5709.abstract +

      +

      + Frontiers Article Alert Tuesday, 24 May 2016 +

      +

      + Frontiers in Comutational Neuroscience
      + Distributed Cerebellar Motor Learning: A Spike-Timing-Dependent Plasticity Model
      + Niceto R. Luque, Jesús A. Garrido, Francisco Naveros, Richard R. Carrillo, Egidio D'Angelo, and Eduardo Ros
      + - http://journal.frontiersin.org/article/10.3389/fncom.2016.00017/full +

      +

      + Annals of the New York Academy of Sciences Volume 1369, Issue 1 Pages 1 - 256, April 2016 +

      +

      + Cerebellar contributions to motor control and language comprehension: searching for common computational principles (pages 154–171)
      + Torgeir Moberget and Richard B. Ivry
      + - http://onlinelibrary.wiley.com/doi/10.1111/nyas.13094/abstract +

      +

      + Frontiers Article Alert Wednesday, 18 May 2016 +

      +

      + Frontiers in Systems Neuroscience
      + Inactivation of Cerebellar Cortical Crus II Disrupts Temporal Processing of Absolute Timing but not Relative Timing in Voluntary Movements
      + Kenji Yamaguchi and Yoshio Sakurai
      + - http://journal.frontiersin.org/article/10.3389/fnsys.2016.00016/full  + +

      +

      + Frontiers in Psychology
      + Anomalous Cerebellar Anatomy in Chinese Children with Dyslexia
      + Ying-Hui Yang, Yang Yang, Bao-Guo Chen, Yi-Wei Zhang, and Hong-Yan Bi
      + - http://journal.frontiersin.org/article/10.3389/fpsyg.2016.00324/full +

      +

      + Neuroscience Letters Volume 622, Pages 1-124, 27 May 2016 +

      +

      + Evidence for cerebellar motor functional reorganization in brain tumor patients: An fMRI study
      + Satoshi Kurabe, Kosuke Itoh, Tsutomu Nakada, Yukihiko Fujii
      + - http://www.sciencedirect.com/science/article/pii/S030439401630249X +

      +

      + The Journal of Physiology Volume 594, Issue 10 Pages 2555 - 2772, 15 May 2016 +

      +

      + Time-invariant feed-forward inhibition of Purkinje cells in the cerebellar cortex in vivo (pages 2729–2749)
      + Antonin Blot, Camille de Solages, Srdjan Ostojic, German Szapiro, Vincent Hakim and Clément Léna
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271518/abstract +

      +

      + Frontiers Article Alert Thursday, 12 May 2016 +

      +

      + Frontiers in Neuroscience
      + More Consistently Altered Connectivity Patterns for Cerebellum and Medial Temporal Lobes than for Amygdala and Striatum in Schizophrenia
      + Henning Peters, Junming Shao, Martin Scherr, Dirk Schwerthöffer, Claus Zimmer, Hans Förstl, Josef Bäuml, Afra Wohlschläger, Valentin Riedl, Kathrin Koch, and Christian Sorg
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2016.00055/full +

      +

      + The Journal of Neuroscience, 4 May 2016, 36(18) +

      +

      + Prolonged Type 1 Metabotropic Glutamate Receptor Dependent Synaptic Signaling Contributes to Spino-Cerebellar Ataxia Type 1
      + Emmet M. Power, Adrienne Morales, and Ruth M. Empson
      + - http://www.jneurosci.org/content/36/18/4910 +

      +

      + The Cerebellum Volume 15 Number 3 +

      +

      + - http://link.springer.com/journal/12311/15/3/page/1 +

      +

      2016 April

      +

      + Neuroimage Volume 132, Pages 1-570, 15 May 2016 +

      +

      + Direct neural current imaging in an intact cerebellum with magnetic resonance imaging
      + Padmavathi Sundaram, Aapo Nummenmaa, William Wells, Darren Orbach, Daniel Orringer, Robert Mulkern, Yoshio Okada
      + - http://www.sciencedirect.com/science/article/pii/S1053811916000744 +

      +

      + European Journal of Neuroscience Volume 43, Issue 8, Pages 992 - 1121, April 2016 +

      +

      + Cerebellar brain inhibition in the target and surround muscles during voluntary tonic activation (pages 1075–1081)
      + Pattamon Panyakaew, Hyun Joo Cho, Prachaya Srivanitchapoom, Traian Popa, Tianxia Wu and Mark Hallett
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13211/abstract +

      +

      + Neuroscience & Biobehavioral Reviews, Volume 60, Pages 1-138, January 2016 +

      +

      + Have we been ignoring the elephant in the room? Seven arguments for considering the cerebellum as part of addiction circuitry
      + Marta Miquel, Dolores Vazquez-Sanroman, María Carbo-Gas, Isis Gil-Miravet, Carla Sanchis-Segura, Daniela Carulli, Jorge Manzo, Genaro A. Coria-Avila
      + - http://www.sciencedirect.com/science/article/pii/S0149763415002754 +

      +

      + Neuroscience & Biobehavioral Reviews, Volume 59, Pages 1-266, December 2015  +

      +

      + The anatomy of fear learning in the cerebellum: A systematic meta-analysis
      + Iris Lange, Zuzana Kasanova, Liesbet Goossens, Nicole Leibold, Chris I. De Zeeuw, Therese van Amelsvoort, Koen Schruers
      + - http://www.sciencedirect.com/science/article/pii/S0149763415002523 +

      +

      2016 March

      +

      + Frontiers Article Alert Tuesday, 29 March 2016

      +

      + Frontiers in Microbiology
      + Sub-Lethal Dose of Shiga Toxin 2 from Enterohemorrhagic Escherichia coli Affects Balance and Cerebellar Cytoarchitecture
      + Luciana D’Alessio, Alipio Pinto, Adriana Cangelosi, Patricia A. Geoghegan, Carla Tironi-Farinati, Gabriela J. Brener, and Jorge Goldstein
      + - http://journal.frontiersin.org/article/10.3389/fmicb.2016.00133/full +

      +

      + European Journal of Neuroscience Accepted Articles

      +

      + Loss of the Calcium Channel β4 Subunit Impairs Parallel Fiber Volley and Purkinje Cell Firing in Cerebellum of Adult Ataxic Mice
      + Bruno Benedetti, Ariane Benedetti and Bernhard E. Flucher
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13241/abstract +

      +

      + Neuroscience Volume 322, Pages 1-538, 13 May 2016

      +

      + Developmental ethanol exposure-induced sleep fragmentation predicts adult cognitive impairment
      + D.A. Wilson, K. Masiello, M.P. Lewin, M. Hui, J.F. Smiley, M. Saito
      + - http://www.sciencedirect.com/science/article/pii/S0306452216001433 +

      +

      + Frontiers in Psychiatry Article Alert Friday, 18 March 2016

      +

      + Cortico-Cerebellar Connectivity in Autism Spectrum Disorder: What Do We Know So Far?
      + Alessandro Crippa, Giuseppe Del Vecchio, Silvia Busti Ceccarelli, Maria Nobile, Filippo Arrigoni, and Paolo Brambilla
      + - http://journal.frontiersin.org/article/10.3389/fpsyt.2016.00020/full +

      +

      + The Journal of Physiology Accepted Articles

      +

      + Does modulation of the endocannabinoid system have potential therapeutic utility in cerebellar ataxia?
      + G.J. Stephens
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271106/abstract +

      +

      + Neuron Volume 89, Issue 6, Pages 1121-1356, 16 March 2016

      +

      + 10) Cerebellar Transcriptome Profiles of ATXN1 Transgenic Mice Reveal SCA1 Disease Progression and Protection Pathways
      + Melissa Ingram, Emily A.L. Wozniak, Lisa Duvick, Rendong Yang, Paul Bergmann, Robert Carson, Brennon O’Callaghan, Huda Y. Zoghbi, Christine Henzler, Harry T. Orr
      + - http://www.sciencedirect.com/science/article/pii/S0896627316001045 +

      +

      + Neuroscience Letters Volume 617, Pages 1-288, 23 March 2016

      +

      + 27) The role of the cerebellum in motor imagery
      + Bülent Cengiz, H. Evren Boran
      + - http://www.sciencedirect.com/science/article/pii/S0304394016300441 +

      +

      + Frontiers in Neuroscience Article Alert Monday, 14 March 2016

      +

      + Editorial: The Olivo-Cerebellar System
      + Egidio D'Angelo, Elisa Galliano, and Chris I. De Zeeuw
      + - http://journal.frontiersin.org/article/10.3389/fncir.2015.00066/full +

      +

      + Experimental Brain Research. Volume 234 Number 4

      +

      + Cerebellum as a forward but not inverse model in visuomotor adaptation task: a tDCS-based and modeling study
      + Fatemeh Yavari, Shirin Mahdavi, Farzad Towhidkhah, Mohammad-Ali Ahmadi-Pajouh, Hamed Ekhtiari & Mohammad Darainy
      + - http://link.springer.com/article/10.1007/s00221-015-4523-2 +

      +

      + New Articles in PLOS ONE March 05, 2016 to March 11, 2016

      +

      + The cerebro-cerebellum: Could it be loci of forward models?
      + Takahiro Ishikawa, Saeka Tomatsu, Jun Izawa, Shinji Kakei
      + - http://www.sciencedirect.com/science/article/pii/S016801021500293X +

      +

      + New Articles in PLOS ONE March 05, 2016 to March 11, 2016

      +

      + Altered Cerebellar White Matter Integrity in Patients with Mild Traumatic Brain Injury in the Acute Stage
      + Zhongqiu Wang, Wenzhong Wu, Yongkang Liu, Tianyao Wang, Xiao Chen, Jianhua Zhang, Guoxing Zhou, Rong Chen
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0151489 +

      +

      + Cerebral Cortex Table of Contents Alert Vol. 26, No. 4 April 2016

      +

      + Enhancing Consolidation of a New Temporal Motor Skill by Cerebellar Noninvasive Stimulation
      + Maximilian J. Wessel, Máximo Zimerman, Jan E. Timmermann, Kirstin F. Heise, Christian Gerloff, and Friedhelm C. Hummel
      + - http://cercor.oxfordjournals.org/content/26/4/1660.abstract +

      +

      + Frontiers in Neuroscience Article Alert Wednesday, 9 March 2016

      +

      + Gray Matter Volume and Resting-State Functional Connectivity of the Motor Cortex-Cerebellum Network Reflect the Individual Variation in Masticatory Performance in Healthy Elderly People
      + Chia-Shu Lin, Shih-Yun Wu, Ching-Yi Wu, and Hsien-Wei Ko
      + - http://journal.frontiersin.org/article/10.3389/fnagi.2015.00247/full +

      +

      + The Cerebellum. Volume 15 Number 2

      +

      + - http://link.springer.com/journal/12311/15/2 +

      +

      + New Articles in PLOS ONE February 27, 2016 to March 04, 2016

      +

      + Differential Modulation of GABAA Receptors Underlies Postsynaptic Depolarization- and Purinoceptor-Mediated Enhancement of Cerebellar Inhibitory Transmission: A Non-Stationary Fluctuation Analysis Study
      + Yumie Ono, Fumihito Saitow, Shiro Konishi
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0150636 +

      +

      + Brain Research Volume 1635, 15 March 2016, Pages 113–120

      +

      + Localization of Neurensin1 in cerebellar Purkinje cells of the developing chick and its possible function in dendrite formation
      + Keiko Kiyonaga-Endou, Manabu Oshima, Kazuya Sugimoto, Mervyn Thomas, Shigeru Taketani, Masasuke Araki
      + - http://www.sciencedirect.com/science/article/pii/S0006899316300154 +

      +

      2016 February

      +

      + The Journal of Physiology Accepted Articles

      +

      + Time-invariant feed-forward inhibition of Purkinje cells in the cerebellar cortex in vivo
      + Antonin Blot, Camille de Solages, Srdjan Ostojic, German Szapiro, Vincent Hakim and Clément Léna
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271518/abstract +

      +

      + A new issue of Journal of Neurophysiology February 1, 2016; Vol. 115, No. 2

      +

      + Neuronal Diversity: Categorizing Types of Neurons: Classifying neuronal subclasses of the cerebellum through constellation pharmacology
      + Kigen J. Curtice, Lee S. Leavitt, Kevin Chase, Shrinivasan Raghuraman, Martin P. Horvath, Baldomero M. Olivera, and Russell W. Teichert
      + - http://jn.physiology.org/content/115/2/1031.abstract +

      +

      + European Journal of Neuroscience Accepted Articles

      +

      + Cerebellar brain inhibition in the target and surround muscles during voluntary tonic activation
      + Pattamon Panyakaew, Hyun Joo Cho, Prachaya Srivanitchapoom, Traian Popa, Tianxia Wu and Mark Hallett
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.13211/abstract +

      +

      + New Articles in PLOS ONE February 13, 2016 to February 19, 2016

      +

      + Coenzyme Q10 Levels Are Decreased in the Cerebellum of Multiple-System Atrophy Patients
      + Lucia V. Schottlaender, Conceição Bettencourt, Aoife P. Kiely, Annapurna Chalasani, Viruna Neergheen, Janice L. Holton, Iain Hargreaves, Henry Houlden
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0149557 +

      +

      + Neural Networks Volume 75, Pages 1-196, March 2016

      +

      + 2) A theory of cerebellar cortex and adaptive motor control based on two types of universal function approximation capability
      + Original Research Article, Pages 173-196
      + Masahiko Fujita
      + - http://www.sciencedirect.com/science/article/pii/S0893608015002816 +

      +

      + Frontiers in Neuroscience Article Alert Thursday, 18 February 2016

      +

      + Cognitive Collaborations: Bidirectional Functional Connectivity Between the Cerebellum and the Hippocampus
      + Wilson Yu and Esther Krook-Magnuson
      + - http://journal.frontiersin.org/article/10.3389/fnsys.2015.00177/full +

      +

      + NeuroImage Volume 128, Pages 1-432, March 2016

      +

      + 24) Upregulation of cortico-cerebellar functional connectivity after motor learning
      + Original Research Article, Pages 252-263
      + Saeid Mehrkanoon, Tjeerd W. Boonstra, Michael Breakspear, Mark Hinder, Jeffery J. Summers
      + - http://www.sciencedirect.com/science/article/pii/S1053811915011659 +

      +

      + The Journal of Neuroscience, 17 February 2016, 36(7)

      +

      + Amygdala Modulation of Cerebellar Learning
      + Sean J. Farley, Jason J. Radley, and John H. Freeman
      + The Journal of Neuroscience, 17 February 2016, 36(7):2190-2201;
      + - http://www.jneurosci.org/content/36/7/2190.abstract +

      +

      + The Journal of Physiology Volume 594, Issue 4 Pages 799 - 1101, 15 February 2016

      +

      + Determinants of rebound burst responses in rat cerebellar nuclear neurons to physiological stimuli (pages 985–1003)
      + Steven Dykstra, Jordan D. T. Engbers, Theodore M. Bartoletti and Ray W. Turner
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271894/abstract +

      +

      + NeuroImage Volume 127, Pages 1-512, 15 February 2016

      +

      + 38) Automated cerebellar lobule segmentation with application to cerebellar structural analysis in cerebellar disease
      + Original Research Article, Pages 435-444
      + Zhen Yang, Chuyang Ye, John A. Bogovic, Aaron Carass, Bruno M. Jedynak, Sarah H. Ying, Jerry L. Prince
      + - http://www.sciencedirect.com/science/article/pii/S1053811915008472 +

      +

      + New Articles in PLOS ONE February 06, 2016 to February 12, 2016

      +

      + UBA5 Mutations Cause a New Form of Autosomal Recessive Cerebellar Ataxia
      + Ranhui Duan, Yuting Shi, Li Yu, Gehan Zhang, Jia Li, Yunting Lin, Jifeng Guo, Junling Wang, Lu Shen, Hong Jiang, Guanghui Wang, Beisha Tang
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0149039 +

      +

      + Neuron Volume 89, Issue 2, Pages 237-422, 20 January 2016

      +

      + 20) Excitatory Cerebellar Nucleocortical Circuit Provides Internal Amplification during Associative Conditioning
      + Original Research Article, Pages 645-657
      + Zhenyu Gao, Martina Proietti-Onori, Zhanmin Lin, Michiel M. ten Brinke, Henk-Jan Boele, Jan-Willem Potters, Tom J.H. Ruigrok, Freek E. Hoebeek, Chris I. De Zeeuw
      + - http://www.sciencedirect.com/science/article/pii/S089662731600009X +

      +

      + New Articles in PLOS ONE January 23, 2016 to January 29, 2016

      +

      + Reference Charts for Fetal Cerebellar Vermis Height: A Prospective Cross-Sectional Study of 10605 Fetuses
      + Pietro Cignini, Maurizio Giorlandino, Pierpaolo Brutti, Lucia Mangiafico, Alessia Aloisi, Claudio Giorlandino
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0147528 +

      +

      2016 January

      +

      + The Journal of Physiology Accepted Articles

      +

      + Cerebellar ataxias: β-III spectrin’s interactions suggest common pathogenic pathways
      + Emma Perkins, Daumante Suminaite and Mandy Jackson
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271195/abstract +

      +

      + New Articles in PLOS Computational Biology Published January 22, 2016 to January 28, 2016

      +

      + A Computational Model for the AMPA Receptor Phosphorylation Master Switch Regulating Cerebellar Long-Term Depression
      + Andrew R. Gallimore, A. Radu Aricescu, Michisuke Yuzaki, Radu Calinescu
      + - http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1004664 +

      +

      + A new issue of Journal of Neurophysiology January 1, 2016; Vol. 115, No. 1

      +

      + Presynaptic GluN2D receptors detect glutamate spillover and regulate cerebellar GABA release
      + Christophe J. Dubois, Philippe M. Lachamp, Lu Sun, Masayoshi Mishina, and Siqiong June Liu
      + - http://jn.physiology.org/content/115/1/271.abstract +

      +

      + Information processing in the hemisphere of the cerebellar cortex for control of wrist movement
      + Saeka Tomatsu, Takahiro Ishikawa, Yoshiaki Tsunoda, Jongho Lee, Donna S. Hoffman, and Shinji Kakei
      + - http://jn.physiology.org/content/115/1/255.abstract +

      +

      + The Cerebellum. Volume 15 Number 1

      +

      + http://link.springer.com/journal/12311/15/1 +

      +

      + New Articles in PLOS ONE January 16, 2016 to January 22, 2016

      +

      + The Subcellular Dynamics of the Gs-Linked Receptor GPR3 Contribute to the Local Activation of PKA in Cerebellar Granular Neurons
      + Tatsuhiro Miyagi, Shigeru Tanaka, Izumi Hide, Toshihiko Shirafuji, Norio Sakai
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0147466 +

      +

      + Neuron Volume 88, Issue 2, Pages 237-434, 21 October 2015

      +

      + 11) Role of Tet1/3 Genes and Chromatin Remodeling Genes in Cerebellar Circuit Formation
      + Original Research Article, Pages 100-112
      + Xiaodong Zhu, David Girardo, Eve-Ellen Govek, Keisha John, Marian Mellén, Pablo Tamayo, Jill P. Mesirov, Mary E. Hatten
      + - http://www.sciencedirect.com/science/article/pii/S0896627315010363 +

      +

      + The Journal of Physiology Accepted Articles

      +

      + Are Type 1 metabotropic glutamate receptors a viable therapeutic target for the treatment of cerebellar ataxia?
      + Emmet M. Power, Natalya A. English and Ruth M. Empson
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271153/abstract +

      +

      + Neuron Volume 89, Issue 1, Pages 1-236, 6 January 2016

      +

      + 11) Role of Tet1/3 Genes and Chromatin Remodeling Genes in Cerebellar Circuit Formation
      + Original Research Article, Pages 100-112
      + Xiaodong Zhu, David Girardo, Eve-Ellen Govek, Keisha John, Marian Mellén, Pablo Tamayo, Jill P. Mesirov, Mary E. Hatten
      + - http://www.sciencedirect.com/science/article/pii/S0896627315010363 +

      +

      2015 December

      +

      + Neuroscience Letters Volume 610, Pages 1-228, 1 January 2016

      +

      + 14) Anatomical and functional relationships between deep cerebellar nuclei and cerebellar cortical Crus II in vivo in mice
      + Original Research Article, Pages 73-78
      + Nan Ding, Hua Jin, Bin-Bin Zhang, Ao Guo, Jin-Di Shi, Jun-Yang Feng, Jia Li, Xuan-Xi Shen, Yu Shi, De-Lai Qiu, Chun-Ping Chu
      + - http://www.sciencedirect.com/science/article/pii/S0304394015302275 +

      +

      + 29) Altered cerebellar-amygdala connectivity in violent offenders: A resting-state fMRI study
      + Original Research Article, Pages 160-164
      + Verena Leutgeb, Albert Wabnegger, Mario Leitner, Thomas Zussner, Wilfried Scharmüller, Doris Klug, Anne Schienle
      + - http://www.sciencedirect.com/science/article/pii/S0304394015302263 +

      +

      + 35) Ginsenoside Rg1 prevents cerebral and cerebellar injury induced by obstructive jaundice in rats via inducing expression of TIPE-2
      + Original Research Article, Pages 193-199
      + Tingting Zhou, Guo Zu, Lu Zhou, Ningwei Che, Jing Guo, Zhanhua Liang
      + - http://www.sciencedirect.com/science/article/pii/S0304394015302524 +

      +

      + Proceedings of the National Academy of Sciences 15 December 2015; Vol. 112, No. 50

      +

      + Numb deficiency in cerebellar Purkinje cells impairs synaptic expression of metabotropic glutamate receptor and motor coordination
      + Liang Zhou, Dong Yang, De-Juan Wang, Ya-Jun Xie, Jia-Huan Zhou, Lin Zhou, Hao Huang, Shuo Han, Chong-Yu Shao, Hua-Shun Li, J. Julius Zhu, Meng-Sheng Qiu, Chris I. De Zeeuw, and Ying Shen
      + - http://www.pnas.org/content/112/50/15474.abstract.html +

      +

      + The Journal of Physiology Accepted Articles

      +

      + Determinants of rebound burst responses in rat cerebellar nuclear neurons to physiological stimuli
      + Steven Dykstra, Jordan D. T. Engbers, Theodore M. Bartoletti and Ray W. Turner
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP271894/abstract +

      +

      + Brain Research Volume 1627, Pages 1-242, 19 November 2015

      +

      + 5) Circadian rhythms of clock gene expression in the cerebellum of serotonin-deficient Pet-1 knockout mice
      + Original Research Article,
      + Pages 10-17
      + Erin V. Paulus, Eric M. Mintz
      + - http://www.sciencedirect.com/science/article/pii/S000689931500815X +

      +

      + New Articles in PLOS Biology Published December 02, 2015 to December 08, 2015

      +

      + Motor Learning Unfolds over Different Timescales in Distinct Neural Systems
      + Janelle Weaver
      + - http://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.1002313 +

      +

      + Neuropharmacology Volume 101, Pages 1-590, February 2016

      +

      + 41) The 5-HT7 receptor triggers cerebellar long-term synaptic depression via PKC-MAPK
      + Original Research Article, Pages 426-438
      + Pellegrino Lippiello, Eriola Hoxha, Luisa Speranza, Floriana Volpicelli, Angela Ferraro, Marcello Leopoldo, Enza Lacivita, Carla Perrone-Capano, Filippo Tempia, Maria Concetta Miniaci
      + - http://www.sciencedirect.com/science/article/pii/S0028390815301428 +

      +

      + Brain Research Volume 1627, Pages 1-242, 19 November 2015

      +

      + 45) Suppressed expression of cystathionine β-synthase and smaller cerebellum in Wistar Kyoto rats
      + Original Research Article, Pages 208-213
      + Mao Nagasawa, Hiromi Ikeda, Takahiro Kawase, Ayaka Iwamoto, Shinobu Yasuo, Mitsuiro Furuse
      + - http://www.sciencedirect.com/science/article/pii/S0006899315005879 +

      +

      + 10) Reduced serine racemase expression in aging rat cerebellum is associated with oxidative DNA stress and hypermethylation in the promoter
      + Original Research Article, Pages 221-230
      + He Zhang, Xiu-Li Kuang, Yuhua Chang, Jinfang Lu, Haiyan Jiang, Shengzhou Wu
      + - http://www.sciencedirect.com/science/article/pii/S0006899315007969 +

      +

      + Brain Research Volume 1629, Pages 1-360, 10 December 2015

      +

      + 10) Reduced serine racemase expression in aging rat cerebellum is associated with oxidative DNA stress and hypermethylation in the promoter
      + Original Research Article, Pages 221-230
      + He Zhang, Xiu-Li Kuang, Yuhua Chang, Jinfang Lu, Haiyan Jiang, Shengzhou Wu
      + - http://www.sciencedirect.com/science/article/pii/S0006899315007969 +

      +

      + 29) Protective effect of histamine microinjected into cerebellar fastigial nucleus on stress gastric mucosal damage in rats
      + Original Research Article, Pages 351-360
      + Xiao Qiao, Jun Yang, Su-Juan Fei, Jin-Zhou Zhu, Sheng-Ping Zhu, Zhang-Bo Liu, Ting-Ting Li, Jian-Fu Zhang
      + - http://www.sciencedirect.com/science/article/pii/S0006899315007519 +

      +

      + New Articles in PLOS Computational Biology Published November 27, 2015 to December 03, 2015

      +

      + Cerebellar Nuclear Neurons Use Time and Rate Coding to Transmit Purkinje Neuron Pauses
      + Shyam Kumar Sudhakar, Benjamin Torben-Nielsen, Erik De Schutter
      + - http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1004641 +

      +

      + Trends in Neurosciences Volume 38, Issue 11, Pages 669-750, November 2015

      +

      + 5) Controlling Cerebellar Output to Treat Refractory Epilepsy
      + Review Article, Pages 787-799
      + Lieke Kros, Oscar H.J. Eelkman Rooda, Chris I. De Zeeuw, Freek E. Hoebeek
      + - http://www.sciencedirect.com/science/article/pii/S016622361500226X +

      +

      + Neuroscience Letters Volume 609, Pages 1-240, 16 November 2015

      +

      + 5) Propofol effects on cerebellar long-term depression
      + Original Research Article, Pages 18-22
      + Kwan Young Lee, Young Im Kim, Se Hoon Kim, Hyung Seo Park, Youn Joon Park, Myung Sook Ha, Yunju Jin, Dong Kwan Kim
      + - http://www.sciencedirect.com/science/article/pii/S0304394015301634 +

      +

      + 7) Abnormally increased surface expression of AMPA receptors in the cerebellum, cortex and striatum of Cln3−/− mice
      + Original Research Article,
      + Pages 29-34
      + Attila D. Kovács, Caitlin Hof, David A. Pearce
      + - http://www.sciencedirect.com/science/article/pii/S0304394015301385 +

      +

      + The Journal of Neuroscience, 2 December 2015, 35(48)

      +

      + Visualization of Ca2+ Filling Mechanisms upon Synaptic Inputs in the Endoplasmic Reticulum of Cerebellar Purkinje Cells
      + Yohei Okubo, Junji Suzuki, Kazunori Kanemaru, Naotoshi Nakamura, Tatsuo Shibata, and Masamitsu Iino
      + - http://www.jneurosci.org/content/35/48/15837.abstract +

      +

      2015 November

      +

      + Neuroscience Volume 309, Pages 1-280, 19 November 2015

      +

      + 59) Spontaneous malformations of the cerebellar vermis: Prevalence, inheritance, and relationship to lobule/fissure organization in the C57BL/6 lineage
      + Original Research Article,
      + Pages 242-251
      + S.E. Van Dine, N.Y. Siu, A. Toia, J.A. Cuoco, A.J. Betz, V.J. Bolivar, G. Torres, R.L. Ramos
      + - http://www.sciencedirect.com/science/article/pii/S0306452215008441 +

      +

      + Biological Cybernetics. Volume 109 Number 6

      +

      + Cerebellum-inspired neural network solution of the inverse kinematics problem (Open Access)
      + Mitra Asadi-Eydivand, Mohammad Mehdi Ebadzadeh, Mehran Solati-Hashjin, Christian Darlot & Noor Azuan Abu Osman
      + - http://link.springer.com/article/10.1007/s00422-015-0661-7 +

      +

      + NATURE NEUROSCIENCE December 2015 Volume 18 Number 12, pp 1699 - 1862

      +

      + Climbing fibers encode a temporal-difference prediction error during cerebellar learning in mice pp1798 - 1803
      + Shogo Ohmae and Javier F Medina
      + - http://www.nature.com/neuro/journal/v18/n12/full/nn.4167.html +

      +

      + A new issue of Journal of Neurophysiology October 1, 2015; Vol. 114, No. 4

      +

      + Modulation of cerebello-cerebral resting state networks by site-specific stimulation
      + Anuj Rastogi, Ayda Ghahremani, and Robin Cash
      + - http://jn.physiology.org/content/114/4/2084.abstract +

      +

      + Modulation of error-sensitivity during a prism adaptation task in people with cerebellar degeneration
      + Ritsuko Hanajima, Reza Shadmehr, Shinya Ohminami, Ryosuke Tsutsumi, Yuichiro Shirota, Takahiro Shimizu, Nobuyuki Tanaka, Yasuo Terao, Shoji Tsuji, Yoshikazu Ugawa, Motoaki Uchimura, Masato Inoue, and Shigeru Kitazawa
      + - http://jn.physiology.org/content/114/4/2460.abstract +

      +

      + The Journal of Neuroscience, 18 November 2015, 35(46)

      +

      + Functional and Physical Interaction of Diacylglycerol Kinase ζ with Protein Kinase Cα Is Required for Cerebellar Long-Term Depression
      + Dongwon Lee, Yukio Yamamoto, Eunjoon Kim, and Keiko Tanaka-Yamamoto
      + - http://www.jneurosci.org/content/35/46/15453.abstract +

      +

      + Frontiers in Neuroscience Article Alert Tuesday, 17 November 2015

      +

      + Deposition pattern and subcellular distribution of disease-associated prion protein in cerebellar organotypic slice cultures infected with scrapie
      + Hanna Wolf, Andre Hossinger, Andrea Fehlinger, Sven Buettner, Valerie Sim, Debbie McKenzie, and Ina Maja Vorberg
      + - http://journal.frontiersin.org/article/10.3389/fnins.2015.00410/full +

      +

      + Cerebro-cerebellar circuits in autism spectrum disorder
      + Anila M. D’Mello and Catherine J. Stoodley
      + - http://journal.frontiersin.org/article/10.3389/fnins.2015.00408/full +

      +

      + Autism spectrum disorders and neuropathology of the cerebellum
      + David R Hampson and Gene J Blatt
      + - http://journal.frontiersin.org/article/10.3389/fnins.2015.00420/full +

      +

      + New Articles in PLOS ONE November 07, 2015 to November 13, 2015

      +

      + Anoctamin Calcium-Activated Chloride Channels May Modulate Inhibitory Transmission in the Cerebellar Cortex
      + Weiping Zhang, Steffen Schmelzeisen, Daniel Parthier, Stephan Frings, Frank Möhrlen
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0142160 +

      +

      + NeuroImage Volume 124, Part B, Pages 1065-1262, 1 January 2016

      +

      + 26) Functional connectivity between the cerebrum and cerebellum in social cognition: A multi-study analysis
      + Original Research Article, Pages 248-255
      + Frank Van Overwalle, Peter Mariën
      + - http://www.sciencedirect.com/science/article/pii/S105381191500796X +

      +

      + 56) Differential motor and prefrontal cerebello-cortical network development: Evidence from multimodal neuroimaging
      + Original Research Article, Pages 591-601
      + Jessica A. Bernard, Joseph M. Orr, Vijay A. Mittal
      + - http://www.sciencedirect.com/science/article/pii/S1053811915008289 +

      +

      + 68) A probabilistic atlas of the cerebellar white matter
      + Original Research Article, Pages 724-732
      + K.M. van Baarsen, M. Kleinnijenhuis, S. Jbabdi, S.N. Sotiropoulos, J.A. Grotenhuis, A.M. van Cappellen van Walsum
      + - http://www.sciencedirect.com/science/article/pii/S1053811915008113 +

      +

      + The Journal of Physiology Volume 593, Issue 22 Pages 4813 - 5024, 15 November 2015

      +

      + High-frequency focal repetitive cerebellar stimulation induces prolonged increases in human pharyngeal motor cortex excitability (pages 4963–4977)
      + Dipesh H. Vasant, Emilia Michou, Satish Mistry, John C Rothwell and Shaheen Hamdy
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP270817/abstract +

      +

      + New Articles in PLOS ONE October 31, 2015 to November 06, 2015

      +

      + Theta Burst Stimulation of the Cerebellum Modifies the TMS-Evoked N100 Potential, a Marker of GABA Inhibition
      + Allanah Harrington, Graeme David Hammond-Tooke
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0141284 +

      +

      + The Cerebellum. Volume 14 Number 6

      +

      + - http://link.springer.com/journal/12311/14/6 +

      +

      + Neuroscience Letters Volume 608, Pages 1-70, 3 November 2015

      +

      + 7) Abnormally increased surface expression of AMPA receptors in the cerebellum, cortex and striatum of Cln3−/− mice
      + Original Research Article, Pages 29-34
      + Attila D. Kovács, Caitlin Hof, David A. Pearce
      + - http://www.sciencedirect.com/science/article/pii/S0304394015301385 +

      +

      + Brain Research Volume 1627, Pages 1-242, 19 November 2015

      +

      + 45) Suppressed expression of cystathionine f-synthase and smaller cerebellum in Wistar Kyoto rats
      + Original Research Article, Pages 208-213
      + Mao Nagasawa, Hiromi Ikeda, Takahiro Kawase, Ayaka Iwamoto, Shinobu Yasuo, Mitsuiro Furuse
      + - http://www.sciencedirect.com/science/article/pii/S0006899315005879 +

      +

      + Neuroscience Volume 309, Pages 1-280, 19 November 2015

      +

      + 59) Spontaneous malformations of the cerebellar vermis: Prevalence, inheritance, and relationship to lobule/fissure organization in the C57BL/6 lineage
      + Original Research Article, Pages 242-251
      + S.E. Van Dine, N.Y. Siu, A. Toia, J.A. Cuoco, A.J. Betz, V.J. Bolivar, G. Torres, R.L. Ramos
      + - http://www.sciencedirect.com/science/article/pii/S0306452215008441 +

      +

      + Neuroscience Letters Volume 607, Pages 1-124, 21 October 2015

      +

      + 7) Abnormally increased surface expression of AMPA receptors in the cerebellum, cortex and striatum of Cln3−/− mice
      + Original Research Article, Pages 29-34
      + Attila D. Kovács, Caitlin Hof, David A. Pearce
      + - http://www.sciencedirect.com/science/article/pii/S0304394015301385 +

      +

      2015 October

      +

      + Brain Research Volume 1624, Pages 1-544, 22 October 2015

      +

      + 45) Suppressed expression of cystathionine β-synthase and smaller cerebellum in Wistar Kyoto rats
      + Original Research Article, Pages 208-213
      + Mao Nagasawa, Hiromi Ikeda, Takahiro Kawase, Ayaka Iwamoto, Shinobu Yasuo, Mitsuiro Furuse
      + - http://www.sciencedirect.com/science/article/pii/S0006899315005879 +

      +

      + New Articles in PLOS ONE October 17, 2015 to October 23, 2015

      +

      + Periconception Maternal Folate Status and Human Embryonic Cerebellum Growth Trajectories: The Rotterdam Predict Study
      + Irene V. Koning, Irene A. L. Groenenberg, Anniek W. Gotink, Sten P. Willemsen, Manon Gijtenbeek, Jeroen Dudink, Attie T. J. I. Go, Irwin K. M. Reiss, Eric A. P. Steegers, Régine P. M. Steegers-Theunissen
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0141089 +

      +

      + NeuroImage Volume 121, Pages 1-262, 1 November 2015

      +

      + 7) Striatal–cerebellar networks mediate consolidation in a motor sequence learning task: An fMRI study using dynamic causal modelling
      + Original Research Article, Pages 52-64
      + Elinor Tzvi, Anne Stoldt, Karsten Witt, Ulrike M. Krämer
      + - http://www.sciencedirect.com/science/article/pii/S1053811915006977 +

      +

      + The Cerebellum. Volume 14 Number 5

      +

      + - http://link.springer.com/journal/12311/14/5 +

      +

      + New Articles in PLOS Computational Biology Published October 16, 2015 to October 22, 2015

      +

      + At the Edge of Chaos: How Cerebellar Granular Layer Network Dynamics Can Provide the Basis for Temporal Filters
      + Christian Rössert, Paul Dean, John Porrill
      + - http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1004515 +

      +

      + New Articles in PLOS Genetics Published October 16, 2015 to October 22, 2015

      +

      + Alkaline Ceramidase 3 Deficiency Results in Purkinje Cell Degeneration and Cerebellar Ataxia Due to Dyshomeostasis of Sphingolipids in the Brain
      + Kai Wang, Ruijuan Xu, Jennifer Schrandt, Prithvi Shah, Yong Z. Gong, Chet Preston, Louis Wang, Jae Kyo Yi, Chih-Li Lin, Wei Sun, Demetri D. Spyropoulos, Soyoung Rhee, Mingsong Li, Jie Zhou, Shaoyu Ge, Guofeng Zhang, Ashley J. Snider, Yusuf A. Hannun, Lina M. Obeid, Cungui Mao
      + - http://journals.plos.org/plosgenetics/article?id=10.1371/journal.pgen.1005591 +

      +

      + Proceedings of the National Academy of Sciences 20 October 2015; Vol. 112, No. 42

      +

      + Control of cerebellar granule cell output by sensory-evoked Golgi cell inhibition (Open Access Article)
      + Ian Duguid, Tiago Branco, Paul Chadderton, Charlotte Arlt, Kate Powell, and Michael Häusser
      + - http://www.pnas.org/content/112/42/13099.abstract.html +

      +

      + NeuroImage Volume 121, Pages 1-262, 1 November 2015

      +

      + 7) Striatal–cerebellar networks mediate consolidation in a motor sequence learning task: An fMRI study using dynamic causal modelling
      + Original Research Article, Pages 52-64
      + - http://www.sciencedirect.com/science/article/pii/S1053811915006977 +

      +

      + Cerebral Cortex Table of Contents Alert Vol. 25, No. 11 November 2015

      +

      + Interaction Between Hippocampus and Cerebellum Crus I in Sequence-Based but not Place-Based Navigation
      + Kinga Iglói, Christian F. Doeller, Anne-Lise Paradis, Karim Benchenane, Alain Berthoz, Neil Burgess, and Laure Rondi-Reig
      + - https://cercor.oxfordjournals.org/content/25/11/4146.abstract +

      +

      + Neural Correlates of Animacy Attribution Include Neocerebellum in Healthy Adults
      + Allison Jack and Kevin A. Pelphrey
      + - https://cercor.oxfordjournals.org/content/25/11/4240.abstract +

      +

      + New Articles in PLOS Genetics Published October 09, 2015 to October 15, 2015

      +

      + Type IV Collagen Controls the Axogenesis of Cerebellar Granule Cells by Regulating Basement Membrane Integrity in Zebrafish
      + Miki Takeuchi, Shingo Yamaguchi, Shigenobu Yonemura, Kisa Kakiguchi, Yoshikatsu Sato, Tetsuya Higashiyama, Takashi Shimizu, Masahiko Hibi
      + - http://journals.plos.org/plosgenetics/article?id=10.1371/journal.pgen.1005587 +

      +

      + Nature contents: 15 October 2015

      +

      + Encoding of action by the Purkinje cells of the cerebellum
      + David J. Herzfeld, Yoshiko Kojima, Robijanto Soetedjo et al.
      + - http://www.nature.com/nature/journal/v526/n7573/full/nature15693.html +

      +

      + New Articles in PLOS ONE October 03, 2015 to October 09, 2015

      +

      + Sulf1 and Sulf2 Differentially Modulate Heparan Sulfate Proteoglycan Sulfation during Postnatal Cerebellum Development: Evidence for Neuroprotective and Neurite Outgrowth Promoting Functions
      + Ina Kalus, Susanne Rohn, Tania M. Puvirajesinghe, Scott E. Guimond, Pieter J. Eyckerman-Kölln, Gerdy ten Dam, Toin H. van Kuppevelt, Jeremy E. Turnbull, Thomas Dierks
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0139853 +

      +

      + Neuroscience Letters Volume 605, Pages 1-74, 25 September 2015

      +

      + 33) Cerebellar vermis contributes to the extinction of conditioned fear
      + Original Research Article, Pages 173-177
      + A. Utz, M. Thürling, T.M. Ernst, A. Hermann, R. Stark, O.T. Wolf, D. Timmann, C.J. Merz
      + - http://www.sciencedirect.com/science/article/pii/S030439401530046X +

      +

      2015 September

      +

      + A new issue of Journal of Neurophysiology September 1, 2015; Vol. 114, No. 3

      +

      + Adaptation and aftereffects of split-belt walking in cerebellar lesion patients
      + Wouter Hoogkamer, Sjoerd M. Bruijn, Stefan Sunaert, Stephan P. Swinnen, Frank Van Calenbergh, and Jacques Duysens
      + - http://jn.physiology.org/content/114/3/1693.abstract +

      +

      + Twitch-related and rhythmic activation of the developing cerebellar cortex
      + Greta Sokoloff, Alan M. Plumeau, Didhiti Mukherjee, and Mark S. Blumberg
      + - http://jn.physiology.org/content/114/3/1746.abstract +

      +

      + NATURE REVIEWS NEUROSCIENCE October 2015 Volume 16 Number 10

      +

      + Neurodegenerative disease: Downsizing neurons
      + - http://www.nature.com/nrn/journal/v16/n10/full/nrn4027.html +

      +

      + Neuroscience Volume 306, Pages 1-152, 15 October 2015

      +

      + 16) Dissociable cerebellar activity during spatial navigation and visual memory in bilateral vestibular failure
      + Original Research Article, Pages 257-267
      + N.M. Jandl, A. Sprenger, J.F. Wojak, M. Göttlich, T.F. Münte, U.M. Krämer, C. Helmchen
      + - http://www.sciencedirect.com/science/article/pii/S0306452215007198 +

      +

      + 1) Alcohol hangover induces mitochondrial dysfunction and free radical production in mouse cerebellum
      + Original Research Article, Pages 47-59
      + A.G. Karadayian, J. Bustamante, A. Czerniczyniec, P. Lombardi, R.A. Cutrera, S. Lores-Arnaiz
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006193 +

      +

      + 7) Differential cerebellar GABAAreceptor expression in mice with mutations in CaV 2.1 (P/Q-type) calcium channels
      + Original Research Article, Pages 198-208
      + S. Kaja, A.J. Payne, E.Ø. Nielsen, C.L. Thompson, A.M.J.M. van den Maagdenberg, P. Koulen, T.P. Snutch
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006582 +

      +

      + 11) Electron tomographic structure and protein composition of isolated rat cerebellar, hippocampal and cortical postsynaptic densities
      + Original Research Article, Pages 286-301
      + M.M. Farley, M.T. Swulius, M.N. Waxham
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006867 +

      +

      + 23) Reactive nitrogen species mediate oxidative stress and astrogliosis provoked byin vivoadministration of phytanic acid in cerebellum of adolescent rats: A potential contributing pathomechanism of cerebellar injury in peroxisomal disorders
      + Original Research Article, Pages 122-132
      + C.G. Borges, C.R. Canani, C.G. Fernandes, Â. Zanatta, B. Seminotti, C.A.J. Ribeiro, G. Leipnitz, C.R. Vargas, M. Wajner
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006429 +

      +

      + Frontiers Article Alert Friday, 11 September 2015

      +

      + Terra incognita—cerebellar contributions to neuropsychiatric and cognitive dysfunction in behavioral variant frontotemporal dementia
      + Rachel H Tan, Emma Devenney, Matthew C Kiernan, Glenda M Halliday, John R Hodges, and Michael Hornberger
      + - http://journal.frontiersin.org/article/10.3389/fnagi.2015.00121/full +

      +

      + Reappraisal of Bergmann glial cells as modulators of cerebellar circuit function
      + Chris I De Zeeuw and Tycho M. Hoogland
      + - http://journal.frontiersin.org/article/10.3389/fncel.2015.00246/full +

      +

      + Direct and indirect spino-cerebellar pathways: shared ideas but different functions in motor control
      + Juan Jiang, Eiman Azim, Carl-Fredrik Ekerot, and Bror Alstermark
      + - http://journal.frontiersin.org/article/10.3389/fncom.2015.00075/full +

      +

      + Brain Research Volume 1621, Pages 1-380, 24 September 2015

      +

      + 2) Selective transgene expression in cerebellar Purkinje cells and granule cells using adeno-associated viruses together with specific promoters
      + Original Research Article, Pages 1-16
      + Yoonhee Kim, Taegon Kim, Jun Kyu Rhee, Dongwon Lee, Keiko Tanaka-Yamamoto, Yukio Yamamoto
      + - http://www.sciencedirect.com/science/article/pii/S0006899315004011 +

      +

      + The Journal of Physiology Accepted Articles

      +

      + Ca2+ current facilitation determines short-term facilitation at inhibitory synapses between cerebellar Purkinje cells
      + Françoise Díaz-Rojas, Takeshi Sakaba and Shin-ya Kawaguchi
      + - http://onlinelibrary.wiley.com/doi/10.1113/JP270704/abstract +

      +

      + Neuroscience Letters Volume 603, Pages 1-94, 31 August 2015

      +

      + 33) Cerebellar vermis contributes to the extinction of conditioned fear
      + Original Research Article, Pages 173-177
      + A. Utz, M. Thürling, T.M. Ernst, A. Hermann, R. Stark, O.T. Wolf, D. Timmann, C.J. Merz
      + - http://www.sciencedirect.com/science/article/pii/S030439401530046X +

      +

      + NeuroReport October 21, 2015 - Volume 26 - Issue 15

      +

      + Propofol facilitates excitatory inputs of cerebellar Purkinje cells by depressing molecular layer interneuron activity during sensory information processing in vivo in mice
      + He, Yuan-Yuan; Jin, Ri; Jin, Wen-Zhe; Liu, Heng; Chu, Chun-Ping; Qiu, De-Lai
      + - http://journals.lww.com/neuroreport/Abstract/2015/10020/Propofol_facilitates_excitatory_inputs_of.7.aspx +

      +

      + The Journal of Neuroscience, 9 September 2015, 35(36)

      +

      + RORα Regulates Multiple Aspects of Dendrite Development in Cerebellar Purkinje Cells In Vivo
      + Yukari H. Takeo, Wataru Kakegawa, Eriko Miura, and Michisuke Yuzaki
      + - http://www.jneurosci.org/content/35/36/12518.abstract +

      +

      + Correction: Mark et al., Spinocerebellar Ataxia Type 6 Protein Aggregates Cause Deficits in Motor Learning and Cerebellar Plasticity
      + The Journal of Neuroscience, 9 September 2015, 35(36):12606-12607;
      + - http://www.jneurosci.org/content/35/36/12606 +

      +

      + Neuron Volume 87, Issue 4, Pages 673-908, 19 August 2015

      +

      + 11) Neuroligins Sculpt Cerebellar Purkinje-Cell Circuits by Differential Control of Distinct Classes of Synapses
      + Original Research Article, Pages 781-796
      + Bo Zhang, Lulu Y. Chen, Xinran Liu, Stephan Maxeiner, Sung-Jin Lee, Ozgun Gokce, Thomas C. Südhof
      + - http://www.sciencedirect.com/science/article/pii/S089662731500642X +

      +

      2015 August

      +

      + Neuroscience Volume 305, Pages 1-392, 1 October 2015

      +

      + 23) Reactive nitrogen species mediate oxidative stress and astrogliosis provoked byin vivoadministration of phytanic acid in cerebellum of adolescent rats: A potential contributing pathomechanism of cerebellar injury in peroxisomal disorders
      + Original Research Article, Pages 122-132
      + C.G. Borges, C.R. Canani, C.G. Fernandes, Â. Zanatta, B. Seminotti, C.A.J. Ribeiro, G. Leipnitz, C.R. Vargas, M. Wajner
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006429 +

      +

      + 11) Electron tomographic structure and protein composition of isolated rat cerebellar, hippocampal and cortical postsynaptic densities
      + Original Research Article, Pages 286-301
      + M.M. Farley, M.T. Swulius, M.N. Waxham
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006867 +

      +

      + 7) Differential cerebellar GABAAreceptor expression in mice with mutations in CaV 2.1 (P/Q-type) calcium channels
      + Original Research Article, Pages 198-208
      + S. Kaja, A.J. Payne, E.Ø. Nielsen, C.L. Thompson, A.M.J.M. van den Maagdenberg, P. Koulen, T.P. Snutch
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006582 +

      +

      + 1) Alcohol hangover induces mitochondrial dysfunction and free radical production in mouse cerebellum
      + Original Research Article, Pages 47-59
      + A.G. Karadayian, J. Bustamante, A. Czerniczyniec, P. Lombardi, R.A. Cutrera, S. Lores-Arnaiz
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006193 +

      +

      + 16) Dissociable cerebellar activity during spatial navigation and visual memory in bilateral vestibular failure
      + Original Research Article, Pages 257-267
      + N.M. Jandl, A. Sprenger, J.F. Wojak, M. Göttlich, T.F. Münte, U.M. Krämer, C. Helmchen
      + - http://www.sciencedirect.com/science/article/pii/S0306452215007198 +

      +

      + + NeuroReport September 30, 2015 - Volume 26 - Issue 14 pp: 803-881

      +

      + Clinical Neuroscience
      + Learning to live without the cerebellum
      + Arrigoni, Filippo; Romaniello, Romina; Nordio, Andrea; Gagliardi, Chiara; Borgatti, Renato
      + - http://journals.lww.com/neuroreport/Abstract/2015/10010/Learning_to_live_without_the_cerebellum.2.aspx +

      +

      + Cellular, Molecular and Developmental Neuroscience
      + Possible involvement of the cerebellum in motor-function impairment in progranulin-deficient mice
      + Matsuwaki, Takashi; Kobayashi, Akira; Mase, Kanade; Nakamura, Katsuyuki; Nakano, Shin-Ichi; Miyoshi, Takahiro; Yamanouchi, Keitaro; Nishihara, Masugi
      + - http://journals.lww.com/neuroreport/Abstract/2015/10010/Possible_involvement_of_the_cerebellum_in.13.aspx +

      +

      + + Brain Research Volume 1621, Pages 1-380, 24 September 2015

      +

      + 26) Cerebellar learning mechanisms
      + Review Article, Pages 260-269
      + John H. Freeman
      + - http://www.sciencedirect.com/science/article/pii/S0006899314013353 +

      +

      + 2) Selective transgene expression in cerebellar Purkinje cells and granule cells using adeno-associated viruses together with specific promoters
      + Original Research Article, Pages 1-16
      + Yoonhee Kim, Taegon Kim, Jun Kyu Rhee, Dongwon Lee, Keiko Tanaka-Yamamoto, Yukio Yamamoto
      + -http://www.sciencedirect.com/science/article/pii/S0006899315004011 +

      +

      + Frontiers Article Alert Wednesday, 26 August 2015

      +

      + Frontiers in Human Neuroscience
      + Differential Effects of Parietal and Cerebellar Stroke in Response to Object Location Perturbation
      + Trudy A Pelton, Alan M Wing, Dagmar Fraser, and Paulette Van Vliet
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2015.00293/full +

      +

      + NATURE NEUROSCIENCE September 2015 Volume 18 Number 9, pp 1191 - 1341

      +

      + Learning to expect the unexpected: rapid updating in primate cerebellum during voluntary self-motion pp1310 - 1317
      + Jessica X Brooks, Jerome Carriot and Kathleen E Cullen
      + - http://www.nature.com/neuro/journal/v18/n9/abs/nn.4077.html +

      +

      + Frontiers Article Alert Monday, 24 August 2015

      +

      + Frontiers in Cellular Neuroscience
      + Facial stimulation induces long-term depression at cerebellar molecular layer interneuron–Purkinje cell synapses in vivo in mice
      + De-Lai Qiu, Yan-Hua Bing, Mao-Cheng Wu, and Chun-Ping Chu
      + - http://journal.frontiersin.org/article/10.3389/fncel.2015.00214/full +

      +

      + Brain Research Volume 1620, Pages 1-188, 16 September 2015

      +

      + 2) Selective transgene expression in cerebellar Purkinje cells and granule cells using adeno-associated viruses together with specific promoters
      + Original Research Article, Pages 1-16
      + Yoonhee Kim, Taegon Kim, Jun Kyu Rhee, Dongwon Lee, Keiko Tanaka-Yamamoto, Yukio Yamamoto
      + - http://www.sciencedirect.com/science/article/pii/S0006899315004011 +

      +

      + Neuroscience Volume 304, Pages 1-378, 24 September 2015

      +

      + 1) Alcohol hangover induces mitochondrial dysfunction and free radical production in mouse cerebellum
      + Original Research Article, Pages 47-59
      + A.G. Karadayian, J. Bustamante, A. Czerniczyniec, P. Lombardi, R.A. Cutrera, S. Lores-Arnaiz
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006193 +

      +

      + 7) Differential cerebellar GABAAreceptor expression in mice with mutations in CaV 2.1 (P/Q-type) calcium channels
      + Original Research Article, Pages 198-208
      + S. Kaja, A.J. Payne, E.Ø. Nielsen, C.L. Thompson, A.M.J.M. van den Maagdenberg, P. Koulen, T.P. Snutch
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006582 +

      +

      + 11) Electron tomographic structure and protein composition of isolated rat cerebellar, hippocampal and cortical postsynaptic densities
      + Original Research Article, Pages 286-301
      + M.M. Farley, M.T. Swulius, M.N. Waxham
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006867 +

      +

      + 23) Reactive nitrogen species mediate oxidative stress and astrogliosis provoked byin vivoadministration of phytanic acid in cerebellum of adolescent rats: A potential contributing pathomechanism of cerebellar injury in peroxisomal disorders
      + Original Research Article, Pages 122-132
      + C.G. Borges, C.R. Canani, C.G. Fernandes, Â. Zanatta, B. Seminotti, C.A.J. Ribeiro, G. Leipnitz, C.R. Vargas, M. Wajner
      + - http://www.sciencedirect.com/science/article/pii/S0306452215006429 +

      +

      + Neuron Volume 87, Issue 3, Pages 463-672, 5 August 2015

      +

      + 11) Neuroligins Sculpt Cerebellar Purkinje-Cell Circuits by Differential Control of Distinct Classes of Synapses
      + Original Research Article, Pages 781-796
      + Bo Zhang, Lulu Y. Chen, Xinran Liu, Stephan Maxeiner, Sung-Jin Lee, Ozgun Gokce, Thomas C. Südhof
      + - http://www.sciencedirect.com/science/article/pii/S089662731500642X +

      +

      + New Articles in PLOS ONE August 10, 2015 to August 14, 2015

      +

      + Single Session Imaging of Cerebellum at 7 Tesla: Obtaining Structure and Function of Multiple Motor Subsystems in Individual Subjects
      + Melissa A. Batson, Natalia Petridou, Dennis W. J. Klomp, Maarten A. Frens, Sebastiaan F. W. Neggers
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0134933 +

      +

      + Population Genetics and New Insight into Range of CAG Repeats of Spinocerebellar Ataxia Type 3 in the Han Chinese Population
      + Shi-Rui Gan, Wang Ni, Yi Dong, Ning Wang, Zhi-Ying Wu
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0134405 +

      +

      + Frontiers Article Alert Wednesday, 12 August 2015

      +

      + Frontiers in Cellular Neuroscience
      + Parallel fiber to Purkinje cell synaptic impairment in a mouse model of spinocerebellar ataxia type 27
      + Filippo Tempia, Eriola Hoxha, Giulia Negro, Musaad A Alshammari, Tahani Alshammari, Neli Panova-Elektronova, and Fernanda Laezza
      + - http://journal.frontiersin.org/article/10.3389/fncel.2015.00205/full +

      +

      + The Journal of Neuroscience, 12 August 2015, 35(32)

      +

      + Selective Loss of Presynaptic Potassium Channel Clusters at the Cerebellar Basket Cell Terminal Pinceau in Adam11 Mutants Reveals Their Role in Ephaptic Control of Purkinje Cell Firing
      + Matthew J. Kole, Jing Qian, Marc P. Waase, Tara L. Klassen, Tim T. Chen, George J. Augustine, and Jeffrey L. Noebels
      + - http://www.jneurosci.org/content/35/32/11433.abstract +

      +

      + NeuroReport September 9, 2015 - Volume 26 - Issue 13 pp: 735-801

      +

      + Increased calcium in neurons in the cerebral cortex and cerebellum is not associated with cell loss in the mdx mouse model of Duchenne muscular dystrophy
      + Tuckett, Emma; Gosetti, Troy; Hayes, Alan; Rybalka, Emma; Verghese, Elizabeth
      + - http://journals.lww.com/neuroreport/Abstract/2015/09010/Increased_calcium_in_neurons_in_the_cerebral.9.aspx +

      +

      + The Journal of Neuroscience, 5 August 2015, 35(31)

      +

      + Inositol Hexakisphosphate Kinase-3 Regulates the Morphology and Synapse Formation of Cerebellar Purkinje Cells via Spectrin/Adducin
      + Chenglai Fu, Jing Xu, Ruo-Jing Li, Joshua A. Crawford, A. Basit Khan, Ting Martin Ma, Jiyoung Y. Cha, Adele M. Snowman, Mikhail V. Pletnikov, and Solomon H. Snyder
      + - http://www.jneurosci.org/content/35/31/11056.abstract +

      +

      + A new issue of Journal of Neurophysiology May 1, 2015; Vol. 113, No. 9

      +

      + Cerebellar control of saccade dynamics: contribution of the fastigial oculomotor region
      + Julie Quinet and Laurent Goffart
      + J Neurophysiol May 1, 2015 113:3323-3336; published ahead of print March 4, 2015, doi:10.1152/jn.01021.2014
      + - http://jn.physiology.org/content/113/9/3323.abstract +

      +

      + A new issue of Journal of Neurophysiology April 1, 2015; Vol. 113, No. 7

      +

      + Neuronal Diversity: Categorizing Types of Neurons: Differential Purkinje cell simple spike activity and pausing behavior related to cerebellar modules
      + Haibo Zhou, Kai Voges, Zhanmin Lin, Chiheng Ju, and Martijn Schonewille
      + J Neurophysiol April 1, 2015 113:2524-2536;
      + - http://jn.physiology.org/content/113/7/2524.abstract +

      +

      + New Articles in PLOS ONE July 27, 2015 to July 31, 2015

      +

      + Kruppel-Like Factor 4 Regulates Granule Cell Pax6 Expression and Cell Proliferation in Early Cerebellar Development
      + Peter Zhang, Thomas Ha, Matt Larouche, Douglas Swanson, Dan Goldowitz
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0134390 +

      +

      + Surface-Based Display of Volume-Averaged Cerebellar Imaging Data
      + Jörn Diedrichsen, Ewa Zotow
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0133402 +

      +

      + Current Opinion in Neurobiology Volume 33, Pages 1-196, August 2015

      +

      + 20) Cerebellar damage impairs internal predictions for sensory and motor function
      + Review Article, Pages 127-133
      + Amanda S Therrien, Amy J Bastian
      + - http://www.sciencedirect.com/science/article/pii/S0959438815000689 +

      +

      + 23) Regional functionality of the cerebellum
      + Review Article, Pages 150-155
      + Laurens Witter, Chris I De Zeeuw
      + - http://www.sciencedirect.com/science/article/pii/S0959438815000720 +

      +

      2015 July

      +

      + Brain Research Volume 1618, Pages 1-316, 27 August 2015

      +

      + 2) Endurance training upregulates the nitric oxide/soluble guanylyl cyclase/cyclic guanosine 3′,5′-monophosphate pathway in the striatum, midbrain and cerebellum of male rats
      + Original Research Article, Pages 29-40
      + Małgorzata Chalimoniuk, Stanisław J. Chrapusta, Nadežda Lukačova, Józef Langfort
      + - http://www.sciencedirect.com/science/article/pii/S0006899315004138 +

      +

      + eNeuro Alert to July 21

      +

      + Trace Eyeblink Conditioning in Mice Is Dependent upon the Dorsal Medial Prefrontal Cortex, Cerebellum, and Amygdala: Behavioral Characterization and Functional Circuitry
      + Jennifer J. Siegel, William Taylor, Richard Gray, Brian Kalmbach, Boris V. Zemelman, Niraj S. Desai, Daniel Johnston, Raymond A. Chitwood
      + - http://eneuro.org/content/2/4/ENEURO.0051-14.2015 +

      +

      + NeuroImage Volume 117, Pages 1-456, 15 August 2015

      +

      + 32) Meta-analytic connectivity and behavioral parcellation of the human cerebellum
      + Original Research Article, Pages 327-342
      + Michael C. Riedel, Kimberly L. Ray, Anthony S. Dick, Matthew T. Sutherland, Zachary Hernandez, P. Mickle Fox, Simon B. Eickhoff, Peter T. Fox, Angela R. Laird
      + - http://www.sciencedirect.com/science/article/pii/S1053811915003778 +

      +

      + New Articles in PLOS ONE July 13, 2015 to July 17, 2015

      +

      + The Role of Intermittent Hypoxia on the Proliferative Inhibition of Rat Cerebellar Astrocytes
      + Sheng-Chun Chiu, Yu-Jou Lin, Sung-Ying Huang, Chih-Feng Lien, Shee-Ping Chen, Cheng-Yoong Pang, Jian-Hong Lin, Kun-Ta Yang
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0132263 +

      +

      + A New Method for Functional Evaluation of Motor Commands in Patients with Cerebellar Ataxia
      + Jongho Lee, Yasuhiro Kagamihara, Shinji Kakei
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0132983 +

      +

      + The Predictor of Mortality within Six-Months in Patients with Spontaneous Cerebellar Hemorrhage: A Retrospective Study
      + Chih-Ya Chang, Ching-Yueh Lin, Liang-Cheng Chen, Chia-Hung Sun, Tsung-Ying Li, Tung-Han Tsai, Shin-Tsu Chang, Yung-Tsan Wu
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0132975 +

      +

      + Neuroscience Volume 301, Pages 1-590, 20 August 2015

      +

      + 15) Physical exercise improves brain cortex and cerebellum mitochondrial bioenergetics and alters apoptotic, dynamic and auto(mito)phagy markers
      + Original Research Article, Pages 480-495
      + I. Marques-Aleixo, E. Santos-Alves, M.M. Balca, D. Rizo-Roca, P.I. Moreira, P.J. Oliveira, J. Magalhaes, A. Ascensao
      + - http://www.sciencedirect.com/science/article/pii/S0306452215005680 +

      +

      + Frontiers Article Alert Friday, 10 July 2015

      +

      + Frontiers in Cellular Neuroscience
      + Alternative kynurenic acid synthesis routes studied in the rat cerebellum
      + Tonali Blanco Ayala, Rafael Lugo Huitrón, Liliana Aparicio Carmona, Daniela Ramirez Ortega, Dinora Gonzalez Esquivel, José Pedraza Chaverrí, Gonzalo Pérez de la Cruz, Camilo Rios, Robert Schwarcz, and Verónica Pérez de la Cruz
      + - http://journal.frontiersin.org/article/10.3389/fncel.2015.00178/full +

      +

      + Frontiers in Human Neuroscience
      + Anodal transcranial direct current stimulation to the cerebellum improves handwriting and cyclic drawing kinematics in focal hand dystonia
      + Lynley Bradnam, Lynton Graetz, Michelle Nadine McDonnell, and Michael Ridding
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2015.00286/full +

      +

      + The Cerebellum. Volume 14 Number 4

      +

      + - http://link.springer.com/journal/12311/14/4 +

      +

      + Frontiers Article Alert Monday, 6 July 2015

      +

      + Frontiers in Behavioral Neuroscience
      + Mutation-related differences in exploratory, spatial, and depressive-like behavior in pcd and Lurcher cerebellar mutant mice
      + Jan Tuma, Yaroslav Kolinko, Frantisek Vozeh, and Jan Cendelin
      + - http://journal.frontiersin.org/article/10.3389/fnbeh.2015.00116/full +

      +

      + Frontiers in Systems Neuroscience
      + “And the little brain said to the big brain…” Editorial: Distributed networks: new outlooks on cerebellar function
      + Thomas C Watson
      + - http://journal.frontiersin.org/article/10.3389/fnsys.2015.00078/full +

      +

      + Frontiers in Neuroanatomy
      + Cytoarchitectonic mapping of the human brain cerebellar nuclei in stereotaxic space and delineation of their co-activation patterns
      + Stefanie Tellmann, Sebastian Bludau, Simon B. Eickhoff, Hartmut Mohlberg, Martina Minnerop, and Katrin Amunts
      + - http://journal.frontiersin.org/article/10.3389/fnana.2015.00054/full +

      +

      + New Articles in PLOS ONE June 25, 2015 to July 01, 2015

      +

      + Successful Working Memory Processes and Cerebellum in an Elderly Sample: A Neuropsychological and fMRI Study
      + Elkin O. Luis, Gonzalo Arrondo, Marta Vidorreta, Martin Martínez, Francis Loayza, María A. Fernández-Seara, María A. Pastor
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0131536 +

      +

      + The Journal of Neuroscience, 1 July 2015, 35(26)

      +

      + α6-Containing GABAA Receptors Are the Principal Mediators of Inhibitory Synapse Strengthening by Insulin in Cerebellar Granule Cells
      + Michael V. Accardi, Patricia M.G.E. Brown, Loïs S. Miraucourt, Beverley A. Orser, and Derek Bowie
      + - http://www.jneurosci.org/content/35/26/9676.abstract +

      +

      2015 June

      +

      + Frontiers Article Alert Tuesday, 30 June 2015

      +

      + Frontiers in Behavioral Neuroscience
      + Cerebellar damage impairs the self-rating of regret feeling in a gambling task
      + Silvia Clausi, Giorgio Coricelli, Iolanda Pisotta, Enea Francesco Pavone, Marco Lauriola, Marco Molinari, and Maria Leggio
      + - http://journal.frontiersin.org/article/10.3389/fnbeh.2015.00113/full +

      +

      + Frontiers in Cellular Neuroscience
      + Integrated plasticity at inhibitory and excitatory synapses in the cerebellar circuit
      + Lisa Mapelli, Martina Pagani, Jesus Alcazar Garrido, and Egidio D‘Angelo
      + - http://journal.frontiersin.org/article/10.3389/fncel.2015.00169/full +

      +

      + Frontiers in Neural Circuits
      + A realistic bi-hemispheric model of the cerebellum uncovers the purpose of the abundant granule cells during motor control
      + Ruben Dario Pinzon Morales and Yutaka Hirata
      + - http://journal.frontiersin.org/article/10.3389/fncir.2015.00018/full +

      +

      + New Articles in PLOS ONE June 18, 2015 to June 24, 2015

      +

      + Dicer Is Required for Normal Cerebellar Development and to Restrain Medulloblastoma Formation
      + Frederique Zindy, Youngsoo Lee, Daisuke Kawauchi, Olivier Ayrault, Leila Ben Merzoug, Yang Li, Peter J. McKinnon, Martine F. Roussel
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0129642 +

      +

      + European Journal of Neuroscience Volume 41, Issue 12 Pages 1506 - 1634, June 2015

      +

      + Genetic mapping of ASIC4 and contrasting phenotype to ASIC1a in modulating innate fear and anxiety (pages 1553–1568)
      + Shing-Hong Lin, Ya-Chih Chien, Wei-Wei Chiang, Yan-Zhen Liu, Cheng-Chang Lien and Chih-Cheng Chen
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.12905/abstract +

      +

      + Proceedings of the National Academy of Sciences 16 June 2015; Vol. 112, No. 24

      +

      + Liver X receptors alpha and beta promote myelination and remyelination in the cerebellum
      + Delphine Meffre, Ghjuvan’Ghjacumu Shackleford, Mehdi Hichor, Victor Gorgievski, Eleni T. Tzavara, Amalia Trousson, Abdel M. Ghoumari, Cyrille Deboux, Brahim Nait Oumesmar, Philippe Liere, Michael Schumacher, Etienne-Emile Baulieu, Frédéric Charbonnier, Julien Grenier, and Charbel Massaad
      + - http://www.pnas.org/content/112/24/7587.abstract.html +

      +

      + NeuroImage Volume 116, Pages 1-256, 1 August 2015

      +

      + 20) Ageing shows a pattern of cerebellar degeneration analogous, but not equal, to that in patients suffering from cerebellar degenerative disease
      + Original Research Article, Pages 196-206
      + Thomas Hulst, Jos N. van der Geest, M. Thurling, S. Goericke, Maarten A. Frens, Dagmar Timmann, Opher Donchin
      + - http://www.sciencedirect.com/science/article/pii/S1053811915003201 +

      +

      + The Journal of Neuroscience, 10 June 2015, 35(23)

      +

      + Loss of the Neuron-Specific F-Box Protein FBXO41 Models an Ataxia-Like Phenotype in Mice with Neuronal Migration Defects and egeneration in the Cerebellum
      + Chaitali Mukherjee, Anna Holubowska, Nicola Schwedhelm-Domeyer, Miso Mitkovski, Shih-Ju Lee, Madhuvanthi Kannan, Annika Matz, Mayur Vadhvani, and Judith Stegmüller
      + - http://www.jneurosci.org/content/35/23/8701.abstract +

      +

      + Spinocerebellar Ataxia Type 6 Protein Aggregates Cause Deficits in Motor Learning and Cerebellar Plasticity
      + Melanie D. Mark, Martin Krause, Henk-Jan Boele, Wolfgang Kruse, Stefan Pollok, Thomas Kuner, Deniz Dalkara, Sebastiaan Koekkoek, Chris I. De Zeeuw, and Stefan Herlitze
      + - http://www.jneurosci.org/content/35/23/8882.abstract +

      +

      + Neuropharmacology Volume 95, Pages 1-510, August 2015

      +

      + 48) MAM-2201, a synthetic cannabinoid drug of abuse, suppresses the synaptic input to cerebellar Purkinje cells via activation of presynaptic CB1 receptors
      + Original Research Article, Pages 479-491
      + Tomohiko Irie, Ruri Kikura-Hanajiri, Makoto Usami, Nahoko Uchiyama, Yukihiro Goda, Yuko Sekino
      + - http://www.sciencedirect.com/science/article/pii/S0028390815000817 +

      +

      + Cerebral Cortex Table of Contents Alert Vol. 25, No. 7 July 2015

      +

      + Laterality Differences in Cerebellar–Motor Cortex Connectivity
      + John E. Schlerf, Joseph M. Galea, Danny Spampinato, and Pablo A. Celnik
      + - https://cercor.oxfordjournals.org/content/25/7/1827.abstract +

      +

      + Evidence for Cerebellar Contributions to Adaptive Plasticity in Speech Perception
      + Sara Guediche, Lori L. Holt, Patryk Laurent, Sung-Joo Lim, and Julie A. Fiez
      + - https://cercor.oxfordjournals.org/content/25/7/1867.abstract +

      +

      + Frontiers Article Alert Tuesday, 2 June 2015

      +

      + Frontiers in Human Neuroscience
      + Altered cerebellar connectivity in Parkinson’s patients ON and OFF L-DOPA medication
      + Sara B Festini, Jessica A Bernard, Youngbin Kwak, Scott Peltier, Nicolaas I Bohnen, Martijn L. T. M. Müller, Praveen Dayalu, and Rachael D Seidler
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2015.00214/full +

      +

      + Brain Research Volume 1612, Pages 1-152, 1 July 2015

      +

      + 5) Neural correlates of impaired emotional face recognition in cerebellar lesions
      + Original Research Article, Pages 1-12
      + Michael Adamaszek, Kenneth C Kirkby, Fedrico D׳Agata, Sebastian Olbrich, Sonke Langner, Christopher Steele, Bernhard Sehm, Stefan Busse, Christof Kessler, Alfons Hamm
      + - http://www.sciencedirect.com/science/article/pii/S0006899315000475 +

      +

      2015 May

      +

      + Brain Research Volume 1614, Pages 1-112, 21 July 2015

      +

      + 4) Developmental exposure to ethanol increases the neuronal vulnerability to oxygen–glucose deprivation in cerebellar granule cell cultures
      + Original Research Article, Pages 1-13
      + Diana Le Duc, Ana Spataru, Mihai Ceanga, Leon Zagrean, Torsten Schoneberg, Emil C. Toescu, Ana-Maria Zagrean
      + - http://www.sciencedirect.com/science/article/pii/S000689931500298X +

      +

      + 5) The effect of cyclic phosphatidic acid on the proliferation and differentiation of mouse cerebellar granule precursor cells during cerebellar development
      + Original Research Article, Pages 28-37
      + Misa Konakazawa, Mari Gotoh, Kimiko Murakami-Murofushi, Ayana Hamano, Yasunori Miyamoto
      + - http://www.sciencedirect.com/science/article/pii/S0006899315003029 +

      +

      + The Cerebellum. Volume 14 Number 3

      +

      + - http://link.springer.com/journal/12311/14/3 +

      +

      + New Articles in PLOS ONE May 14, 2015 to May 22, 2015

      +

      + Cerebellar-Dependent Associative Learning Is Preserved in Duchenne Muscular Dystrophy: A Study Using Delay Eyeblink Conditioning
      + Ulrike Schara, Melanie Busse, Dagmar Timmann, Marcus Gerwig
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0126528 +

      +

      + Frontiers Article Alert Thursday, 21 May 2015

      +

      + Frontiers in Human Neuroscience
      + Force dysmetria in spinocerebellar ataxia 6 correlates with functional capacity
      + Agostina Casamento Moran, Yen-Ting Chen, MinHyuk Kwon, Amy Snyder, S H Subramony, David Vaillancourt, and Evangelos A Christou
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2015.00184/full +

      +

      + Frontiers in Neuroanatomy
      + Diffusion tensor imaging of the human cerebellar pathways and their interplay with cerebral macrostructure
      + Zafer Keser, Khader M Hasan, Benson Mwangi, Arash Kamali, Fehime Eymen Ucisik-Keser, Roy F Riascos, Nuray Yozbatiran, Gerard E. Francisco, and Ponnada Narayana
      + - http://journal.frontiersin.org/article/10.3389/fnana.2015.00041/full +

      +

      + The Journal of Neuroscience, 20 May 2015, 35(20)

      +

      + Relating Cerebellar Purkinje Cell Activity to the Timing and Amplitude of Conditioned Eyelid Responses
      + Hunter E. Halverson, Andrei Khilkevich, and Michael D. Mauk
      + - http://www.jneurosci.org/content/35/20/7813.abstract +

      +

      + Brain Research Volume 1611, Pages 1-114, 22 June 2015

      +

      + 10) Dystonia and cerebellar degeneration in theleanermouse mutant
      + Original Research Article, Pages 56-64
      + Robert S. Raike, Ellen J. Hess, H.A. Jinnah
      + - http://www.sciencedirect.com/science/article/pii/S0006899315001936 +

      +

      + European Journal of Neuroscience Volume 41, Issue 10 Pages 1263 - 1391, May 2015

      +

      + Differentiating neural systems mediating the acquisition vs. expression of goal-directed and habitual behavioral control (pages 1358–1371)
      + Mimi Liljeholm, Simon Dunne and John P. O’Doherty
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.12897/abstract +

      +

      + The Journal of Neuroscience, 13 May 2015, 35(19)

      +

      + Heterogeneity and Bipotency of Astroglial-Like Cerebellar Progenitors along the Interneuron and Glial Lineages
      + Elena Parmigiani, Ketty Leto, Chiara Rolando, María Figueres-Oñate, Laura López-Mascaraque, Annalisa Buffo, and Ferdinando Rossi
      + - http://www.jneurosci.org/content/35/19/7388.abstract +

      +

      + New Articles in PLOS ONE April 30, 2015 to May 06, 2015

      +

      + Caffeine Modulates Vesicle Release and Recovery at Cerebellar Parallel Fibre Terminals, Independently of Calcium and Cyclic AMP Signalling
      + Katharine L. Dobson, Claire Jackson, Saju Balakrishnan, Tomas C. Bellamy
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0125974 +

      +

      + The Journal of Neuroscience, 6 May 2015, 35(18)

      +

      + BK Channels Localize to the Paranodal Junction and Regulate Action Potentials in Myelinated Axons of Cerebellar Purkinje Cells
      + Moritoshi Hirono, Yasuhiro Ogawa, Kaori Misono, Daniel R. Zollinger, James S. Trimmer, Matthew N. Rasband, and Hiroaki Misonou
      + - http://www.jneurosci.org/content/35/18/7082.abstract +

      +

      + Current Biology Volume 25, Issue 9, Pages R345-R390, 1113-1248, 4 May 2015

      +

      + 22) Role of Synchronous Activation of Cerebellar Purkinje Cell Ensembles in Multi-joint Movement Control
      + Original Research Article, Pages 1157-1165
      + Tycho M. Hoogland, Jornt R. De Gruijl, Laurens Witter, Cathrin B. Canto, Chris I. De Zeeuw
      + - http://www.sciencedirect.com/science/article/pii/S0960982215003231 +

      +

      + Frontiers Article Alert Monday, 4 May 2015

      +

      + Frontiers in Human Neuroscience
      + Shaping pseudoneglect with transcranial cerebellar direct current stimulation and music listening
      + Silvia Picazio, Chiara Granata, Carlo Caltagirone, Laura Petrosini, and Massimiliano Oliveri
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2015.00158/full +

      +

      2015 April

      +

      + Frontiers Article Alert Wednesday, 29 April 2015

      +

      + Frontiers in Cellular Neuroscience
      + Dendritic patch-clamp recordings from cerebellar granule cells demonstrate electrotonic compactness
      + Igor Delvendahl, Isabelle Straub, and Stefan Hallermann
      + - http://journal.frontiersin.org/article/10.3389/fncel.2015.00093/full +

      +

      + Frontiers in Computational Neuroscience
      + How the credit assignment problems in motor control could be solved after the cerebellum predicts increases in error
      + Sergio Oscar Verduzco-Flores and Randall C O’Reilly
      + - http://journal.frontiersin.org/article/10.3389/fncom.2015.00039/full +

      +

      + Frontiers in Human Neuroscience
      + Aberrant cerebellar connectivity in motor and association networks in schizophrenia
      + Ann K. Shinn, Justin T. Baker, Kathryn Eve Lewandowski, Dost Ongur, and Bruce M. Cohen
      + - http://journal.frontiersin.org/article/10.3389/fnhum.2015.00134/full +

      +

      + The Journal of Neuroscience, 29 April 2015, 35(17)

      +

      + Intracellular FGF14 (iFGF14) Is Required for Spontaneous and Evoked
      + Firing in Cerebellar Purkinje Neurons and for Motor Coordination and
      + Balance
      + Marie K. Bosch, Yarimar Carrasquillo, Joseph L. Ransdell, Ajay
      + Kanakamedala, David M. Ornitz, and Jeanne M. Nerbonne
      + - http://www.jneurosci.org/content/35/17/6752.abstract?etoc +

      +

      + Neuroscience Letters Volume 595, Pages 1-138, 19 May 2015

      +

      + 5) The effect of carmustine on Bergmann cells of the cerebellum Pages 18-24
      + Maria Alejandra Gonzalez-Gonzalez, Aline Ostos-Valverde, Armando Becerra-Hernandez, Hugo Sanchez-Castillo, Ataulfo Martinez-Torres
      + - http://www.sciencedirect.com/science/article/pii/S0304394015002700 +

      +

      + 26) Molecular composition and expression pattern of the extracellular matrix in a mossy fiber-generating precerebellar nucleus of rat, the prepositus hypoglossi Pages 122-126
      + Botond Gaal, Szilvia Kecskes, Clara Matesz, Andras Birinyi, Andrea Hunyadi, Eva Racz
      + - http://www.sciencedirect.com/science/article/pii/S0304394015002499 +

      +

      + NATURE NEUROSCIENCE May 2015 Volume 18 Number 5, pp 611 - 786

      +

      + Strength in more than numbers pp614 - 616
      + Nathaniel B Sawtell and L F Abbott
      + - http://www.nature.com/neuro/journal/v18/n5/abs/nn.4006.html +

      +

      + Regulation of chromatin accessibility and Zic binding at enhancers in the developing cerebellum pp647 - 656
      + Christopher L Frank et al.
      + - http://www.nature.com/neuro/journal/v18/n5/abs/nn.3995.html +

      +

      + GABAergic regulation of cerebellar NG2 cell development is altered in perinatal white matter injury pp674 - 682
      + Marzieh Zonouzi et al.
      + - http://www.nature.com/neuro/journal/v18/n5/abs/nn.3990.html +

      +

      + Synaptic diversity enables temporal coding of coincident multisensory inputs in single neurons pp718 - 727
      + Francois P Chabrol et al.
      + - http://www.nature.com/neuro/journal/v18/n5/abs/nn.3974.html +

      +

      + New Articles in PLOS ONE April 16, 2015 to April 22, 2015

      +

      + Anti-Yo Antibody Uptake and Interaction with Its Intracellular Target Antigen Causes Purkinje Cell Death in Rat Cerebellar Slice Cultures: A Possible Mechanism for Paraneoplastic Cerebellar Degeneration in Humans with Gynecological or Breast Cancers
      + John E. Greenlee, Susan A. Clawson, Kenneth E. Hill, Blair Wood, Stacey L. Clardy, Ikuo Tsunoda, Noel G. Carlson
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0123446 +

      +

      + Change in the Cortical Complexity of Spinocerebellar Ataxia Type 3 Appears Earlier than Clinical Symptoms
      + Tzu-Yun Wang, Chii-Wen Jao, Bing-Wen Soong, Hsiu-Mei Wu, Kuo-Kai Shyu, Po-Shan Wang, Yu-Te Wu
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0118828 +

      +

      + Neuron Volume 86, Issue 2, Pages 343-602, 22 April 2015

      +

      + 18) Circuit Mechanisms Underlying Motor Memory Formation in the Cerebellum
      + Original Research Article,
      + Pages 529-540
      + Ka Hung Lee, Paul J. Mathews, Alexander M.B. Reeves, Katrina Y. Choe, Shekib A. Jami, Raul E. Serrano, Thomas S. Otis
      + - http://www.sciencedirect.com/science/article/pii/S0896627315002068 +

      +

      + European Journal of Neuroscience

      +

      + Differentiating neural systems mediating the acquisition vs. expression of goal-directed and habitual behavioral control
      + Mimi Liljeholm, Simon Dunne and John P. O’Doherty
      + - http://onlinelibrary.wiley.com/doi/10.1111/ejn.12897/abstract +

      +

      + Annals of the New York Academy of Sciences Volume 1343, Issue 1 Dizziness and Balance Disorders Pages 1 - 119, April 2015

      +

      + Pharmacotherapy of vestibular and cerebellar disorders and downbeat nystagmus: translational and back-translational research (pages 27–36)
      + Michael Strupp, Andreas Zwergal, Katharina Feil, Tatiana Bremova and Thomas Brandt
      + - http://onlinelibrary.wiley.com/doi/10.1111/nyas.12774/abstract +

      +

      + Frontiers Article Alert Wednesday, 15 April 2015

      +

      + High frequency switched-mode stimulation can evoke post synaptic responses in cerebellar principal neurons
      + Marijn Van Dongen, Freek Hoebeek, S K E Koekkoek, Chris De Zeeuw, and Wouer Serdijn
      + http://journal.frontiersin.org/article/10.3389/fneng.2015.00002/full +

      +

      + New Articles in PLOS ONE April 02, 2015 to April 08, 2015

      +

      + Meningiomas of the Cerebellopontine Angle: Radiological Differences in Tumors with Internal Auditory Canal Involvement and Their Influence on Surgical Outcome
      + Kun Gao, Housheng Ma, Yong Cui, Xuzhu Chen, Jun Ma, Jianping Dai
      + http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0122949 +

      +

      + Metabolomic Method: UPLC-q-ToF Polar and Non-Polar Metabolites in the Healthy Rat Cerebellum Using an In-Vial Dual Extraction
      + Amera A. Ebshiana, Stuart G. Snowden, Madhav Thambisetty, Richard Parsons, Abdul Hye, Cristina Legido-Quigley
      + http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0122883 +

      +

      + The Journal of Neuroscience Online Table of Contents Alert 8 April 2015; Vol. 35, No. 14

      +

      + The Role of the Posterior Cerebellum in Saccadic Adaptation: A Transcranial Direct Current Stimulation Study
      + Muriel T.N. Panouillères, R. Chris Miall, and Ned Jenkinson
      + - http://www.jneurosci.org/content/35/14/5471.abstract +

      +

      + Neuroscience Letters Volume 593, Pages 1-134, 23 April 2015

      +

      + 25) Muscarinic acetylcholine receptor in cerebellar cortex participates in acetylcholine-mediated blood depressor response in rats
      + Pages 129-133
      + Peiling Zhou, Qingfeng Zhu, Ming Liu, Jing Li, Yong Wang, Changzheng Zhang, Tianmiao Hua
      + - http://www.sciencedirect.com/science/article/pii/S0304394015002293 +

      +

      + Frontiers Article Alert Tuesday, 7 April 2015

      +

      + Distributed cerebellar plasticity implements generalized multiple-scale memory components in real-robot sensorimotor tasks
      + Claudia Casellato, Alberto Antonietti, Jesus A Garrido, Giancarlo Ferrigno, Egidio D‘Angelo, and Alessandra Pedrocchi
      + - http://journal.frontiersin.org/article/10.3389/fncom.2015.00024/full +

      +

      + Properties and molecular identity of NMDA receptors at synaptic and non-synaptic inputs in cerebellar molecular layer interneurons
      + Celine Bidoret, Guy Bouvier, Annick Ayon, German Szapiro, and Mariano Casado
      + - http://journal.frontiersin.org/article/10.3389/fnsyn.2015.00001/full +

      +

      + New Articles in PLOS ONE March 26, 2015 to April 01, 2015

      +

      + Material Properties and Constitutive Modeling of Infant Porcine Cerebellum Tissue in Tension at High Strain Rate
      + Kui Li, Hui Zhao, Wenjun Liu, Zhiyong Yin
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0123506 +

      +

      + Neuropharmacology Volume 93, Pages 1-314, June 2015

      +

      + 21) Pharmacological characterization of mGlu1 receptors in cerebellar granule cells reveals biased agonism
      + Original Research Article,
      + Pages 199-208
      + Hannah A. Hathaway, Sergey Pshenichkin, Ewa Grajkowska, Tara Gelb, Andrew C. Emery, Barry B. Wolfe, Jarda T. Wroblewski
      + - http://www.sciencedirect.com/science/article/pii/S0028390815000544 +

      +

      2015 March

      +

      + New Articles in PLOS ONE March 19, 2015 to March 24, 2015

      +

      + N-Acetyl-L-Leucine Accelerates Vestibular Compensation after Unilateral Labyrinthectomy by Action in the Cerebellum and Thalamus
      + Lisa Günther, Roswitha Beck, Guoming Xiong, Heidrun Potschka, Klaus Jahn, Peter Bartenstein, Thomas Brandt, Mayank Dutia, Marianne Dieterich, Michael Strupp, Christian la Fougère, Andreas Zwergal
      + - http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0120891 +

      + + ); +} + +export default NewArticleAlert; \ No newline at end of file diff --git a/src/custom/blocks/Welcome.tsx b/src/custom/blocks/Welcome.tsx new file mode 100644 index 0000000..c53b8b9 --- /dev/null +++ b/src/custom/blocks/Welcome.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import NoticeSiteHasBeenArchived from '../../common/lib/NoticeSiteHasBeenArchived'; +import { MultiLang } from '../../config'; + +interface Props { + lang: MultiLang; +} + +const Welcome = (props: Props) => { + const { lang } = props; + return ( + <> + +

      + Cerebellar Platform is a digital research archive for cerebellar research. + Available resources include mini-reviews of contemporary cerebellar research, list of papers and mathematical models for cerebellar operation. + If you need more information about this website, please click HERE. + You will find a 'Privacy Policy' and some instructions for use. + This database was supported by Grant-in-Aid for Publication of Scientific Research Results from Japan Society for the Promotion of Science (2007). +

      +

      + New "Cerebellar Platform" provides utilities (SNS and a cloud system) for anyone who is interested in the cerebellum. + It provides you focused and up-to-date information related to the cerebellum easily and quickly. + It also features a communication field like FaceBook, which is designed to accelerate interaction between cerebellar researchers. + Please click HERE! +

      + + ); +} + +export default Welcome; \ No newline at end of file diff --git a/src/d3forum/D3Forum.tsx b/src/d3forum/D3Forum.tsx new file mode 100644 index 0000000..bd2b4f0 --- /dev/null +++ b/src/d3forum/D3Forum.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import Helmet from 'react-helmet'; +import { Route, RouteComponentProps, Switch } from 'react-router-dom'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import './assets/d3forum_common.css'; +import './assets/d3forum_main.css'; +import D3ForumCategory from './D3ForumCategory'; +import D3ForumForum from './D3ForumForum'; +import D3ForumPost from './D3ForumPost'; +import D3ForumTop from './D3ForumTop'; +import D3ForumTopic from './D3ForumTopic'; +import D3ForumUtils from './lib/D3ForumUtils'; + +interface Props { + lang: MultiLang; + name: string; +} + +const D3Forum = (props: Props) => { + const { lang, name } = props; + return ( + <> + + {D3ForumUtils.getTitle(name, lang)} - {Functions.siteTitle(lang)} + + + } /> + ) => } /> + ) => } /> + ) => } /> + ) => } /> + + + + ); +} + +export default D3Forum; \ No newline at end of file diff --git a/src/d3forum/D3ForumCategory.tsx b/src/d3forum/D3ForumCategory.tsx new file mode 100644 index 0000000..2a7c009 --- /dev/null +++ b/src/d3forum/D3ForumCategory.tsx @@ -0,0 +1,171 @@ +import moment from 'moment'; +import React from 'react'; +import Helmet from 'react-helmet'; +import { RouteComponentProps } from 'react-router'; +import { Link } from 'react-router-dom'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import imageCategory0 from './assets/images/category_0.gif'; +import imageCategory1 from './assets/images/category_1.gif'; +import imageForum0 from './assets/images/forum_0.gif'; +import imageForum1 from './assets/images/forum_1.gif'; +import CategoryJump from './lib/CategoryJump'; +import D3ForumUtils, { D3ForumCategoryData, D3ForumForumData } from './lib/D3ForumUtils'; +import PostIcon from './lib/PostIcon'; + +interface Params { + id: string; +} +interface Props extends RouteComponentProps { + lang: MultiLang; + name: string; +} + +interface D3ForumCategoryProps { + lang: MultiLang; + name: string; + catId: number; +} + +const D3ForumCategorySubCategory = (props: D3ForumCategoryProps) => { + const { lang, name, catId } = props; + const LABEL_HEADER_TITLE = Functions.mlang('[en]Subcategories[/en][ja]サブカテゴリ[/ja]', lang); + const LABEL_TOTAL_TOPICS = Functions.mlang('[en]Total topics[/en][ja]総トピック数[/ja]', lang); + const LABEL_TOTAL_POSTS = Functions.mlang('[en]Total posts[/en][ja]総投稿数[/ja]', lang); + const LABEL_LATEST_POST = Functions.mlang('[en]Latest post[/en][ja]最新投稿[/ja]', lang); + const subCategories = D3ForumUtils.getSubCategories(name, catId).map((category: D3ForumCategoryData) => { + const title = Functions.mlang(category.cat_title, lang); + const url = D3ForumUtils.getCategoryUrl(name, category.cat_id); + const image = category.cat_posts_count === 0 ? imageCategory0 : imageCategory1; + const latest = category.cat_last_post_time === 0 ? '' : ', ' + LABEL_LATEST_POST + ': ' + moment(new Date(category.cat_last_post_time * 1000)).format('Y/M/D H:m'); + return ( +
    2. + {title} {title} +   + ({LABEL_TOTAL_TOPICS}: {category.cat_topics_count}, {LABEL_TOTAL_POSTS}: {category.cat_posts_count}{latest}) +
    3. + ); + }); + if (subCategories.length === 0) { + return null; + } + return ( + <> +

      {LABEL_HEADER_TITLE}

      +
        + {subCategories} +
      + + ); +} + +const D3ForumCategoryForum = (props: D3ForumCategoryProps) => { + const { lang, name, catId } = props; + const LABEL_HEADER_TITLE = Functions.mlang('[en]Forum[/en][ja]フォーラム[/ja]', lang); + const LABEL_FORUM = Functions.mlang('[en]Forum[/en][ja]フォーラム[/ja]', lang); + const LABEL_TOPICS = Functions.mlang('[en]Topics[/en][ja]トピック数[/ja]', lang); + const LABEL_POSTS = Functions.mlang('[en]Posts[/en][ja]投稿数[/ja]', lang); + const LABEL_LATEST_POST = Functions.mlang('[en]Latest post[/en][ja]最新投稿[/ja]', lang); + const LABEL_NEW_POSTS = Functions.mlang('[en]New posts[/en][ja]新しい投稿があります[/ja]', lang); + const LABEL_NO_NEW_POSTS = Functions.mlang('[en]No new posts[/en][ja]新しい投稿はありません[/ja]', lang); + const forums = D3ForumUtils.getForums(name, catId).map((forum: D3ForumForumData, idx: number) => { + const evenodd = idx % 2 === 0 ? 'even' : 'odd'; + const title = Functions.mlang(forum.forum_title, lang); + const desc = Functions.mlang(forum.forum_desc, lang); + const url = D3ForumUtils.getForumUrl(name, forum.forum_id); + const image = forum.forum_posts_count === 0 ? imageForum0 : imageForum1; + const getPoster = (postId: number) => { + const post = D3ForumUtils.getPost(name, postId); + if (post === null) { + return null; + } + const subject = Functions.mlang(post.subject, lang); + return ( + <> + {moment(new Date(post.post_time * 1000)).format('Y/M/D H:m')}
      + {post.uid_uname} +   + + + + + ); + }; + return ( + + {title} + +
      +
      {title}
      +
      {desc}
      +
      + + {forum.forum_topics_count} + {forum.forum_posts_count} + + {getPoster(forum.forum_last_post_id)} + + + ); + }); + if (forums.length === 0) { + return null; + } + return ( + <> +

      {LABEL_HEADER_TITLE}

      + + + + + + + + + + + {forums} + +
      {LABEL_FORUM}{LABEL_TOPICS}{LABEL_POSTS}{LABEL_LATEST_POST}
      +
      +
        +
      • = {LABEL_NEW_POSTS}
      • +
      +
        +
      • = {LABEL_NO_NEW_POSTS}
      • +
      +
      + + ); +} + +const D3ForumCategory = (props: Props) => { + const { lang, name } = props; + const params = props.match.params; + if (params.id === '') { + return ; + } + const catId = parseInt(props.match.params.id, 10); + const category = D3ForumUtils.getCategory(name, catId); + if (category === null) { + return ; + } + const title = Functions.mlang(category.cat_title, lang); + return ( + <> + + {title} - {D3ForumUtils.getTitle(name, lang)} - {Functions.siteTitle(lang)} + +
      + {Functions.mlang('[en]Top[/en][ja]トップ[/ja]', lang)} +
      +

      {title}

      + + + + + ); +} + +export default D3ForumCategory; \ No newline at end of file diff --git a/src/d3forum/D3ForumForum.tsx b/src/d3forum/D3ForumForum.tsx new file mode 100644 index 0000000..19cf87e --- /dev/null +++ b/src/d3forum/D3ForumForum.tsx @@ -0,0 +1,127 @@ +import moment from 'moment'; +import React from 'react'; +import Helmet from 'react-helmet'; +import { RouteComponentProps } from 'react-router'; +import { HashLink } from 'react-router-hash-link'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import imageTopic01 from './assets/images/topic_01.gif'; +import imageTopic10 from './assets/images/topic_10.gif'; +import imageTopic11 from './assets/images/topic_11.gif'; +import imageTopicInvisible from './assets/images/topic_invisible.gif'; +import imageTopicStatusLocked1 from './assets/images/topic_status_locked1.gif'; +import imageTopicStatusMarked1 from './assets/images/topic_status_marked1.gif'; +import imageTopicStatusSolved0 from './assets/images/topic_status_solved0.gif'; +import imageTopicSticky0 from './assets/images/topic_sticky0.gif'; +import ForumJump from './lib/ForumJump'; +import D3ForumUtils, { D3ForumPostData, D3ForumPostSortOrder, D3ForumTopicData } from './lib/D3ForumUtils'; +import PostIcon from './lib/PostIcon'; + +interface Params { + id: string; +} +interface Props extends RouteComponentProps { + lang: MultiLang; + name: string; +} + +const D3ForumForum = (props: Props) => { + const { lang, name } = props; + const params = props.match.params; + if (params.id === '') { + return ; + } + const forumId = parseInt(props.match.params.id, 10); + const forum = D3ForumUtils.getForum(name, forumId); + if (forum === null) { + return ; + } + const category = D3ForumUtils.getCategory(name, forum.cat_id); + if (category === null) { + return ; + } + const topics = D3ForumUtils.getTopics(name, forum.forum_id); + const title = Functions.mlang(forum.forum_title, lang); + return ( + <> + + {title} - {D3ForumUtils.getTitle(name, lang)} - {Functions.siteTitle(lang)} + +
      + {Functions.mlang('[en]Top[/en][ja]トップ[/ja]', lang)} +  >  + {Functions.mlang(category.cat_title, lang)} +
      +

      {title}

      +

      {Functions.mlang(forum.forum_desc, lang)}

      + + + + + + + + + + + {topics.map((topic: D3ForumTopicData, idx: number) => { + const postStart = D3ForumUtils.getPost(name, topic.topic_first_post_id); + const postLast = D3ForumUtils.getPost(name, topic.topic_last_post_id); + if (postStart === null || postLast === null) { + return null; + } + const postTitleStart = Functions.mlang(postStart.subject, lang); + const imageTopic = topic.topic_invisible !== 0 ? imageTopicInvisible : topic.topic_sticky !== 0 ? imageTopicSticky0 : imageTopic10; + const evenodd = idx % 2 === 0 ? 'even' : 'odd'; + const poster = (post: D3ForumPostData) => { + const title = Functions.mlang(post.subject, lang); + return ( + <> + {moment(new Date(post.post_time * 1000)).format('YYYY/M/D')}
      + {post.uid_uname} + + ); + } + return ( + + + + + + + + + ); + })} + +
      {Functions.mlang(`[en]hits ${topics.length} items[/en][ja]${topics.length}件ヒットしました[/ja]`, lang)}{Functions.mlang('[en]Reply[/en][ja]返信[/ja]', lang)}{Functions.mlang('[en]First post[/en][ja]トピック開始[/ja]', lang)}{Functions.mlang('[en]Latest post[/en][ja]最新投稿[/ja]', lang)}
      + + + {topic.topic_solved === 0 && } + {topic.topic_locked !== 0 && } + {postTitleStart} + {topic.topic_posts_count - 1} + {poster(postStart)} + + {postStart.post_id !== postLast.post_id && poster(postLast)} +
      +
      +
        +
      • = {Functions.mlang('[en]Topic with new posts[/en][ja]新しい投稿があります[/ja]', lang)}
      • +
      • = {Functions.mlang('[en]Topic without new posts[/en][ja]新しい投稿はありません[/ja]', lang)}
      • +
      • = {Functions.mlang('[en]Invisible topic (Only admins and moderators can read this)[/en][ja]不可視トピック(管理者とモデレータ以外には見えません)[/ja]', lang)}
      • +
      • = {Functions.mlang('[en]Sticky topic[/en][ja]特別扱いされたトピック[/ja]', lang)}
      • +
      +
        +
      • = {Functions.mlang('[en]Locked topic[/en][ja]ロックされたトピック[/ja]', lang)}
      • +
      • = {Functions.mlang('[en]Unsolved topic[/en][ja]未解決トピック[/ja]', lang)}
      • +
      • = {Functions.mlang('[en]Marked[/en][ja]未解決トピック[/ja]', lang)}
      • +
      +
      + + + ); +} + +export default D3ForumForum; diff --git a/src/d3forum/D3ForumPost.tsx b/src/d3forum/D3ForumPost.tsx new file mode 100644 index 0000000..d22a518 --- /dev/null +++ b/src/d3forum/D3ForumPost.tsx @@ -0,0 +1,80 @@ +import React from 'react'; +import Helmet from 'react-helmet'; +import { RouteComponentProps } from 'react-router'; +import { Link } from 'react-router-dom'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import ForumJump from './lib/ForumJump'; +import D3ForumUtils, { D3ForumPostSortOrder, D3ForumPostData } from './lib/D3ForumUtils'; +import Post from './lib/Post'; +import PostsTree from './lib/PostsTree'; + +interface Params { + id: string; +} + +interface Props extends RouteComponentProps { + lang: MultiLang; + name: string; +} + +const D3ForumPost = (props: Props) => { + const { lang, name } = props; + const params = props.match.params; + if (params.id === '') { + return ; + } + const postId = parseInt(props.match.params.id, 10); + const post = D3ForumUtils.getPost(name, postId); + if (post === null) { + return ; + } + const topic = D3ForumUtils.getTopic(name, post.topic_id); + if (topic === null) { + return ; + } + const forum = D3ForumUtils.getForum(name, topic.forum_id); + if (forum === null) { + return ; + } + const category = D3ForumUtils.getCategory(name, forum.cat_id); + if (category === null) { + return ; + } + const posts = D3ForumUtils.getPosts(name, topic.topic_id, D3ForumPostSortOrder.TREE); + const idx = posts.findIndex((post: D3ForumPostData) => { + return post.post_id === postId; + }); + const prevPostId = idx <= 0 ? 0 : posts[idx - 1].post_id; + const nextPostId = (idx + 1) === posts.length ? 0 : posts[idx + 1].post_id; + const title = Functions.mlang(post.subject, lang); + return ( + <> + + {title} - {D3ForumUtils.getTitle(name, lang)} - {Functions.siteTitle(lang)} + +
      + {Functions.mlang('[en]Top[/en][ja]トップ[/ja]', lang)} +  >  + {Functions.mlang(category.cat_title, lang)} +  >  + {Functions.mlang(forum.forum_title, lang)} +  >  + {Functions.mlang(topic.topic_title, lang)} +
      +

      {title}

      + +
      +

      + {Functions.mlang('[en]List posts in the topic[/en][ja]このトピックの投稿一覧へ[/ja]', lang)} +

      +
      + +
      + + + ); +} + +export default D3ForumPost; diff --git a/src/d3forum/D3ForumTop.tsx b/src/d3forum/D3ForumTop.tsx new file mode 100644 index 0000000..8bd7191 --- /dev/null +++ b/src/d3forum/D3ForumTop.tsx @@ -0,0 +1,161 @@ +import moment from 'moment'; +import React, { Fragment } from 'react'; +import { Link } from 'react-router-dom'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import imageCategory0 from './assets/images/category_0.gif'; +import imageCategory1 from './assets/images/category_1.gif'; +import imageForum0 from './assets/images/forum_0.gif'; +import imageForum1 from './assets/images/forum_1.gif'; +import ForumJump from './lib/ForumJump'; +import D3ForumUtils, { D3ForumCategoryData, D3ForumForumData } from './lib/D3ForumUtils'; +import XoopsCode from '../common/lib/XoopsCode'; +import PageNotFound from '../common/lib/PageNotFound'; + +export interface Props { + lang: MultiLang; + name: string; +} + +interface D3ForumTopSubCategoryProps extends Props { + catId: number; +} + +interface D3ForumTopForumProps extends Props { + catId: number; +} + +const D3ForumTopForum = (props: D3ForumTopForumProps) => { + const { lang, name, catId } = props; + const LABEL_HEADER_TITLE = Functions.mlang('[en]Forum[/en][ja]フォーラム[/ja]', lang); + const LABEL_TOPICS = Functions.mlang('[en]Topics[/en][ja]トピック数[/ja]', lang); + const LABEL_POSTS = Functions.mlang('[en]Posts[/en][ja]投稿数[/ja]', lang); + const LABEL_LATEST_POST = Functions.mlang('[en]Latest post[/en][ja]最新投稿[/ja]', lang); + const forums = D3ForumUtils.getForums(name, catId).map((forum: D3ForumForumData) => { + const title = Functions.mlang(forum.forum_title, lang); + const url = D3ForumUtils.getForumUrl(name, forum.forum_id); + const image = forum.forum_posts_count === 0 ? imageForum0 : imageForum1; + const latest = forum.forum_last_post_time === 0 ? '' : ', ' + LABEL_LATEST_POST + ': ' + moment(new Date(forum.forum_last_post_time * 1000)).format('Y/M/D H:m'); + return ( +
    4. + {title} {title} +   + {LABEL_TOPICS}: {forum.forum_topics_count}, {LABEL_POSTS}: {forum.forum_posts_count}{latest} +
    5. + ); + }); + if (forums.length === 0) { + return null; + } + return ( + <> +

      {LABEL_HEADER_TITLE}

      +
        + {forums} +
      + + ); +} + +const D3ForumTopSubCategory = (props: D3ForumTopSubCategoryProps) => { + const { lang, name, catId } = props; + const LABEL_HEADER_TITLE = Functions.mlang('[en]Subcategories[/en][ja]サブカテゴリ[/ja]', lang); + const LABEL_TOTAL_TOPICS = Functions.mlang('[en]Total topics[/en][ja]総トピック数[/ja]', lang); + const LABEL_TOTAL_POSTS = Functions.mlang('[en]Total posts[/en][ja]総投稿数[/ja]', lang); + const LABEL_LATEST_POST = Functions.mlang('[en]Latest post[/en][ja]最新投稿[/ja]', lang); + const subCategories = D3ForumUtils.getSubCategories(name, catId).map((category: D3ForumCategoryData) => { + const title = Functions.mlang(category.cat_title, lang); + const url = D3ForumUtils.getCategoryUrl(name, category.cat_id); + const image = category.cat_posts_count === 0 ? imageCategory0 : imageCategory1; + const latest = category.cat_last_post_time === 0 ? '' : ', ' + LABEL_LATEST_POST + ': ' + moment(new Date(category.cat_last_post_time * 1000)).format('Y/M/D H:m'); + return ( +
    6. + {title} {title} +   + ({LABEL_TOTAL_TOPICS}: {category.cat_topics_count}, {LABEL_TOTAL_POSTS}: {category.cat_posts_count}{latest}) +
    7. + ); + }); + if (subCategories.length === 0) { + return null; + } + return ( + <> +

      {LABEL_HEADER_TITLE}

      +
        + {subCategories} +
      + + ); +} + +const D3ForumTopCategory = (props: Props) => { + const { lang, name } = props; + const LABEL_TOTAL_TOPICS = Functions.mlang('[en]Total topics[/en][ja]総トピック数[/ja]', lang); + const LABEL_TOTAL_POSTS = Functions.mlang('[en]Total posts[/en][ja]総投稿数[/ja]', lang); + const LABEL_LATEST_POST = Functions.mlang('[en]Latest post[/en][ja]最新投稿[/ja]', lang); + const categories = D3ForumUtils.getCategories(name).map((category: D3ForumCategoryData) => { + const title = Functions.mlang(category.cat_title, lang); + const image = category.cat_posts_count === 0 ? imageCategory0 : imageCategory1; + const url = D3ForumUtils.getCategoryUrl(name, category.cat_id); + const latest = category.cat_last_post_time === 0 ? '' : ', ' + LABEL_LATEST_POST + ': ' + moment(new Date(category.cat_last_post_time * 1000)).format('Y/M/D H:m'); + return ( + +
      +

      + {title} +

      +

      {LABEL_TOTAL_TOPICS}: {category.cat_topics_count}, {LABEL_TOTAL_POSTS}: {category.cat_posts_count}{latest}

      +
      + + +
        +
      +
      + ); + }); + if (categories.length === 0) { + return null; + } + return ( +
      + {categories} +
      + ); +} + +const D3ForumTop = (props: Props) => { + const { lang, name } = props; + const LABEL_TOTAL_TOPICS = Functions.mlang('[en]Total topics:[/en][ja]総トピック数:[/ja]', lang); + const LABEL_TOTAL_POSTS = Functions.mlang('[en]Total posts:[/en][ja]総投稿数:[/ja]', lang); + const LABEL_NEW_POSTS = Functions.mlang('[en]New posts[/en][ja]新しい投稿があります[/ja]', lang); + const LABEL_NO_NEW_POSTS = Functions.mlang('[en]No new posts[/en][ja]新しい投稿はありません[/ja]', lang); + const d3forum = D3ForumUtils.getModule(name); + if (d3forum === null) { + return ; + } + return ( +
      + +
      +
      {LABEL_TOTAL_TOPICS}
      +
      {D3ForumUtils.getTotalTopics(name)},
      +
      {LABEL_TOTAL_POSTS}
      +
      {D3ForumUtils.getTotalPosts(name)}
      +
      + +
      +
        +
      • = {LABEL_NEW_POSTS}
      • +
      +
        +
      • = {LABEL_NO_NEW_POSTS}
      • +
      +
      + + +
      + ); +} + +export default D3ForumTop; diff --git a/src/d3forum/D3ForumTopic.tsx b/src/d3forum/D3ForumTopic.tsx new file mode 100644 index 0000000..2cd3e95 --- /dev/null +++ b/src/d3forum/D3ForumTopic.tsx @@ -0,0 +1,125 @@ +import React, { Component } from 'react'; +import Helmet from 'react-helmet'; +import { RouteComponentProps } from 'react-router'; +import { HashLink } from 'react-router-hash-link'; +import Loading from '../common/lib/Loading'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import D3ForumUtils, { D3ForumCategoryData, D3ForumForumData, D3ForumPostData, D3ForumPostSortOrder, D3ForumTopicData } from './lib/D3ForumUtils'; +import ForumJump from './lib/ForumJump'; +import Post from './lib/Post'; +import PostsTree from './lib/PostsTree'; + +interface Params { + id: string; +} + +interface Props extends RouteComponentProps { + lang: MultiLang; + name: string; +} + +interface State { + loading: boolean; + name: string; + topicId: number; + order: D3ForumPostSortOrder; +} + +class D3ForumTopic extends Component { + + private topic: D3ForumTopicData | null = null; + private forum: D3ForumForumData | null = null; + private category: D3ForumCategoryData | null = null; + private posts: D3ForumPostData[] = []; + + constructor(props: Props) { + super(props); + const { name } = props; + this.state = { + loading: true, + name: name, + topicId: 0, + order: D3ForumPostSortOrder.TREE, + }; + } + + static getDerivedStateFromProps(nextProps: Props, prevState: State) { + const params = new URLSearchParams(nextProps.location.search); + const topicId = parseInt(nextProps.match.params.id, 10); + const order_ = params.get('order'); + const order = (order_ !== null && order_.match(/(0|1|2)/)) ? parseInt(order_, 10) as D3ForumPostSortOrder : D3ForumPostSortOrder.TREE; + if (nextProps.name !== prevState.name || prevState.topicId !== topicId || prevState.order !== order) { + return { loading: true, name: nextProps.name, topicId, order }; + } + return null; + } + + componentDidMount() { + this.load(); + } + + componentDidUpdate() { + this.load(); + } + + load() { + const { name } = this.props; + if (this.state.loading) { + this.topic = D3ForumUtils.getTopic(name, this.state.topicId); + this.forum = D3ForumUtils.getForum(name, this.topic === null ? 0 : this.topic.forum_id); + this.category = D3ForumUtils.getCategory(name, this.forum === null ? 0 : this.forum.cat_id); + this.posts = D3ForumUtils.getPosts(name, this.state.topicId, this.state.order); + this.setState({ loading: false }); + } + } + + render() { + const { lang, name } = this.props; + if (this.state.loading) { + return ; + } + if (this.topic === null || this.forum === null || this.category === null) { + return ; + } + const orderCtrl = ( +
      +
      + {this.state.order !== D3ForumPostSortOrder.TREE && {Functions.mlang('[en]Tree order[/en][ja]ツリー構造順で表示[/ja]', lang)}} + {this.state.order !== D3ForumPostSortOrder.OLD && {Functions.mlang('[en]Older is upper[/en][ja]投稿の古いものから[/ja]', lang)}} + {this.state.order !== D3ForumPostSortOrder.NEW && {Functions.mlang('[en]Newer is upper[/en][ja]投稿の新しいものから[/ja]', lang)}} +
      +
      + ); + const title = Functions.mlang(this.topic.topic_title, lang); + return ( + <> + + {title} - {D3ForumUtils.getTitle(name, lang)} - {Functions.siteTitle(lang)} + +
      + {Functions.mlang('[en]Top[/en][ja]トップ[/ja]', lang)} +  >  + {Functions.mlang(this.category.cat_title, lang)} +  >  + {Functions.mlang(this.forum.forum_title, lang)} +
      +

      {title}

      + + {orderCtrl} +
      + {this.posts.map((post, idx) => { + const prevPostId = idx === 0 ? 0 : this.posts[idx - 1].post_id; + const nextPostId = (idx + 1) === this.posts.length ? 0 : this.posts[idx + 1].post_id; + return ; + })} +
      + {orderCtrl} + + + ); + } +} + +export default D3ForumTopic; diff --git a/src/d3forum/D3ForumXoopsPathRedirect.tsx b/src/d3forum/D3ForumXoopsPathRedirect.tsx new file mode 100644 index 0000000..d737999 --- /dev/null +++ b/src/d3forum/D3ForumXoopsPathRedirect.tsx @@ -0,0 +1,65 @@ +import React, { Component } from 'react'; +import { Redirect, RouteComponentProps, withRouter } from 'react-router'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; + +interface Props extends RouteComponentProps { + lang: MultiLang; + name: string; +} + +class D3ForumXoopsPathRedirect extends Component { + + getRedirectUrl(): string { + const { name, location } = this.props; + const pathname = location.pathname || ''; + const hash = location.hash || ''; + const query = new URLSearchParams(location.search); + const search = new RegExp(`^/modules/${name}(?:/+(.*))?$`); + const matches = pathname.match(search); + if (matches === null) { + return ''; + } + const path = matches[1] || ''; + switch (path) { + case '': + case 'index.php': { + const catId = query.get('cat_id'); + if (catId !== null && catId.match(/^\d+$/) !== null) { + return '/' + name + '/category/' + Functions.escape(catId); + } + const forumId = query.get('forum_id'); + if (forumId !== null && forumId.match(/^\d+$/) !== null) { + return '/' + name + '/forum/' + Functions.escape(forumId); + } + const topicId = query.get('topic_id'); + if (topicId !== null && topicId.match(/^\d+$/) !== null) { + const matches = hash.match(/^#post_id(\d+)$/); + return '/' + name + '/topic/' + Functions.escape(topicId) + (matches === null ? '' : '#postId' + matches[1]); + } + const postId = query.get('post_id'); + if (postId !== null && postId.match(/^\d+$/) !== null) { + return '/' + name + '/post/' + Functions.escape(postId); + } + const catIds = query.get('cat_ids'); + if (catIds !== null && catIds.match(/^\d+$/) !== null) { + return '/' + name + '/category/' + Functions.escape(catIds); + } + return '/' + name + '/'; + } + } + return '/' + name + '/' + path; + } + + render() { + const { lang } = this.props; + const url = this.getRedirectUrl(); + if (url === '') { + return ; + } + return ; + } +} + +export default withRouter(D3ForumXoopsPathRedirect); diff --git a/src/d3forum/assets/d3forum_common.css b/src/d3forum/assets/d3forum_common.css new file mode 100644 index 0000000..0b8b29f --- /dev/null +++ b/src/d3forum/assets/d3forum_common.css @@ -0,0 +1,31 @@ +/* Page Navigation */ + +div.boxNavi .itemBody { + margin: 1px 2px 5px 2px; + text-align: center; + list-style-type: none; + background-color: transparent; +} +div.boxNavi .itemBody li { + display: inline; + margin: 1px 2px 1px 2px; + padding: 5px 0px 5px 0px; + font-weight: bold; + text-align: center; + border-top: 1px solid lightgrey; + border-bottom: 1px solid lightgrey; + border-left: 1px solid lightgrey; + border-right: 1px solid lightgrey; + background-image: none; +} + +div.boxNavi .itemBody li.txt span, +div.boxNavi .itemBody li.this span, +div.boxNavi .itemBody li a { + margin: 0; + padding: 5px 7px 5px 10px; + text-decoration: none; +} +div.boxNavi .itemBody li.this span { + background-color: #cccccc; +} diff --git a/src/d3forum/assets/d3forum_main.css b/src/d3forum/assets/d3forum_main.css new file mode 100644 index 0000000..cc8d8dc --- /dev/null +++ b/src/d3forum/assets/d3forum_main.css @@ -0,0 +1,504 @@ +/************** d3forum genelic *************/ +/* xoopsCode */ +#post_reference dd div.xoopsCode, +#post_preview dd div.xoopsCode, +div.d3f_body div.xoopsCode { + border: 1px #aaaaaa solid; + width: auto; + overflow: auto; + padding: 0; + margin: 10px 0; +} +div.xoopsCode pre { + white-space: pre; +} +/* xoopsQuote */ +div.d3f_body blockquote { + margin: 0 0 5px; + padding: 5px; +} +div.d3f_body div.xoopsQuote { + border: 1px #aaaaaa solid; + margin: 0; + padding: 0; +} +#post_reference dd blockquote, +#post_preview dd blockquote { + margin: 0; + padding: 5px; +} + +/************** d3forum CSS *************/ + +/* em.d3f_attn */ +em.d3f_attn { + font-style: normal; + border-bottom: 1px #333 dotted; + cursor: help; +} + +/* d3f_breadcrumbs */ +div.d3f_breadcrumbs { + font-size: 95%; + padding: 0 0 3px; + border-bottom: 1px #aaa solid; +} + +/* h1 */ +.d3f_title { + font-size: 130%; + margin: 3px 0 15px; +} +.d3f_title * { + vertical-align: middle; +} + +/* avatar */ +.d3f_avatar { + position: relative; + z-index: 110; + border: 4px #ffffff solid; + margin: -3px -5px 0 0; + float: right; +} + +/* each post */ +.d3f_head { + padding: 4px 8px; + line-height: 100%; + color: #ffffff; + background-color: #778899; +} +.d3f_head h2 { + position: relative; + z-index: 101; + line-height: 120%; + font-size: 120%; + font-weight: bold; + margin: 0; + padding: 0; +} +.d3f_head h2 a { + text-decoration: none; +} +.d3f_head h2 a:link { + color: #ffffff; +} +.d3f_head h2 a:active { + color: #ed5656; +} +.d3f_head h2 a:visited { + color: #ffffff; +} +.d3f_head h2 a:hover { + color: #990000; +} +.d3f_head h2.invisible { + background-color: #f00; +} +.d3f_head h2.yetapproval { + background-color: #0ff; +} +.d3f_head h2 img { + vertical-align: middle; +} +.d3f_msgnum { + /* color: #ffffff; */ + font-size: 95%; + font-weight: normal; +} +.d3f_info { + position: relative; + margin: 2px 0 0; + padding: 3px 8px; + color: #000000; + background-color: #eeeeee; +} + +.d3f_head_tree_depth { + z-index: 100; + position: absolute; + top: 0; + left: 0; + margin: 0; + padding: 3px 0; + background-color: #d0d0d0; +} +dl.d3f_head_tree_depth dt, +dl.d3f_head_tree_depth dd { + width: 1px; + visibility: hidden; + float: left; +} +dl.d3f_head_tree_depth dt { + position: absolute; +} +.d3f_info_val { + /* just only for indicator... */ + z-index: 101; + position: relative; +} +.d3f_info_sub { + padding: 2px 8px 3px; + background-color: #ffffff; +} +.d3f_body { + width: auto; + clear: right; + line-height: 150%; + margin: 0 -2px; + padding: 15px 8px; + border-top: 1px #aaaaaa dotted; +} +.d3f_info_ctrl { + line-height: 100%; + text-align: right; + clear: both; + margin: 2px -2px 2px; + padding: 2px 10px; + background-color: #eeeeee; + border-top: 1px #aaaaaa dotted; + border-bottom: 1px #aaaaaa solid; +} +.d3f_info_ctrl form input, +.d3f_info_ctrl img { + vertical-align: middle; +} + +/* h2 */ +h2.d3f_head { + font-size: 120%; + padding: 3px 8px; +} +h2.d3f_tree { + margin-bottom: 4px; +} + +/* main_listposts.html */ +.d3f_wrap { + width: 100%; + clear: both; + border-top: 1px #aaaaaa solid; + border-right: 1px #aaaaaa solid; + border-left: 1px #aaaaaa solid; + border-bottom: 1px #aaaaaa solid; + padding: 2px 2px 0; + margin-bottom: 0.8em; +} + +/* d3f_form */ +div.d3f_form_base { + clear: both; +} + +form.d3f_form p input { + vertical-align: middle; +} + +/* d3f_ctrl */ +.d3f_ctrl { + width: 100%; + border: 1px #aaaaaa solid; + color: #000000; + background-color: #f8f8f8; + margin: 5px 0; + padding: 2px; + line-height: 150%; + clear: both; +} +.d3f_ctrl li { + margin-left: 25px; +} + +div.d3f_order_ctrl { + float: right; + font-size: 0.9em; + padding-bottom: 1em; +} + +.boxNavi + div.d3f_order_ctrl { + padding: 0; +} + +div.d3f_order_ctrl a { + margin-left: 10px; +} + +/* h3 */ +h3.d3f_head_h3 { + font-size: 120%; + margin: 5px 0 0; + padding: 2px 8px; + border-bottom: 1px #aaaaaa solid; +} + +/* d3f_orderctrl */ +p.d3f_viewctrl { + margin: 0; + padding: 3px; + text-align: right; +} + +/* d3f_topicinfo */ +.d3f_topicinfo { + text-align: left; + margin: 0; + padding: 2px; +} + +/* main_viewpost.html */ +/* eachbranch */ +ul.d3f_eachbranch { + margin: 0; + padding: 0; +} +ul.d3f_eachbranch li { + list-style: none outside; + margin: 0; + padding: 0; +} +ul.d3f_eachbranch li img { + vertical-align: middle; +} + +/* d3f_currenttopic */ +.d3f_eachbranch li.d3f_eachbranchitem, +.d3f_eachbranch span.d3f_eachbranchitem { + padding-top: 2px; + padding-bottom: 2px; + background-color: #eeeeee; +} +.d3f_eachbranch li.d3f_currenttopic { + background-color: #ffffff; +} +.d3f_eachbranch li.d3f_currenttopic > span, +.d3f_eachbranch li.d3f_currenttopic > span a { + color: #990000; +} +td span.d3f_currenttopic:after, +.d3f_eachbranch li.d3f_currenttopic > span:first-child:after { + content: "\00ab"; + color: #ff0000; + font-weight: bold; +} +.d3f_eachbranch li.d3f_currenttopic > span.d3f_thistopic { + color: #ff0000; +} + +/* main_listforums.html */ +/* d3f_subcategories */ +ul.d3f_subcategories li { + list-style: none outside; +} + +/* d3forum_main_listcategories.html */ +/* infomations*/ +dl.d3f_bbsinfo { + font-size: 95%; + margin: 0; + float: left; +} +dl.d3f_bbsinfo dt, +dl.d3f_bbsinfo dd { + display: inline; + margin: 0; +} +dl.d3f_bbsinfo dd { + margin: 0 5px 0 0; +} +dl.d3f_timeinfo { + clear: both; + font-size: 95%; + margin: 0; + padding: 0 0 10px; + float: left; +} +dl.d3f_timeinfo dt, +dl.d3f_timeinfo dd { + display: inline; + margin: 0; +} +dl.d3f_timeinfo dd { + margin: 0 5px 0 0; +} + +ul.d3f_listforums li { + list-style: none outside; +} + +/* main_listtopics.html */ +/* d3f_bbsviewctrl */ +div.d3f_bbsviewctrl { + line-height: 100%; + float: left; + padding-bottom: 3px; +} +div.d3f_bbsviewctrl form { + margin: 0; + padding: 0; +} +div.d3f_bbsviewctrl form *, +p.d3f_bbsviewctrl * { + vertical-align: middle; + margin: 0; + padding: 0; +} + +/* d3f_pagenav */ +.d3f_pagenav { + text-align: right; + padding: 3px; +} + +table.d3f_table { + width: 100%; + clear: both; +} +table.d3f_table thead th, +table.d3f_table td { + text-align: center !important; + padding: 3px; + vertical-align: middle; +} +table.d3f_table td.d3f_topictitle, +table.d3f_table td.d3f_posters { + text-align: left !important; +} +table.d3f_table td.d3f_mainicon { + padding: 0; +} + +table.d3f_table td img { + vertical-align: middle; + margin-right: 3px; +} + +table.d3f_table td dl { + text-align: left !important; + margin: 0 -3px; + padding: 0; +} +table.d3f_table td dt { + margin: 0; + padding: 3px 3px 5px; +} +table.d3f_table td dd { + margin: 0; + padding: 0 3px 5px; +} +table.d3f_table td dd.d3f_td_topicinfo { + margin: 0; + padding: 3px 3px 1px; + border-top: 1px #777777 dashed; + font-size: 95%; +} + +/* d3f_iconexp */ +div.d3f_iconexps ul.d3f_iconexp { + width: 45%; + float: left; +} + +ul.d3f_iconexp { + padding-bottom: 15px; +} + +ul.d3f_iconexp li { + list-style: none outside; + padding: 3px 0; +} + +ul.d3f_iconexp li img { + vertical-align: middle; + margin-right: 3px; +} + +/* d3forum forms */ +#post_reference dd, +#post_preview dd { + margin: 0; +} + +/* table.d3f_form_table */ +table.d3f_form_table td, +table.d3f_form_table th { + vertical-align: top !important; + text-align: left; +} + +/* d3f_submit */ +p.d3f_submit { + text-align: center; + margin: 0; + padding: 10px; +} + +/* Page Navigation */ +div.boxNavi .itemBody { + margin: 1px 2px 5px 2px; + text-align: center; + list-style-type: none; + background-color: transparent; +} +div.boxNavi .itemBody li { + display: inline; + margin: 1px 2px 1px 2px; + padding: 5px 0px 5px 0px; + font-weight: bold; + text-align: center; + border-top: 1px solid lightgrey; + border-bottom: 1px solid lightgrey; + border-left: 1px solid lightgrey; + border-right: 1px solid lightgrey; + background-image: none; +} + +div.boxNavi .itemBody li.txt span, +div.boxNavi .itemBody li.this span, +div.boxNavi .itemBody li a { + margin: 0; + padding: 5px 7px 5px 10px; + text-decoration: none; +} +div.boxNavi .itemBody li.this span { + background-color: #cccccc; +} + +.d3f_post_tree { + padding: 2px; + border: dotted 1px #cccccc; +} + +h2.head { + width: 98%; + margin: 0 auto; + padding: 4px 4px 0; +} + +.d3f_order_ctrl + h2.head { + margin: 1em 0 0; +} + +.d3f_wrap .itemInfo { + padding: 0.5em 1em; +} + +.d3f_wrap .itemFoot { + font-size: 0.9em; + margin-bottom: 4px; + clear: both; +} + +.d3f_wrap .itemFoot + .itemHead { + border-top: solid 1px #aaa; +} + +.d3f_wrap .itemFoot form input[type="submit"] { + font-size: 0.9em; + padding: 1px; + vertical-align: inherit; +} + +form.d3f_form #d3f_form_jump_box { + text-align: center; +} diff --git a/src/d3forum/assets/images/category_0.gif b/src/d3forum/assets/images/category_0.gif new file mode 100644 index 0000000000000000000000000000000000000000..8442e1fd3017c55030f44fe95b083099dba771bd GIT binary patch literal 1393 zcmV-%1&;bhNk%w1VK4wN0OkMyN=iyqRaLjQx7^&^uCA`h$;n}1VQ_G8=jZ39rlxXo za+H*mZEbC0Vq$`Vf@EZ5Q&Urae}9jUkLl^@i;Ihhh=^rnWo~Y6+S=NIfq`^%ba8QU zZ*OmmjErMrW9aDUb8~ZshK6ZrX^M)9etv#{fPj2_e0zI)c6N4PU|^}Ksd{>PczAfF zrKM|YYl(@8#l^*ggM)p2eN+4ZbQKO@y?d|QT zsHn!q#>2zIqN1XQhli}Jti;5``uh5$q@Fn_|NsC0000000000000000A^8LW004UcEC2ui z05AYB000O7fO~?2goTEOh>41ejE#60S)W(^y@7K0f2qGOk&?T_)#tD`VASs9(NfKm-8w-qlLDzzY4n#eQluNK=L6i<6M~ry!qJqz# zKwsz_A@XDuDdk#-=z-`59x^tttVAwo3!V6ozaj0hPZTa9r62%;1m1lv84!v|*&3N~ywz`M8a4GI*1(13!p2@-=N za7cm30EZlweP{r&o5O|c46({;U;YgT z7rqPce4qjP0~}a)0UjMp@WBTNB>m3@Uiw6-(feUvK^$;=u;l;eiJUNURXR3=o7U z;)o=QcnSjuIN^eJ8+d@o0~=_FhX_!l(L)LbEA*me`2nuEjN01 z1RjOT2m+#oSg@#ujXJ%h9Fpg2n`xA>ZS#Bv>Hbg zu|=S)vOdUwM5|DIxhozT(C{k?!aDGP3axhQZMR~00IH!HqG0VIJYb8eo7;ZtZnrRq zJ1q)4AW{Si*|z)czVVJLBMU_!;zADja=Y)l{Z5;M3y3hVLcs?kEHAlutiV9d!zVx- z@wW+6e8R>p;4~LWknlqSK({)^4@ykXgVPoyjmQQOG$6JPNtnPy3srAAMh_2s z5QNwbM6dxO3iO;~5J{ZS1KMfpk%bN(d_aVbB`83528d@s!V)1wa6Jq?c~`>8FQqfC4wH?m6d?#4h{nwAXI??YQTzdmsQi+>U<2 literal 0 HcmV?d00001 diff --git a/src/d3forum/assets/images/category_1.gif b/src/d3forum/assets/images/category_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..b63836ecbd4fe446b7f33e5adbc910826102e75b GIT binary patch literal 1322 zcmV+_1=adTNk%w1VK4wN0OkMynIjj~G$q<(S?{u}swW!3EFJXV-u2DN-C9k=GbQJ` zwXrK5)G;BpE+N)9DY;fm);ulejfC7+O7!F6#bR0HlZ@C-K*TK`-eOjyB^lngv&Ta= z-CR(uDICaJPvUfG;cQ{OG9FTIK@6N=+4a4N<7#>GQuw)^yK2#KQPKQCi3Ir*-AXvLp0)X zX4*_XrYRiu;orJDFWI)T)>1{qH7CwBCc#=zuQ)8YEFbpebnRY%7`G{-$J z!a_CRXk6D}Rl6!2>Y0(zb86#!altz-?9a^ITu41ejE#Kd#Kp$P$jQnJK!`vM5z*4q)YaD44b6ugA${K8 z;Njxq<5~?Jh}`7s?BrS@=!Xm4?e*>N3y2E|>{?47K0pYJB2eIm4@>$b$akng5pi{V zM8UwJV#O>NGg_>OA7%3O5nosCWenX)*xDAqzTodOI`fC>dyi1q@(F=V(Fet@~mw@i=1h(oh6U50`0-@t#DDPvkS>&Jx4 z&^B~|ftTkFc&`vZy}I@5*NG4}o|wS}M9oh#U?C-lc?0Ovt6!hqe2_Z~h@18f9yp5{ zN*-j`&%eL_{~749g&QmY_uV1Q@u8pz3ZT$|3J^j#1sr5-Vc~^JC@@8Y5H3K$873&m z2Ym=KAmRmB9B}~)BJy#85=e-WK^Pab$btzl;83H2BpPx<04HMMfe9?+5JLqO%rOD~ z3>-q(K^Rvc83z-5pmD_nDu@`sa)taTVgW*$z{DGVl$pW=SFqTk3T+%wrXM3nVI`JY za!E)6YZ_lIN~eMj6oE()UP#I+th~Aks;CNjVe27cK%i@@ zz4rR+tb9Nq1|r2Cn{2YnF52v~hm4VfwA1oht%x~{fyfg!aNF&x-zsRs6XTYfs*t;$ zi>|EJt~+iI=F0nKx_tD&?jcUJ(8a(>q^JV2`j)9d5<*On#K2v&-~=L0$Z*4l#S74I z!~!QI+~*Jrz_3FH7vCVm!~n}sz{(xa@Bqgizd1w)NK8P$$_1QEu?!Is;Bp5Y$Lz<< zNbEpBggPIxfmvoTVFwXRNMXg)R99`a)ow6R!v{<-y}|~FY#_GSP?RtS6dqKe_S$T> g-8KbK?2!f(V~ZWh-FWA%_uhQ>?f2h+3lazbJCLD$4FCWD literal 0 HcmV?d00001 diff --git a/src/d3forum/assets/images/forum_0.gif b/src/d3forum/assets/images/forum_0.gif new file mode 100644 index 0000000000000000000000000000000000000000..531abd20e8f475a9ae0b2a21eee46f2996195360 GIT binary patch literal 1079 zcmV-71jzeGNk%w1VITk?0OkMy*Vot4(b12OkG{UXyu7@ttE*E}Q&v`1R8&++NlBrh zq1@cux3{;huCB?+$=cf5baZrNWMq7Nd}(QErKP26YHDC$U|(Nfo12?wXJ>VFbz56o zZEbCtnVDv0X0frcetv%9;^Js%Xkubwl9G~RV`F)Fd2@4fWo2bpSXi2xnqFRBZfF%F2X5Getxw*N=$H&vt)2OJZ=;-L> z<>ki4#+R3uo}Qj>Z*Sq@;Z9CY-{0SdhlkD0&BevVm6es<-Q7n=M~sY&%gf7wfq}!r z!=$97)z#JS@9%wmeY?B6`T6CcEY;6Dk|NsC0A^8LW004ggEC2ui z03ZM$000O7fPaF6goTEOg?fsMjE#C85RsA*ZjFKl3z?dmnl)5@prLhi0G$Sc2M(&M ztg2O7p`m#LOI@pC2ZBlryuH2*Rw1#VZ7&}=zBws^KMl^$&@D#8eh*MzEzk`u8-go* z;NjsmHPiq|R}|vl6gYww>*Ej9UP43h>=uG0;uKCu0(?-bq637G9x4WK={G_U3O*E6 z2oM6}h6`$9I3#I;0V1q&gK^aK&fRX0LjvRMB;0YyX0}~K-D4-#70zwBc zB(?zYAV`D^EKTABkr1QA1`wbID1mf>%mNO5dh!4wMZgXbf+~OjA%O^l7B^6!IG}}q zff0NEIH;(Bq67;aCuUS2AqB>Surz4o)v>0?1Qs^9B$&`=Pm~8mE==I?!H9wi5w?Ws zBWMqgGA#DI2m#^C5(z0*H0}Ud@*X&$K4iFX14idQxH)`M0|JKy6czTchQI(wg&4y= zMEEg75biz|3b-hPAjO0|s~>1M(qjsSA=H$E{e!iS2n_~OjL3jnxb_ex4y>3$!%X-+ zg33>b5J3d?>>9wgK?xSP5QH$)1R)3u?LF5X2Je}$fd_rKFvl3wfbxVOJUIB=9uVTN zgbWk*;R6LEWC#iyg3RDyV-Q-P#1jFCU?Petf`Wt~CwK_r0~TBm!3G$35de-k`Vobc zAR0L6UXT+UHv|nJV3?#IDhNV@gG`tK#W1nfjpsrxLW!Yv-DCmO|d zZp|(q%Vb;Bp`6`gSL4sjs%2itS4`cUmXjnI$X!z6f_cVNNylts)O&K;QAE}}E%4RT zx+NDI2;f9Ed9-;d5xNGA76_ALX2u=fSb|5*#Z5uOMmg%u%GtiU!ed(S&&=b0 zb-7DH>czqD(aw`ECEHd>=CiKYNjsr4DZ@%Wv`|LLLpIYkC&y4k(Mmn#fOf*1n5aQE z>AAG@-`>MPG`}z+zdJ9@JucEOAkQx!t~V^aQAgTNK;px|=dY@kIx((LN7rp*@!8kt zqnyG$G08S4*;7W=T20_AnyG!9 zpP-@@q$8)QnXIjTp#-p)O|pMNw3oK6xx2hVg21%HuDYpB$bT=(owpBeKD13Qf<~E5 zBxVjUw|+Zb79JiXVJF{4-F@H=Lmorqw>vR7WMpzt5{LjGK|&t9KQkQI8$u?-2^S6Y ze7e)6h{XyUvi$ggAqpE0Y-R|;lA)oNB23_5c>%$bofmI3XuuGJgN!6eI4FqXAOjXb zZ7dd%IfuuTDG3hLnJ^_lfB`+QOi`jlLlqf2%d`=6L#75LRfvdCq2z;$2@CjG8NkAZ zhy^PD=4|jW#>NEzHw4L`>U0H|9CEl=NFYKjTek}WK>1XlMGYPt1X1BbdCUPnaV&%o zVdBbK7Dyy~QL(sH0R$n|NTz(Hz?K*Z5-hM{7_@*3Ixu`FcbbYIF_ae^iH#s_Z6pFx zBq*UHg#g}SezQhUoc8hLArREqLgRV49D<}!wodtaiV!AL!1w^7oF^RN%gg^<0uK-L z>OUxO?`esk9P*9FRtX6x07MJl1ph+u${x6mPo1=LX&!V>^cAi@MrVEKube?-uwgb6$$02&F9X{H|x g2ok}ac;1Ny9ctW30Rw;rD(IkfB4X&Fg#-csJIWr+e*gdg literal 0 HcmV?d00001 diff --git a/src/d3forum/assets/images/posticon0.gif b/src/d3forum/assets/images/posticon0.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0ad29ef92cf9e8267b3a34dea11c50b1efcb5dd GIT binary patch literal 189 zcmZ?wbhEHbG#%=g*xx z_tU3OU%q_#{{8#cuV4TF|37o)Oa@Yb;!hT^avcx}vXg<;N1(8)7Dr~qI8LR=mNkh8; literal 0 HcmV?d00001 diff --git a/src/d3forum/assets/images/posticon1.gif b/src/d3forum/assets/images/posticon1.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0ad29ef92cf9e8267b3a34dea11c50b1efcb5dd GIT binary patch literal 189 zcmZ?wbhEHbG#%=g*xx z_tU3OU%q_#{{8#cuV4TF|37o)Oa@Yb;!hT^avcx}vXg<;N1(8)7Dr~qI8LR=mNkh8; literal 0 HcmV?d00001 diff --git a/src/d3forum/assets/images/posticon2.gif b/src/d3forum/assets/images/posticon2.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc3eb04f36731ff3d762178c2004396c60a3a068 GIT binary patch literal 190 zcmZ?wbhEHboR3l}b2yLRo%moHDAJo(_kgX71KuUWI^)TvX44jp>&;>ERV*Z%+iKXc|x25dm_ zCkt3u2SkGGWMH*cQ0q&{oR^`+G)=U}k$b|SQbFZJZk5-EjHVWNsED$O-ah(KV+v2_ b=_IF42N8DWm5mdoNHE70`W$OvV6X-NdLUEs literal 0 HcmV?d00001 diff --git a/src/d3forum/assets/images/posticon3.gif b/src/d3forum/assets/images/posticon3.gif new file mode 100644 index 0000000000000000000000000000000000000000..28fc789148d3702a3fc54ac67412e988b9828ac0 GIT binary patch literal 190 zcmZ?wbhEHbeY`QKknVT z_vzE8pFe-zw{PE(BS&V)etuG~WUWQiGb=Dq-?1_wRoQo6KRbC%5np)r?Bd9h-D6vq% dRZD{NP+?+%f^m?ep+SOB^RdMqdi_oe)&PhHRYL#( literal 0 HcmV?d00001 diff --git a/src/d3forum/assets/images/posticon4.gif b/src/d3forum/assets/images/posticon4.gif new file mode 100644 index 0000000000000000000000000000000000000000..be5a069d56f2689dac758f0542e1a6ec43a8de55 GIT binary patch literal 130 zcmZ?wbhEHbK*G LI!~mqFjxZsFpV#O literal 0 HcmV?d00001 diff --git a/src/d3forum/assets/images/posticon6.gif b/src/d3forum/assets/images/posticon6.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d6d45d1927b71a9e3ea86beedde1aa1248510ea GIT binary patch literal 97 zcmZ?wbhEHbGuO^&n)z(*r`AVqa#vlQgfw{$X=<}9Xj6{7Z#i_@% literal 0 HcmV?d00001 diff --git a/src/d3forum/assets/images/topic_01.gif b/src/d3forum/assets/images/topic_01.gif new file mode 100644 index 0000000000000000000000000000000000000000..c8de70c966ecb589b6a368aaf460a2c5e566af24 GIT binary patch literal 906 zcmV;519kjINk%w1VITk?0OkMy=i9#DsznM43go<6F)=aWvrprt*4EI_(BtFd zva+%sPb$B^zqx}WaBy(x>FMw9@BRJ#C(>8+^z=o|Yv7o7`lTbz=$Uj5)#0`z$7Fj9v&VmD=Wpt#d>;rxq~D(H#g_q$LHS8=f`f9T^zB2 zKe~=h<-cH@Wh30BLA;VuPEJmZRu<2#f3$@}w~0uZVIQe=Gpu*tE>3c#n^d($dlzLnEYwQ;}yPk!T`?g@xzR zlru9k$DwPcrl#lApHx&-%gf84YAC~;VvAE00|Nsoy;A@G|NsC0A^8LW004ggEC2ui z03ZM$000O7fPaF6goTEOh>41egeZf5q=Xo#7&860K0x29iPt69m28zEhH3&TxrTIZOq=^ zEW*Oo6c>kdU&?+gDedm<;o{`x=XUD6`1$w~Br4^JdgR>0M}b5Oef`S0N#rC$c!}BSYsdnJB;01Tir&m24--jx4~4CrwRF>FMddAr$@n{qOJZ z^z`}p`Q6>!*4Eb0(9pSqBiGm0mlg}k%F42`vZ0}&zrVld-_y~sg!W!e+@(S1 z*tF-zZn}dc=hBqqyIL3+80EiUxq~EXYHChSPN{V>=g*0{gCotVe8Ze##-C^m3=AF~ z9Q5 z%ge!tC#I&R<-cFp*x1mNGN5WFn|Cl&R8)_TkL0{r$c`;`c6PV7x98fvm~bo6(a~^l zaG+`^!^6YH#l=WSNax(g=iSERwp8D#Md!|li>qDHZ?!|NsC0A^8LW004ggEC2ui z03ZM$000O7fPaF6goTEOh>41eges1XeJhfalYNhlicu+>n;Ctdpr9F?n^B2PUtUHR z7oMS^8LURBO^G^Pco%+tuCJdNyBBv|I*Chf2)ceG8O_elB*6#>ONm!4Ey^P#+}+(H z!Pr-cTL1vcek1DZ>$`pz=39w81qJBt`1u$0Jc&CnFz)3Wcmd#!L`-nt0HUFx!-o)o z?7_h#Q3L@3rg+%Mv7^T+7$YPqGGM@i4k%NqT=}46kwi*dxPY*srp=o;A;?sc=m-G< zL@)>)O0+1EpGOiQnL%a(ho?}ZN}Vuc29iWSV#MI`p{v)gU(0ZbvF1l2A$bg70l~Jd z+qQAbN?^&8M@S+kV1oDv!MCqpzG3M2NE0N8lSDTdFpyEAvE#>eY{-z&#)je>iK-kp zKm~>8&!F8OB+9~qMGq6OW6K`XqsD_8tyyGAG$%m<2`7RJA1*-(1SxQQ zCpeR6h=T?bBuJl5U5ge96dE{qJ|s~RGXWGRSg=6+`0?cx1X#~LNg^w3D#)KtzkYoy ziJ(~6&%b|vG5%QqMIuj#@PY_57%0MmIUKkkf(Yhd;1i1QVc~@sW~d<}9CqlThk*b9 EJ6*S?PXGV_ literal 0 HcmV?d00001 diff --git a/src/d3forum/assets/images/topic_11.gif b/src/d3forum/assets/images/topic_11.gif new file mode 100644 index 0000000000000000000000000000000000000000..6819c39e56d00855a21086417c246116bdb60a4f GIT binary patch literal 881 zcmV-%1CIPhNk%w1VITk?0Oo%Hzm`|flrjeg2kGhQQgCoDczn2yZaBy(f*VpIY)6uYm_FhiFh$k2r7`lTb zH#avVBqT5}FvyN9Jv}`~M@JG85-Te!dU|?GOH1e7#|#V%F)=YhLP8!M9=U@gta&z^ zWh0GN7PpB=%B6FF5` zn>WagEs>Ftk!K>2Xd;D$g}1l2(b3UVR8-5$%h=f1plTyjkbm z$LHI<=i0vBszl_wTI04;;j&NRvrdas6irP{0|Nu=DHZ?!|NsC0A^8LW004ggEC2ui z03ZM$000O7fPaF6goTEOh>41egcpt%eHfCHlYNhmibxil77Tr#pr8z#oJfg6H6(j` zo}r-(t0XryH$sU$CVPHbCOwHjbh>^M49(8Y6Ty2Vb3lnOKFSpn+}+(3 z!G3!_Fo`rz%6=8=?CiVZ;!iY*KT+xL`1!hfQ9p@AJnrQixQ|DXL_w&OIKZ%>!-plr zQ3;X=0F@94GHTq&F@!__iH=-JfuN+xlPFUhD3RqzA}KgP6qre~rcDqDLg0{+=mi!I z1A+=2N|XbF6j)v)+A#zLfu~TTN<~os#E>0{a@ZNMpsUxfU)PKnz#&eKL`3d%Xu!6u z+qP)VAao#rVhWK&Eb^#uz_+hozG~d4NV8xB9u|pYXwd+nvE#>GlxWaUMM;AWT4W^B zQAdP?&!9t}5#fcxn=uYlfYFi2hLIBwV#}WW<%AP1P8w@4Vk1!-I06(1A5L6A5)etu zd=>$RO`;ZIJn)%Lz50?RO`6C)VWmYPC;`Zn5kR55`SZjT2nYZr(F`#kK1i=lpT36= zGZHb$z~6xX{{R}WMSvMFk%$WsY!JZ;2}a;x3<^59;DRwE=z=18WT@eW9CpaahaiR+ HVjuuJ6~Uir literal 0 HcmV?d00001 diff --git a/src/d3forum/assets/images/topic_invisible.gif b/src/d3forum/assets/images/topic_invisible.gif new file mode 100644 index 0000000000000000000000000000000000000000..d083460dd85cbc625758558329d27803e84e1f6e GIT binary patch literal 643 zcmV-}0(|{PNk%w1VITk?0M$PLfq;8-baZTKV|aFQKtMn`Iyy;4Ll_tsSyfPgfPipq zXk=krGBPronwe8jOp=n4Y-(szQ&VbZVvdfEOh`nQmX<3kD_dJzURzfqBO_2wONxq$ zTv=0MUt71gw?#-zrKP2yprEs}v#+nOsi~=0RZlcFH+*_`etv$3hldUh4ry(3Xk=fA zhJ%cXhk$;0l97&ne0FwpZ;y_PdU$klaBFmNYnYdpl#`N$gn(dOS4BZRoSd9eS6;cf zx&QzFA^8LW002J#EC2ui03ZM$000L6z@KnPEE_#IRqZd z%+1aO$P!5s000Fd*xB0K1=Z3>EH5twBjx7j=mp{|NeeMCCM5Fn^z|n13rQU`Gz=jB z00RnSz^{Y80Rt?ASje!ULkkEEBEcX-h6OShG2XCH5knFVHf&_5K(eICk~k)02+84N zjT#vq$ec-2=7bFy2-v965=jZ51vL)rG01_B2TtWlt#M3NE$6dXuFwW`$w2O#t) z;DD)9Bn|{fIDn$8*|Px-I4BT7fLjMiG>BCZpswA!Dm0kTph1FP4RKkpu%M!_;lm6} zP@o`KFkmDU7A!D8nL=gC1}qzp%y|KYBouUr9!CZ?Ea9GW{wd>aglI$pffVS-t dv}@zGji5Gy9ZGfxA5OfuaVE%(sdc)$F2PL@!7$ul5|(WYZt1T zi?pMY?d|Q5P!V=P4thinZaxi*O%S466qQmE$&OU(-_xI26r+=a*?AhNUKF;HaGO>W zgh~*+t(@L_8_94OfJYB;Kn=&o$IZ>n($dnw!NKXSb=Ph94f6 zm>-P=Cn#(yC?_)&1q4+D1r;-$9uo~10Vfm!0x~AIxH7a9Cjl5YAOskwIK{@t#Rmi@ z1Rx;;9|;Ex)YLC8)zmWy9|IvhJQ5oVHs$3A2EC2v3_azq` z@@mwG5CMb&5eP*92;l%gLJ=20MBpHBLW&y;Mra&?pg{x#8%HR(ks?Kn5E3LzSU{pB z2^cYAz;H=o!Gx3{9;i@Zp@WV+pFo5DTwr161DykU=2*(K>Cy!fR1A3FAVUTV9N-Du i%C!dv9#$Rnu&`vpjk9Reo)tp2hugPsV!YA^8LV00000EC2ui02Tli000L6zyP7aD;keTUV{(_Fmk@AbV~K*4$WtEE4^l+ z)ZFO=o_d|-XoiKsurgsRnwl8>expSEJI%CSDJd^4a9wf-X$&zx1_nPd3{we*357W@ zcL)e~Fkl%869Eqs3<)_oB`X>l5D=>?C8r4t6A?8F69)_jDs31uGrlSZ#1jiOJrooR z3lJa|(3;Q}AP~$H01iD35&!@s72y>jA>tJz-T)Fk1rP2X92W8x8yoW$93Bzw1qBfi z3O>*nI8cNLf&)J&_}7n#3>*+63J?%6qKp7K3iOa*z{QP^AWfJ63DSjubq)ZC*uk>p z4iqR{wj7WxrH2kSa^~zXU;s`ioi+w|s40Pftr|#?Do~I#X#@hBi7cQr1FPDseWznM}@=hD#f z+}WgkdDgJ3%EiRY$j9EMq2{}``0MJ|pq##kRcUi7Z21h zApigWA^8LV00000EC2ui02Tli000L6z#N9RD;kf;9S@Vs1$4fsbV~K<0?lW2E4^l+ zRFc6!s(PK^D5Uah|05IS=m0c<}k95Zb)3@>dJ0iZbr0RbKpw6zl&9t;h&9V9?J3Si(1rh`{^z<$c_4EW1@EaQf z@g95__~FEZ2PX*Pc)(AX|O%Itg*4Ebf z`T6wp^y%s8@9*#Z{r%(Pyfm=Dao`PpdG~U9Z#-)Lwe_)zzO`UQ}yq0sgm~+Pj#)p?+*n zG>2C{tE;QJlWu}$O}?CW)T@X$H#gX#InAqw&7^>ya9Cw!WzVpUoO4V^M@I|{40?Kc zIXOAUk0IBwk|ZP~mupKN9v--zfx41!hE_e%v5a5U?jBKW+ zri)`htb${JVNrl-P>*z4-N2x&kZ!(|a-D8f%b|XPS3<0TWP)5dp@wg>jBKZhYqgDU zp?+VdlzhCKcc*(jT$yrEkzhrMVNH)^OWC`aXi7AcX-Y~g9;|?0mTpVK!^6eJ#g%STR8&;E zlW+h3|NsC0A^8LW00930EC2ui03ZM$000R80RIUbNU)&6g9sA}%)wBhLxd|LKAcD} z#|j`61uEhJCCQE-ML2o{X%WcBkR4C*__$*rE-@XBMDfAo2?CiuR+L;p(Q|xA`*guvGxcM zagRa?7XSt*;D9Aikj@_8R3Ohln+)@Y01UKY0t^&ZXyJt>w80K93;@v1K=|;nO9j-J zk;e-trl{hId6?k~AJq^O%|NwC(Fg!YSdoGZJof10k11FIixfy;P|85gqybMRV|4Mw z3{XZXrIeC<(FFi$j8Vxc11;djHsoAV#UU(|Y37+`PE*4nRea)xGH9SO&@*?SU=0ai zBtpZUeD=AgH~A#O4;UESK>`xR3}g-l6QJ;b5>C`0>7qwkP;uf*-0_i%14bbTZ38!e|jj5K{n>!U^!kD=#60 z(6a%%fW$G0x*81BfF6Y`5<~$;oFRuDA8b(Y!3i4?hcN;dP){5H_b`wx;wV7G5IqRd efCd|P{Bg)0gUqqV3fOZ@Ml84N^2-ke1OPiUCb!7| literal 0 HcmV?d00001 diff --git a/src/d3forum/lib/CategoryJump.tsx b/src/d3forum/lib/CategoryJump.tsx new file mode 100644 index 0000000..f0f380e --- /dev/null +++ b/src/d3forum/lib/CategoryJump.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { RouteComponentProps, withRouter } from 'react-router-dom'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import D3ForumUtils, { D3ForumCategoryData } from './D3ForumUtils'; + +interface Props extends RouteComponentProps { + lang: MultiLang; + name: string; + catId: number; +} + +export const CategoryJump = (props: Props) => { + const { lang, name, catId } = props; + const LABEL_TOP = Functions.mlang('[en]Top[/en][ja]トップ[/ja]', lang); + const LABE_SUBMIT = Functions.mlang('[en]Jump to a category[/en][ja]カテゴリージャンプ[/ja]', lang); + const catSelect = React.createRef(); + const catSelectOptions: JSX.Element[] = [ + + ]; + const catSelectLoop = (categories: D3ForumCategoryData[]) => { + categories.forEach((category) => { + const title = Functions.mlang(category.cat_title, lang); + const depth = category.cat_depth_in_tree !== 0 ? '--'.repeat(category.cat_depth_in_tree) + ' ' : ''; + catSelectOptions.push(); + catSelectLoop(D3ForumUtils.getSubCategories(name, category.cat_id)); + }); + }; + catSelectLoop(D3ForumUtils.getCategories(name)); + return (
      { + e.preventDefault(); + if (catSelect.current !== null) { + const catId = parseInt(catSelect.current.value, 10) + const url = catId === 0 ? D3ForumUtils.getIndexUrl(name) : D3ForumUtils.getCategoryUrl(name, catId); + props.history.push(url); + } + }}> + + +
      ); +}; + +export default withRouter(CategoryJump); \ No newline at end of file diff --git a/src/d3forum/lib/D3ForumUtils.ts b/src/d3forum/lib/D3ForumUtils.ts new file mode 100644 index 0000000..a495538 --- /dev/null +++ b/src/d3forum/lib/D3ForumUtils.ts @@ -0,0 +1,399 @@ +import loki from 'lokijs'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import d3forumJson from '../assets/d3forum.json'; + +export interface D3ForumModuleData { + name: string; + dirname: string; + message: string; +} + +export interface D3ForumCategoryData { + cat_id: number; + pid: number; + cat_title: string; + cat_desc: string; + cat_topics_count: number; + cat_posts_count: number; + cat_last_post_id: number; + cat_last_post_time: number; + cat_topics_count_in_tree: number; + cat_posts_count_in_tree: number; + cat_last_post_id_in_tree: number; + cat_last_post_time_in_tree: number; + cat_depth_in_tree: number; + cat_order_in_tree: number; + cat_path_in_tree: any; + cat_unique_path: string; + cat_weight: number; + cat_options: any; +} + +export interface D3ForumForumData { + forum_id: number; + cat_id: number; + forum_external_link_format: string; + forum_title: string; + forum_desc: string; + forum_topics_count: number; + forum_posts_count: number; + forum_last_post_id: number; + forum_last_post_time: number; + forum_weight: number; + forum_options: any; +} + +export interface D3ForumTopicData { + topic_id: number; + forum_id: number; + topic_external_link_id: string; + topic_title: string; + topic_first_uid: number; + topic_first_post_id: number; + topic_first_post_time: number; + topic_last_uid: number; + topic_last_post_id: number; + topic_last_post_time: number; + topic_views: number; + topic_posts_count: number; + topic_locked: number; + topic_sticky: number; + topic_solved: number; + topic_invisible: number; + topic_votes_sum: number; + topic_votes_count: number; + topic_first_uid_name: string; + topic_first_uid_uname: string; + topic_last_uid_name: string; + topic_last_uid_uname: string; +} + +export interface D3ForumPostData { + post_id: number; + pid: number; + topic_id: number; + post_time: number; + modified_time: number; + uid: number; + uid_hidden: number; + poster_ip: string; + modifier_ip: string; + subject: string; + subject_waiting: string; + html: number; + smiley: number; + xcode: number; + br: number; + number_entity: number; + special_entity: number; + icon: number; + attachsig: number; + invisible: number; + approval: number; + votes_sum: number; + votes_count: number; + depth_in_tree: number; + order_in_tree: number; + path_in_tree: string; + unique_path: string; + guest_name: string; + post_text: string; + post_text_waiting: string; + uid_name: string; + uid_uname: string; + uid_rank: number; + uid_posts: number; +} + +interface D3ForumData { + module: D3ForumModuleData; + categories: D3ForumCategoryData[]; + forums: D3ForumForumData[]; + topics: D3ForumTopicData[]; + posts: D3ForumPostData[]; +} + +interface D3ForumLokiData { + module: D3ForumModuleData; + categories: Collection; + forums: Collection; + topics: Collection; + posts: Collection; +} + +const categorySort = (a: D3ForumCategoryData, b: D3ForumCategoryData) => { + if (a.cat_weight > b.cat_weight) { + return 1; + } else if (a.cat_weight < b.cat_weight) { + return -1; + } + if (a.cat_id > b.cat_id) { + return 1; + } else if (a.cat_id < b.cat_id) { + return -1; + } + return 0; +} + +const forumSort = (a: D3ForumForumData, b: D3ForumForumData) => { + if (a.forum_weight > b.forum_weight) { + return 1; + } else if (a.forum_weight < b.forum_weight) { + return -1; + } + if (a.forum_id > b.forum_id) { + return 1; + } else if (a.forum_id < b.forum_id) { + return -1; + } + return 0; +} + +export enum D3ForumPostSortOrder { TREE, OLD, NEW } +class D3ForumPostSorter { + + private order: D3ForumPostSortOrder; + + constructor(order: D3ForumPostSortOrder) { + this.order = order; + this.sort = this.sort.bind(this); + } + + sort(a: D3ForumPostData, b: D3ForumPostData) { + switch (this.order) { + case D3ForumPostSortOrder.TREE: { + if (a.unique_path > b.unique_path) { + return 1; + } else if (a.unique_path < b.unique_path) { + return -1; + } + break; + } + case D3ForumPostSortOrder.OLD: { + if (a.post_time > b.post_time) { + return 1; + } else if (a.post_time < b.post_time) { + return -1; + } + break; + } + case D3ForumPostSortOrder.NEW: { + if (a.post_time > b.post_time) { + return -1; + } else if (a.post_time < b.post_time) { + return 1; + } + break; + } + } + return 0; + } +} + +class D3ForumUtils { + + private database: loki; + private modules: Map; + + constructor(json: D3ForumData[]) { + this.database = new loki('d3forum'); + this.modules = new Map(); + json.forEach((data) => { + const name = data.module.dirname; + const d3forum = { + module: data.module, + categories: this.database.addCollection(name + '_categories'), + forums: this.database.addCollection(name + '_forums'), + topics: this.database.addCollection(name + '_topics'), + posts: this.database.addCollection(name + '_posts'), + } + data.categories.forEach((category) => { + d3forum.categories.insert(category); + }); + data.forums.forEach((forum) => { + d3forum.forums.insert(forum); + }); + data.topics.forEach((topic) => { + d3forum.topics.insert(topic); + }); + data.posts.forEach((post) => { + d3forum.posts.insert(post); + }); + this.modules.set(name, d3forum); + }); + } + + getTitle(name: string, lang: MultiLang): string { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return ''; + } + return Functions.mlang(d3forum.module.name, lang); + } + + getIndexUrl(name: string): string { + return '/' + name; + } + + getCategoryUrl(name: string, catId: number): string { + return this.getIndexUrl(name) + '/category/' + catId; + } + + getForumUrl(name: string, forumId: number): string { + return this.getIndexUrl(name) + '/forum/' + forumId; + } + + getTopicUrl(name: string, topicId: number, order: D3ForumPostSortOrder, postId: number | null): string { + const params = new URLSearchParams(); + if (order !== D3ForumPostSortOrder.TREE) { + params.set('order', String(order)); + } + const paramString = params.toString(); + return this.getIndexUrl(name) + '/topic/' + topicId + (paramString !== '' ? '?' + paramString : '') + (postId !== null ? '#postId' + postId : ''); + } + + getPostUrl(name: string, postId: number): string { + return this.getIndexUrl(name) + '/post/' + postId; + } + + getTotalTopics(name: string): number { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return 0; + } + return d3forum.topics.count(); + } + + getTotalPosts(name: string): number { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return 0; + } + return d3forum.posts.count(); + } + + getModule(name: string): D3ForumModuleData | null{ + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return null; + } + return d3forum.module; + } + + getCategories(name: string): D3ForumCategoryData[] { + return this.getSubCategories(name, 0); + } + + getSubCategories(name: string, parentCatId: number): D3ForumCategoryData[] { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return []; + } + const filter = { + 'pid': parentCatId + }; + const result = d3forum.categories.chain().find(filter).sort(categorySort).data(); + return result; + } + + getCategory(name: string, catId: number): D3ForumCategoryData | null { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return null; + } + const filter = { + 'cat_id': catId + }; + const result = d3forum.categories.findOne(filter); + return result; + } + + getForums(name: string, catId: number): D3ForumForumData[] { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return []; + } + const filter = { + 'cat_id': catId + }; + const result = d3forum.forums.chain().find(filter).sort(forumSort).data(); + return result; + } + + getForum(name: string, forumId: number): D3ForumForumData | null { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return null; + } + const filter = { + 'forum_id': forumId + }; + const result = d3forum.forums.findOne(filter); + return result; + } + + getTopics(name: string, forumId: number): D3ForumTopicData[] { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return []; + } + const filter = { + 'forum_id': forumId + }; + const result = d3forum.topics.find(filter); + return result; + } + + getTopic(name: string, topicId: number): D3ForumTopicData | null { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return null; + } + const filter = { + 'topic_id': topicId + }; + const result = d3forum.topics.findOne(filter); + return result; + } + + getPosts(name: string, topicId: number, order: D3ForumPostSortOrder): D3ForumPostData[] { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return []; + } + const filter = { + 'topic_id': topicId + }; + const sorter = new D3ForumPostSorter(order); + const result = d3forum.posts.chain().find(filter).sort(sorter.sort).data(); + return result; + } + + getChildPosts(name: string, parentPostId: number): D3ForumPostData[] { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return []; + } + const filter = { + 'pid': parentPostId + }; + const sorter = new D3ForumPostSorter(D3ForumPostSortOrder.TREE); + const result = d3forum.posts.chain().find(filter).sort(sorter.sort).data(); + return result; + } + + getPost(name: string, postId: number): D3ForumPostData | null { + const d3forum = this.modules.get(name); + if (typeof d3forum === 'undefined') { + return null; + } + const filter = { + 'post_id': postId + }; + const result = d3forum.posts.findOne(filter); + return result; + } +} + +export default new D3ForumUtils(d3forumJson); \ No newline at end of file diff --git a/src/d3forum/lib/ForumJump.tsx b/src/d3forum/lib/ForumJump.tsx new file mode 100644 index 0000000..5571bad --- /dev/null +++ b/src/d3forum/lib/ForumJump.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { RouteComponentProps, withRouter } from 'react-router-dom'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import D3ForumUtils, { D3ForumCategoryData, D3ForumForumData } from './D3ForumUtils'; + +interface Props extends RouteComponentProps { + lang: MultiLang; + name: string; + forumId: number; +} + +export const ForumJump = (props: Props) => { + const { lang, name, forumId } = props; + const LABE_SUBMIT = Functions.mlang('[en]Jump to a forum[/en][ja]フォーラムジャンプ[/ja]', lang); + const forumSelect = React.createRef(); + const forumSelectOptions: JSX.Element[] = []; + const forumSelectLoop = (categories: D3ForumCategoryData[]) => { + categories.forEach((category) => { + D3ForumUtils.getForums(name, category.cat_id).forEach((forum: D3ForumForumData) => { + const title = Functions.mlang(category.cat_title + ' - ' + forum.forum_title, lang); + const depth = category.cat_depth_in_tree !== 0 ? '--'.repeat(category.cat_depth_in_tree) + ' ' : ''; + forumSelectOptions.push(); + }); + forumSelectLoop(D3ForumUtils.getSubCategories(name, category.cat_id)); + }); + }; + forumSelectLoop(D3ForumUtils.getCategories(name)); + return ( +
      { + e.preventDefault(); + if (forumSelect.current !== null) { + const url = D3ForumUtils.getForumUrl(name, parseInt(forumSelect.current.value, 10)); + props.history.push(url); + } + }}> + + +
      + ); +}; + +export default withRouter(ForumJump); \ No newline at end of file diff --git a/src/d3forum/lib/Post.tsx b/src/d3forum/lib/Post.tsx new file mode 100644 index 0000000..c6b0844 --- /dev/null +++ b/src/d3forum/lib/Post.tsx @@ -0,0 +1,95 @@ +import moment from 'moment'; +import React, { Fragment } from 'react'; +import { HashLink } from 'react-router-hash-link'; +import noAvatarImage from '../../common/assets/images/no_avatar.gif'; +import UserRankStarImage from '../../common/lib/UserRankStarImage'; +import XoopsCode from '../../common/lib/XoopsCode'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import D3ForumUtils, { D3ForumPostData } from './D3ForumUtils'; +import PostIcon from './PostIcon'; + +interface Props { + lang: MultiLang; + name: string; + post: D3ForumPostData; + nextPostId: number; + prevPostId: number; + inTopic: boolean; +} + +const postUrl = (name: string, postId: number, inTopic: boolean) => { + return inTopic ? '#postId' + postId : D3ForumUtils.getPostUrl(name, postId); +} + +const Post = (props: Props) => { + const { lang, name, post, nextPostId, prevPostId, inTopic } = props; + const depth = String(post.depth_in_tree * 5) + '%'; + const url = D3ForumUtils.getPostUrl(name, post.post_id) + const subject = <> {Functions.mlang(post.subject, lang)}; + const children = D3ForumUtils.getChildPosts(name, post.post_id); + const LABEL_PARENT = Functions.mlang('[en]Parent[/en][ja]親投稿[/ja]', lang); + const LABEL_PREV = Functions.mlang('[en]Previous post[/en][ja]前の投稿[/ja]', lang); + const LABEL_NEXT = Functions.mlang('[en]Next post[/en][ja]次の投稿[/ja]', lang); + const LABEL_NO_CHILD = Functions.mlang('[en]No child[/en][ja]子投稿なし[/ja]', lang); + const LABEL_CHILD = Functions.mlang('[en]Child[/en][ja]子投稿[/ja]', lang); + return ( + <> +
      + {post.uid_uname} +

      + {inTopic ? {subject} : subject} +

      + msg# {post.unique_path.substring(1)} +
      +
      +
      +
      depth:
      +
      {post.depth_in_tree}
      +
      +
      + {prevPostId === 0 ? LABEL_PREV : {LABEL_PREV}} +  -  + {nextPostId === 0 ? LABEL_NEXT : {LABEL_NEXT}} +  |  + {post.pid === 0 ? LABEL_PARENT : {LABEL_PARENT}} +  -  + {children.length === 0 ? LABEL_NO_CHILD : children.map((child: D3ForumPostData, idx: number) => { + const label = (idx === 0 ? LABEL_CHILD : '') + child.unique_path.substr(post.unique_path.length); + return ( + + {idx > 0 && ' '} + {label} + + ); + })} +  |  + {Functions.mlang('[en]Posted on[/en][ja]投稿日時[/ja]', lang)} {moment(new Date(post.post_time * 1000)).format('YYYY/M/D H:m')} +
      +
      +
      + {post.uid === 0 ? Functions.mlang(post.guest_name, lang) : + <> + {post.uid_uname} +   + +   + {Functions.mlang('[en]Posts[/en][ja]投稿数[/ja]', lang)}: {post.uid_posts} + + } +
      +
      + +
      +
      + + {Functions.mlang('[en]Votes[/en][ja]投票数[/ja]', lang)}:{post.votes_count} +    + {Functions.mlang('[en]Average[/en][ja]平均点[/ja]', lang)}:{(post.votes_count === 0 ? 0 : post.votes_sum / post.votes_count).toFixed(2)} + +
      + + ); +} + +export default Post; \ No newline at end of file diff --git a/src/d3forum/lib/PostIcon.tsx b/src/d3forum/lib/PostIcon.tsx new file mode 100644 index 0000000..91a1142 --- /dev/null +++ b/src/d3forum/lib/PostIcon.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import imagePost0 from '../assets/images/posticon0.gif'; +import imagePost1 from '../assets/images/posticon1.gif'; +import imagePost2 from '../assets/images/posticon2.gif'; +import imagePost3 from '../assets/images/posticon3.gif'; +import imagePost4 from '../assets/images/posticon4.gif'; +import imagePost5 from '../assets/images/posticon5.gif'; +import imagePost6 from '../assets/images/posticon6.gif'; +import imagePost7 from '../assets/images/posticon7.gif'; +import { D3ForumPostData } from './D3ForumUtils'; + +interface Props { + lang: MultiLang; + post: D3ForumPostData; + title?: string; +} + +const postIcons = [imagePost0, imagePost1, imagePost2, imagePost3, imagePost4, imagePost5, imagePost6, imagePost7]; +const postIconMeanings = ['[en]none[/en][ja]なし[/ja]', '[en]normal[/en][ja]通常[/ja]', '[en]unhappy[/en][ja]不満[/ja]', '[en]happy[/en][ja]満足[/ja]', '[en]lower it[/en][ja]下げ[/ja]', '[en]raise it[/en][ja]上げ[/ja]', '[en]report[/en][ja]報告[/ja]', '[en]question[/en][ja]質問[/ja]']; + +const PostIcon = (props: Props) => { + const { lang, post, title } = props; + const num = post.icon < 0 && post.icon > 7 ? 0 : post.icon; + const icon = postIcons[num]; + const meaning = Functions.mlang(postIconMeanings[num], lang); + const title_ = typeof title === 'undefined' ? meaning : title; + return {meaning}; +} + +export default PostIcon; diff --git a/src/d3forum/lib/PostsTree.tsx b/src/d3forum/lib/PostsTree.tsx new file mode 100644 index 0000000..f1f430d --- /dev/null +++ b/src/d3forum/lib/PostsTree.tsx @@ -0,0 +1,49 @@ +import moment from 'moment'; +import React from 'react'; +import { HashLink } from 'react-router-hash-link'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import D3ForumUtils, { D3ForumPostData } from './D3ForumUtils'; +import PostIcon from './PostIcon'; + +interface Props { + lang: MultiLang; + name: string; + posts: D3ForumPostData[]; + postId: number; +} + +const postUrl = (name: string, postId: number, inTopic: boolean) => { + return inTopic ? '#postId' + postId : D3ForumUtils.getPostUrl(name, postId); +} + +const PostsTree = (props: Props) => { + const { lang, name, posts, postId } = props; + const inTopic = postId === 0; + return ( +
      +

      {Functions.mlang('[en]Posts tree[/en][ja]投稿ツリー[/ja]', lang)}

      +
        + {posts.map((post) => { + const style = { + paddingLeft: String(post.depth_in_tree * 10) + 'px', + } + const className = post.post_id === postId ? 'd3f_eachbranchitem d3f_currenttopic' : 'd3f_eachbranchitem'; + const subject = <> {Functions.mlang(post.subject, lang)}; + return ( +
      • + + {post.post_id === postId ? subject : {subject}} +   + ({post.uid !== 0 ? post.uid_uname : post.guest_name}, {moment(new Date(post.post_time * 1000)).format('YYYY/M/D H:mm')}) +   + +
      • + ); + })} +
      +
      + ); +} + +export default PostsTree; \ No newline at end of file diff --git a/src/database/Database.module.css b/src/database/Database.module.css new file mode 100644 index 0000000..8ea86ba --- /dev/null +++ b/src/database/Database.module.css @@ -0,0 +1,70 @@ +.database { + margin: 0; +} + +.database :global(.list) { + width: 100%; +} + +.database :global(.listTable) { + width: 100%; + border-collapse: separate; + border-spacing: 5px; +} + +.database :global(.listTable .listIcon), +.database :global(.listTable .listExtra) { + vertical-align: middle; + text-align: center; + width: 65px; + line-height: 0; +} + +.database :global(.itemDetail) { + border-collapse: separate; + border-spacing: 1px; +} +.database :global(.itemDetail .head) { + width: 30%; +} + +.database :global(.itemDetail .readme), +.database :global(.itemDetail .rights) { + background-color: #ffffff; + width: 100%; + max-height: 200px; + overflow: auto; +} + +.database :global(.advancedSearch .head) { + width: 30%; +} + +.database :global(.advancedSearch .search) { + text-align: center; + margin: 10px; +} + +.database :global(.advancedSearch .itemtype) { + margin-bottom: 5px; +} + +.database :global(.advancedSearch .itemtype .itemtypeName), +.database :global(.advancedSearch .itemtype .itemtypeFields) { + border-collapse: separate; + border-spacing: 1px; +} + +.database :global(.advancedSearch .itemtype .itemtypeName th) { + padding: 5px; +} + +.database :global(.advancedSearch .fieldDateLabel) { + display: inline-block; + width: 50px; +} + +.database :global(.advancedSearch .fieldDate select), +.database :global(.advancedSearch .fieldDate input) { + margin: 0 5px 0 0; +} diff --git a/src/database/Database.tsx b/src/database/Database.tsx new file mode 100644 index 0000000..51a6e3a --- /dev/null +++ b/src/database/Database.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import Helmet from 'react-helmet'; +import { Route, RouteComponentProps, Switch } from 'react-router-dom'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import styles from './Database.module.css'; +import DatabaseAdvancedSearch from './DatabaseAdvancedSearch'; +import DatabaseDetailItem from './DatabaseDetailItem'; +import DatabaseSearchByAdvancedKeyword from './DatabaseSearchByAdvancedKeyword'; +import DatabaseSearchByIndexId from './DatabaseSearchByIndexId'; +import DatabaseSearchByItemType from './DatabaseSearchByItemType'; +import DatabaseSearchByKeyword from './DatabaseSearchByKeyword'; +import DatabaseTop from './DatabaseTop'; + +interface Props { + lang: MultiLang; +} + +const Database = (props: Props) => { + const { lang } = props; + return ( +
      + + {Functions.mlang('[en]Database[/en][ja]データベース[/ja]', lang)} - {Functions.siteTitle(lang)} + + + } /> + ) => } /> + ) => } /> + } /> + ) => } /> + ) => } /> + } /> + } /> + ) => } /> + ) => } /> + + +
      + ); +} + +export default Database; \ No newline at end of file diff --git a/src/database/DatabaseAdvancedSearch.tsx b/src/database/DatabaseAdvancedSearch.tsx new file mode 100644 index 0000000..6375e4c --- /dev/null +++ b/src/database/DatabaseAdvancedSearch.tsx @@ -0,0 +1,48 @@ +import React, { Component } from 'react'; +import { RouteComponentProps } from 'react-router'; +import Config, { MultiLang } from '../config'; +import Functions from '../functions'; +import ItemType from './item-type'; +import AdvancedSearchQuery from './lib/AdvancedSearchQuery'; +import ItemUtil from './lib/ItemUtil'; + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +class DatabaseAdvancedSearch extends Component { + + private query: AdvancedSearchQuery = new AdvancedSearchQuery(); + + constructor(props: Props) { + super(props); + this.handleClickSearchButton = this.handleClickSearchButton.bind(this); + } + + handleClickSearchButton() { + if (!this.query.empty()) { + const url = ItemUtil.getSearchByAdvancedKeywordsUrl(this.query); + this.props.history.push(url); + } + } + + render() { + const { lang } = this.props; + return ( +
      +

      {Functions.mlang('[en]Search Items[/en][ja]アイテム検索[/ja]', lang)}

      +
      + +
      + {Config.XOONIPS_ITEMTYPES.map((type) => { + return ; + })} +
      + +
      +
      + ); + } +} + +export default DatabaseAdvancedSearch; \ No newline at end of file diff --git a/src/database/DatabaseDetailItem.tsx b/src/database/DatabaseDetailItem.tsx new file mode 100644 index 0000000..74dfa1a --- /dev/null +++ b/src/database/DatabaseDetailItem.tsx @@ -0,0 +1,89 @@ +import React, { Component } from 'react'; +import Helmet from 'react-helmet'; +import { RouteComponentProps } from 'react-router'; +import Loading from '../common/lib/Loading'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import ItemType from './item-type'; +import ItemUtil, { Item } from './lib/ItemUtil'; + +interface Params { + id: string; + doi: string; +} + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +interface State { + loading: boolean; + item: Item | null; +} + +class DatabaseDetailItem extends Component { + + private id: number; + private doi: string; + + constructor(props: Props) { + super(props); + this.state = { + loading: true, + item: null, + }; + const { params } = this.props.match; + this.id = typeof params.id !== 'undefined' ? (params.id.match(/^\d+$/) !== null ? parseInt(params.id, 10) : 0) : 0; + this.doi = typeof params.doi !== 'undefined' ? params.doi : ''; + } + + componentDidMount() { + this.updateItem(); + } + + componentDidUpdate() { + const { params } = this.props.match; + const id = typeof params.id !== 'undefined' ? (params.id.match(/^\d+$/) !== null ? parseInt(params.id, 10) : 0) : 0; + const doi = typeof params.doi !== 'undefined' ? params.doi : ''; + if (this.id !== id || this.doi !== doi) { + this.id = id; + this.doi = doi; + this.updateItem(); + } + } + + updateItem() { + if (this.doi !== '') { + ItemUtil.getByDoi(this.doi, (item) => { + this.setState({ loading: false, item }); + }); + } else if (this.id !== 0) { + ItemUtil.get(this.id, (item) => { + this.setState({ loading: false, item }); + }); + } + } + + render() { + const { lang } = this.props; + if (this.state.loading) { + return ; + } + if (this.state.item === null) { + return ; + } + return ( + <> + + {Functions.mlang(this.state.item.title, lang)} - {Functions.mlang('[en]Database[/en][ja]データベース[/ja]', lang)} - {Functions.siteTitle(lang)} + +

      {Functions.mlang('[en]Detail[/en][ja]詳細[/ja]', lang)}

      +
      + + + ); + } +} + +export default DatabaseDetailItem; \ No newline at end of file diff --git a/src/database/DatabaseSearchByAdvancedKeyword.tsx b/src/database/DatabaseSearchByAdvancedKeyword.tsx new file mode 100644 index 0000000..72427aa --- /dev/null +++ b/src/database/DatabaseSearchByAdvancedKeyword.tsx @@ -0,0 +1,56 @@ +import React, { Component } from 'react'; +import { RouteComponentProps } from 'react-router'; +import { MultiLang } from '../config'; +import AdvancedSearchQuery from './lib/AdvancedSearchQuery'; +import DatabaseListItem from './lib/DatabaseListItem'; +import ItemUtil, { SearchCallbackFunc, SortCondition } from './lib/ItemUtil'; + +interface Props extends RouteComponentProps { + lang: MultiLang +} + +interface State { + search: string; + query: AdvancedSearchQuery; +} + +class DatabaseSearchByAdvancedKeyword extends Component { + + constructor(props: Props) { + super(props); + const search = props.location.search; + const query = ItemUtil.getAdvancedSearchQueryByQuery(search); + this.state = { search, query }; + this.searchFunc = this.searchFunc.bind(this); + } + + static getDerivedStateFromProps(nextProps: Props, prevState: State) { + const search = nextProps.location.search; + if (prevState.search !== search) { + const query = ItemUtil.getAdvancedSearchQueryByQuery(search); + return { search, query }; + } + return null; + } + + getUrl() { + return ItemUtil.getSearchByAdvancedKeywordsUrl(this.state.query); + } + + searchFunc(condition: SortCondition, func: SearchCallbackFunc) { + ItemUtil.getListByAdvancedSearchQuery(this.state.query, condition, func); + } + + render() { + const { lang } = this.props; + const baseUrl = this.getUrl(); + return ( +
      +

      Listing item

      + +
      + ); + } +} + +export default DatabaseSearchByAdvancedKeyword; diff --git a/src/database/DatabaseSearchByIndexId.tsx b/src/database/DatabaseSearchByIndexId.tsx new file mode 100644 index 0000000..8e81783 --- /dev/null +++ b/src/database/DatabaseSearchByIndexId.tsx @@ -0,0 +1,88 @@ +import React, { Component, Fragment } from 'react'; +import Helmet from 'react-helmet'; +import { RouteComponentProps } from 'react-router'; +import { Link } from 'react-router-dom'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import DatabaseListIndex from './lib/DatabaseListIndex'; +import DatabaseListItem from './lib/DatabaseListItem'; +import IndexUtil, { Index, INDEX_ID_PUBLIC } from './lib/IndexUtil'; +import ItemUtil, { SearchCallbackFunc, SortCondition } from './lib/ItemUtil'; + +interface Params { + id: string; +} + +export interface Props extends RouteComponentProps { + lang: MultiLang; +} + +interface State { + indexId: number; +} + +class DatabaseSearchByIndexId extends Component { + + constructor(props: Props) { + super(props); + const { params } = props.match; + this.state = { + indexId: params.id ? (params.id.match(/^\d+$/) !== null ? parseInt(params.id, 10) : 0) : INDEX_ID_PUBLIC, + } + this.searchFunc = this.searchFunc.bind(this); + } + + static getDerivedStateFromProps(nextProps: Props, prevState: State) { + const { params } = nextProps.match; + const indexId = params.id ? (params.id.match(/^\d+$/) !== null ? parseInt(params.id, 10) : 0) : INDEX_ID_PUBLIC; + if (prevState.indexId !== indexId) { + return { indexId }; + } + return null; + } + + getUrl() { + if (this.state.indexId === 0) { + return '/'; + } + return IndexUtil.getUrl(this.state.indexId); + } + + searchFunc(condition: SortCondition, func: SearchCallbackFunc) { + if (this.state.indexId === 0) { + const res = { total: 0, data: [] }; + func(res); + } else { + ItemUtil.getListByIndexId(this.state.indexId, condition, func); + } + } + + render() { + const { lang } = this.props; + const index = IndexUtil.get(this.state.indexId); + if (index === null) { + return ; + } + const baseUrl = this.getUrl(); + const pIndexes = IndexUtil.getParents(this.state.indexId); + const parents = pIndexes.map((value: Index) => { + const url: string = IndexUtil.getUrl(value.id); + return / {value.title} ; + }); + const title = pIndexes.map((value) => { return '/' + value.title; }).join(''); + return ( +
      + + {Functions.mlang(title, lang)} - {Functions.mlang('[en]Database[/en][ja]データベース[/ja]', lang)} - {Functions.siteTitle(lang)} + +

      {Functions.mlang('[en]Listing item[/en][ja]アイテム一覧[/ja]', lang)}

      +
      {parents}
      + + +
      + ); + } +} + +export default DatabaseSearchByIndexId; diff --git a/src/database/DatabaseSearchByItemType.tsx b/src/database/DatabaseSearchByItemType.tsx new file mode 100644 index 0000000..257538b --- /dev/null +++ b/src/database/DatabaseSearchByItemType.tsx @@ -0,0 +1,73 @@ +import React, { Component } from 'react'; +import { RouteComponentProps } from 'react-router'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import DatabaseListItem from './lib/DatabaseListItem'; +import ItemUtil, { SearchCallbackFunc, SortCondition } from './lib/ItemUtil'; + +interface Params { + itemType: string; + subItemType: string; +} + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +interface State { + itemType: string; + subItemType: string; +} + +class DatabaseSearchByItemType extends Component { + + constructor(props: Props) { + super(props); + const { params } = this.props.match; + this.state = { + itemType: params.itemType ? params.itemType : '', + subItemType: params.subItemType ? params.subItemType : '', + }; + this.searchFunc = this.searchFunc.bind(this); + } + + static getDerivedStateFromProps(nextProps: Props, prevState: State) { + const { params } = nextProps.match; + const item_type = params.itemType ? params.itemType : ''; + const sub_item_type = params.subItemType ? params.subItemType : ''; + if (prevState.itemType !== item_type || prevState.subItemType !== sub_item_type) { + return { item_type, sub_item_type }; + } + return null; + } + + searchFunc(condition: SortCondition, func: SearchCallbackFunc) { + if (this.state.itemType === '') { + const res = { total: 0, data: [] }; + func(res); + } else { + ItemUtil.getListByItemType(this.state.itemType, this.state.subItemType, condition, func); + } + } + + getUrl() { + let url = ItemUtil.getItemTypeSearchUrl(this.state.itemType); + if (this.state.subItemType !== '') { + url += '/' + this.state.subItemType; + } + return url; + } + + render() { + const { lang } = this.props; + const baseUrl = this.getUrl(); + return ( +
      +

      {Functions.mlang('[en]Listing item[/en][ja]アイテム一覧[/ja]', lang)}

      + +
      + ); + } +} + +export default DatabaseSearchByItemType; diff --git a/src/database/DatabaseSearchByKeyword.tsx b/src/database/DatabaseSearchByKeyword.tsx new file mode 100644 index 0000000..8961fd8 --- /dev/null +++ b/src/database/DatabaseSearchByKeyword.tsx @@ -0,0 +1,60 @@ +import React, { Component } from 'react'; +import { RouteComponentProps } from 'react-router'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import DatabaseListItem from './lib/DatabaseListItem'; +import ItemUtil, { KeywordSearchType, SearchCallbackFunc, SortCondition } from './lib/ItemUtil'; + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +interface State { + type: KeywordSearchType; + keyword: string; +} + +class DatabaseSearchByKeyword extends Component { + + constructor(props: Props) { + super(props); + const { type, keyword } = ItemUtil.getSearchKeywordByQuery(this.props.location.search); + this.state = { type, keyword }; + this.searchFunc = this.searchFunc.bind(this); + } + + static getDerivedStateFromProps(nextProps: Props, prevState: State) { + const { type, keyword } = ItemUtil.getSearchKeywordByQuery(nextProps.location.search); + if (prevState.type !== type || prevState.keyword !== keyword) { + return { type, keyword }; + } + return null; + } + + getUrl() { + return ItemUtil.getSearchByKeywordUrl(this.state.type, this.state.keyword); + } + + searchFunc(condition: SortCondition, func: SearchCallbackFunc) { + if (this.state.keyword === '') { + const res = { total: 0, data: [] }; + func(res); + } else { + ItemUtil.getListByKeyword(this.state.type, this.state.keyword, condition, func); + } + } + + render() { + const { lang } = this.props; + const baseUrl = this.getUrl(); + return ( +
      +

      {Functions.mlang('[en]Listing item[/en][ja]アイテム一覧[/ja]', lang)}

      +

      {Functions.mlang('[en]Search Keyword[/en][ja]検索キーワード[/ja]', lang)} : {this.state.keyword}

      + +
      + ); + } +} + +export default DatabaseSearchByKeyword; diff --git a/src/database/DatabaseTop.module.css b/src/database/DatabaseTop.module.css new file mode 100644 index 0000000..a89d26d --- /dev/null +++ b/src/database/DatabaseTop.module.css @@ -0,0 +1,13 @@ +.itemTypes .itemType { + width: 50%; + padding: 5px; +} + +.itemTypes .itemType :global(table) { + width: auto; +} + +.itemTypes .itemType :global(table .itemTypeName) { + vertical-align: middle; + font-size: large; +} \ No newline at end of file diff --git a/src/database/DatabaseTop.tsx b/src/database/DatabaseTop.tsx new file mode 100644 index 0000000..3e88a06 --- /dev/null +++ b/src/database/DatabaseTop.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import Config, { MultiLang } from '../config'; +import styles from './DatabaseTop.module.css'; +import ItemType from './item-type'; + +interface Props { + lang: MultiLang; +} + +const DatabaseTop = (props: Props) => { + const { lang } = props; + const types: string[][] = []; + const len = Config.XOONIPS_ITEMTYPES.length; + for (let i = 0; i < Math.ceil(len / 2); i++) { + const j = i * 2; + const p = Config.XOONIPS_ITEMTYPES.slice(j, j + 2); + types.push(p); + } + return ( + + + {types.map((value, idx) => { + return ( + + {value.map((type, idx) => { + return ( + + ); + })} + + ); + })} + +
      + {type !== '' && } +
      + ); +} + +export default DatabaseTop; diff --git a/src/database/DatabaseXoopsPathRedirect.tsx b/src/database/DatabaseXoopsPathRedirect.tsx new file mode 100644 index 0000000..a38c0d2 --- /dev/null +++ b/src/database/DatabaseXoopsPathRedirect.tsx @@ -0,0 +1,150 @@ +import React, { Component } from 'react'; +import { Redirect, RouteComponentProps, withRouter } from 'react-router'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +class DatabaseXoopsPathRedirect extends Component { + + getRedirectUrl(): string { + const { location } = this.props; + const pathname = location.pathname || ''; + const query = new URLSearchParams(location.search); + const search = new RegExp('^/modules/xoonips(?:/+(.*))?$'); + const matches = pathname.match(search); + if (matches === null) { + return ''; + } + const path = matches[1] || ''; + switch (path) { + case '': + case 'index.php': { + return '/database'; + } + case 'detail.php': { + const id = query.get('id'); + if (id !== null) { + return '/database/item/id/' + Functions.escape(id); + } + const itemId = query.get('item_id'); + if (itemId !== null && itemId.match(/^\d+$/) !== null) { + return '/database/item/' + Functions.escape(itemId); + } + return ''; + } + case 'listitem.php': { + const indexId = query.get('index_id'); + if (indexId !== null && indexId.match(/^\d+$/) !== null) { + const params = new URLSearchParams(); + const map: any = { + orderby: { key: 'orderby', isNumber: false }, + order_dir: { key: 'order_dir', isNumber: true }, + itemcount: { key: 'itemcount', isNumber: true }, + page: { key: 'page', isNumber: true } + }; + for (let k in map) { + const v = query.get(k); + if (v === null || v.length === 0) { + continue; + } + if (map[k].isNumber && v.match(/^\d+$/) !== null) { + continue; + } + params.set(map[k].key, v); + } + const paramStr = params.toString(); + return '/database/list/' + Functions.escape(indexId) + (paramStr.length > 0 ? '?' + paramStr : ''); + } + break; + } + case 'itemselect.php': { + const op = query.get('op'); + if (op === null) { + break; + } + switch (op) { + case 'quicksearch': { + const keyword = query.get('keyword'); + const itemType = query.get('search_itemtype'); + if (keyword === null || itemType === null || keyword === '') { + return ''; + } + const type = itemType.replace('xnp', ''); + if (itemType !== 'basic' && itemType !== 'all' && itemType.match(/^xnp.+/) === null) { + return ''; + } + const params = new URLSearchParams({ type, keyword }); + const map: any = { + orderby: { key: 'orderby', isNumber: false }, + orderdir: { key: 'order_dir', isNumber: true }, + item_per_page: { key: 'itemcount', isNumber: true }, + page: { key: 'page', isNumber: true } + }; + for (let k in map) { + const v = query.get(k); + if (v === null || v.length === 0) { + continue; + } + if (map[k].isNumber && v.match(/^\d+$/) !== null) { + continue; + } + params.set(map[k].key, v); + } + return '/database/search?' + params.toString(); + } + case 'itemtypesearch': { + const itemType = query.get('search_itemtype'); + if (itemType === null || itemType.match(/^xnp.+/) === null) { + return ''; + } + const type = itemType.replace('xnp', ''); + return '/database/search/itemtype/' + Functions.escape(type); + } + case 'itemsubtypesearch': { + let type = ''; + let subtype = ''; + query.forEach((v, k) => { + if (k.match(/^xnp[a-z]+$/) !== null && !!v) { + type = k.replace('xnp', ''); + return; + } + }) + if (type === '') { + return ''; + } + query.forEach((v, k) => { + if (k.match(`^xnp${type}_.+$`) !== null && !!v) { + subtype = v; + return; + } + }); + if (subtype === '') { + return ''; + } + return '/database/search/itemtype/' + Functions.escape(type) + '/' + Functions.escape(subtype); + } + } + return ''; + } + case 'advanced_search.php': { + return '/database/advanced'; + } + } + return ''; + } + + render() { + const { lang } = this.props; + const url = this.getRedirectUrl(); + if (url === '') { + return ; + } + return ; + } +} + +export default withRouter(DatabaseXoopsPathRedirect); diff --git a/src/database/assets/images/icon_binder.gif b/src/database/assets/images/icon_binder.gif new file mode 100644 index 0000000000000000000000000000000000000000..c438f03e7af7b501673a603440ee9db01b84a432 GIT binary patch literal 369 zcmZ?wbhEHblw*)%I3mPwKOy0~fWRdMg+~PiKkwgv+28+W{`~jr*WU>U`1Ah#*YoGE z85lfkXn0y*f78L?)BgQu7#RM80RwSB@h1x-1A`EQ4oEr3P6pO@3sm}2GUsJz$ufvA zv}2|e*}n^6W@O@JVY1E8Dr*pAPETjy?<}ovU@c%^;1irw*TYxE z%R75+*VJ+b%SB5jYjl@$rO#Y5ZyI}y`JA=t>vQux7w_6y&d7RT%d(!PmV-;D^l%2I zpE%#+vH8%+YsYV1EoV7xb$8wJ5JzVw=IAR=LfHfL?UWAIE;EUVQ#;t68NKsJ25a=0|0Ikgqi>V literal 0 HcmV?d00001 diff --git a/src/database/assets/images/icon_book.gif b/src/database/assets/images/icon_book.gif new file mode 100644 index 0000000000000000000000000000000000000000..6deea1b7b471ffc16ba9f4d4fdaaa57fa06e63d9 GIT binary patch literal 375 zcmV--0f_!bNk%w1VIBY;0K^^u&kzvlkB{bnfZR|}-(X z%m4uY|Nq#(*Z=?kA^8LW0015UEC2ui03HAy000H_peK%GX`bk4M2zC3u*qpa!5Le# z#4vYogvlf@0B|B0MTIwdZ~zBEhLa#1GzWrh1G6X=4a0LF&~!9{Vqy>oa8sP(Q_$9O zGKdKU5}3YG9334L2M9I=1Z`4OMF@WC+P22AE~yk^~nq4hjqr90dpm6p%?EU|FtDag0RaFu VJUDp5fdvK|HZa&hvEzvl06PI`qyGQ^ literal 0 HcmV?d00001 diff --git a/src/database/assets/images/icon_conference.gif b/src/database/assets/images/icon_conference.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec56f37ef3bb18a7af0aab878c098ff837456cc1 GIT binary patch literal 427 zcmZ?wbhEHblw*)%IKseiKOy0~fWRdMh4<^%zwGb-^ZxzU^XDHG6kIbf_<8^SoB8wa z1Oz;-uYcCiaMQuz)BgQu7#RM80RwSB@h1x-1A`EQ4oEr3P6pQh3sm}2G}X=r&&aVB zV^?AC%AU+EE6QtfXB*2CK}|OXrUl&!24eC8sogJo9Aeqq%TAXnw4IBa{)EBg+=~)s zK?OGsfzOfxvX*y3(-j#WI?MQlmsM1{vNN)9F_%;{DV4VhYA_41_;LICm-e@~O);A3 z#wNfvE2Wz`l!IH4eNAXW*leM4J^>~!Yg=wMUiNN2Ue}F%TUg=Qr^+4ZZ}$aeJ`iXWng4jd5tB0+NJ(gon;|h7`_;GTs`qWDYVooSLe` n_)?N7m}M!89|y|{OQ*=~9BfQ74>XllG%%M4tT7N|Vz34PsKtx5 literal 0 HcmV?d00001 diff --git a/src/database/assets/images/icon_data.gif b/src/database/assets/images/icon_data.gif new file mode 100644 index 0000000000000000000000000000000000000000..30d35c8ae03fb76a428e84d99c516ced3a8a4f21 GIT binary patch literal 402 zcmZ?wbhEHblw*)%I3mpO=l%Pi_wSz<5V)kEa6cj8{rdHH0s`L5pMTB3;OqJGj|vK2 z_V=IV;X7|&cGJP()BgR>8XC?pF#P}j|Hl3s3`79MpDc_F48jaLAhjSn8Cd^6Q0Ys_ zoTnt{IMCcsh2DzEvdfk(Bw@z6o$BWeDe4j(2c%rWP1 zv|MD%*%sAQEp2l`$vD5Zg^ywDAqS@UYc5&%TCg?nvDZW}R+zC@TQD%QGcr}wnh0=o zNAq**atZM>@v)drGi8}6#FZ(Kz#k$cAm~0#a0$yqw~gyI2(g+iGh-12vS9W^eYqdv)gH`_KGu zpZ!P`s9XCu{QUf-4d1gaScmz^ZEO51lXP+U1O?~n52uziM+7|Lca+hWnlmHdkW;3_ YfBwz@#>G#&?KF~3&GG!~!ogq-0O_fiTL1t6 literal 0 HcmV?d00001 diff --git a/src/database/assets/images/icon_files.gif b/src/database/assets/images/icon_files.gif new file mode 100644 index 0000000000000000000000000000000000000000..e102eea62efa5ecada08b31cc31df98496fbdf86 GIT binary patch literal 433 zcmZ?wbhEHblw*)%xXJ(m|NsAA!@#hLfng;B!*T|OWef~U7#LVkeb?2ZSCWFdZ$cGPFq@DbalPt;c?Z^??!m| zt?206v9b5k(jMmKJ}E1ER#EZ1rsics!>iWTx82=udwM=hpZ;m~?9cP&eOtc#$J(_& zH*NZ}bLan4r~aQk`~Ts?|6jiXT?KX>0YdR73nK%AF@p|B9mr1%Z08QlEb!2g>OZlh z=wyzN@0zJ4Ua7rvoB|V0zhz4?;17GPyF5-hJwtobj{9P{o?@p>PCnJs5bMaCQBfJK zDx;_*$M4EF>tv&&SKd#l^wqrOw6qk5h<4!lIzTk%@&%rJ!-?!o%$XQ-Qv-1_1le Bo4f!3 literal 0 HcmV?d00001 diff --git a/src/database/assets/images/icon_folder.gif b/src/database/assets/images/icon_folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..7a69a82c9749d7b69004aa4aa22aad2563d4b81c GIT binary patch literal 1508 zcmdT@Yc~`K03CM94B90Tt(cjdttEwMDcLa|%_y2trW};fNLwm7YOU47%ou}F26^Re z9n1*XYXqN#olwz{e15|_iknRy1MbK2v&qogfGAX zW?y5CI~={R!3P_B;j$G!u;8{0?*8!D0q-FAaN)}Za}WH(zz)YQKDc}YA4JF@gdW1) zBj6oF#4+$=5p@EG;}QJ}VoxFV4C0cIm;$j3DOr$YBQ*y(#mFs1emM#&QB;MJYE(6# zu?>oLv|dB|b@boHz#XUuaqBMTKf;BHjegi1fGuozaNrpPuLUmn*#lMxSfTI>f&X3v z>_gB2aH9}>2>W8di$TP3M4iM>@i?4-BfsK=04Ig`S%mmx#EX$2L1HRSrQu9E&PZ`q zillQ8o`*0KA{o+iAuBpnyAqu$boZm@7J3(|zKh$#7#zXiDDK^d z_5ns8Vr&wxW^wNU#vfyH3Xi7o_!*weVCEGjrts=DX5ZrDC;agz-p?=0=f55OFNOM< zs6!z15Y~Qi|K$?|5(q-FC9|olM@TZU4JB2SUr4s39iW>>_DXh}E7)#pyqRL>Ba8qW zX0raeP;}Y z-5N^3YjAXuQ*^#HmP>xWsh?**oPRVd%ZJ<{f0|T5+_q(4`%+p+ud&*u^PR4tL(8}m z%dWwDPT&4f+nk1)L|2p^rx{Wu>vjHWPFhJdYLwy?`!aOI=3hVMFDB`YzGpPV-FMWpJl2%N2#%EKh?f_|$b5|IJ!HZa3FDpv z`bXu;S&I@WwSRe7oTI=jaP4uCQN3Te*XmMv=HgC%4o_@eoY~Z87DVjoUHaoZJJU3R zIpsxOogdDy;K?U^Zu~>z^z@N~IjUv8Qcf<}Cfr!1rv6P3ePcj%+hzPR%P5xQ9yjl$ lasA9$Wa95!Zr0^&%}+M-i5vaE;7%$(Xql_S*mT0?e*r^Q%hCV< literal 0 HcmV?d00001 diff --git a/src/database/assets/images/icon_memo.gif b/src/database/assets/images/icon_memo.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6b4cd17263d5b1da29ae918a5201b636af99237 GIT binary patch literal 166 zcmZ?wbhEHblw*)%Sjfn5)4}0C3@H9&VdP?9V$fj#0+2idQ~8wsm8akGFP_80kP_S% z{-wU5&vn`}Pd$eXYi6lLp{1+fLxW4w49 zL0%sKi=6Po+4Opl!!RcR1bUbOYl%Zx7#cu=iW3+*md=gqS_~LZ3IsuJA&keLpiLq) z8k3_YGZdgY1Y05m5C9i?1O^UDE&^vy5&#(oUkXn?77us;5iSl4M;;O#1Cs-X9sv&u zM-l`s9TZ0!004{v1QrT_phq3Bp%)Yif+7M31so4Y4X-T~d2s-9Ed>J_o5ds%01ZAi zI12~{2AwYn0}u)T18j6K2L}rU6%|wO)d=?ZF9-y40un?B!tcX_0R{l9>cFSq7YR_b z@N06RgEvvm-W_0t;gW}6_zv(06#(QrYZyWnF>p{Y0f0Od7!07sFG7VB4hR%X2q|9<`YKkwh)Pe{0CU~nfO;F5yE%l`iJ z0s?R5&wtj?@M-`4n+^_V7#RM80RwSB@h1x-1A`EQ4oEr3P6pQh3sm}2GUsKiT9@-$ z!e58mFWbm_vGKVB5}mD#3$z4SJWd`K^k8Xd?+{67kl;{bXZm!(af;xPhk_CgGC`RO z3mbZvJ6xOsJ?fKt*lIR9h_hu1vhwlqvSc(0#&huZ#4>mb^6_UfFmwj-@C3y(F?LRj z%Cwpx$i^$k%qhe&rIDXy#u7oE`7@_a7GeIub4dbINt$5_EKIZ zr45ZsSPyOP+#`5NiD|`&O%Jzb9$>t@=8zy4TM*arYp;VgC^2(4o)VlmspIVXci*lG zFfQy9sZCw-Lef2dfso6jXG=GQ>NPEGQ)X)Et`K;n(dq4G;4r~$>Y;-Dd@)S3MK8rQ zIovUkopR#R!j`5o1Ktf^&p+BYO^MIp3DZGdCN?(jM43c~Mp-6S6^nom35}P%tavO1 ryqp+4qvE}Myb=@+Fe-Ya@F)Z>=#|z{XH(dixp>{(-4(Cf7#OSpAnB}> literal 0 HcmV?d00001 diff --git a/src/database/assets/images/icon_presentation.gif b/src/database/assets/images/icon_presentation.gif new file mode 100644 index 0000000000000000000000000000000000000000..c7e1b31e0586474949dfbe7dc3b5ea09034d0918 GIT binary patch literal 423 zcmZ?wbhEHblw*)%I3mPwKOy0~fWRdMh4<^%zwGb-^ZxzU^XDHG6kIbf_<8^SoB8wa z1Oz;-uYcCiaMQuz)BgQu7#RM80RwSB@h1x-1A`EQ4oEr3P6pQh3sm}&KiY7vT=!-L zOF)fC?pnTpV3+qv|AiP8oO)~&G!wW#X$Y~hJl*uN#mluX$LzU{(w2k|jVz2N=NLE| ze{d+A`(Sa)ahZ^;VMN07H_|VaeO%ocn7LRO+3RZg8gn&9rj%h$@z%f@YK&9#7UNn^-n_RflhPI(I$IA5q^6@9*K1l2!NJlk zE!HqF&>kM#P*CQ8fZJ(l-FJ88vaL9AoRg-;s63*KKJg zKyW`s9fF{P8E6<71j7eAL_UfDN8+gtHkw+6*_tUdgQ~d75in?6RWK0tZ~y={nb26K z4FXOzfZ=Q$8hRcL3MFYaR2&!uVpxm>0f#dfRSkk-02Ce@Cn-!B4uSw1V;%tn9uf`# zo<0T;9eW6+MIICk5H)E6q!Jy11pxqi4+jQY2^NMe2MQRPwi*in7yyg~1R6w34;UR! zEfWF(8mLtp8*K#()4v)z933hTEf5)a4y9EK8rp$Z=`iTP5Xl7t0ss(fD8M0rus{u{ zlyU$`!GsnDIuLqrV}}3$8pRCo!^lks7A_*MFksPvRe}>5t}Up>4;p|B3M}-1kjnx9 z0_GM35EGBe1_TIN^{^lS%qB`>knYPsFHHtg4rYznFwDaOa7-dR;N_-4DLPd&T-d_o z!2$wQ3TPlzr9dAK43l!HZ~|&Pg^GrHKyadJ*bfJ-2(x76fb&`CVYPG4l;KtO~HgiDylTrb0g4+azza}fdnJNuQ- A2LJ#7 literal 0 HcmV?d00001 diff --git a/src/database/assets/images/icon_stimulus.gif b/src/database/assets/images/icon_stimulus.gif new file mode 100644 index 0000000000000000000000000000000000000000..09de6b82c98fd156c7cc438b640232ba8992a803 GIT binary patch literal 302 zcmZ?wbhEHblw*)%I3mRG=l%Qh0s?R5&%dOg@b&!pYX%0N_V2%+kZ>m;;OG7OFZ=s% zIygLQXn0y*|EQqg{rdH17#RM80RwSB@h1x-1A`EQ4oEr3P6pQ13sm}2GUsJz2?;FN zr)nTlpsN&+eE5`rgte%m0tZWQ1Cw)u#Uj3L4kt$@fjO=YDg_OE3IbUL867HoJgtol z8Elh#I%?z+MPeM?L;MUfcp1YT`2|?x6POtoTq4-Am6(|XS=s&6n3x6mOs1($bmg3@ zG9zV?vJpS4)iNbsZVv7>O5Gftn}m271)A1$3ovaL;uDymKh1mHn NG9+ERu}P7^8UVNmS`z>O literal 0 HcmV?d00001 diff --git a/src/database/assets/images/icon_tool.gif b/src/database/assets/images/icon_tool.gif new file mode 100644 index 0000000000000000000000000000000000000000..b71b3f6956b29d680644915f1d93950c686127a7 GIT binary patch literal 399 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 literal 0 HcmV?d00001 diff --git a/src/database/assets/images/star.gif b/src/database/assets/images/star.gif new file mode 100644 index 0000000000000000000000000000000000000000..f90543e6882626b06bcf8cec21549306525587e9 GIT binary patch literal 538 zcmZ?wbhEHb2vb@RSOozqInO6T#O8h?|_5XzQpEL5` zkEr}RWB%`q#lQ1be=gYWYzo-Z9l5$WZ9{wB!sd!&4UR`TJuc33yV4MQvpeSSvY*r1C*w)v!W=ij>sT22X*>Yo2+uhmIk1Uz`eDS2m8z$dg zyZGR?ZRhsxdAVWD^ZmPC?AY=2RPVp{UH{+q{`=JV??czWk3jZ>|F5Thf3oD}sbl|t zpZfmf^1ok?8E6j_f3h$#FvK(HfUE+=2?Kk1Lwr+HAhTa{N3(~IYiFl>EKgr^fOniq zr+}V_ux3T`K xoV=_FYp1`Fy{@>KoswIJm#q#Hm!gfKONW6Pi*J0ivN~^vGkd2hcT*#SH2{Fq*#H0l literal 0 HcmV?d00001 diff --git a/src/database/assets/images/tree_folder_end_close.gif b/src/database/assets/images/tree_folder_end_close.gif new file mode 100644 index 0000000000000000000000000000000000000000..c1f6ecbf1e71b61b7066d3e3f4bc6b23a7728bb1 GIT binary patch literal 1039 zcmZ?wbhEHb6lD-*_|CwC@aSycCK@rT>CkB_HavImKIDCRK2DumMLa%)4=++ zwWy1z+dVgNNAbXifzlq*(T}6ko~5aJt6CLX)x4=O@iQ^^H|O8UE4YncWV4{y24U${ z5)v`uQnr%PHd6O4?|O3k*v-pFuWTtju&nsVsB6*+=cX>}OD{|Hj1I8-bZyzAcqZv zrw(p%bGG~Q`N@$58OIi7omi54YFYl34V70nR$t#-du>zA-JQ+%cemc%*>Z1JtDCjf zlLK83_jWux)bsRU_v8ItSGP3wSB94+yT3fz_w-QDlY`x5DIO(B?i;4&`MH{}nOS3R zp|^AW0(~6~6-7BIDJfxLVQy}24h{}xW@ZKkhX4Qn1IbZ9pAb;|$->CM(8izxvJR9d z95~)E@QNC_Y*=uxnVp@B9R}m8e7S89gNmq6Vc(y|f(C~+KDmSy zcE6@`y`*xxqH+B3+q|G`hjdf;)|&Lvm%gQTy`**e*qrv%nZ2ZTje1zRsE766xYWX- z;?S_Yu9N-h$n4v^_~yp<<;D5v$oS{S_vXg==*qT|S-6y2yO&49$h~T`3tB_|_NHi-X8s@@`<-v>Nzl!3% ziQ>PBbz?{8!;R&_jO4+KbYe#w7ZE={KOY|-00030|Nj6000000A^8LW004aeEC2ui z02Kfe06+)GfPH*@goTEOhl7F~Mm;+;H7zzbFEA{2ZHStig^GF}6%iH^5I8(Jba-x? z07FDtTUS_FR#j9}Qc#A9f_%QboQix(2L=kq3JC}c3=IMVhyxi*YSq$qpk50cf z9AN?HPMSD#2ay0EMaG;V115}@FJic8>7pq>0UuGGIBBv%MG6!rOfW&mvnQfJ F06SofM4SKs literal 0 HcmV?d00001 diff --git a/src/database/assets/images/tree_folder_end_open.gif b/src/database/assets/images/tree_folder_end_open.gif new file mode 100644 index 0000000000000000000000000000000000000000..9a233af94c9174e8ec8b9c0eb54fba393b894dfa GIT binary patch literal 619 zcmV-x0+jtnNk%w1VHE%q0OkMy00030|NjNc1qH3melLCDtW7+dCCR z6-M4hX69xzPBag>4HmEyKR-M#FD*YmJufdV9~~I!SycE6@` zy`*xxqH+B3+q|G`hjdf;)|&Lvm%gQTy`**e*qrv%nZ2ZTje1zRsE766xYWX-;?S_Y zu9N-h$n4v^_~yp<<;D5v$oS{S_vXg==*s59jO)md>c@}h#g6C1jquKt@640!%98EN zlI+Tn>c^1j#*cSqNp)mM^3ay<%#(IyN$}8`)VGMVo_emCc=Fe)^VqDgoqguds_)#r z)5ECW&a(RG$@%BV_TNzl!3%iQ>PBbz?{8!;R&_jO4+KbYe$8I4&F) z5kEgaA0HnY8X6N56aWAJ000000000000000000000000000000A^8LW004IYEC2ui z02Kfe06+)GfOi0QgoTEOhl7GFP)9{RKQ}-@IXX6OWr&)Jnu3ILE+ru*A|OIWLu_zn zoe)hNBqJv%=jnnqL_0h^H#j+MXK!TZ#9n;xAVtQM88B$XP{CwLl3u`8 zM6rS9jhHlR)TqHG2ayCNPrif!C@aSycCK@rT>CkB_HavImKIDCRK2DumMLa%)4=++ zwWy1z+dVgNNAbXifzlq*(T}6ko~5aJt6CLX)x4=O@iQ^^H|O8UE4YncWV4{y24U${ z5)v`uQnr%PHd6O4?|O3k*v-pFuWTtju&nsVsB6*+=cX>}OD{|Hj1I8-bZyzAcqZv zrw(p%bGG~Q`N@$58OIi7omi54YFYl34V70nR$t#-du>zA-JQ+%cemc%*>Z1JtDCjf zlLK83_jWux)bsRU_v8ItSGP3wSB94+yT3fz_w-QDlY`x5DIO(B?i;4&`MH{}nOS3R zp|^AW0(~6~6-7BIDJfxLVQy}24h{}xW@ZKkhX4Qn1IbZ9pAb;|$->CM(8izxvJR9d z95_BQ@QNC_Y*=uxnVp@BF0SZZLQxJ36&C<-O6Eps-LjF=|Fc)}kYvLK;COFFgYm z%42+N$Hi)AB^`vM6eI)|9LQcB^{9oD`PpfC4t9=|7Y`nOk9D{ZAHMgtp#p<70I;$~ A761SM literal 0 HcmV?d00001 diff --git a/src/database/assets/images/tree_folder_middle_normal.gif b/src/database/assets/images/tree_folder_middle_normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..d37786e47609fe6e7cd1852db001611f8954f47a GIT binary patch literal 627 zcmV-(0*w7fNk%w1VHE%q0QLX?KR-M#FD*YmJufdV9~~I!Sy zcE6@`y`*xxqH+B3+q|G`hjdf;)|&Lvm%gQTy`**e*qrv%nZ2ZTje1zRsE766xYWX- z;?S_Yu9N-h$n4v^_~yp<<;D5v$oS{S_vXg==*qT|S-6y2yO&49$h~T`3tB_|_NHi-X8s@@`<-v>Nzl!3% ziQ>PBbz?{8!;R&_jO4+KbYe#w7ZE={KOY|-00030|Nj6000000A^8LW004aeEC2ui z02Kfe000NjfPH*@goTEOhl7ZVh>C)IkdBOkgnJzn6Bihgi;8+46%iH^5I8(Jba-xw zgnT7BF)}kPE-!U&cWjc1d`brf3c(5q2n!4i0tAJ;9}f;lB1t14Bq16?K|jl_97a7m zG&L3melLCDtW7+dCCR z6-M4hX69xzPBag>4HmEyKR-M#FD*YmJufdV9~~I!SycE6@` zy`*xxqH+B3+q|G`hjdf;)|&Lvm%gQTy`**e*qrv%nZ2ZTje1zRsE766xYWX-;?S_Y zu9N-h$n4v^_~yp<<;D5v$oS{S_vXg==*s59jO)md>c@}h#g6C1jquKt@640!%98EN zlI+Tn>c^1j#*cSqNp)mM^3ay<%#(IyN$}8`)VGMVo_emCc=Fe)^VqDgoqguds_)#r z)5ECW&a(RG$@%BV_TNzl!3%iQ>PBbz?{8!;R&_jO4+KbYe$8I4&F) z5kEgaA0HnY8X6N56aWAJ000000000000000000000000000000A^8LW004IYEC2ui z02Kfe06+)MfOi0QgoTEOhl7GFP)9{RKQ}-@IXX6OWrd1}f}EO!b1o$zCL$n0Mni0H zW{HFlO-@{0T3dAq2Lc2R4|Sh}0KvhYhKc}G7Zw`J8W|WH932uAzY{4{W7%VI4Z;8l zcE8@^0r5dH3{2uYO*5CD>Xn<)Yqg``O55!< Owb3u8KH(H)um%9;3KEzA literal 0 HcmV?d00001 diff --git a/src/database/assets/images/tree_root_close.gif b/src/database/assets/images/tree_root_close.gif new file mode 100644 index 0000000000000000000000000000000000000000..747a1f6380e92a735ac6857a0b7086f85f524a4c GIT binary patch literal 594 zcmZ?wbhEHb6krf$_{P8>EiIFhlG@YL%gV;i!zbY8?&0I>=i%waz`|zl>>3yvo|>Lf zQdVA6Qd-y0Xk+hCU0dtw=Ei!OmGvkq$02sEbDUiJIeGSQOJ9~2OcPYSrYe>xW^mKM z`nI*Gi>TW@H*rVtz=wg-9@5c|qtl+Hsd}qg6O@*9Y<*Pg9uSBYiec^G1oztO%W@uH36UcvpGxt@jsLo?zVOt0gbQ zwaAHki7W49C!r8Eo@OhNDocrM3%TWS7P+>nk!C8TmNFSG#(QV9yIL3pdpNr~*r}_j zIXXBL6&8kvh4uIM*VWZkR#p}j6{V-Ar>3UH#l^+M#CUjk*xK5fo12@NnHd-usHmtY zD=W*&%1TK|iHeE}3k&n`@NjT&u(Pu>Gcz+XGXDSnp8*CGf3h$#Fw`*UfCNBs!oa@1 zp{A+1rM0cSqqDQDva7i;HK)9#tm)6UK-G@iernSm=V#M|D%*u=yrmZh25G04X@JVsMpSv8oW z#lywQ##BR1QAS#>ti{*O+_^+WUP@G0{DnYK5zBEtD_H}N1q&9n9&q&UdLoeI?83&a b9e1FjgM)=z+)(D@Lgz_~PdGI)FjxZsyjQL` literal 0 HcmV?d00001 diff --git a/src/database/assets/images/tree_root_normal.gif b/src/database/assets/images/tree_root_normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..25ae34cab59884e7dc87b5340a8427994044190d GIT binary patch literal 581 zcmZ?wbhEHb6krf$c*ejWEiKd4)svEv+SAj^%Er#aC*bDp;p6M);pw$?`_3gxmpy&< z{MXqCV$gaJw6gGu7M;>C8xiG@0u ztnuS&w&qyl$Gtg_r`48oeIW1pApVWP0>{%7CiqC7&C|S5qBAQ(XQ?aqDi7XOUVN*) z`PcgkEKe|Q^VO0U;#%ayy~LGwvXfAV8qeCIpteYdjg?WI*22wJB2|_W*%ork<1BJ* zRU^$*wiWvAsEV9f6nk+_!@1cFXJ$8*TFPX&81J3Y?rLFldik_q4`){gJ9RZRM+b+Z z!ou*du>Su3y1Kf`%F3dmqV)9i)YR0txVV^@7!MB*TU%Rmb8|B@GXnzy6%`d_Wo21e zSy53@VPRn&9v%)34t92SW@ctaM#lgD|1)3!#h)yU3=EYFIv^QPoH(#AYN%{#ZfR}G z%}5tv@^^Oejc1Q*n=-XIKRK&pnw6QnvL~N-n4Y%kv=vPixv9y_5^R!%Z481j-nJT= z>Kb-lQLHVFmeNW=+&m$MTCyw8oo_8JJC~P|l$u>Mr7R~cK~y**K!Bs5yd@`7C^6hx zP0hw9R;;v{Mc36{#V;~C(8RRIMuCN;y-m`c$z%mnb8EYkQ(nP@Mi<8>O?{_^hA<5Q G25SJ3?Yl|< literal 0 HcmV?d00001 diff --git a/src/database/assets/images/tree_root_open.gif b/src/database/assets/images/tree_root_open.gif new file mode 100644 index 0000000000000000000000000000000000000000..987e2e1b45b68be9a83d9bd518219ff29e8082a0 GIT binary patch literal 586 zcmZ?wbhEHb6krf$c*Xz%|NsA&mX=9LN$u(BWo2XM;S+Fk_we!c^YHXyU}3X&b`1;- zPfgD#DJw53DXnX0w6S-nuB~--b7MWt%6gQQ;}AR7IZmEE+|rk&Rj;X9-?kQY5p}!g zmi8>o#Lt9(C$HEBVS5X`O;JKS}fl&O(!pOjo z&!7X+1Bw#|_T>%vP0cN>O-Zpa{LG#Xj_x5G!EMb9Q>LUu#Ai*?D zcU68~Qd9(s5W8?%8xv2UtCfzfwvM%nKU<5PnTmS4w4{ibf@1pgX{#?!$;`Q&92p*! zkTE4EF*;O$&)18aGc~s*F^)IP$3jcX(k)0ZyO~wb$wt$|Z-GvyVsZzQlWkT{L*X%J ec3yF li:first-child > span.rc-tree-switcher-noop) { + background: url(../assets/images/tree_root_normal.gif); + width: 14px; +} +.indexTree:global(.rc-tree > li:first-child > span.rc-tree-switcher.rc-tree-switcher_open) { + background: url(../assets/images/tree_root_open.gif); + width: 14px; +} +.indexTree:global(.rc-tree > li:first-child > span.rc-tree-switcher.rc-tree-switcher_close) { + background: url(../assets/images/tree_root_close.gif); + width: 14px; +} + +.indexTree:global(.rc-tree > li:first-child > ul) { + padding: 0 0 0 5px; +} + +.indexTree:global(.rc-tree li:not(:last-child) > ul.rc-tree-child-tree.rc-tree-child-tree-open) { + background: url(../assets/images/tree_line_normal.gif) repeat-y; +} + +.indexTree:global(.rc-tree li:not(:last-child) > span.rc-tree-switcher-noop) { + background: url(../assets/images/tree_folder_middle_normal.gif); +} + +.indexTree:global(.rc-tree li:last-child > span.rc-tree-switcher-noop) { + background: url(../assets/images//tree_folder_end_normal.gif); +} + +.indexTree:global(.rc-tree li:not(:last-child) > span.rc-tree-switcher_open) { + background: url(../assets/images//tree_folder_middle_open.gif); +} + +.indexTree:global(.rc-tree li:not(:last-child) > span.rc-tree-switcher_close) { + background: url(../assets/images/tree_folder_middle_close.gif); +} + +.indexTree:global(.rc-tree li:last-child > span.rc-tree-switcher_open) { + background: url(../assets/images/tree_folder_end_open.gif); +} +.indexTree:global(.rc-tree li:last-child > span.rc-tree-switcher_close) { + background: url(../assets/images/tree_folder_end_close.gif); +} diff --git a/src/database/blocks/IndexTree.tsx b/src/database/blocks/IndexTree.tsx new file mode 100644 index 0000000..4ec3ffd --- /dev/null +++ b/src/database/blocks/IndexTree.tsx @@ -0,0 +1,104 @@ +import Tree, { ExpandData, SelectData, TreeNode } from 'rc-tree'; +import 'rc-tree/assets/index.css'; +import React, { Component } from 'react'; +import { RouteComponentProps, withRouter } from 'react-router'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import IndexUtil, { Index, INDEX_ID_PUBLIC } from '../lib/IndexUtil'; +import styles from './IndexTree.module.css'; + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +interface State { + tree: JSX.Element[]; + expandableKeys: string[]; + expandedKeys: string[]; + selectedKeys: string[]; +} + +class IndexTree extends Component { + + constructor(props: Props) { + super(props); + this.handleClickOpenAll = this.handleClickOpenAll.bind(this); + this.handleClickCloseAll = this.handleClickCloseAll.bind(this); + this.handleExpand = this.handleExpand.bind(this); + this.handleSelect = this.handleSelect.bind(this); + const res = this.load(); + this.state = { + tree: res.elements, + expandableKeys: res.keys, + expandedKeys: res.expandedKeys, + selectedKeys: [], + }; + } + + load() { + const { lang } = this.props; + let keys: string[] = []; + let eKeys: string[] = []; + const makeTreeNode = (index: Index, depth: number): JSX.Element => { + const title = Functions.mlang(index.title, lang) + (index.numOfItems > 0 ? ' (' + index.numOfItems + ')' : ''); + const children = IndexUtil.getChildren(index.id); + if (children.length === 0) { + return () + } + const childTreeNodes = children.map((value: Index) => { + return makeTreeNode(value, depth + 1); + }); + if (depth < 1) { + eKeys.push(String(index.id)); + } + keys.push(String(index.id)); + return ( + + {childTreeNodes} + + ); + }; + let elements: JSX.Element[] = []; + const index = IndexUtil.get(INDEX_ID_PUBLIC); + if (index !== null) { + elements.push(makeTreeNode(index, 0)); + } + return { + elements: elements, + keys: keys, + expandedKeys: eKeys, + } + } + + handleClickOpenAll() { + this.setState({ expandedKeys: this.state.expandableKeys }) + } + + handleClickCloseAll() { + this.setState({ expandedKeys: [] }) + } + + handleExpand(expandedKeys: string[], e: ExpandData): void { + this.setState({ expandedKeys }); + } + + handleSelect(selectedKeys: string[], e: SelectData): void { + const url = IndexUtil.getUrl(parseInt(e.node.props.eventKey, 10)); + this.props.history.push(url); + this.setState({ selectedKeys: [] }); + } + + render() { + return ( +
      + + + + {this.state.tree} + +
      + ); + } +} + +export default withRouter(IndexTree); diff --git a/src/database/blocks/Rankings.module.css b/src/database/blocks/Rankings.module.css new file mode 100644 index 0000000..362a532 --- /dev/null +++ b/src/database/blocks/Rankings.module.css @@ -0,0 +1,28 @@ +.heading { + margin: 0 0 3px; + font-size: 100%; + font-weight: normal; +} + +.item { + display: flex; + white-space: nowrap; + width: 100%; +} + +.order { + margin-right: 5px; +} + +.title { + overflow: hidden; + text-overflow: ellipsis; +} + +.count { + margin-left: 10px; +} + +.star { + margin-left: 5px; +} \ No newline at end of file diff --git a/src/database/blocks/Rankings.tsx b/src/database/blocks/Rankings.tsx new file mode 100644 index 0000000..81ba947 --- /dev/null +++ b/src/database/blocks/Rankings.tsx @@ -0,0 +1,97 @@ +import React, { Fragment } from 'react'; +import { Link } from 'react-router-dom'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import imageStar from '../assets/images/star.gif'; +import rankings from '../assets/rankings.json'; +import ItemUtil, { ItemCore } from '../lib/ItemUtil'; +import styles from './Rankings.module.css'; + +interface Props { + lang: MultiLang; +} + +const orderLabel = (order: number, lang: string) => { + return String(order) + (lang === 'en' ? Functions.ordinal(order) : '位') +} + +const Rankings = (props: Props) => { + const items = [ + { + title: Functions.mlang('[en]Frequently accessed items[/en][ja]頻繁に閲覧されるアイテム[/ja]', props.lang), + list: rankings.accessed.map((item, idx) => { + const url = ItemUtil.getUrl(item as ItemCore); + const title = Functions.mlang(item.title, props.lang); + const order = orderLabel(idx + 1, props.lang); + return ( +
      +
      {order}
      +
      {title}
      + {idx === 0 &&
      {order}
      } +
      + ); + }), + }, + { + title: Functions.mlang('[en]Frequently downloaded items[/en][ja]頻繁にダウンロードされるアイテム[/ja]', props.lang), + list: rankings.downloaded.map((item, idx) => { + const url = ItemUtil.getUrl(item as ItemCore); + const title = Functions.mlang(item.title, props.lang); + const order = orderLabel(idx + 1, props.lang); + return ( +
      +
      {order}
      +
      {title}
      + {idx === 0 &&
      {order}
      } +
      + ); + }), + }, + { + title: Functions.mlang('[en]Most active contributers[/en][ja]最も多くアイテムを公開したユーザ[/ja]', props.lang), + list: rankings.contributed.map((item, idx) => { + const name = item.name !== '' ? item.name + ' (' + item.uname + ')' : item.uname; + const title = Functions.mlang(name, props.lang); + const order = orderLabel(idx + 1, props.lang); + return ( +
      +
      {order}
      +
      {title}
      +
      ({item.count})
      + {idx === 0 &&
      {order}
      } +
      + ); + }), + }, + { + title: Functions.mlang('[en]Frequently searched keywords[/en][ja]頻繁に検索されるキーワード[/ja]', props.lang), + list: rankings.searched.map((item, idx) => { + const url = ItemUtil.getSearchByKeywordUrl('all', item.keyword); + const title = 'Search by: ' + item.keyword; + const order = orderLabel(idx + 1, props.lang); + return ( +
      +
      {order}
      +
      {item.keyword}
      + {idx === 0 &&
      {order}
      } +
      + ); + }), + }, + ]; + return ( +
      + {items.map((item, idx) => { + return ( + + {idx !== 0 &&
      } +

      {item.title}

      +
      {item.list}
      +
      + ); + })} +
      + ); +} + +export default Rankings; \ No newline at end of file diff --git a/src/database/blocks/RecentContents.module.css b/src/database/blocks/RecentContents.module.css new file mode 100644 index 0000000..6466fb7 --- /dev/null +++ b/src/database/blocks/RecentContents.module.css @@ -0,0 +1,28 @@ +.heading { + margin: 0 0 3px; + font-size: 100%; + font-weight: normal; +} + +.item { + display: flex; + white-space: nowrap; + width: 100%; +} + +.order { + margin-right: 5px; +} + +.title { + overflow: hidden; + text-overflow: ellipsis; +} + +.date { + margin-left: 10px; +} + +.star { + margin-left: 5px; +} \ No newline at end of file diff --git a/src/database/blocks/RecentContents.tsx b/src/database/blocks/RecentContents.tsx new file mode 100644 index 0000000..166cddd --- /dev/null +++ b/src/database/blocks/RecentContents.tsx @@ -0,0 +1,39 @@ +import moment from 'moment'; +import React from 'react'; +import { Link } from 'react-router-dom'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import imageStar from '../assets/images/star.gif'; +import contents from '../assets/recent-contents.json'; +import ItemUtil, { ItemCore } from '../lib/ItemUtil'; +import styles from './RecentContents.module.css'; + +interface Props { + lang: MultiLang; +} + +const RecentContents = (props: Props) => { + const { lang } = props; + const list = contents.map((item, idx) => { + const url = ItemUtil.getUrl(item as ItemCore); + const title = Functions.mlang(item.title, lang); + const date = moment(new Date(item.last_update_date * 1000)).format('Y/M/D'); + const order = String(idx + 1) + (lang === 'en' ? Functions.ordinal(idx + 1) : '位'); + return ( +
      +
      {order}
      +
      {title}
      +
      ({date})
      + {idx === 0 &&
      {order}
      } +
      + ); + }); + return ( +
      +

      {Functions.mlang('[en]Newly Arrived Items[/en][ja]新着アイテム[/ja]', lang)}

      +
      {list}
      +
      + ); +} + +export default RecentContents; \ No newline at end of file diff --git a/src/database/blocks/Search.tsx b/src/database/blocks/Search.tsx new file mode 100644 index 0000000..3ea0738 --- /dev/null +++ b/src/database/blocks/Search.tsx @@ -0,0 +1,90 @@ +import React, { ChangeEvent, Component, FormEvent } from 'react'; +import { Link, RouteComponentProps, withRouter } from 'react-router-dom'; +import Config, { MultiLang } from '../../config'; +import Functions from '../../functions'; +import ItemUtil, { KeywordSearchType } from '../lib/ItemUtil'; + +interface Props extends RouteComponentProps { + lang: MultiLang; +} + +interface State { + type: KeywordSearchType; + keyword: string; + pathname: string; +} + +class Search extends Component { + + constructor(props: Props) { + super(props); + this.state = { + type: 'all', + keyword: '', + pathname: '', + }; + this.handleChangeType = this.handleChangeType.bind(this); + this.handleChangeKeyword = this.handleChangeKeyword.bind(this); + this.handleSubmit = this.handleSubmit.bind(this); + } + + static getDerivedStateFromProps(nextProps: Props, prevState: State) { + const pathname = nextProps.location.pathname; + if (pathname !== prevState.pathname) { + if (pathname === '/database/search') { + const { type, keyword } = ItemUtil.getSearchKeywordByQuery(nextProps.location.search); + return { type, keyword, pathname }; + } + return { + type: prevState.type, + keyword: prevState.keyword, + pathname + }; + } + return null; + } + + handleChangeKeyword(event: ChangeEvent) { + const keyword = event.target.value.trim(); + this.setState({ keyword }); + } + + handleChangeType(event: ChangeEvent) { + const type = event.target.value as KeywordSearchType; + this.setState({ type }); + } + + handleSubmit(event: FormEvent) { + event.preventDefault(); + const url = ItemUtil.getSearchByKeywordUrl(this.state.type, this.state.keyword); + this.props.history.push(url); + } + + render() { + const { lang } = this.props; + const options = [ + { value: 'all', label: '[en]All[/en][ja]全て[/ja]' }, + { value: 'basic', label: '[en]Title & Keyword[/en][ja]タイトル&キーワード[/ja]' }, + ]; + Config.XOONIPS_ITEMTYPES.forEach((type) => { + options.push({value: type, label: Functions.pascalCase(type)}) + }); + return ( +
      + +    + +
      + +      + {Functions.mlang('[en]Advanced[/en][ja]詳細検索[/ja]', lang)} +
      + ); + } +} + +export default withRouter(Search); \ No newline at end of file diff --git a/src/database/item-type/binder/BinderAdvancedSearch.tsx b/src/database/item-type/binder/BinderAdvancedSearch.tsx new file mode 100644 index 0000000..55c33b3 --- /dev/null +++ b/src/database/item-type/binder/BinderAdvancedSearch.tsx @@ -0,0 +1,26 @@ +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class BinderAdvancedSearch extends AdvancedSearchBase { + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'binder'; + this.title = 'Binder'; + this.state.values['title'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + this.state.values['doi'] = ''; + } + + getRows() { + const rows = [ + { label: '[en]Title[/en][ja]タイトル[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + { label: 'ID', value: this.renderFieldInputText('doi', 50) }, + ]; + return rows; + } +} + +export default BinderAdvancedSearch; diff --git a/src/database/item-type/binder/BinderDetail.tsx b/src/database/item-type/binder/BinderDetail.tsx new file mode 100644 index 0000000..1b7d0a0 --- /dev/null +++ b/src/database/item-type/binder/BinderDetail.tsx @@ -0,0 +1,95 @@ +import React, { Component } from 'react'; +import Functions from '../../../functions'; +import ItemUtil, { ItemBinder, Item } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; +import { MultiLang } from '../../../config'; +import ItemType from '..'; + +interface Props { + lang: MultiLang; + item: ItemBinder; +} + +interface State { + items: Item[]; +} + +class BinderLinkItems extends Component { + constructor(props: Props) { + super(props); + this.state = { + items: [], + }; + } + + componentDidMount() { + this.updateItems(); + } + + componentDidUpdate(prevProps: Props, prevState: State) { + const prevItemIds = prevProps.item.related_to; + const nextItemIds = this.props.item.related_to; + if (prevItemIds.toString() !== nextItemIds.toString()) { + this.updateItems(); + } + } + + updateItems() { + const { item } = this.props; + const itemIds = item.related_to; + ItemUtil.getList(itemIds, (results) => { + const items = results.data; + this.setState({ items }); + }); + } + + render() { + const { lang } = this.props; + return ( + + + {this.state.items.map((item, idx) => { + const evenodd = idx % 2 ? 'even' : 'odd'; + return ; + })} + +
      + ); + } +} + +class BinderDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemBinder; + return [ + { label: 'ID', value: item.doi }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: 'Index', value: }, + ]; + } + + render() { + const { lang } = this.props; + const item = this.props.item as ItemBinder; + const detail = super.render.call(this); + return ( + <> + {detail} +

      Registered Items

      + + + ); + } +} + +export default BinderDetail; \ No newline at end of file diff --git a/src/database/item-type/binder/BinderList.tsx b/src/database/item-type/binder/BinderList.tsx new file mode 100644 index 0000000..2393869 --- /dev/null +++ b/src/database/item-type/binder/BinderList.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_binder.gif'; +import { ItemBinder } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; + +class BinderList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Binder'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemBinder; + return ( + <> + {Functions.mlang(item.title, lang)}
      + {Functions.mlang(item.description, lang)} + + ); + } +} + +export default BinderList; diff --git a/src/database/item-type/binder/BinderTop.tsx b/src/database/item-type/binder/BinderTop.tsx new file mode 100644 index 0000000..cc714b7 --- /dev/null +++ b/src/database/item-type/binder/BinderTop.tsx @@ -0,0 +1,15 @@ +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_binder.gif'; + +class BinderTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'binder'; + this.label = 'Binder'; + this.icon = iconFile; + this.description = '[en]Binder collection.[/en][ja]バインダー[/ja]'; + } +} + +export default BinderTop; \ No newline at end of file diff --git a/src/database/item-type/binder/index.tsx b/src/database/item-type/binder/index.tsx new file mode 100644 index 0000000..3ae15c1 --- /dev/null +++ b/src/database/item-type/binder/index.tsx @@ -0,0 +1,13 @@ +import BinderAdvancedSearch from './BinderAdvancedSearch'; +import BinderDetail from './BinderDetail'; +import BinderList from './BinderList'; +import BinderTop from './BinderTop'; + +const ItemTypeBinder = { + Top: BinderTop, + List: BinderList, + Detail: BinderDetail, + AdvancedSearch: BinderAdvancedSearch, +}; + +export default ItemTypeBinder; diff --git a/src/database/item-type/book/BookAdvancedSearch.tsx b/src/database/item-type/book/BookAdvancedSearch.tsx new file mode 100644 index 0000000..b08534f --- /dev/null +++ b/src/database/item-type/book/BookAdvancedSearch.tsx @@ -0,0 +1,38 @@ +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class BookAdvancedSearch extends AdvancedSearchBase { + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'book'; + this.title = 'Book'; + this.state.values['title'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + this.state.values['doi'] = ''; + this.state.values['author'] = ''; + this.state.values['editor'] = ''; + this.state.values['publisher'] = ''; + this.state.values['publication_year'] = ''; + this.state.values['isbn'] = ''; + this.state.values['file.book_pdf.original_file_name'] = ''; + } + + getRows() { + const rows = [ + { label: '[en]Book Title[/en][ja]著書名[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + { label: 'ID', value: this.renderFieldInputText('doi', 50) }, + { label: '[en]Author[/en][ja]著者[/ja]', value: this.renderFieldInputText('author', 50) }, + { label: '[en]Editor[/en][ja]編集者[/ja]', value: this.renderFieldInputText('editor', 50) }, + { label: '[en]Publisher[/en][ja]出版社[/ja]', value: this.renderFieldInputText('publisher', 50) }, + { label: '[en]Publication Year[/en][ja]出版年[/ja]', value: this.renderFieldInputText('publication_year', 10) }, + { label: 'ISBN', value: this.renderFieldInputText('isbn', 50) }, + { label: '[en]PDF File[/en][ja]PDF ファイル[/ja]', value: this.renderFieldInputText('file.book_pdf.original_file_name', 50) }, + ]; + return rows; + } +} + +export default BookAdvancedSearch; diff --git a/src/database/item-type/book/BookDetail.tsx b/src/database/item-type/book/BookDetail.tsx new file mode 100644 index 0000000..9099abe --- /dev/null +++ b/src/database/item-type/book/BookDetail.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import Functions from '../../../functions'; +import { ItemBook } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; + +class BookDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemBook; + return [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: '[en]Book Title[/en][ja]著書名[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: '[en]Author[/en][ja]著者[/ja]', value: }, + { label: '[en]Editor[/en][ja]編集者[/ja]', value: Functions.mlang(item.editor, lang) }, + { label: '[en]Publisher[/en][ja]出版社[/ja]', value: Functions.mlang(item.publisher, lang) }, + { label: '[en]Publication Year[/en][ja]出版年[/ja]', value: item.publication_year }, + { label: 'URL', value: {item.url} }, + { label: '[en]PDF File[/en][ja]PDF ファイル[/ja]', value: }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + } +} + +export default BookDetail; diff --git a/src/database/item-type/book/BookList.tsx b/src/database/item-type/book/BookList.tsx new file mode 100644 index 0000000..9267be1 --- /dev/null +++ b/src/database/item-type/book/BookList.tsx @@ -0,0 +1,31 @@ +import React, { Fragment } from 'react'; +import { Link } from 'react-router-dom'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_book.gif'; +import { ItemBook } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; + +class BookList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Book'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemBook; + const authors = item.author.map((author, i) => { + return {i > 0 && ', '}{Functions.mlang(author, lang)} + }); + return ( + <> + {Functions.mlang(item.title, lang)}
      + {authors} + + ); + } +} + +export default BookList; diff --git a/src/database/item-type/book/BookTop.tsx b/src/database/item-type/book/BookTop.tsx new file mode 100644 index 0000000..4fb2c35 --- /dev/null +++ b/src/database/item-type/book/BookTop.tsx @@ -0,0 +1,15 @@ +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_book.gif'; + +class BookTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'book'; + this.label = 'Book'; + this.icon = iconFile; + this.description = '[en]Related book collection.[/en][ja]関連書籍[/ja]'; + } +} + +export default BookTop; \ No newline at end of file diff --git a/src/database/item-type/book/index.tsx b/src/database/item-type/book/index.tsx new file mode 100644 index 0000000..3187d8b --- /dev/null +++ b/src/database/item-type/book/index.tsx @@ -0,0 +1,13 @@ +import BookTop from './BookTop'; +import BookList from './BookList'; +import BookDetail from './BookDetail'; +import BookAdvancedSearch from './BookAdvancedSearch'; + +const ItemTypeBook = { + Top: BookTop, + List: BookList, + Detail: BookDetail, + AdvancedSearch: BookAdvancedSearch, +}; + +export default ItemTypeBook; diff --git a/src/database/item-type/conference/ConferenceAdvancedSearch.tsx b/src/database/item-type/conference/ConferenceAdvancedSearch.tsx new file mode 100644 index 0000000..505835c --- /dev/null +++ b/src/database/item-type/conference/ConferenceAdvancedSearch.tsx @@ -0,0 +1,57 @@ +import React from 'react'; +import { ItemConferenceSubTypes } from '../../lib/ItemUtil'; +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class ConferenceAdvancedSearch extends AdvancedSearchBase { + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'conference'; + this.title = 'Conference'; + const now = new Date(); + const year = String(now.getFullYear()); + const month = String(now.getMonth() + 1); + const mday = String(now.getDate()); + this.state.values['title'] = ''; + this.state.values['presentation_type'] = ''; + this.state.values['author'] = ''; + this.state.values['conference_from_year'] = year; + this.state.values['conference_from_month'] = month; + this.state.values['conference_from_mday'] = mday; + this.state.values['conference_to_year'] = year; + this.state.values['conference_to_month'] = month; + this.state.values['conference_to_mday'] = mday; + this.setIgnoreKey('conference_from_year'); + this.setIgnoreKey('conference_from_month'); + this.setIgnoreKey('conference_from_mday'); + this.setIgnoreKey('conference_to_year'); + this.setIgnoreKey('conference_to_month'); + this.setIgnoreKey('conference_to_mday'); + } + + renderDate() { + return ( + <> +
      + {this.renderFieldDate('From', 'conference_from_year', 'conference_from_month', 'conference_from_mday')} + +
      +
      + {this.renderFieldDate('To', 'conference_to_year', 'conference_to_month', 'conference_to_mday')} +
      + + ); + } + + getRows() { + const rows = [ + { label: '[en]Presentation Title[/en][ja]発表議題[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Presentation Type[/en][ja]発表資料ファイル形式[/ja]', value: this.renderFieldSelect('presentation_type', ItemConferenceSubTypes) }, + { label: '[en]Author[/en][ja]発表者[/ja]', value: this.renderFieldInputText('author', 50) }, + { label: '[en]Date[/en][ja]日付[/ja]', value: this.renderDate() } + ]; + return rows; + } +} + +export default ConferenceAdvancedSearch; \ No newline at end of file diff --git a/src/database/item-type/conference/ConferenceDetail.tsx b/src/database/item-type/conference/ConferenceDetail.tsx new file mode 100644 index 0000000..6d2d6e3 --- /dev/null +++ b/src/database/item-type/conference/ConferenceDetail.tsx @@ -0,0 +1,36 @@ +import React from 'react'; +import Functions from '../../../functions'; +import { ItemConference } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; +import ConferenceUtil from './ConferenceUtil'; + +class ConferenceDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemConference; + return [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: '[en]Conference Title[/en][ja]学会名[/ja]', value: Functions.mlang(item.conference_title, lang) }, + { label: '[en]Place[/en][ja]開催地[/ja]', value: item.place }, + { label: '[en]Date[/en][ja]日付[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: '[en]Presentation Title[/en][ja]発表議題[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Author[/en][ja]発表者[/ja]', value: }, + { label: '[en]Abstract[/en][ja]要約[/ja]', value: }, + { label: '[en]Presentation File[/en][ja]発表資料[/ja]', value: }, + { label: '[en]Presentation Type[/en][ja]発表資料ファイル形式[/ja]', value: }, + { label: '[en]Conference Paper[/en][ja]学会資料[/ja]', value: }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + } +} + +export default ConferenceDetail; \ No newline at end of file diff --git a/src/database/item-type/conference/ConferenceList.tsx b/src/database/item-type/conference/ConferenceList.tsx new file mode 100644 index 0000000..b03298c --- /dev/null +++ b/src/database/item-type/conference/ConferenceList.tsx @@ -0,0 +1,33 @@ +import React, { Fragment } from 'react'; +import { Link } from 'react-router-dom'; +import { ItemConference } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; +import ConferenceUtil from './ConferenceUtil'; +import iconFile from '../../assets/images/icon_conference.gif'; +import Functions from '../../../functions'; + +class ConferenceList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Conference'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemConference; + const authors = item.author.map((author, i) => { + return {i > 0 && ', '}{Functions.mlang(author, lang)} + }); + return ( + <> + {Functions.mlang(item.title, lang)}
      + {Functions.mlang(item.conference_title, lang)} ()
      + {authors} + + ); + } +} + +export default ConferenceList; \ No newline at end of file diff --git a/src/database/item-type/conference/ConferenceTop.tsx b/src/database/item-type/conference/ConferenceTop.tsx new file mode 100644 index 0000000..8ba23b7 --- /dev/null +++ b/src/database/item-type/conference/ConferenceTop.tsx @@ -0,0 +1,17 @@ +import { ItemConferenceSubTypes } from '../../lib/ItemUtil'; +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_conference.gif'; + +class ConferenceTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'conference'; + this.label = 'Conference'; + this.icon = iconFile; + this.description = '[en]Electrical presentation files for conference.[/en][ja]学会発表[/ja]'; + this.subTypes = ItemConferenceSubTypes; + } +} + +export default ConferenceTop; \ No newline at end of file diff --git a/src/database/item-type/conference/ConferenceUtil.tsx b/src/database/item-type/conference/ConferenceUtil.tsx new file mode 100644 index 0000000..6cdbe2b --- /dev/null +++ b/src/database/item-type/conference/ConferenceUtil.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import { MultiLang } from '../../../config'; +import { ItemConference, ItemConferenceSubType, ItemConferenceSubTypes } from '../../lib/ItemUtil'; + +interface PresentationTypeProps { + lang: MultiLang; + type: ItemConferenceSubType; +} + +const PresentationType = (props: PresentationTypeProps) => { + const { type } = props; + const subtype = ItemConferenceSubTypes.find((value) => { return value.type === type; }); + if (typeof subtype === 'undefined') { + return null; + } + return ({subtype.label}); +} + +interface ConferenceDateProps { + lang: MultiLang; + item: ItemConference; +} + +const ConferenceDate = (props: ConferenceDateProps) => { + const { item } = props; + const monthStr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + const from = 'From: ' + monthStr[item.conference_from_month - 1] + ' ' + item.conference_from_mday + ', ' + item.conference_from_year; + const to = 'To: ' + monthStr[item.conference_to_month - 1] + ' ' + item.conference_to_mday + ', ' + item.conference_to_year; + return ({from} {to}); +} + +const ConferenceUtil = { + PresentationType, + ConferenceDate, +} + +export default ConferenceUtil; \ No newline at end of file diff --git a/src/database/item-type/conference/index.tsx b/src/database/item-type/conference/index.tsx new file mode 100644 index 0000000..75272c4 --- /dev/null +++ b/src/database/item-type/conference/index.tsx @@ -0,0 +1,13 @@ +import ConferenceTop from './ConferenceTop'; +import ConferenceList from './ConferenceList'; +import ConferenceDetail from './ConferenceDetail'; +import ConferenceAdvancedSearch from './ConferenceAdvancedSearch'; + +const ItemTypeConference = { + Top: ConferenceTop, + List: ConferenceList, + Detail: ConferenceDetail, + AdvancedSearch: ConferenceAdvancedSearch, +}; + +export default ItemTypeConference; \ No newline at end of file diff --git a/src/database/item-type/data/DataAdvancedSearch.tsx b/src/database/item-type/data/DataAdvancedSearch.tsx new file mode 100644 index 0000000..e408d8b --- /dev/null +++ b/src/database/item-type/data/DataAdvancedSearch.tsx @@ -0,0 +1,46 @@ +import { ItemDataSubTypes } from '../../lib/ItemUtil'; +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class DataAdvancedSearch extends AdvancedSearchBase { + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'data'; + this.title = 'Data'; + const now = new Date(); + const year = String(now.getFullYear()); + const month = String(now.getMonth() + 1); + const mday = String(now.getDate()); + this.state.values['title'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + this.state.values['doi'] = ''; + this.state.values['data_type'] = ''; + this.state.values['experimenter'] = ''; + this.state.values['publication_year'] = year; + this.state.values['publication_month'] = month; + this.state.values['publication_mday'] = mday; + this.state.values['file.preview.caption'] = ''; + this.state.values['file.data_file.original_file_name'] = ''; + this.setIgnoreKey('publication_year'); + this.setIgnoreKey('publication_month'); + this.setIgnoreKey('publication_mday'); + } + + getRows() { + const rows = [ + { label: '[en]Title[/en][ja]タイトル[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + { label: 'ID', value: this.renderFieldInputText('doi', 50) }, + { label: '[en]Data Type[/en][ja]データタイプ[/ja]', value: this.renderFieldSelect('data_type', ItemDataSubTypes) }, + { label: '[en]Experimenter[/en][ja]実験者[/ja]', value: this.renderFieldInputText('experimenter', 50) }, + { label: '[en]Date[/en][ja]日付[/ja]', value: this.renderFieldDate('', 'publication_year', 'publication_month', 'publication_mday') }, + { label: '[en]Caption[/en][ja]キャプション[/ja]', value: this.renderFieldInputText('file.preview.caption', 50) }, + { label: '[en]Data File[/en][ja]データファイル[/ja]', value: this.renderFieldInputText('file.data_file.original_file_name', 50) }, + ]; + return rows; + } +} + +export default DataAdvancedSearch; \ No newline at end of file diff --git a/src/database/item-type/data/DataDetail.tsx b/src/database/item-type/data/DataDetail.tsx new file mode 100644 index 0000000..bf3a024 --- /dev/null +++ b/src/database/item-type/data/DataDetail.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import Functions from '../../../functions'; +import ItemUtil, { ItemData } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; +import SimPFLinkIcon from '../lib/field/SimPFLinkIcon'; +import DataUtil from './DataUtil'; + +class DataDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemData; + const fields = [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: '[en]Date[/en][ja]日付[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: '[en]Data Type[/en][ja]データタイプ[/ja]', value: }, + { label: '[en]Experimenter[/en][ja]実験者[/ja]', value: }, + { label: '[en]Preview[/en][ja]プレビュー[/ja]', value: }, + { label: '[en]Data File[/en][ja]データファイル[/ja]', value: }, + { label: 'Readme', value: }, + { label: 'Rights', value: }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + const simpfLinkUrl = ItemUtil.getSimPFLinkUrl(item.item_id); + if (simpfLinkUrl !== '') { + const field = { label: 'Online Simulation', value: }; + fields.splice(14, 0, field); + } + return fields; + } +} + +export default DataDetail; \ No newline at end of file diff --git a/src/database/item-type/data/DataList.tsx b/src/database/item-type/data/DataList.tsx new file mode 100644 index 0000000..be78ce1 --- /dev/null +++ b/src/database/item-type/data/DataList.tsx @@ -0,0 +1,31 @@ +import React, { Fragment } from 'react'; +import { Link } from 'react-router-dom'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_data.gif'; +import { ItemData } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; + +class DataList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Data'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemData; + const authors = item.experimenter.map((author, i) => { + return {i > 0 && ', '}{Functions.mlang(author, lang)} + }); + return ( + <> + {Functions.mlang(item.title, lang)}
      + {authors} + + ); + } +} + +export default DataList; \ No newline at end of file diff --git a/src/database/item-type/data/DataTop.tsx b/src/database/item-type/data/DataTop.tsx new file mode 100644 index 0000000..80adcb0 --- /dev/null +++ b/src/database/item-type/data/DataTop.tsx @@ -0,0 +1,17 @@ +import { ItemDataSubTypes } from '../../lib/ItemUtil'; +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_data.gif'; + +class DataTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'data'; + this.label = 'Data'; + this.icon = iconFile; + this.description = '[en]Result data in numerical text/image/movie formats.[/en][ja]実験結果の数値データ/画像/動画など[/ja]'; + this.subTypes = ItemDataSubTypes; + } +} + +export default DataTop; \ No newline at end of file diff --git a/src/database/item-type/data/DataUtil.tsx b/src/database/item-type/data/DataUtil.tsx new file mode 100644 index 0000000..9944054 --- /dev/null +++ b/src/database/item-type/data/DataUtil.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { MultiLang } from '../../../config'; +import { ItemDataSubType, ItemDataSubTypes } from '../../lib/ItemUtil'; + +interface DataTypeProps { + lang: MultiLang; + type: ItemDataSubType; +} + +const DataType = (props: DataTypeProps) => { + const { type } = props; + const subtype = ItemDataSubTypes.find((value) => { return value.type === type; }); + if (typeof subtype === 'undefined') { + return null; + } + return ({subtype.label}); +} + +const DataUtil = { + DataType, +} + +export default DataUtil; \ No newline at end of file diff --git a/src/database/item-type/data/index.tsx b/src/database/item-type/data/index.tsx new file mode 100644 index 0000000..21a88d8 --- /dev/null +++ b/src/database/item-type/data/index.tsx @@ -0,0 +1,13 @@ +import DataTop from './DataTop'; +import DataList from './DataList'; +import DataDetail from './DataDetail'; +import DataAdvancedSearch from './DataAdvancedSearch'; + +const ItemTypeData = { + Top: DataTop, + List: DataList, + Detail: DataDetail, + AdvancedSearch: DataAdvancedSearch, +}; + +export default ItemTypeData; \ No newline at end of file diff --git a/src/database/item-type/files/FilesAdvancedSearch.tsx b/src/database/item-type/files/FilesAdvancedSearch.tsx new file mode 100644 index 0000000..57b27d3 --- /dev/null +++ b/src/database/item-type/files/FilesAdvancedSearch.tsx @@ -0,0 +1,30 @@ +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class FilesAdvancedSearch extends AdvancedSearchBase { + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'files'; + this.title = 'Files'; + this.state.values['title'] = ''; + this.state.values['data_file_name'] = ''; + this.state.values['data_file_mimetype'] = ''; + this.state.values['data_file_filetype'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + } + + getRows() { + const rows = [ + { label: '[en]Title[/en][ja]タイトル[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '- [en]File Name[/en][ja]ファイル名[/ja]', value: this.renderFieldInputText('data_file_name', 50) }, + { label: '- [en]MIME Type[/en][ja]MIMEタイプ[/ja]', value: this.renderFieldInputText('data_file_mimetype', 50) }, + { label: '- [en]File Type[/en][ja]ファイルタイプ[/ja]', value: this.renderFieldInputText('data_file_filetype', 20) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + ]; + return rows; + } +} + +export default FilesAdvancedSearch; \ No newline at end of file diff --git a/src/database/item-type/files/FilesDetail.tsx b/src/database/item-type/files/FilesDetail.tsx new file mode 100644 index 0000000..89091d0 --- /dev/null +++ b/src/database/item-type/files/FilesDetail.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import Functions from '../../../functions'; +import { ItemFiles } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; + +class FilesDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemFiles; + return [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: '[en]Data File[/en][ja]データファイル[/ja]', value: }, + { label: '- [en]File Name[/en][ja]ファイル名[/ja]', value: item.data_file_name }, + { label: '- [en]MIME Type[/en][ja]MIMEタイプ[/ja]', value: item.data_file_mimetype }, + { label: '- [en]File Type[/en][ja]ファイルタイプ[/ja]', value: item.data_file_filetype }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + } +} + +export default FilesDetail; diff --git a/src/database/item-type/files/FilesList.tsx b/src/database/item-type/files/FilesList.tsx new file mode 100644 index 0000000..465237d --- /dev/null +++ b/src/database/item-type/files/FilesList.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_files.gif'; +import { ItemFiles } from '../../lib/ItemUtil'; +import Contributer from '../lib/field/Contributer'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; + +class FilesList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Files'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemFiles; + return ( + <> + {Functions.mlang(item.title, lang)}
      +
      + {item.data_file_mimetype} + + ); + } +} + +export default FilesList; \ No newline at end of file diff --git a/src/database/item-type/files/FilesTop.tsx b/src/database/item-type/files/FilesTop.tsx new file mode 100644 index 0000000..3e6fae9 --- /dev/null +++ b/src/database/item-type/files/FilesTop.tsx @@ -0,0 +1,17 @@ +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_files.gif'; +import { ItemFilesSubTypes } from '../../lib/ItemUtil'; + +class FilesTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'files'; + this.label = 'Files'; + this.icon = iconFile; + this.description = '[en]Various type of File.[/en][ja]ファイル[/ja]'; + this.subTypes = ItemFilesSubTypes; + } +} + +export default FilesTop; \ No newline at end of file diff --git a/src/database/item-type/files/FilesUtil.tsx b/src/database/item-type/files/FilesUtil.tsx new file mode 100644 index 0000000..0e10e42 --- /dev/null +++ b/src/database/item-type/files/FilesUtil.tsx @@ -0,0 +1,5 @@ + +const FilesUtil = { +} + +export default FilesUtil; \ No newline at end of file diff --git a/src/database/item-type/files/index.tsx b/src/database/item-type/files/index.tsx new file mode 100644 index 0000000..00ebdea --- /dev/null +++ b/src/database/item-type/files/index.tsx @@ -0,0 +1,13 @@ +import FilesTop from './FilesTop'; +import FilesList from './FilesList'; +import FilesDetail from './FilesDetail'; +import FilesAdvancedSearch from './FilesAdvancedSearch'; + +const ItemTypeFiles = { + Top: FilesTop, + List: FilesList, + Detail: FilesDetail, + AdvancedSearch: FilesAdvancedSearch, +}; + +export default ItemTypeFiles; \ No newline at end of file diff --git a/src/database/item-type/index.tsx b/src/database/item-type/index.tsx new file mode 100644 index 0000000..900cacc --- /dev/null +++ b/src/database/item-type/index.tsx @@ -0,0 +1,179 @@ +import React from 'react'; +import { MultiLang } from '../../config'; +import AdvancedSearchQuery from '../lib/AdvancedSearchQuery'; +import { Item, ItemBinder, ItemBook, ItemConference, ItemData, ItemFiles, ItemModel, ItemPaper, ItemPresentation, ItemSimulator, ItemStimulus, ItemTool, ItemUrl, ItemMemo } from '../lib/ItemUtil'; +import ItemTypeBinder from './binder'; +import ItemTypeBook from './book'; +import ItemTypeConference from './conference'; +import ItemTypeData from './data'; +import ItemTypeFiles from './files'; +import ItemTypeMemo from './memo'; +import ItemTypeModel from './model'; +import ItemTypePaper from './paper'; +import ItemTypePresentation from './presentation'; +import ItemTypeSimulator from './simulator'; +import ItemTypeStimulus from './stimulus'; +import ItemTypeTool from './tool'; +import ItemTypeUrl from './url'; + +interface TopProps { + lang: MultiLang; + type: string; +} +const Top = (props: TopProps) => { + const { lang, type } = props; + switch (type) { + case 'xnpbinder': + return ; + case 'xnpbook': + return ; + case 'xnpconference': + return ; + case 'xnpdata': + return ; + case 'xnpfiles': + return ; + case 'xnpmemo': + return ; + case 'xnpmodel': + return ; + case 'xnppaper': + return ; + case 'xnppresentation': + return ; + case 'xnpsimulator': + return ; + case 'xnpstimulus': + return ; + case 'xnptool': + return ; + case 'xnpurl': + return ; + default: + return null; + } +} + +interface ListProps { + lang: MultiLang; + item: Item; +} +const List = (props: ListProps) => { + const { lang, item } = props; + switch (item.item_type_name) { + case 'xnpbinder': + return ; + case 'xnpbook': + return ; + case 'xnpconference': + return ; + case 'xnpdata': + return ; + case 'xnpfiles': + return ; + case 'xnpmemo': + return ; + case 'xnpmodel': + return ; + case 'xnppaper': + return ; + case 'xnppresentation': + return ; + case 'xnpsimulator': + return ; + case 'xnpstimulus': + return ; + case 'xnptool': + return ; + case 'xnpurl': + return ; + default: + return null; + } +} + +interface DetailProps { + lang: MultiLang; + item: Item; +} +const Detail = (props: DetailProps) => { + const { lang, item } = props; + switch (item.item_type_name) { + case 'xnpbinder': + return ; + case 'xnpbook': + return ; + case 'xnpconference': + return ; + case 'xnpdata': + return ; + case 'xnpfiles': + return ; + case 'xnpmemo': + return ; + case 'xnpmodel': + return ; + case 'xnppaper': + return ; + case 'xnppresentation': + return ; + case 'xnpsimulator': + return ; + case 'xnpstimulus': + return ; + case 'xnptool': + return ; + case 'xnpurl': + return ; + default: + return null; + } +} + +interface AdvancedSearchProps { + lang: MultiLang; + type: string; + query: AdvancedSearchQuery; +} +const AdvancedSearch = (props: AdvancedSearchProps) => { + const { lang, type, query } = props; + switch (type) { + case 'xnpbinder': + return ; + case 'xnpbook': + return ; + case 'xnpconference': + return ; + case 'xnpdata': + return ; + case 'xnpfiles': + return ; + case 'xnpmemo': + return ; + case 'xnpmodel': + return ; + case 'xnppaper': + return ; + case 'xnppresentation': + return ; + case 'xnpsimulator': + return ; + case 'xnpstimulus': + return ; + case 'xnptool': + return ; + case 'xnpurl': + return ; + default: + return null; + } +} + +const ItemType = { + Top, + List, + Detail, + AdvancedSearch +} + +export default ItemType; \ No newline at end of file diff --git a/src/database/item-type/lib/AdvancedSearchBase.tsx b/src/database/item-type/lib/AdvancedSearchBase.tsx new file mode 100644 index 0000000..f1c5286 --- /dev/null +++ b/src/database/item-type/lib/AdvancedSearchBase.tsx @@ -0,0 +1,189 @@ +import React, { ChangeEvent, Component } from 'react'; +import { MultiLang } from '../../../config'; +import Functions from '../../../functions'; +import AdvancedSearchQuery from '../../lib/AdvancedSearchQuery'; +import { ItemSubTypes } from '../../lib/ItemUtil'; + +export interface AdvancedSearchBaseProps { + lang: MultiLang; + query: AdvancedSearchQuery; +} + +interface State { + show: boolean; + values: any; +} + +class AdvancedSearchBase extends Component { + + protected type: string = 'base' + protected title: string = 'Base'; + protected query: AdvancedSearchQuery; + protected ignoreKeys: string[] = []; + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.state = { + show: false, + values: {}, + } + this.query = props.query; + this.handleChangeTitleCheck = this.handleChangeTitleCheck.bind(this); + } + + updateQuery(key: string, value: string) { + if (this.ignoreKeys.includes(key)) { + this.query.delete(this.type, key); + } else { + this.query.set(this.type, key, value); + } + } + + setIgnoreKey(key: string) { + if (!this.ignoreKeys.includes(key)) { + this.ignoreKeys = this.ignoreKeys.concat(key); + } + this.query.delete(this.type, key); + } + + deleteIgnoreKey(key: string) { + if (this.ignoreKeys.includes(key)) { + this.ignoreKeys = this.ignoreKeys.filter((v) => { + return (v !== key); + }); + } + this.query.set(this.type, key, this.state.values[key]); + } + + updateField(key: string, value: string) { + let values = Object.assign({}, this.state.values); + values[key] = value; + this.updateQuery(key, value); + this.setState({ values }); + } + + handleChangeTitleCheck(e: ChangeEvent) { + const show = e.target.checked; + if (show) { + Object.keys(this.state.values).forEach((key) => { + const value = this.state.values[key]; + this.updateQuery(key, value); + }); + } else { + this.query.deleteType(this.type); + } + this.setState({ show }); + } + + getRows(): { label: string, value: JSX.Element }[] { + return []; + } + + renderFieldInputText(key: string, size: number) { + const onChange = (e: ChangeEvent) => { + this.updateField(key, e.target.value); + }; + return ( + + ); + } + + renderFieldSelect(key: string, values: ItemSubTypes) { + const onChange = (e: ChangeEvent) => { + this.updateField(key, e.target.value); + }; + const options = values.map(({ type, label }, i) => { + return ; + }); + return ( + + ); + } + + renderFieldDate(label: string, keyYear: string, keyMonth: string, keyMday: string) { + const onChange = (e: ChangeEvent) => { + if (e.target.checked) { + this.deleteIgnoreKey(keyYear); + keyMonth !== '' && this.deleteIgnoreKey(keyMonth); + keyMday !== '' && this.deleteIgnoreKey(keyMday); + } else { + this.setIgnoreKey(keyYear); + keyMonth !== '' && this.setIgnoreKey(keyMonth); + keyMday !== '' && this.setIgnoreKey(keyMday); + } + }; + const month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + const monthOptions = month.map((value, i) => { + return ; + }) + let mdayOptions: JSX.Element[] = []; + for (let i = 1; i <= 31; i++) { + mdayOptions.push() + } + return ( +
      + + {label.length !== 0 && } + {keyMonth !== '' && + + } + {keyMday !== '' && + + } + this.updateField(keyYear, e.target.value)} /> +
      + ); + } + + renderBody() { + const { lang } = this.props; + if (this.state.show === false) { + return null; + } + const rows = this.getRows(); + const fields = rows.map((value, idx) => { + const evenodd = idx % 2 === 0 ? 'even' : 'odd'; + return ( + + {Functions.mlang(value.label, lang)} + {value.value} + + ); + }); + return ( + + + {fields} + +
      + ); + } + + render() { + return ( +
      + + + + + + +
      + + {this.title} +
      + {this.renderBody()} +
      + ); + } + +} + +export default AdvancedSearchBase; \ No newline at end of file diff --git a/src/database/item-type/lib/DetailBase.tsx b/src/database/item-type/lib/DetailBase.tsx new file mode 100644 index 0000000..3208d12 --- /dev/null +++ b/src/database/item-type/lib/DetailBase.tsx @@ -0,0 +1,43 @@ +import React, { Component, ReactNode } from 'react'; +import { MultiLang } from '../../../config'; +import Functions from '../../../functions'; +import { Item } from '../../lib/ItemUtil'; + +export interface DetailBaseField { + label: string; + value: ReactNode; +} + +export interface DetailBaseProps { + lang: MultiLang; + item: Item +} + +class DetailBase extends Component { + + getFields(): DetailBaseField[] { + return []; + } + + render() { + const { lang } = this.props; + const elements = this.getFields().map((value, idx) => { + const evenodd = idx % 2 === 0 ? 'even' : 'odd'; + return ( + + {Functions.mlang(value.label, lang)} + {value.value} + + ) + }); + return ( + + + {elements} + +
      + ); + } +} + +export default DetailBase; \ No newline at end of file diff --git a/src/database/item-type/lib/ListBase.tsx b/src/database/item-type/lib/ListBase.tsx new file mode 100644 index 0000000..435eb36 --- /dev/null +++ b/src/database/item-type/lib/ListBase.tsx @@ -0,0 +1,50 @@ +import React, { Component } from 'react'; +import { MultiLang } from '../../../config'; +import ItemUtil, { Item } from '../../lib/ItemUtil'; +import SimPFLinkIcon from './field/SimPFLinkIcon'; + +export interface ListBaseProps { + lang: MultiLang; + item: Item +}; + +class ListBase extends Component { + + protected label = ''; + protected icon = ''; + protected url: string; + protected simpfLinkUrl: string; + + constructor(props: ListBaseProps) { + super(props); + this.url = ItemUtil.getUrl(props.item); + this.simpfLinkUrl = ItemUtil.getSimPFLinkUrl(props.item.item_id); + } + + renderBody() { + return <>; + } + + render() { + const { lang } = this.props; + return ( + + + + + + + + +
      + {this.label} + + {this.renderBody()} + + +
      + ); + } +} + +export default ListBase; \ No newline at end of file diff --git a/src/database/item-type/lib/TopBase.tsx b/src/database/item-type/lib/TopBase.tsx new file mode 100644 index 0000000..a41f596 --- /dev/null +++ b/src/database/item-type/lib/TopBase.tsx @@ -0,0 +1,47 @@ +import React, { Component, Fragment } from 'react'; +import { Link } from 'react-router-dom'; +import { MultiLang } from '../../../config'; +import Functions from '../../../functions'; +import ItemUtil, { ItemSubTypes } from '../../lib/ItemUtil'; + +export interface TopBaseProps { + lang: MultiLang; +} + +class TopBase extends Component { + + protected type: string = ''; + protected label: string = ''; + protected icon: string = ''; + protected description: string = ''; + protected subTypes: ItemSubTypes = []; + + render() { + const { lang } = this.props; + const url = ItemUtil.getItemTypeSearchUrl(this.type); + const links = this.subTypes.map(({ type, label }, i) => { + return {i > 0 && ' / '}{label}; + }); + return ( +
      + + + + + + + +
      + {this.label} + + {this.label} +
      +
      +
      {Functions.mlang(this.description, lang)}
      + {links} +
      + ); + } +} + +export default TopBase; \ No newline at end of file diff --git a/src/database/item-type/lib/field/Author.tsx b/src/database/item-type/lib/field/Author.tsx new file mode 100644 index 0000000..9181ca8 --- /dev/null +++ b/src/database/item-type/lib/field/Author.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { MultiLang } from '../../../../config'; + +interface Props { + lang: MultiLang; + author: string[]; +} + +const Author = (props: Props) => { + const { author } = props; + if (author.length === 0) { + return null; + } + const elements = author.map((value, idx) => { + const evenodd = idx % 2 === 0 ? 'even' : 'odd'; + return {value}; + }); + return {elements}
      ; +} + +export default Author; \ No newline at end of file diff --git a/src/database/item-type/lib/field/ChangeLog.tsx b/src/database/item-type/lib/field/ChangeLog.tsx new file mode 100644 index 0000000..f3d9ba9 --- /dev/null +++ b/src/database/item-type/lib/field/ChangeLog.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { MultiLang } from '../../../../config'; +import Functions from '../../../../functions'; +import { ItemBasicChangeLog } from '../../../lib/ItemUtil'; +import DateTime from './DateTime'; + +interface Props { + lang: MultiLang; + changelog: ItemBasicChangeLog[]; +} + +const ChangeLog = (props: Props) => { + const { lang, changelog } = props; + if (changelog.length === 0) { + return null; + } + const elements = changelog.map((value, i) => { + return ( + + + {Functions.mlang(value.log, lang)} + + ); + }); + return ({elements}
      ); +} + +export default ChangeLog; \ No newline at end of file diff --git a/src/database/item-type/lib/field/Contributer.tsx b/src/database/item-type/lib/field/Contributer.tsx new file mode 100644 index 0000000..63261a9 --- /dev/null +++ b/src/database/item-type/lib/field/Contributer.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { MultiLang } from '../../../../config'; +import Functions from '../../../../functions'; + +interface Props { + lang: MultiLang; + uname: string; + name: string +} + +const Contributer = (props: Props) => { + const { lang, name, uname } = props; + const unsubscribed = '([en]Unsubscribed User[/en][ja]退会済みユーザ[/ja])'; + const label = uname === '' ? unsubscribed : (name === '' ? uname : name + ' (' + uname + ')'); + return {Functions.mlang(label, lang)}; +} + +export default Contributer; \ No newline at end of file diff --git a/src/database/item-type/lib/field/CreativeCommons.tsx b/src/database/item-type/lib/field/CreativeCommons.tsx new file mode 100644 index 0000000..b545f02 --- /dev/null +++ b/src/database/item-type/lib/field/CreativeCommons.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { MultiLang } from '../../../../config'; + +export type CreativeCommonsType = 'by' | 'by-nc' | 'by-nc-nd' | 'by-nc-sa' | 'by-nd' | 'by-sa'; + +export const getCreativeCommonsType = (ccCommercialUse: number, ccModification: number): CreativeCommonsType => { + const cc = ccCommercialUse * 10 + ccModification; + switch (cc) { + case 0: + return 'by-nc-nd'; + case 1: + return 'by-nc-sa'; + case 2: + return 'by-nc'; + case 10: + return 'by-nd'; + case 11: + return 'by-sa'; + case 12: + default: + return 'by'; + } +} + +interface Props { + lang: MultiLang; + type: CreativeCommonsType; +} + +const CreativeCommons = (props: Props) => { + const { type } = props; + const url = 'http://creativecommons.org/licenses/' + type + '/4.0/'; + const logoUrl = 'https://i.creativecommons.org/l/' + type + '/4.0/88x31.png'; + const labels = { + by: 'Attribution', + nc: 'NonCommercial', + nd: 'NoDerivatives', + sa: 'ShareAlike', + } + const label = type.split('-').map((value) => { + const prop = value as 'by' | 'nc' | 'nd' | 'sa'; + return labels[prop]; + }).join('-'); + return ( + + + + + + + +
      Creative Commons LicenseThis work is licensed under a Criative Commons {label} 4.0 International License.
      + ); +} + +export default CreativeCommons; \ No newline at end of file diff --git a/src/database/item-type/lib/field/DateTime.tsx b/src/database/item-type/lib/field/DateTime.tsx new file mode 100644 index 0000000..0e9b1dc --- /dev/null +++ b/src/database/item-type/lib/field/DateTime.tsx @@ -0,0 +1,21 @@ +import moment from 'moment'; +import React from 'react'; +import { MultiLang } from '../../../../config'; + +interface Props { + lang: MultiLang; + date: number; + onlyDate?: boolean +} + +const DateTime = (props: Props) => { + const { date, onlyDate } = props; + const d = moment(new Date(date * 1000)); + let format = 'MMM D, Y'; + if (typeof onlyDate === 'undefined' || !onlyDate) { + format += ' HH:mm:ss'; + } + return {d.format(format)}; +} + +export default DateTime; diff --git a/src/database/item-type/lib/field/Description.tsx b/src/database/item-type/lib/field/Description.tsx new file mode 100644 index 0000000..353b3d9 --- /dev/null +++ b/src/database/item-type/lib/field/Description.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import XoopsCode from '../../../../common/lib/XoopsCode'; +import { MultiLang } from '../../../../config'; + +interface Props { + lang: MultiLang; + description: string; + className?: string; +} + +const Description = (props: Props) => { + const { lang, description, className } = props; + const textarea = ; + const name = typeof className === 'undefined' ? 'description' : className; + return (
      {textarea}
      ); +} + +export default Description; \ No newline at end of file diff --git a/src/database/item-type/lib/field/FileDownloadButton.module.css b/src/database/item-type/lib/field/FileDownloadButton.module.css new file mode 100644 index 0000000..dd40e7e --- /dev/null +++ b/src/database/item-type/lib/field/FileDownloadButton.module.css @@ -0,0 +1,21 @@ +.downloadButton { + display: inline-block; + padding: 7px 20px; + text-decoration: none !important; + font-weight: normal !important; + background: #f0f0f0; + color: #000 !important; + border: solid 1px #e0e0e0; + box-shadow: 2px 2px #bbbbbb; + border-radius: 5px; +} + +.downloadButton:hover { + background: #e8e8e8 !important; + border: solid 1px #cccccc; +} + +.downloadButton:active { + transform: translate(2px, 2px); + box-shadow: none; +} \ No newline at end of file diff --git a/src/database/item-type/lib/field/FileDownloadButton.tsx b/src/database/item-type/lib/field/FileDownloadButton.tsx new file mode 100644 index 0000000..968d441 --- /dev/null +++ b/src/database/item-type/lib/field/FileDownloadButton.tsx @@ -0,0 +1,55 @@ +import React, { Component } from 'react'; +import { MultiLang } from '../../../../config'; +import ItemUtil, { ItemBasicFile } from '../../../lib/ItemUtil'; +import styles from './FileDownloadButton.module.css'; +import LicenseAgreementDialog from './LicenseAgreementDialog'; + +interface Props { + lang: MultiLang; + file: ItemBasicFile; + rights: string; + useCc: number; + ccCommercialUse: number; + ccModification: number; +} + +interface State { + show: boolean; +} + +class FileDownloadButton extends Component { + + constructor(props: Props) { + super(props); + this.state = { + show: false, + }; + this.handleClickDownload = this.handleClickDownload.bind(this); + this.unsetShow = this.unsetShow.bind(this); + } + + handleClickDownload(e: React.MouseEvent) { + if (this.props.rights !== '') { + e.stopPropagation(); + e.preventDefault(); + this.setState({ show: true }); + } + } + + unsetShow() { + this.setState({ show: false }); + } + + render() { + const { lang, file, rights, useCc, ccCommercialUse, ccModification } = this.props; + const url = ItemUtil.getFileUrl(this.props.file); + return ( + <> + Download + + + ); + } +} + +export default FileDownloadButton; \ No newline at end of file diff --git a/src/database/item-type/lib/field/FileSize.tsx b/src/database/item-type/lib/field/FileSize.tsx new file mode 100644 index 0000000..0198e89 --- /dev/null +++ b/src/database/item-type/lib/field/FileSize.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import { MultiLang } from '../../../../config'; + +interface Props { + lang: MultiLang; + size: number; +} + +const FileSize = (props: Props) => { + const { size } = props; + const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + const power = size > 0 ? Math.floor(Math.log(size) / Math.log(1024)) : 0; + const label = Math.round(size / Math.pow(1024, power) * 10) / 10 + ' ' + units[power] + return {label}; +} + +export default FileSize; \ No newline at end of file diff --git a/src/database/item-type/lib/field/FreeKeyword.tsx b/src/database/item-type/lib/field/FreeKeyword.tsx new file mode 100644 index 0000000..d33437e --- /dev/null +++ b/src/database/item-type/lib/field/FreeKeyword.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { MultiLang } from '../../../../config'; + +interface Props { + lang: MultiLang; + keyword: string[]; +} + +const FreeKeyword = (props: Props) => { + const { keyword } = props; + if (keyword.length === 0) { + return null; + } + const label = keyword.join(', '); + return ({label}); +} + +export default FreeKeyword; \ No newline at end of file diff --git a/src/database/item-type/lib/field/ItemFile.tsx b/src/database/item-type/lib/field/ItemFile.tsx new file mode 100644 index 0000000..12d52e1 --- /dev/null +++ b/src/database/item-type/lib/field/ItemFile.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import { MultiLang } from '../../../../config'; +import Functions from '../../../../functions'; +import { ItemBasicFile } from '../../../lib/ItemUtil'; +import DateTime from './DateTime'; +import FileDownloadButton from './FileDownloadButton'; +import FileSize from './FileSize'; + +interface Props { + lang: MultiLang; + file: ItemBasicFile[]; + type: string; + rights?: string; + useCc?: number; + ccCommercialUse?: number; + ccModification?: number; + downloadLimit?: number; +} + +const ItemFile = (props: Props) => { + const { lang, file, type } = props; + const rights = typeof props.rights === 'undefined' ? '' : props.rights; + const useCc = typeof props.useCc === 'undefined' ? 0 : props.useCc; + const ccCommercialUse = typeof props.ccCommercialUse === 'undefined' ? 0 : props.ccCommercialUse; + const ccModification = typeof props.ccModification === 'undefined' ? 0 : props.ccModification; + const downloadLimit = typeof props.downloadLimit === 'undefined' ? 0 : props.downloadLimit; + const data = file.find((value) => { + return value.file_type_name === type; + }); + if (typeof data === 'undefined') { + return null; + } + const date = new Date(data.timestamp); + const timestamp = Math.floor(date.valueOf() / 1000); + return ( +
      + {data.original_file_name}
      + + + + + + +
      Type: {data.mime_type}{downloadLimit === 0 && }
      Size:
      Last updated:
      + {downloadLimit === 1 && <>
      ({Functions.mlang('[en]File has been removed[/en][ja]ファイルは削除されました[/ja]', lang)})} +
      + ); +} + +export default ItemFile; \ No newline at end of file diff --git a/src/database/item-type/lib/field/ItemIndex.tsx b/src/database/item-type/lib/field/ItemIndex.tsx new file mode 100644 index 0000000..02937f6 --- /dev/null +++ b/src/database/item-type/lib/field/ItemIndex.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { MultiLang } from '../../../../config'; +import Functions from '../../../../functions'; +import IndexUtil from '../../../lib/IndexUtil'; +import { ItemBasicIndex } from '../../../lib/ItemUtil'; + +interface Props { + lang: MultiLang; + index: ItemBasicIndex[]; +} + +const ItemIndex = (props: Props) => { + const { lang, index } = props; + if (index.length === 0) { + return null; + } + const elements = index.map((value, idx) => { + const evenodd = idx % 2 === 0 ? 'even' : 'odd'; + const url = IndexUtil.getUrl(value.index_id); + return ({Functions.mlang(value.title, lang)}); + }); + return ({elements}
      ); +} + +export default ItemIndex; \ No newline at end of file diff --git a/src/database/item-type/lib/field/Language.tsx b/src/database/item-type/lib/field/Language.tsx new file mode 100644 index 0000000..4099c0b --- /dev/null +++ b/src/database/item-type/lib/field/Language.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import { ItemBasicLang } from '../../../lib/ItemUtil'; +import { MultiLang } from '../../../../config'; +import Functions from '../../../../functions'; + +interface Props { + lang: MultiLang; + itemLang: ItemBasicLang; +} + +const Language = (props: Props) => { + const { lang, itemLang } = props; + const langStr = { + eng: '[en]English[/en][ja]英語[/ja]', + jpn: '[en]Japanese[/en][ja]日本語[/ja]', + fra: '[en]French[/en][ja]フランス語[/ja]', + deu: '[en]German[/en][ja]ドイツ語[/ja]', + esl: '[en]Spanish[/en][ja]スペイン語[/ja]', + ita: '[en]Italian[/en][ja]イタリア語[/ja]', + dut: '[en]Dutch[/en][ja]オランダ語[/ja]', + sve: '[en]Swedish[/en][ja]スウェーデン語[/ja]', + nor: '[en]Norwegian[/en][ja]ノルウェー語[/ja]', + dan: '[en]Danish[/en][ja]デンマーク語[/ja]', + fin: '[en]Finnish[/en][ja]フィンランド語[/ja]', + por: '[en]Portuguese[/en][ja]ポルトガル語[/ja]', + chi: '[en]Chinese[/en][ja]中国語[/ja]', + kor: '[en]Korean[/en][ja]韓国語[/ja]', + } + if (!(itemLang in langStr)) { + return null; + } + return ({Functions.mlang(langStr[itemLang], lang)}); +} + +export default Language; \ No newline at end of file diff --git a/src/database/item-type/lib/field/LicenseAgreementDialog.module.css b/src/database/item-type/lib/field/LicenseAgreementDialog.module.css new file mode 100644 index 0000000..b2f4525 --- /dev/null +++ b/src/database/item-type/lib/field/LicenseAgreementDialog.module.css @@ -0,0 +1,38 @@ +.overlay { + position: fixed; + z-index: 90; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: #000000; + opacity: 0.8; +} + +.dialog { + position: fixed; + background-color: #d8d8d8; + width: 570px; + z-index: 100; + top: 50%; + left: 50%; + right: auto; + bottom: auto; + margin: 0 auto; + padding: 20px; + transform: translate(-50%, -50%); + border-radius: 5px; +} + +.box { + background-color: #fff; + padding: 10px; +} + +.download { + text-align: center; +} + +.download button { + margin: 5px 5px 0; +} \ No newline at end of file diff --git a/src/database/item-type/lib/field/LicenseAgreementDialog.tsx b/src/database/item-type/lib/field/LicenseAgreementDialog.tsx new file mode 100644 index 0000000..3d065a6 --- /dev/null +++ b/src/database/item-type/lib/field/LicenseAgreementDialog.tsx @@ -0,0 +1,115 @@ +import React, { ChangeEvent, Component, MouseEvent } from 'react'; +import { Modal } from 'react-overlays'; +import { RouteComponentProps, withRouter } from 'react-router'; +import { MultiLang } from '../../../../config'; +import Functions from '../../../../functions'; +import ItemUtil, { ItemBasicFile } from '../../../lib/ItemUtil'; +import DateTime from './DateTime'; +import FileSize from './FileSize'; +import styles from './LicenseAgreementDialog.module.css'; +import Rights from './Rights'; + +interface Props extends RouteComponentProps { + lang: MultiLang; + file: ItemBasicFile; + rights: string; + useCc: number; + ccCommercialUse: number; + ccModification: number; + show: boolean; + unsetShow: () => void; +} + +interface State { + show: boolean; + disabled: boolean; +} + +class LicenseAgreementDialog extends Component { + + constructor(props: Props) { + super(props); + this.state = { + show: props.show, + disabled: false, + }; + this.handleChangeCheckbox = this.handleChangeCheckbox.bind(this); + this.handleClickDownload = this.handleClickDownload.bind(this); + this.handleClickCancel = this.handleClickCancel.bind(this); + } + + static getDerivedStateFromProps(nextProps: Props, prevState: State) { + if (nextProps.show && !prevState.show) { + return { disabled: true, show: nextProps.show }; + } + return null; + } + + handleChangeCheckbox(e: ChangeEvent) { + const disabled = e.target.value === '0'; + this.setState({ disabled }); + } + + handleClickDownload(e: MouseEvent) { + this.props.unsetShow(); + this.setState({ show: false }); + } + + handleClickCancel(e: MouseEvent) { + this.props.unsetShow(); + this.setState({ show: false }); + } + + renderBackdrop(props: any) { + return
      ; + } + + render() { + const { lang } = this.props; + const date = new Date(this.props.file.timestamp); + const timestamp = Math.floor(date.valueOf() / 1000); + const url = ItemUtil.getFileUrl(this.props.file); + return ( + +
      +
      + {Functions.mlang('[en]Download file information[/en][ja]ダウンロードするファイルの情報[/ja]', lang)} +
      + {this.props.file.original_file_name}
      + + + + + + +
      Type: {this.props.file.mime_type}
      Size:
      Last updated:
      +
      +
      +
      +
      + {Functions.mlang('[en]License agreement[/en][ja]ファイルのライセンス[/ja]', lang)} +
      + {Functions.mlang('[en]Please read the following license agreement carefully.[/en][ja]このファイルには下記のライセンスが設定されています。[/ja]', lang)} +
      + + {Functions.mlang('[en]I accept the terms in the license agreement.[/en][ja]ライセンスに同意します。[/ja]', lang)}
      + {Functions.mlang('[en]I do not accept the terms in the license agreement.[/en][ja]ライセンスに同意しません。[/ja]', lang)}
      +
      +
      +
      +
      +
      + Acceptance is needed to download this file. +
      + + + + +
      +
      +
      + ); + } +} + +export default withRouter(LicenseAgreementDialog); \ No newline at end of file diff --git a/src/database/item-type/lib/field/Preview.module.css b/src/database/item-type/lib/field/Preview.module.css new file mode 100644 index 0000000..7ce5431 --- /dev/null +++ b/src/database/item-type/lib/field/Preview.module.css @@ -0,0 +1,23 @@ +.previewBox { + text-align: center; + margin: 10px; +} + +.previewBox::after { + content: ""; + display: block; + clear: both; +} + +.preview { + width: 200px; + margin: 0 auto; + float: left; + text-align: center; +} + +.preview caption { + width: 200px; + margin: 5px; + font-size: 80%; +} \ No newline at end of file diff --git a/src/database/item-type/lib/field/Preview.tsx b/src/database/item-type/lib/field/Preview.tsx new file mode 100644 index 0000000..86ec5b3 --- /dev/null +++ b/src/database/item-type/lib/field/Preview.tsx @@ -0,0 +1,84 @@ +import React, { Component } from 'react'; +import Lightbox from 'react-image-lightbox'; +import 'react-image-lightbox/style.css'; +import { MultiLang } from '../../../../config'; +import Functions from '../../../../functions'; +import ItemUtil, { ItemBasicFile } from '../../../lib/ItemUtil'; +import styles from './Preview.module.css'; + +interface Props { + lang: MultiLang; + file: ItemBasicFile[]; +} + +interface State { + isOpen: boolean; + imageIndex: number; +} + +class Preview extends Component { + + constructor(props: Props) { + super(props); + this.state = { + isOpen: false, + imageIndex: 0, + }; + } + + render() { + const { lang, file } = this.props; + const data = file.filter((value) => { + return value.file_type_name === 'preview'; + }); + if (data.length === 0) { + return null; + } + let imageUrls: string[] = []; + const previews = data.map((value, idx) => { + const fileUrl = ItemUtil.getFileUrl(value); + const previewUrl = ItemUtil.getPreviewFileUrl(value); + const caption = Functions.mlang(value.caption, lang); + imageUrls.push(fileUrl); + return ( +
      + { + e.preventDefault(); + this.setState({ isOpen: true, imageIndex: idx }); + }}> + {caption} + +
      {caption}
      +
      + ); + }); + const { isOpen, imageIndex } = this.state; + return ( + <> +
      + {previews} +
      + {isOpen && + this.setState({ isOpen: false })} + onMovePrevRequest={() => + this.setState({ + imageIndex: (imageIndex + data.length - 1) % data.length, + }) + } + onMoveNextRequest={() => + this.setState({ + imageIndex: (imageIndex + 1) % data.length, + }) + } + /> + } + + ); + } +} + +export default Preview; \ No newline at end of file diff --git a/src/database/item-type/lib/field/PublicationDate.tsx b/src/database/item-type/lib/field/PublicationDate.tsx new file mode 100644 index 0000000..6da3a62 --- /dev/null +++ b/src/database/item-type/lib/field/PublicationDate.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { MultiLang } from '../../../../config'; +import DateTime from './DateTime'; + +interface Props { + lang: MultiLang; + year: number; + month: number; + mday: number; +} + +const PublicationDate = (props: Props) => { + const { lang, year, month, mday } = props; + const d = new Date(year + '-' + month + '-' + mday); + const timestamp = Math.floor(d.valueOf() / 1000); + return ; +} + +export default PublicationDate; \ No newline at end of file diff --git a/src/database/item-type/lib/field/Readme.tsx b/src/database/item-type/lib/field/Readme.tsx new file mode 100644 index 0000000..6fbd19b --- /dev/null +++ b/src/database/item-type/lib/field/Readme.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { MultiLang } from '../../../../config'; +import Description from './Description'; + +interface Props { + lang: MultiLang; + readme: string; +} + +const Readme = (props: Props) => { + const { lang, readme } = props; + return ; +} + +export default Readme; \ No newline at end of file diff --git a/src/database/item-type/lib/field/RelatedTo.tsx b/src/database/item-type/lib/field/RelatedTo.tsx new file mode 100644 index 0000000..87cd518 --- /dev/null +++ b/src/database/item-type/lib/field/RelatedTo.tsx @@ -0,0 +1,74 @@ +import React, { Component } from 'react'; +import { MultiLang } from '../../../../config'; +import ItemType from '../../../item-type'; +import ItemUtil from '../../../lib/ItemUtil'; + +interface Props { + lang: MultiLang + relatedTo: number[]; +} + +interface State { + elements: JSX.Element[]; +} + +class RelatedTo extends Component { + + private isActive: boolean; + + constructor(props: Props) { + super(props); + this.state = { + elements: [], + }; + this.isActive = false; + } + + componentDidMount() { + this.isActive = true; + this.updateElements(this.props.relatedTo); + } + + componentDidUpdate(prevProps: Props) { + if (JSON.stringify(this.props.relatedTo) !== JSON.stringify(prevProps.relatedTo)) { + this.updateElements(this.props.relatedTo); + } + } + + componentWillUnmount() { + this.isActive = false; + } + + updateElements(relatedTo: number[]) { + const { lang } = this.props; + if (relatedTo.length === 0) { + this.setState({ elements: [] }); + } else { + ItemUtil.getList(relatedTo, (results) => { + const elements = results.data.map((item, idx) => { + const evenodd = idx % 0 ? 'even' : 'odd'; + return ; + }); + if (this.isActive) { + this.setState({ elements }); + } + }); + } + } + + render() { + if (this.state.elements.length === 0) { + return null; + } + return ( + + + + {this.state.elements} + +
      Item summary
      + ); + } +} + +export default RelatedTo; \ No newline at end of file diff --git a/src/database/item-type/lib/field/Rights.tsx b/src/database/item-type/lib/field/Rights.tsx new file mode 100644 index 0000000..25f65cf --- /dev/null +++ b/src/database/item-type/lib/field/Rights.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { MultiLang } from '../../../../config'; +import CreativeCommons, { getCreativeCommonsType } from './CreativeCommons'; +import Description from './Description'; + +interface Props { + lang: MultiLang; + rights: string; + useCc: number; + ccCommercialUse: number; + ccModification: number; +} + +const Rights = (props: Props) => { + const { lang, rights, useCc, ccCommercialUse, ccModification } = props; + if (useCc === 0) { + return ; + } + const ccType = getCreativeCommonsType(ccCommercialUse, ccModification); + return ; +} + +export default Rights; \ No newline at end of file diff --git a/src/database/item-type/lib/field/SimPFLinkIcon.tsx b/src/database/item-type/lib/field/SimPFLinkIcon.tsx new file mode 100644 index 0000000..1bfc8cb --- /dev/null +++ b/src/database/item-type/lib/field/SimPFLinkIcon.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { MultiLang } from '../../../../config'; +import imageButton from '../../../assets/images/simpf_button.png'; + +interface Props { + lang: MultiLang; + url: string; + isDetail: boolean; +} + +const SimPFLinkIcon = (props: Props) => { + const { url, isDetail } = props; + const title = 'Online Simulation'; + const size = isDetail ? 64 : 35; + if (url === '') { + return null; + } + return ( + + {title} + + );; +} + +export default SimPFLinkIcon; diff --git a/src/database/item-type/lib/field/index.tsx b/src/database/item-type/lib/field/index.tsx new file mode 100644 index 0000000..12e70e6 --- /dev/null +++ b/src/database/item-type/lib/field/index.tsx @@ -0,0 +1,39 @@ +import Author from './Author'; +import ChangeLog from './ChangeLog'; +import Contributer from './Contributer'; +import CreativeCommons from './CreativeCommons'; +import DateTime from './DateTime'; +import Description from './Description'; +import FileSize from './FileSize'; +import FileDownloadButton from './FileDownloadButton'; +import FreeKeyword from './FreeKeyword'; +import ItemFile from './ItemFile'; +import ItemIndex from './ItemIndex'; +import Language from './Language'; +import Preview from './Preview'; +import PublicationDate from './PublicationDate'; +import Readme from './Readme'; +import RelatedTo from './RelatedTo'; +import Rights from './Rights'; + +const ItemTypeField = { + Author, + ChangeLog, + Contributer, + CreativeCommons, + DateTime, + Description, + FileDownloadButton, + FileSize, + FreeKeyword, + ItemFile, + ItemIndex, + Language, + Preview, + PublicationDate, + Readme, + RelatedTo, + Rights, +}; + +export default ItemTypeField; \ No newline at end of file diff --git a/src/database/item-type/memo/MemoAdvancedSearch.tsx b/src/database/item-type/memo/MemoAdvancedSearch.tsx new file mode 100644 index 0000000..9438658 --- /dev/null +++ b/src/database/item-type/memo/MemoAdvancedSearch.tsx @@ -0,0 +1,28 @@ +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class MemoAdvancedSearch extends AdvancedSearchBase { + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'memo'; + this.title = 'Memo'; + this.state.values['title'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + this.state.values['doi'] = ''; + this.state.values['item_link'] = ''; + } + + getRows() { + const rows = [ + { label: '[en]Title[/en][ja]タイトル[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + { label: 'ID', value: this.renderFieldInputText('doi', 50) }, + { label: '[en]Item Link[/en][ja]リンク[/ja]', value: this.renderFieldInputText('item_link', 50) }, + ]; + return rows; + } +} + +export default MemoAdvancedSearch; diff --git a/src/database/item-type/memo/MemoDetail.tsx b/src/database/item-type/memo/MemoDetail.tsx new file mode 100644 index 0000000..100441d --- /dev/null +++ b/src/database/item-type/memo/MemoDetail.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import XoopsCode from '../../../common/lib/XoopsCode'; +import Functions from '../../../functions'; +import { ItemMemo } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; + +class MemoDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemMemo; + const fields = [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: '[en]Item Link[/en][ja]リンク[/ja]', value: }, + { label: '[en]Memo File[/en][ja]メモファイル[/ja]', value: }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + return fields; + } +} + +export default MemoDetail; diff --git a/src/database/item-type/memo/MemoList.tsx b/src/database/item-type/memo/MemoList.tsx new file mode 100644 index 0000000..1fbd2cd --- /dev/null +++ b/src/database/item-type/memo/MemoList.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import XoopsCode from '../../../common/lib/XoopsCode'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_memo.gif'; +import { ItemMemo } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; + +class MemoList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Memo'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemMemo; + const link = item.item_link !== '' ? : null; + return ( + <> + {Functions.mlang(item.title, lang)}
      + {link} + + ); + } +} + +export default MemoList; diff --git a/src/database/item-type/memo/MemoTop.tsx b/src/database/item-type/memo/MemoTop.tsx new file mode 100644 index 0000000..8245f96 --- /dev/null +++ b/src/database/item-type/memo/MemoTop.tsx @@ -0,0 +1,15 @@ +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_memo.gif'; + +class MemoTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'memo'; + this.label = 'Memo'; + this.icon = iconFile; + this.description = '[en]Personal Memo Pad.[/en][ja]汎用メモパッド[/ja]'; + } +} + +export default MemoTop; diff --git a/src/database/item-type/memo/index.tsx b/src/database/item-type/memo/index.tsx new file mode 100644 index 0000000..d5d2951 --- /dev/null +++ b/src/database/item-type/memo/index.tsx @@ -0,0 +1,13 @@ +import MemoTop from './MemoTop'; +import MemoList from './MemoList'; +import MemoDetail from './MemoDetail'; +import MemoAdvancedSearch from './MemoAdvancedSearch'; + +const ItemTypeMemo = { + Top: MemoTop, + List: MemoList, + Detail: MemoDetail, + AdvancedSearch: MemoAdvancedSearch, +}; + +export default ItemTypeMemo; \ No newline at end of file diff --git a/src/database/item-type/model/ModelAdvancedSearch.tsx b/src/database/item-type/model/ModelAdvancedSearch.tsx new file mode 100644 index 0000000..02cfd40 --- /dev/null +++ b/src/database/item-type/model/ModelAdvancedSearch.tsx @@ -0,0 +1,35 @@ +import { ItemModelSubTypes } from '../../lib/ItemUtil'; +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class ModelAdvancedSearch extends AdvancedSearchBase { + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'model'; + this.title = 'Model'; + this.state.values['title'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + this.state.values['doi'] = ''; + this.state.values['model_type'] = ''; + this.state.values['creator'] = ''; + this.state.values['file.preview.caption'] = ''; + this.state.values['file.model_data.original_file_name'] = ''; + } + + getRows() { + const rows = [ + { label: '[en]Title[/en][ja]タイトル[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + { label: 'ID', value: this.renderFieldInputText('doi', 50) }, + { label: '[en]Model Type[/en][ja]モデルタイプ[/ja]', value: this.renderFieldSelect('model_type', ItemModelSubTypes) }, + { label: '[en]Creator[/en][ja]作成者[/ja]', value: this.renderFieldInputText('creator', 50) }, + { label: '[en]Caption[/en][ja]キャプション[/ja]', value: this.renderFieldInputText('file.preview.caption', 50) }, + { label: '[en]Model File[/en][ja]モデルファイル[/ja]', value: this.renderFieldInputText('file.model_data.original_file_name', 50) }, + ]; + return rows; + } +} + +export default ModelAdvancedSearch; \ No newline at end of file diff --git a/src/database/item-type/model/ModelDetail.tsx b/src/database/item-type/model/ModelDetail.tsx new file mode 100644 index 0000000..837b712 --- /dev/null +++ b/src/database/item-type/model/ModelDetail.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import Functions from '../../../functions'; +import ItemUtil, { ItemModel } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; +import SimPFLinkIcon from '../lib/field/SimPFLinkIcon'; +import ModelUtil from './ModelUtil'; + +class ModelDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemModel; + const fields = [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: '[en]Model Type[/en][ja]モデルタイプ[/ja]', value: }, + { label: '[en]Creator[/en][ja]作成者[/ja]', value: }, + { label: '[en]Preview[/en][ja]プレビュー[/ja]', value: }, + { label: '[en]Model File[/en][ja]モデルファイル[/ja]', value: }, + { label: 'Readme', value: }, + { label: 'Rights', value: }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + const simpfLinkUrl = ItemUtil.getSimPFLinkUrl(item.item_id); + if (simpfLinkUrl !== '') { + const field = { label: 'Online Simulation', value: }; + fields.splice(13, 0, field); + } + return fields; + } +} + +export default ModelDetail; \ No newline at end of file diff --git a/src/database/item-type/model/ModelList.tsx b/src/database/item-type/model/ModelList.tsx new file mode 100644 index 0000000..b709fa2 --- /dev/null +++ b/src/database/item-type/model/ModelList.tsx @@ -0,0 +1,31 @@ +import React, { Fragment } from 'react'; +import { Link } from 'react-router-dom'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_model.gif'; +import { ItemModel } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; + +class ModelList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Model'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemModel; + const authors = item.creator.map((author, i) => { + return {i > 0 && ', '}{Functions.mlang(author, lang)} + }); + return ( + <> + {Functions.mlang(item.title, lang)}
      + {authors} + + ); + } +} + +export default ModelList; \ No newline at end of file diff --git a/src/database/item-type/model/ModelTop.tsx b/src/database/item-type/model/ModelTop.tsx new file mode 100644 index 0000000..8f3d0dc --- /dev/null +++ b/src/database/item-type/model/ModelTop.tsx @@ -0,0 +1,17 @@ +import { ItemModelSubTypes } from '../../lib/ItemUtil'; +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_model.gif'; + +class ModelTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'model'; + this.label = 'Model'; + this.icon = iconFile; + this.description = '[en]Model programs/scripts.[/en][ja]モデル プログラム/スクリプト[/ja]'; + this.subTypes = ItemModelSubTypes; + } +} + +export default ModelTop; \ No newline at end of file diff --git a/src/database/item-type/model/ModelUtil.tsx b/src/database/item-type/model/ModelUtil.tsx new file mode 100644 index 0000000..43a0c89 --- /dev/null +++ b/src/database/item-type/model/ModelUtil.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { MultiLang } from '../../../config'; +import { ItemModelSubType, ItemModelSubTypes } from '../../lib/ItemUtil'; + +interface ModelTypeProps { + lang: MultiLang; + type: ItemModelSubType; +} + +const ModelType = (props: ModelTypeProps) => { + const { type } = props; + const subtype = ItemModelSubTypes.find((value) => { return value.type === type; }); + if (typeof subtype === 'undefined') { + return null; + } + return ({subtype.label}); +} + +const ModelUtil = { + ModelType, +} + +export default ModelUtil; \ No newline at end of file diff --git a/src/database/item-type/model/index.tsx b/src/database/item-type/model/index.tsx new file mode 100644 index 0000000..dba8611 --- /dev/null +++ b/src/database/item-type/model/index.tsx @@ -0,0 +1,13 @@ +import ModelTop from './ModelTop'; +import ModelList from './ModelList'; +import ModelDetail from './ModelDetail'; +import ModelAdvancedSearch from './ModelAdvancedSearch'; + +const ItemTypeModel = { + Top: ModelTop, + List: ModelList, + Detail: ModelDetail, + AdvancedSearch: ModelAdvancedSearch, +}; + +export default ItemTypeModel; \ No newline at end of file diff --git a/src/database/item-type/paper/PaperAdvancedSearch.tsx b/src/database/item-type/paper/PaperAdvancedSearch.tsx new file mode 100644 index 0000000..a74e2d4 --- /dev/null +++ b/src/database/item-type/paper/PaperAdvancedSearch.tsx @@ -0,0 +1,39 @@ +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class PaperAdvancedSearch extends AdvancedSearchBase { + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'paper'; + this.title = 'Paper'; + this.state.values['pubmed_id'] = ''; + this.state.values['title'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + this.state.values['doi'] = ''; + this.state.values['author'] = ''; + this.state.values['journal'] = ''; + this.state.values['publication_year'] = ''; + this.state.values['volume'] = ''; + this.state.values['number'] = ''; + this.state.values['page'] = ''; + } + + getRows() { + const rows = [ + { label: 'PubMed ID', value: this.renderFieldInputText('pubmed_id', 50) }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + { label: 'ID', value: this.renderFieldInputText('doi', 50) }, + { label: '[en]Author[/en][ja]著者[/ja]', value: this.renderFieldInputText('author', 50) }, + { label: '[en]Journal[/en][ja]ジャーナル[/ja]', value: this.renderFieldInputText('journal', 50) }, + { label: '[en]Publication Year[/en][ja]出版年[/ja]', value: this.renderFieldInputText('publication_year', 10) }, + { label: '[en]Volume[/en][ja]巻[/ja]', value: this.renderFieldInputText('volume', 50) }, + { label: '[en]Number[/en][ja]号[/ja]', value: this.renderFieldInputText('number', 50) }, + { label: '[en]Page[/en][ja]ページ[/ja]', value: this.renderFieldInputText('page', 50) }, + ]; + return rows; + } +} + +export default PaperAdvancedSearch; \ No newline at end of file diff --git a/src/database/item-type/paper/PaperDetail.tsx b/src/database/item-type/paper/PaperDetail.tsx new file mode 100644 index 0000000..5884fbe --- /dev/null +++ b/src/database/item-type/paper/PaperDetail.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import Functions from '../../../functions'; +import { ItemPaper } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; +import PaperUtil from './PaperUtil'; + +class PaperDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemPaper; + return [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: 'PubMed ID', value: }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: '[en]Author[/en][ja]著者[/ja]', value: }, + { label: '[en]Journal[/en][ja]ジャーナル[/ja]', value: Functions.mlang(item.journal, lang) }, + { label: '[en]Publication Year[/en][ja]出版年[/ja]', value: item.publication_year }, + { label: '[en]Volume[/en][ja]巻[/ja]', value: item.volume }, + { label: '[en]Number[/en][ja]号[/ja]', value: item.number }, + { label: '[en]Page[/en][ja]ページ[/ja]', value: item.page }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + } +} + +export default PaperDetail; \ No newline at end of file diff --git a/src/database/item-type/paper/PaperList.tsx b/src/database/item-type/paper/PaperList.tsx new file mode 100644 index 0000000..673d6d3 --- /dev/null +++ b/src/database/item-type/paper/PaperList.tsx @@ -0,0 +1,38 @@ +import React, { Fragment } from 'react'; +import { Link } from 'react-router-dom'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_paper.gif'; +import { ItemPaper } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; +import PaperUtil from './PaperUtil'; + +class PaperList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Paper'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemPaper; + const authors = item.author.map((author, i) => { + return {i > 0 && ', '}{Functions.mlang(author, lang)} + }); + return ( + <> + {Functions.mlang(item.title, lang)}
      + {authors}
      + {Functions.mlang(item.journal, lang)} + {item.publication_year} + {item.volume !== null && ' ;' + item.volume} + {item.number !== null && ' (' + item.number + ')'} + {item.page !== '' && ' :' + item.page} + {item.pubmed_id !== '' && <> [PMID:]} + + ); + } +} + +export default PaperList; \ No newline at end of file diff --git a/src/database/item-type/paper/PaperTop.tsx b/src/database/item-type/paper/PaperTop.tsx new file mode 100644 index 0000000..2d6ea43 --- /dev/null +++ b/src/database/item-type/paper/PaperTop.tsx @@ -0,0 +1,15 @@ +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_paper.gif'; + +class PaperTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'paper'; + this.label = 'Paper'; + this.icon = iconFile; + this.description = '[en]Related paper collection.[/en][ja]関連論文[/ja]'; + } +} + +export default PaperTop; \ No newline at end of file diff --git a/src/database/item-type/paper/PaperUtil.tsx b/src/database/item-type/paper/PaperUtil.tsx new file mode 100644 index 0000000..419b6a6 --- /dev/null +++ b/src/database/item-type/paper/PaperUtil.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { MultiLang } from '../../../config'; + +interface PubmedLinkProps { + lang: MultiLang; + pubmedId: string; +} + +const PubmedLink = (props: PubmedLinkProps) => { + const { pubmedId } = props; + if (pubmedId === '') { + return null; + } + const url = 'https://www.ncbi.nlm.nih.gov/pubmed/' + pubmedId; + return ({pubmedId}); +} + +const PaperUtil = { + PubmedLink, +} + +export default PaperUtil; \ No newline at end of file diff --git a/src/database/item-type/paper/index.tsx b/src/database/item-type/paper/index.tsx new file mode 100644 index 0000000..a781a94 --- /dev/null +++ b/src/database/item-type/paper/index.tsx @@ -0,0 +1,13 @@ +import PaperTop from './PaperTop'; +import PaperList from './PaperList'; +import PaperDetail from './PaperDetail'; +import PaperAdvancedSearch from './PaperAdvancedSearch'; + +const ItemTypePaper = { + Top: PaperTop, + List: PaperList, + Detail: PaperDetail, + AdvancedSearch: PaperAdvancedSearch, +}; + +export default ItemTypePaper; \ No newline at end of file diff --git a/src/database/item-type/presentation/PresentationAdvancedSearch.tsx b/src/database/item-type/presentation/PresentationAdvancedSearch.tsx new file mode 100644 index 0000000..d763def --- /dev/null +++ b/src/database/item-type/presentation/PresentationAdvancedSearch.tsx @@ -0,0 +1,46 @@ +import { ItemPresentationSubTypes } from '../../lib/ItemUtil'; +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class PresentationAdvancedSearch extends AdvancedSearchBase { + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'presentation'; + this.title = 'Presentation'; + const now = new Date(); + const year = String(now.getFullYear()); + const month = String(now.getMonth() + 1); + const mday = String(now.getDate()); + this.state.values['title'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + this.state.values['doi'] = ''; + this.state.values['meeting_name'] = ''; + this.state.values['presentation_type'] = ''; + this.state.values['creator'] = ''; + this.state.values['publication_year'] = year; + this.state.values['publication_month'] = month; + this.state.values['publication_mday'] = mday; + this.state.values['file.preview.caption'] = ''; + this.state.values['file.presentation_file.original_file_name'] = ''; + this.setIgnoreKey('publication_year'); + this.setIgnoreKey('publication_month'); + this.setIgnoreKey('publication_mday'); + } + + getRows() { + const rows = [ + { label: '[en]Title[/en][ja]タイトル[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + { label: 'ID', value: this.renderFieldInputText('doi', 50) }, + { label: '[en]Presentation Type[/en][ja]ファイル形式[/ja]', value: this.renderFieldSelect('presentation_type', ItemPresentationSubTypes) }, + { label: '[en]Creator[/en][ja]作成者[/ja]', value: this.renderFieldInputText('creator', 50) }, + { label: '[en]Date[/en][ja]日付[/ja]', value: this.renderFieldDate('', 'publication_year', 'publication_month', 'publication_mday') }, + { label: '[en]Caption[/en][ja]キャプション[/ja]', value: this.renderFieldInputText('file.preview.caption', 50) }, + { label: '[en]Presentation File[/en][ja]発表資料[/ja]', value: this.renderFieldInputText('file.presentation_file.original_file_name', 50) }, + ]; + return rows; + } +} + +export default PresentationAdvancedSearch; \ No newline at end of file diff --git a/src/database/item-type/presentation/PresentationDetail.tsx b/src/database/item-type/presentation/PresentationDetail.tsx new file mode 100644 index 0000000..2924449 --- /dev/null +++ b/src/database/item-type/presentation/PresentationDetail.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import Functions from '../../../functions'; +import { ItemPresentation } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; +import PresentationUtil from './PresentationUtil'; + +class PresentationDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemPresentation; + return [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: '[en]Date[/en][ja]日付[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: '[en]Presentation Type[/en][ja]ファイル形式[/ja]', value: }, + { label: '[en]Creator[/en][ja]作成者[/ja]', value: }, + { label: '[en]Preview[/en][ja]プレビュー[/ja]', value: }, + { label: '[en]Presentation File[/en][ja]発表資料[/ja]', value: }, + { label: 'Readme', value: }, + { label: 'Rights', value: }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + } +} + +export default PresentationDetail; \ No newline at end of file diff --git a/src/database/item-type/presentation/PresentationList.tsx b/src/database/item-type/presentation/PresentationList.tsx new file mode 100644 index 0000000..a6c8e61 --- /dev/null +++ b/src/database/item-type/presentation/PresentationList.tsx @@ -0,0 +1,33 @@ +import React, { Fragment } from 'react'; +import { Link } from 'react-router-dom'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_presentation.gif'; +import { ItemPresentation } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; +import PresentationUtil from './PresentationUtil'; + +class PresentationList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Presentation'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemPresentation; + const authors = item.creator.map((author, i) => { + return {i > 0 && ', '}{Functions.mlang(author, lang)} + }); + return ( + <> + {Functions.mlang(item.title, lang)}
      +
      + {authors} + + ); + } +} + +export default PresentationList; \ No newline at end of file diff --git a/src/database/item-type/presentation/PresentationTop.tsx b/src/database/item-type/presentation/PresentationTop.tsx new file mode 100644 index 0000000..4a45c8e --- /dev/null +++ b/src/database/item-type/presentation/PresentationTop.tsx @@ -0,0 +1,17 @@ +import iconFile from '../../assets/images/icon_presentation.gif'; +import { ItemPresentationSubTypes } from '../../lib/ItemUtil'; +import TopBase, { TopBaseProps } from '../lib/TopBase'; + +class PresentationTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'presentation'; + this.label = 'Presentation'; + this.icon = iconFile; + this.description = '[en]Electrical presentation files.[/en][ja]プレゼンテーション ファイル[/ja]'; + this.subTypes = ItemPresentationSubTypes; + } +} + +export default PresentationTop; \ No newline at end of file diff --git a/src/database/item-type/presentation/PresentationUtil.tsx b/src/database/item-type/presentation/PresentationUtil.tsx new file mode 100644 index 0000000..e5140bc --- /dev/null +++ b/src/database/item-type/presentation/PresentationUtil.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { MultiLang } from '../../../config'; +import { ItemPresentationSubType, ItemPresentationSubTypes } from '../../lib/ItemUtil'; + +interface PresentationTypeProps { + lang: MultiLang; + type: ItemPresentationSubType; +} + +const PresentationType = (props: PresentationTypeProps) => { + const { type } = props; + const subtype = ItemPresentationSubTypes.find((value) => { return value.type === type; }); + if (typeof subtype === 'undefined') { + return null; + } + return ({subtype.label}); +} + +const PresentationUtil = { + PresentationType, +} + +export default PresentationUtil; \ No newline at end of file diff --git a/src/database/item-type/presentation/index.tsx b/src/database/item-type/presentation/index.tsx new file mode 100644 index 0000000..13493a3 --- /dev/null +++ b/src/database/item-type/presentation/index.tsx @@ -0,0 +1,13 @@ +import PresentationTop from './PresentationTop'; +import PresentationList from './PresentationList'; +import PresentationDetail from './PresentationDetail'; +import PresentationAdvancedSearch from './PresentationAdvancedSearch'; + +const ItemTypePresentation = { + Top: PresentationTop, + List: PresentationList, + Detail: PresentationDetail, + AdvancedSearch: PresentationAdvancedSearch, +}; + +export default ItemTypePresentation; \ No newline at end of file diff --git a/src/database/item-type/simulator/SimulatorAdvancedSearch.tsx b/src/database/item-type/simulator/SimulatorAdvancedSearch.tsx new file mode 100644 index 0000000..463681a --- /dev/null +++ b/src/database/item-type/simulator/SimulatorAdvancedSearch.tsx @@ -0,0 +1,44 @@ +import { ItemSimulatorSubTypes } from '../../lib/ItemUtil'; +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class SimulatorAdvancedSearch extends AdvancedSearchBase { + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'simulator'; + this.title = 'Simulator'; + const now = new Date(); + const year = String(now.getFullYear()); + const month = String(now.getMonth() + 1); + const mday = String(now.getDate()); + this.state.values['title'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + this.state.values['doi'] = ''; + this.state.values['simulator_type'] = ''; + this.state.values['developer'] = ''; + this.state.values['publication_year'] = year; + this.state.values['publication_month'] = month; + this.state.values['publication_mday'] = mday; + this.state.values['file.preview.caption'] = ''; + this.setIgnoreKey('publication_year'); + this.setIgnoreKey('publication_month'); + this.setIgnoreKey('publication_mday'); + } + + getRows() { + const rows = [ + { label: '[en]Title[/en][ja]タイトル[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + { label: 'ID', value: this.renderFieldInputText('doi', 50) }, + { label: '[en]Simulator Type[/en][ja]シミュレータータイプ[/ja]', value: this.renderFieldSelect('simulator_type', ItemSimulatorSubTypes) }, + { label: '[en]Developer[/en][ja]開発者[/ja]', value: this.renderFieldInputText('developer', 50) }, + { label: '[en]Date[/en][ja]日付[/ja]', value: this.renderFieldDate('', 'publication_year', 'publication_month', 'publication_mday') }, + { label: '[en]Caption[/en][ja]キャプション[/ja]', value: this.renderFieldInputText('file.preview.caption', 50) }, + ]; + return rows; + } +} + +export default SimulatorAdvancedSearch; diff --git a/src/database/item-type/simulator/SimulatorDetail.tsx b/src/database/item-type/simulator/SimulatorDetail.tsx new file mode 100644 index 0000000..d876cb2 --- /dev/null +++ b/src/database/item-type/simulator/SimulatorDetail.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import Functions from '../../../functions'; +import ItemUtil, { ItemSimulator } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; +import SimPFLinkIcon from '../lib/field/SimPFLinkIcon'; +import SimulatorUtil from './SimulatorUtil'; + +class SimulatorDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemSimulator; + const fields = [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: '[en]Date[/en][ja]日付[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: '[en]Simulator Type[/en][ja]シミュレータータイプ[/ja]', value: }, + { label: '[en]Developer[/en][ja]開発者[/ja]', value: }, + { label: '[en]Preview[/en][ja]プレビュー[/ja]', value: }, + { label: '[en]Simulator File[/en][ja]ファイル[/ja]', value: }, + { label: 'Readme', value: }, + { label: 'Rights', value: }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + const simpfLinkUrl = ItemUtil.getSimPFLinkUrl(item.item_id); + if (simpfLinkUrl !== '') { + const field = { label: 'Online Simulation', value: }; + fields.splice(14, 0, field); + } + return fields; + } +} + +export default SimulatorDetail; \ No newline at end of file diff --git a/src/database/item-type/simulator/SimulatorList.tsx b/src/database/item-type/simulator/SimulatorList.tsx new file mode 100644 index 0000000..3b91629 --- /dev/null +++ b/src/database/item-type/simulator/SimulatorList.tsx @@ -0,0 +1,31 @@ +import React, { Fragment } from 'react'; +import { Link } from 'react-router-dom'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_simulator.gif'; +import { ItemSimulator } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; + +class SimulatorList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Simulator'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemSimulator; + const authors = item.developer.map((author, i) => { + return {i > 0 && ', '}{Functions.mlang(author, lang)} + }); + return ( + <> + {Functions.mlang(item.title, lang)}
      + {authors} + + ); + } +} + +export default SimulatorList; \ No newline at end of file diff --git a/src/database/item-type/simulator/SimulatorTop.tsx b/src/database/item-type/simulator/SimulatorTop.tsx new file mode 100644 index 0000000..95d75da --- /dev/null +++ b/src/database/item-type/simulator/SimulatorTop.tsx @@ -0,0 +1,17 @@ +import { ItemSimulatorSubTypes } from '../../lib/ItemUtil'; +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_simulator.gif'; + +class SimulatorTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'simulator'; + this.label = 'Simulator'; + this.icon = iconFile; + this.description = '[en]Programs/scripts for simulation.[/en][ja]シミュレーション用プログラム/スクリプト[/ja]'; + this.subTypes = ItemSimulatorSubTypes; + } +} + +export default SimulatorTop; \ No newline at end of file diff --git a/src/database/item-type/simulator/SimulatorUtil.tsx b/src/database/item-type/simulator/SimulatorUtil.tsx new file mode 100644 index 0000000..adc52f5 --- /dev/null +++ b/src/database/item-type/simulator/SimulatorUtil.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { MultiLang } from '../../../config'; +import { ItemSimulatorSubType, ItemSimulatorSubTypes } from '../../lib/ItemUtil'; + +interface SimulatorTypeProps { + lang: MultiLang; + type: ItemSimulatorSubType; +} + +const SimulatorType = (props: SimulatorTypeProps) => { + const { type } = props; + const subtype = ItemSimulatorSubTypes.find((value) => { return value.type === type; }); + if (typeof subtype === 'undefined') { + return null; + } + return ({subtype.label}); +} + +const SimulatorUtil = { + SimulatorType, +} + +export default SimulatorUtil; \ No newline at end of file diff --git a/src/database/item-type/simulator/index.tsx b/src/database/item-type/simulator/index.tsx new file mode 100644 index 0000000..06c082d --- /dev/null +++ b/src/database/item-type/simulator/index.tsx @@ -0,0 +1,13 @@ +import SimulatorTop from './SimulatorTop'; +import SimulatorList from './SimulatorList'; +import SimulatorDetail from './SimulatorDetail'; +import SimulatorAdvancedSearch from './SimulatorAdvancedSearch'; + +const ItemTypeSimulator = { + Top: SimulatorTop, + List: SimulatorList, + Detail: SimulatorDetail, + AdvancedSearch: SimulatorAdvancedSearch, +}; + +export default ItemTypeSimulator; \ No newline at end of file diff --git a/src/database/item-type/stimulus/StimulusAdvancedSearch.tsx b/src/database/item-type/stimulus/StimulusAdvancedSearch.tsx new file mode 100644 index 0000000..d2a0bff --- /dev/null +++ b/src/database/item-type/stimulus/StimulusAdvancedSearch.tsx @@ -0,0 +1,44 @@ +import { ItemStimulusSubTypes } from '../../lib/ItemUtil'; +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class StimulusAdvancedSearch extends AdvancedSearchBase { + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'stimulus'; + this.title = 'Stimulus'; + const now = new Date(); + const year = String(now.getFullYear()); + const month = String(now.getMonth() + 1); + const mday = String(now.getDate()); + this.state.values['title'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + this.state.values['doi'] = ''; + this.state.values['stimulus_type'] = ''; + this.state.values['developer'] = ''; + this.state.values['publication_year'] = year; + this.state.values['publication_month'] = month; + this.state.values['publication_mday'] = mday; + this.state.values['file.preview.caption'] = ''; + this.setIgnoreKey('publication_year'); + this.setIgnoreKey('publication_month'); + this.setIgnoreKey('publication_mday'); + } + + getRows() { + const rows = [ + { label: '[en]Title[/en][ja]タイトル[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + { label: 'ID', value: this.renderFieldInputText('doi', 50) }, + { label: '[en]Stimulus Type[/en][ja]刺激タイプ[/ja]', value: this.renderFieldSelect('stimulus_type', ItemStimulusSubTypes) }, + { label: '[en]Developer[/en][ja]開発者[/ja]', value: this.renderFieldInputText('developer', 50) }, + { label: '[en]Date[/en][ja]日付[/ja]', value: this.renderFieldDate('', 'publication_year', 'publication_month', 'publication_mday') }, + { label: '[en]Caption[/en][ja]キャプション[/ja]', value: this.renderFieldInputText('file.preview.caption', 50) }, + ]; + return rows; + } +} + +export default StimulusAdvancedSearch; diff --git a/src/database/item-type/stimulus/StimulusDetail.tsx b/src/database/item-type/stimulus/StimulusDetail.tsx new file mode 100644 index 0000000..2f16ad4 --- /dev/null +++ b/src/database/item-type/stimulus/StimulusDetail.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import Functions from '../../../functions'; +import ItemUtil, { ItemStimulus } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; +import SimPFLinkIcon from '../lib/field/SimPFLinkIcon'; +import StimulusUtil from './StimulusUtil'; + +class StimulusDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemStimulus; + const fields = [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: '[en]Date[/en][ja]日付[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: '[en]Stimulus Type[/en][ja]刺激タイプ[/ja]', value: }, + { label: '[en]Developer[/en][ja]開発者[/ja]', value: }, + { label: '[en]Preview[/en][ja]プレビュー[/ja]', value: }, + { label: '[en]Stimulus File[/en][ja]ファイル[/ja]', value: }, + { label: 'Readme', value: }, + { label: 'Rights', value: }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + const simpfLinkUrl = ItemUtil.getSimPFLinkUrl(item.item_id); + if (simpfLinkUrl !== '') { + const field = { label: 'Online Simulation', value: }; + fields.splice(14, 0, field); + } + return fields; + } +} + +export default StimulusDetail; diff --git a/src/database/item-type/stimulus/StimulusList.tsx b/src/database/item-type/stimulus/StimulusList.tsx new file mode 100644 index 0000000..baae6b7 --- /dev/null +++ b/src/database/item-type/stimulus/StimulusList.tsx @@ -0,0 +1,31 @@ +import React, { Fragment } from 'react'; +import { Link } from 'react-router-dom'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_stimulus.gif'; +import { ItemStimulus } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; + +class StimulusList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Stimulus'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemStimulus; + const authors = item.developer.map((author, i) => { + return {i > 0 && ', '}{Functions.mlang(author, lang)} + }); + return ( + <> + {Functions.mlang(item.title, lang)}
      + {authors} + + ); + } +} + +export default StimulusList; \ No newline at end of file diff --git a/src/database/item-type/stimulus/StimulusTop.tsx b/src/database/item-type/stimulus/StimulusTop.tsx new file mode 100644 index 0000000..a58ec2f --- /dev/null +++ b/src/database/item-type/stimulus/StimulusTop.tsx @@ -0,0 +1,17 @@ +import { ItemStimulusSubTypes } from '../../lib/ItemUtil'; +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_stimulus.gif'; + +class StimulusTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'stimulus'; + this.label = 'Stimulus'; + this.icon = iconFile; + this.description = '[en]Picture, movie and program files for experimental stimuli.[/en][ja]実験用刺激プログラム/スクリプト[/ja]'; + this.subTypes = ItemStimulusSubTypes; + } +} + +export default StimulusTop; \ No newline at end of file diff --git a/src/database/item-type/stimulus/StimulusUtil.tsx b/src/database/item-type/stimulus/StimulusUtil.tsx new file mode 100644 index 0000000..3a0f8c8 --- /dev/null +++ b/src/database/item-type/stimulus/StimulusUtil.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { MultiLang } from '../../../config'; +import { ItemStimulusSubType, ItemStimulusSubTypes } from '../../lib/ItemUtil'; + +interface StimulusTypeProps { + lang: MultiLang; + type: ItemStimulusSubType; +} + +const StimulusType = (props: StimulusTypeProps) => { + const { type } = props; + const subtype = ItemStimulusSubTypes.find((value) => { return value.type === type; }); + if (typeof subtype === 'undefined') { + return null; + } + return ({subtype.label}); +} + +const StimulusUtil = { + StimulusType, +} + +export default StimulusUtil; \ No newline at end of file diff --git a/src/database/item-type/stimulus/index.tsx b/src/database/item-type/stimulus/index.tsx new file mode 100644 index 0000000..b01ff6c --- /dev/null +++ b/src/database/item-type/stimulus/index.tsx @@ -0,0 +1,13 @@ +import StimulusTop from './StimulusTop'; +import StimulusList from './StimulusList'; +import StimulusDetail from './StimulusDetail'; +import StimulusAdvancedSearch from './StimulusAdvancedSearch'; + +const ItemTypeStimulus = { + Top: StimulusTop, + List: StimulusList, + Detail: StimulusDetail, + AdvancedSearch: StimulusAdvancedSearch, +}; + +export default ItemTypeStimulus; \ No newline at end of file diff --git a/src/database/item-type/tool/ToolAdvancedSearch.tsx b/src/database/item-type/tool/ToolAdvancedSearch.tsx new file mode 100644 index 0000000..6c9a8d3 --- /dev/null +++ b/src/database/item-type/tool/ToolAdvancedSearch.tsx @@ -0,0 +1,46 @@ +import { ItemToolSubTypes } from '../../lib/ItemUtil'; +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class ToolAdvancedSearch extends AdvancedSearchBase { + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'tool'; + this.title = 'Tool'; + const now = new Date(); + const year = String(now.getFullYear()); + const month = String(now.getMonth() + 1); + const mday = String(now.getDate()); + this.state.values['title'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + this.state.values['doi'] = ''; + this.state.values['tool_type'] = ''; + this.state.values['developer'] = ''; + this.state.values['publication_year'] = year; + this.state.values['publication_month'] = month; + this.state.values['publication_mday'] = mday; + this.state.values['file.preview.caption'] = ''; + this.state.values['file.tool_data.original_file_name'] = ''; + this.setIgnoreKey('publication_year'); + this.setIgnoreKey('publication_month'); + this.setIgnoreKey('publication_mday'); + } + + getRows() { + const rows = [ + { label: '[en]Title[/en][ja]タイトル[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + { label: 'ID', value: this.renderFieldInputText('doi', 50) }, + { label: '[en]Tool Type[/en][ja]ファイルタイプ[/ja]', value: this.renderFieldSelect('tool_type', ItemToolSubTypes) }, + { label: '[en]Developer[/en][ja]開発者[/ja]', value: this.renderFieldInputText('developer', 50) }, + { label: '[en]Date[/en][ja]日付[/ja]', value: this.renderFieldDate('', 'publication_year', 'publication_month', 'publication_mday') }, + { label: '[en]Caption[/en][ja]キャプション[/ja]', value: this.renderFieldInputText('file.preview.caption', 50) }, + { label: '[en]Tool File[/en][ja]ファイル[/ja]', value: this.renderFieldInputText('file.tool_data.original_file_name', 50) }, + ]; + return rows; + } +} + +export default ToolAdvancedSearch; diff --git a/src/database/item-type/tool/ToolDetail.tsx b/src/database/item-type/tool/ToolDetail.tsx new file mode 100644 index 0000000..aa30c02 --- /dev/null +++ b/src/database/item-type/tool/ToolDetail.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import Functions from '../../../functions'; +import ItemUtil, { ItemTool } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; +import SimPFLinkIcon from '../lib/field/SimPFLinkIcon'; +import ToolUtil from './ToolUtil'; + +class ToolDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemTool; + const fields = [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: '[en]Tool Type[/en][ja]ファイルタイプ[/ja]', value: }, + { label: '[en]Developer[/en][ja]開発者[/ja]', value: }, + { label: '[en]Preview[/en][ja]プレビュー[/ja]', value: }, + { label: '[en]Tool File[/en][ja]ファイル[/ja]', value: }, + { label: 'Readme', value: }, + { label: 'Rights', value: }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + const simpfLinkUrl = ItemUtil.getSimPFLinkUrl(item.item_id); + if (simpfLinkUrl !== '') { + const field = { label: 'Online Simulation', value: }; + fields.splice(13, 0, field); + } + return fields; + } +} + +export default ToolDetail; \ No newline at end of file diff --git a/src/database/item-type/tool/ToolList.tsx b/src/database/item-type/tool/ToolList.tsx new file mode 100644 index 0000000..27ee027 --- /dev/null +++ b/src/database/item-type/tool/ToolList.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_tool.gif'; +import { ItemTool } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; +import ToolUtil from './ToolUtil'; + +class ToolList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Tool'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemTool; + return ( + <> + {Functions.mlang(item.title, lang)}
      + + + ); + } +} + +export default ToolList; \ No newline at end of file diff --git a/src/database/item-type/tool/ToolTop.tsx b/src/database/item-type/tool/ToolTop.tsx new file mode 100644 index 0000000..58b7a23 --- /dev/null +++ b/src/database/item-type/tool/ToolTop.tsx @@ -0,0 +1,17 @@ +import { ItemToolSubTypes } from '../../lib/ItemUtil'; +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_tool.gif'; + +class ToolTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'tool'; + this.label = 'Tool'; + this.icon = iconFile; + this.description = '[en]Tool programs/scripts.[/en][ja]データ解析用プログラム/スクリプト[/ja]'; + this.subTypes = ItemToolSubTypes; + } +} + +export default ToolTop; \ No newline at end of file diff --git a/src/database/item-type/tool/ToolUtil.tsx b/src/database/item-type/tool/ToolUtil.tsx new file mode 100644 index 0000000..3b3864c --- /dev/null +++ b/src/database/item-type/tool/ToolUtil.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { MultiLang } from '../../../config'; +import { ItemToolSubType, ItemToolSubTypes } from '../../lib/ItemUtil'; + +interface ToolTypeProps { + lang: MultiLang; + type: ItemToolSubType; +} + +const ToolType = (props: ToolTypeProps) => { + const { type } = props; + const subtype = ItemToolSubTypes.find((value) => { return value.type === type; }); + if (typeof subtype === 'undefined') { + return null; + } + return ({subtype.label}); +} + +const ToolUtil = { + ToolType, +} + +export default ToolUtil; \ No newline at end of file diff --git a/src/database/item-type/tool/index.tsx b/src/database/item-type/tool/index.tsx new file mode 100644 index 0000000..23a334c --- /dev/null +++ b/src/database/item-type/tool/index.tsx @@ -0,0 +1,13 @@ +import ToolTop from './ToolTop'; +import ToolList from './ToolList'; +import ToolDetail from './ToolDetail'; +import ToolAdvancedSearch from './ToolAdvancedSearch'; + +const ItemTypeTool = { + Top: ToolTop, + List: ToolList, + Detail: ToolDetail, + AdvancedSearch: ToolAdvancedSearch, +}; + +export default ItemTypeTool; \ No newline at end of file diff --git a/src/database/item-type/url/UrlAdvancedSearch.tsx b/src/database/item-type/url/UrlAdvancedSearch.tsx new file mode 100644 index 0000000..2062516 --- /dev/null +++ b/src/database/item-type/url/UrlAdvancedSearch.tsx @@ -0,0 +1,28 @@ +import AdvancedSearchBase, { AdvancedSearchBaseProps } from '../lib/AdvancedSearchBase'; + +class UrlAdvancedSearch extends AdvancedSearchBase { + + constructor(props: AdvancedSearchBaseProps) { + super(props); + this.type = 'url'; + this.title = 'Url'; + this.state.values['title'] = ''; + this.state.values['keyword'] = ''; + this.state.values['description'] = ''; + this.state.values['doi'] = ''; + this.state.values['url'] = ''; + } + + getRows() { + const rows = [ + { label: '[en]Title[/en][ja]タイトル[/ja]', value: this.renderFieldInputText('title', 50) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: this.renderFieldInputText('keyword', 50) }, + { label: '[en]Description[/en][ja]概要[/ja]', value: this.renderFieldInputText('description', 50) }, + { label: 'ID', value: this.renderFieldInputText('doi', 50) }, + { label: 'URL', value: this.renderFieldInputText('url', 50) }, + ]; + return rows; + } +} + +export default UrlAdvancedSearch; diff --git a/src/database/item-type/url/UrlDetail.tsx b/src/database/item-type/url/UrlDetail.tsx new file mode 100644 index 0000000..7637fc6 --- /dev/null +++ b/src/database/item-type/url/UrlDetail.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import Functions from '../../../functions'; +import { ItemUrl } from '../../lib/ItemUtil'; +import DetailBase from '../lib/DetailBase'; +import ItemTypeField from '../lib/field'; +import UrlUtil from './UrlUtil'; + +class UrlDetail extends DetailBase { + + getFields() { + const { lang } = this.props; + const item = this.props.item as ItemUrl; + return [ + { label: 'ID', value: item.doi }, + { label: '[en]Language[/en][ja]言語[/ja]', value: }, + { label: '[en]Title[/en][ja]タイトル[/ja]', value: Functions.mlang(item.title, lang) }, + { label: '[en]Free Keywords[/en][ja]フリーキーワード[/ja]', value: }, + { label: '[en]Description[/en][ja]概要[/ja]', value: }, + { label: '[en]Last Modified Date[/en][ja]最終更新日[/ja]', value: }, + { label: '[en]Created Date[/en][ja]作成日[/ja]', value: }, + { label: '[en]Contributor[/en][ja]登録者[/ja]', value: }, + { label: '[en]Item Type[/en][ja]アイテムタイプ[/ja]', value: item.item_type_display_name }, + { label: '[en]Change Log(History)[/en][ja]変更履歴[/ja]', value: }, + { label: 'URL', value: {item.url} }, + { label: '[en]Banner File[/en][ja]バナー[/ja]', value: }, + { label: 'Index', value: }, + { label: '[en]Related to[/en][ja]関連アイテム[/ja]', value: }, + ]; + } +} + +export default UrlDetail; \ No newline at end of file diff --git a/src/database/item-type/url/UrlList.tsx b/src/database/item-type/url/UrlList.tsx new file mode 100644 index 0000000..16905b1 --- /dev/null +++ b/src/database/item-type/url/UrlList.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import Functions from '../../../functions'; +import iconFile from '../../assets/images/icon_url.gif'; +import { ItemUrl } from '../../lib/ItemUtil'; +import ListBase, { ListBaseProps } from '../lib/ListBase'; + +class UrlList extends ListBase { + + constructor(props: ListBaseProps) { + super(props); + this.label = 'Url'; + this.icon = iconFile; + } + + renderBody() { + const { lang } = this.props; + const item = this.props.item as ItemUrl; + return ( + <> + {Functions.mlang(item.title, lang)}
      + Link to {item.url} + + ); + } +} + +export default UrlList; \ No newline at end of file diff --git a/src/database/item-type/url/UrlTop.tsx b/src/database/item-type/url/UrlTop.tsx new file mode 100644 index 0000000..ed0c472 --- /dev/null +++ b/src/database/item-type/url/UrlTop.tsx @@ -0,0 +1,15 @@ +import TopBase, { TopBaseProps } from '../lib/TopBase'; +import iconFile from '../../assets/images/icon_url.gif'; + +class UrlTop extends TopBase { + + constructor(props: TopBaseProps) { + super(props); + this.type = 'url'; + this.label = 'Url'; + this.icon = iconFile; + this.description = '[en]Link information.[/en][ja]関連リンク[/ja]'; + } +} + +export default UrlTop; \ No newline at end of file diff --git a/src/database/item-type/url/UrlUtil.tsx b/src/database/item-type/url/UrlUtil.tsx new file mode 100644 index 0000000..1dbbfd2 --- /dev/null +++ b/src/database/item-type/url/UrlUtil.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { MultiLang } from '../../../config'; +import ItemUtil, { ItemBasicFile } from '../../lib/ItemUtil'; + +interface BannerFileProps { + lang: MultiLang; + file: ItemBasicFile[]; +} + +const BannerFile = (props: BannerFileProps) => { + const { file } = props; + const data = file.find((value) => { + return value.file_type_name === 'url_banner_file'; + }); + if (typeof data === 'undefined') { + return null; + } + const url = ItemUtil.getFileUrl(data); + return ( + banner + ); +} + +const UrlUtil = { + BannerFile, +} + +export default UrlUtil; diff --git a/src/database/item-type/url/index.tsx b/src/database/item-type/url/index.tsx new file mode 100644 index 0000000..b359df2 --- /dev/null +++ b/src/database/item-type/url/index.tsx @@ -0,0 +1,13 @@ +import UrlTop from './UrlTop'; +import UrlList from './UrlList'; +import UrlDetail from './UrlDetail'; +import UrlAdvancedSearch from './UrlAdvancedSearch'; + +const ItemTypeUrl = { + Top: UrlTop, + List: UrlList, + Detail: UrlDetail, + AdvancedSearch: UrlAdvancedSearch, +}; + +export default ItemTypeUrl; diff --git a/src/database/lib/AdvancedSearchQuery.ts b/src/database/lib/AdvancedSearchQuery.ts new file mode 100644 index 0000000..7b8a35a --- /dev/null +++ b/src/database/lib/AdvancedSearchQuery.ts @@ -0,0 +1,95 @@ +type AdvancedSearchQueryData = Map; + +class AdvancedSearchQuery { + + private dataset: AdvancedSearchQueryData = new Map(); + + empty() { + let ret = true; + this.dataset.forEach((data) => { + data.forEach((value) => { + value = value.trim(); + if (value.length !== 0) { + ret = false; + } + }); + }); + return ret; + } + + set(type: string, key: string, value: string) { + type = type.trim(); + key = key.trim(); + const data: URLSearchParams = this.dataset.has(type) ? this.dataset.get(type) as URLSearchParams : new URLSearchParams(); + data.set(key, value); + this.dataset.set(type, data); + } + + delete(type: string, key: string) { + type = type.trim(); + key = key.trim(); + const data: URLSearchParams = this.dataset.has(type) ? this.dataset.get(type) as URLSearchParams : new URLSearchParams(); + data.delete(key); + this.dataset.set(type, data); + } + + deleteType(type: string) { + type = type.trim(); + this.dataset.delete(type.trim()); + } + + getQueryParams() { + let ret: URLSearchParams = new URLSearchParams(); + this.dataset.forEach((data, type) => { + data.forEach((value, key) => { + value = value.trim(); + value.length > 0 && ret.set(type + '.' + key, value); + }); + }); + return ret; + } + + setByQueryString(queryString: string) { + const query = new URLSearchParams(queryString); + query.forEach((v, k) => { + const [type, ...key] = k.split('.'); + if (typeof key === 'undefined') { + return; + } + this.set(type, key.join('.'), v); + }); + } + + getSearchFilter() { + let filter: any = []; + this.dataset.forEach((data, type) => { + let filter2: any = []; + filter2.push({ + item_type_name: 'xnp' + type, + }); + data.forEach((value, key) => { + const regex = value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const file = key.match(/^file\.([^.]+)\.([^.]+)$/); + if (file !== null) { + const fileType = file[1]; + const subKey = file[2]; + // TODO: wait to support $elemMatch operation on lokijs + // - see: https://github.com/techfort/LokiJS/issues/736 + // const filter3: any = { + // file_type_name: fileType, + // [subKey]: { '$regex': regex } + // }; + // filter2.push({ file: { '$elemMatch': filter3 } }); + filter2.push({ 'file.file_type_name': fileType }); + filter2.push({ ['file.' + subKey]: { '$regex': regex } }); + } else { + filter2.push({ [key]: { '$regex': regex } }); + } + }); + filter.push({ '$and': filter2 }); + }); + return { '$or': filter }; + } +} + +export default AdvancedSearchQuery; \ No newline at end of file diff --git a/src/database/lib/DatabaseListIndex.tsx b/src/database/lib/DatabaseListIndex.tsx new file mode 100644 index 0000000..de500f7 --- /dev/null +++ b/src/database/lib/DatabaseListIndex.tsx @@ -0,0 +1,58 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import IndexUtil, { Index } from './IndexUtil'; +import iconFile from '../assets/images/icon_folder.gif'; +import { MultiLang } from '../../config'; + +interface Props { + lang: MultiLang; + index: Index; +} + +const ListIndexItem = (props: Props) => { + const url = IndexUtil.getUrl(props.index.id); + const numOfIndexes = IndexUtil.countChildren(props.index.id); + return ( + + + + + + + +
      + {props.index.title} + + {props.index.title} +
      + {numOfIndexes} indexes / {props.index.numOfItems} items +
      + ); +} + +const DatabaseListIndex = (props: Props) => { + const { lang } = props; + const children = IndexUtil.getChildren(props.index.id); + if (children.length === 0) { + return null; + } + const treeList = children.map((value: Index, idx) => { + const evenodd = idx % 2 === 0 ? 'even' : 'odd'; + return ( + + + + + + ); + }); + return ( + + + {treeList} + +
      + ); +} + +export default DatabaseListIndex; diff --git a/src/database/lib/DatabaseListItem.module.css b/src/database/lib/DatabaseListItem.module.css new file mode 100644 index 0000000..a2f6d4f --- /dev/null +++ b/src/database/lib/DatabaseListItem.module.css @@ -0,0 +1,11 @@ +.sortCriteria { + text-align: center; +} + +.pageNavi { + text-align: right; +} + +.pageNaviItem { + margin: 0 5px; +} \ No newline at end of file diff --git a/src/database/lib/DatabaseListItem.tsx b/src/database/lib/DatabaseListItem.tsx new file mode 100644 index 0000000..00c7844 --- /dev/null +++ b/src/database/lib/DatabaseListItem.tsx @@ -0,0 +1,241 @@ +import React, { ChangeEvent, Component } from 'react'; +import { RouteComponentProps } from 'react-router'; +import { Link, withRouter } from 'react-router-dom'; +import Loading from '../../common/lib/Loading'; +import { MultiLang } from '../../config'; +import Functions from '../../functions'; +import ItemType from '../item-type'; +import styles from './DatabaseListItem.module.css'; +import { Item, SearchFunc, SearchResult, SortCondition, SortConditionLimit, SortConditionOrderBy, SortConditionOrderDir } from './ItemUtil'; + +const SORT_CONDITION_DEFAULT: SortCondition = { + limit: 20, + page: 1, + orderBy: 'title', + orderDir: 1 +}; +const SORT_CONDITION_RANGE_ORDER_BY = ['title', 'doi', 'last_update_date', 'creation_date', 'publication_date']; +const SORT_CONDITION_RANGE_ORDER_DIR = ['0', '1']; +const SORT_CONDITION_RANGE_LIMIT = ['20', '50', '100']; + +interface Props extends RouteComponentProps { + lang: MultiLang; + url: string; + search: SearchFunc +} + +interface State { + loading: boolean; + condition: SortCondition; + result: SearchResult; +} + +class DatabaseListItem extends Component { + + private isActive = false; + + constructor(props: Props) { + super(props); + this.state = { + loading: true, + condition: this.getSortConditionByQuery(this.props.location.search), + result: { total: 0, data: [] } + }; + this.handleSelectOrderby = this.handleSelectOrderby.bind(this); + this.handleSelectItemcount = this.handleSelectItemcount.bind(this); + } + + componentDidMount() { + this.isActive = true; + this.props.search(this.state.condition, (result) => { + if (this.isActive) { + this.setState({ loading: false, result }); + } + }); + } + + componentDidUpdate(prevProps: Props, prevState: State) { + const condition = this.getSortConditionByQuery(this.props.location.search); + if (prevProps.url !== this.props.url || this.isConditionChanged(prevState.condition, condition)) { + this.props.search(condition, (result) => { + if (this.isActive) { + this.setState({ loading: false, result, condition }); + } + }); + } + } + + componentWillUnmount() { + this.isActive = false; + } + + handleSelectOrderby(event: ChangeEvent) { + const value = event.target.value; + const url = this.getListUrl({ orderby: value }); + this.props.history.push(url); + } + + handleSelectItemcount(event: ChangeEvent) { + const value = parseInt(event.target.value, 10); + const url = this.getListUrl({ limit: value }); + this.props.history.push(url); + } + + isConditionChanged(prev: SortCondition, next: SortCondition) { + return prev.limit !== next.limit || prev.orderBy !== next.orderBy || prev.orderDir !== next.orderDir || prev.page !== next.page; + } + + getListUrl(query: { orderby?: string, order_dir?: number, limit?: number, page?: number }) { + const newOrderBy: string = typeof query.orderby !== 'undefined' ? query.orderby : this.state.condition.orderBy; + const newOrderDir: number = typeof query.order_dir !== 'undefined' ? query.order_dir : this.state.condition.orderDir; + const newLimit: number = typeof query.limit !== 'undefined' ? query.limit : this.state.condition.limit; + let newPage: number = typeof query.page !== 'undefined' ? query.page : this.state.condition.page; + if (newLimit !== this.state.condition.limit || newOrderBy !== this.state.condition.orderBy) { + newPage = SORT_CONDITION_DEFAULT.page; + } + const params = new URLSearchParams({ + orderby: newOrderBy, + order_dir: String(newOrderDir), + itemcount: String(newLimit), + page: String(newPage), + }); + const join = this.props.url.indexOf('?') < 0 ? '?' : '&' + return this.props.url + join + params.toString(); + } + + getDefaultSortCondition() { + return Object.assign({}, SORT_CONDITION_DEFAULT); + }; + + getSortConditionByQuery(queryString: string) { + const query = new URLSearchParams(queryString); + const condition = this.getDefaultSortCondition(); + const orderby = query.get('orderby'); + if (orderby !== null && SORT_CONDITION_RANGE_ORDER_BY.includes(orderby)) { + condition.orderBy = orderby as SortConditionOrderBy; + } + const order_dir = query.get('order_dir'); + if (order_dir !== null && SORT_CONDITION_RANGE_ORDER_DIR.includes(order_dir)) { + condition.orderDir = parseInt(order_dir, 10) as SortConditionOrderDir; + } + const itemcount = query.get('itemcount'); + if (itemcount !== null && SORT_CONDITION_RANGE_LIMIT.includes(itemcount)) { + condition.limit = parseInt(itemcount, 10) as SortConditionLimit; + } + const page = query.get('page'); + if (page !== null && page.match(/^\d+$/) !== null) { + condition.page = parseInt(page, 10); + } + return condition; + } + + renderSortCriteria() { + const { lang } = this.props; + let orderDir; + if (this.state.condition.orderDir !== SortConditionOrderDir.ASC) { + const url = this.getListUrl({ order_dir: SortConditionOrderDir.ASC }); + orderDir = ( + ▼ ▲ + ); + } else { + const url = this.getListUrl({ order_dir: SortConditionOrderDir.DESC }); + orderDir = ( + ▼ ▲ + ); + } + return ( +
      + + + + + + + +
      + Order by  + +  {orderDir} + + No.Item per page  + +
      +
      + ); + }; + + renderPageNavi(result: SearchResult) { + const maxPage = Math.floor(result.total / this.state.condition.limit) + (result.total % this.state.condition.limit !== 0 ? 1 : 0); + const link = (title: string, page: number, id: string) => { + if (page === 0 || page === this.state.condition.page) { + return ({title}); + } + const url: string = this.getListUrl({ page: page }); + return ({title}); + } + let startPage = (this.state.condition.page - 4) > 1 ? this.state.condition.page - 4 : 1; + const endPage = (startPage + 9) > maxPage ? maxPage : startPage + 9; + if ((endPage - startPage) < 9) { + startPage = (endPage - 9) > 0 ? endPage - 9 : 1; + } + let pageLinks: JSX.Element[] = []; + pageLinks.push(link('PREV', this.state.condition.page - 1, 'p')); + for (let i = startPage; i <= endPage; i++) { + pageLinks.push(link(String(i), i, String(i))); + } + pageLinks.push(link('NEXT', this.state.condition.page >= maxPage ? 0 : this.state.condition.page + 1, 'n')); + return ( +
      + {pageLinks} +
      + ); + } + + render() { + const { lang } = this.props; + if (this.state.loading) { + return ; + } + const result = this.state.result; + if (result.data.length === 0) { + return ( +

      No items found.

      + ); + } + const startNum = 1 + this.state.condition.limit * (this.state.condition.page - 1); + let endNum = this.state.condition.limit * this.state.condition.page; + if (endNum > result.total) { + endNum = result.total; + } + const pageNavi = this.renderPageNavi(result); + const items = result.data.map((item: Item, idx) => { + const evenodd = idx % 2 === 0 ? 'even' : 'odd'; + return (); + }); + return ( + <> + {this.renderSortCriteria()} +

      {startNum} - {endNum} of {result.total} Items

      + {pageNavi} + + + {items} + +
      + {pageNavi} + + ); + } +} + +export default withRouter(DatabaseListItem); \ No newline at end of file diff --git a/src/database/lib/IndexUtil.ts b/src/database/lib/IndexUtil.ts new file mode 100644 index 0000000..5664ead --- /dev/null +++ b/src/database/lib/IndexUtil.ts @@ -0,0 +1,95 @@ +import loki from 'lokijs'; +import indexesJson from '../assets/tree.json'; + +export interface Index { + id: number; + title: string; + numOfItems: number; + parentId: number; + weight: number; +} + +export const INDEX_ID_ROOT = 1; +export const INDEX_ID_PUBLIC = 3; + +interface IndexData { + id: number; + title: string; + num_of_items: number; + children: IndexData[]; +} +type IndexesData = IndexData[]; + +class IndexUtil { + + private database: loki; + private indexes: Collection; + + constructor(json: IndexesData) { + this.database = new loki('database'); + this.indexes = this.database.addCollection('indexes'); + this.load(json); + } + + load(json: IndexesData): void { + const store = (indexesData: IndexesData, parentId: number) => { + indexesData.forEach((indexData: IndexData, idx) => { + const entry: Index = { + id: indexData.id, + title: indexData.title, + numOfItems: indexData.num_of_items, + parentId: parentId, + weight: idx, + }; + this.indexes.insert(entry); + store(indexData.children, indexData.id) + }); + } + store(json, INDEX_ID_ROOT); + } + + getUrl(id: number): string { + return '/database/list/' + String(id); + } + + get(indexId: number): Index | null { + const filter = { + 'id': indexId, + } + const res = this.indexes.findOne(filter); + return res; + } + + getChildren(indexId: number): Index[] { + const filter = { + 'parentId': indexId, + } + const res = this.indexes.chain().find(filter).simplesort('weight').data(); + return res; + } + + countChildren(indexId: number): number { + const filter = { + 'parentId': indexId, + } + const res = this.indexes.count(filter); + return res; + } + + getParents(parentId: number): Index[] { + let parents: Index[] = []; + const loop = (parentId: number) => { + if (parentId !== INDEX_ID_ROOT) { + const parent = this.get(parentId); + if (parent !== null) { + loop(parent.parentId); + parents.push(parent); + } + } + } + loop(parentId); + return parents; + } +} + +export default new IndexUtil(indexesJson); \ No newline at end of file diff --git a/src/database/lib/ItemUtil.ts b/src/database/lib/ItemUtil.ts new file mode 100644 index 0000000..4bf90e9 --- /dev/null +++ b/src/database/lib/ItemUtil.ts @@ -0,0 +1,677 @@ +import AsyncLock from 'async-lock'; +import axios from 'axios'; +import loki from 'lokijs'; +import funcs from '../../functions'; +import simpfLinksJson from '../assets/simpf-links.json'; +import AdvancedSearchQuery from './AdvancedSearchQuery'; + +interface SimPFLink { + id: number; + url: string; +} + +interface ItemSubType { + type: T; + label: string; +} + +export type ItemSubTypes = readonly ItemSubType[]; + +export type ItemBasicLang = 'eng' | 'jpn' | 'fra' | 'deu' | 'esl' | 'ita' | 'dut' | 'sve' | 'nor' | 'dan' | 'fin' | 'por' | 'chi' | 'kor'; +export interface ItemBasicIndex { + index_id: number; + title: string; +} +export interface ItemBasicChangeLog { + log_date: number; + log: string; +} +export interface ItemBasicFile { + file_id: number; + original_file_name: string; + mime_type: string; + file_size: number; + caption: string; + timestamp: string; + file_type_name: string; + file_type_display_name: string; +} +export interface ItemCore { + item_id: number; + doi: string; +} +export interface ItemBasic extends ItemCore { + uid: number; + description: string; + last_update_date: number; + creation_date: number; + publication_year: number; + publication_month: number; + publication_mday: number; + lang: ItemBasicLang; + title: string; + item_type_display_name: string; + item_type_name: string; + uname: string; + name: string; + item_url: string; + index: ItemBasicIndex[]; + changelog: ItemBasicChangeLog[]; + related_to: number[]; + keyword: string[]; + file: ItemBasicFile[]; +} + +export interface ItemBinder extends ItemBasic { + extra: string; +} + +export interface ItemBook extends ItemBasic { + classfication: string; + editor: string; + publisher: string; + isbn: string; + url: string; + attachment_dl_limit: number; + attachment_dl_notify: number; + author: string[]; +} + +export type ItemConferenceSubType = 'powerpoint' | 'pdf' | 'illustrator' | 'other'; +export const ItemConferenceSubTypes: ItemSubTypes = [ + { type: 'powerpoint', label: 'PowerPoint' }, + { type: 'pdf', label: 'PDF' }, + { type: 'illustrator', label: 'Illustrator' }, + { type: 'other', label: 'Other' }, +]; +export interface ItemConference extends ItemBasic { + presentation_type: ItemConferenceSubType; + conference_title: string; + place: string; + abstract: string; + conference_from_year: number; + conference_from_month: number; + conference_from_mday: number; + conference_to_year: number; + conference_to_month: number; + conference_to_mday: number; + attachment_dl_limit: number; + attachment_dl_notify: number; + author: string[]; +} + +export type ItemDataSubType = 'excel' | 'movie' | 'text' | 'picture' | 'other'; +export const ItemDataSubTypes: ItemSubTypes = [ + { type: 'excel', label: 'Excel' }, + { type: 'movie', label: 'Movie' }, + { type: 'text', label: 'Text' }, + { type: 'picture', label: 'Picture' }, + { type: 'other', label: 'Other' }, +]; +export interface ItemData extends ItemBasic { + data_type: ItemDataSubType; + rights: string; + readme: string; + use_cc: number; + cc_commercial_use: number; + cc_modification: number; + attachment_dl_limit: number; + attachment_dl_notify: number; + experimenter: string[]; +} + +export type ItemFilesSubType = 'pdf' | 'doc' | 'xls' | 'ppt' | 'docx' | 'xlsx' | 'pptx' | 'zip' | 'lzh' | 'mov' // CBSN extended +export const ItemFilesSubTypes: ItemSubTypes = [ + { type: 'pdf', label: 'pdf' }, + { type: 'doc', label: 'doc' }, + { type: 'xls', label: 'xls' }, + { type: 'ppt', label: 'ppt' }, + { type: 'docx', label: 'docx' }, + { type: 'xlsx', label: 'xlsx' }, + { type: 'pptx', label: 'pptx' }, + { type: 'zip', label: 'zip' }, + { type: 'lzh', label: 'lzh' }, + { type: 'mov', label: 'mov' }, +]; +export interface ItemFiles extends ItemBasic { + data_file_name: string; + data_file_mimetype: string; + data_file_filetype: string; +} + +export interface ItemMemo extends ItemBasic { + item_link: string; +} + +export type ItemModelSubType = 'matlab' | 'neuron' | 'original_program' | 'satellite' | 'genesis' | 'a_cell' | 'other'; +export const ItemModelSubTypes: ItemSubTypes = [ + { type: 'matlab', label: 'Matlab' }, + { type: 'neuron', label: 'Neuron' }, + { type: 'original_program', label: 'Original Program' }, + { type: 'satellite', label: 'Satellite' }, + { type: 'genesis', label: 'Genesis' }, + { type: 'a_cell', label: 'A-Cell' }, + { type: 'other', label: 'Other' }, +]; +export interface ItemModel extends ItemBasic { + model_type: ItemModelSubType; + readme: string; + rights: string; + use_cc: number; + cc_commercial_use: number; + cc_modification: number; + attachment_dl_limit: number; + attachment_dl_notify: number; + creator: string[]; +} + +export interface ItemPaper extends ItemBasic { + journal: string; + volume: number; + number: number | null; + page: string; + abstract: string; + pubmed_id: string; + author: string[]; +} + +export type ItemPresentationSubType = 'powerpoint' | 'lotus' | 'justsystem' | 'html' | 'pdf' | 'other'; +export const ItemPresentationSubTypes: ItemSubTypes = [ + { type: 'powerpoint', label: 'PowerPoint' }, + { type: 'lotus', label: 'Lotus' }, + { type: 'justsystem', label: 'JustSystem' }, + { type: 'html', label: 'HTML' }, + { type: 'pdf', label: 'PDF' }, + { type: 'other', label: 'Other' }, +]; +export interface ItemPresentation extends ItemBasic { + presentation_type: ItemPresentationSubType; + use_cc: number; + cc_commercial_use: number; + cc_modification: number; + rights: string; + readme: string; + attachment_dl_limit: number; + attachment_dl_notify: number; + creator: string[]; +} + +export type ItemSimulatorSubType = 'matlab' | 'mathematica' | 'program' | 'other'; +export const ItemSimulatorSubTypes: ItemSubTypes = [ + { type: 'matlab', label: 'Matlab' }, + { type: 'mathematica', label: 'Mathematica' }, + { type: 'program', label: 'Program' }, + { type: 'other', label: 'Other' }, +]; +export interface ItemSimulator extends ItemBasic { + simulator_type: ItemSimulatorSubType; + readme: string; + rights: string; + use_cc: number; + cc_commercial_use: number; + cc_modification: number; + attachment_dl_limit: number; + attachment_dl_notify: number; + developer: string[]; +} + +export type ItemStimulusSubType = 'picture' | 'movie' | 'program' | 'other'; +export const ItemStimulusSubTypes: ItemSubTypes = [ + { type: 'picture', label: 'Picture' }, + { type: 'movie', label: 'Movie' }, + { type: 'program', label: 'Program' }, + { type: 'other', label: 'Other' }, +]; +export interface ItemStimulus extends ItemBasic { + stimulus_type: ItemStimulusSubType; + readme: string; + rights: string; + use_cc: number; + cc_commercial_use: number; + cc_modification: number; + attachment_dl_limit: number; + attachment_dl_notify: number; + developer: string[]; +} + +export type ItemToolSubType = 'matlab' | 'mathematica' | 'program' | 'other'; +export const ItemToolSubTypes: ItemSubTypes = [ + { type: 'matlab', label: 'Matlab' }, + { type: 'mathematica', label: 'Mathematica' }, + { type: 'program', label: 'Program' }, + { type: 'other', label: 'Other' }, +]; +export interface ItemTool extends ItemBasic { + tool_type: ItemToolSubType; + readme: string; + rights: string; + use_cc: number; + cc_commercial_use: number; + cc_modification: number; + attachment_dl_limit: number; + attachment_dl_notify: number; + developer: string[]; +} + +export interface ItemUrl extends ItemBasic { + url: string; + url_count: number; +} + +export type Item = ItemBinder | ItemBook | ItemConference | ItemData | ItemFiles | ItemMemo | ItemModel | ItemPaper | ItemPresentation | ItemSimulator | ItemStimulus | ItemTool | ItemUrl; + +export type KeywordSearchType = 'all' | 'basic' | 'binder' | 'book' | 'conference' | 'data' | 'files' | 'memo' | 'model' | 'paper' | 'presentation' | 'simulator' | 'stimulus' | 'tool' | 'url'; +export interface KeywordSearchQuery { + type: KeywordSearchType; + keyword: string; +} +const KEYWORD_SEARCH_TYPE_RANGE = ['all', 'basic', 'binder', 'book', 'conference', 'files', 'data', 'memo', 'model', 'paper', 'presentation', 'simulator', 'stimulus', 'tool', 'url']; + +export type SortConditionLimit = 20 | 50 | 100; +export type SortConditionOrderBy = 'title' | 'doi' | 'last_update_date' | 'creation_date' | 'publication_date'; +export enum SortConditionOrderDir { ASC, DESC } + +export interface SortCondition { + limit: SortConditionLimit; + orderBy: SortConditionOrderBy; + orderDir: SortConditionOrderDir; + page: number; +} + +class ItemSorter { + + public orderBy: SortConditionOrderBy; + public orderDir: SortConditionOrderDir; + + constructor(condition: SortCondition) { + this.orderBy = condition.orderBy; + this.orderDir = condition.orderDir; + this.sort = this.sort.bind(this); + } + + sort(a: Item, b: Item) { + let av: string = ''; + let bv: string = ''; + switch (this.orderBy) { + case 'title': + av = a.title.toLocaleUpperCase(); + bv = b.title.toLocaleUpperCase(); + break; + case 'doi': + av = a.doi.toLocaleUpperCase(); + bv = b.doi.toLocaleUpperCase(); + break; + case 'last_update_date': + av = String(a.last_update_date); + bv = String(b.last_update_date); + break; + case 'creation_date': + av = String(a.creation_date); + bv = String(b.creation_date); + break; + case 'publication_date': + av = String(a.publication_year * 10000 + a.publication_month * 100 + a.publication_mday); + bv = String(b.publication_year * 10000 + b.publication_month * 100 + b.publication_mday); + break; + default: + break; + } + if (this.orderDir === SortConditionOrderDir.ASC) { + if (av > bv) return -1; + else if (av < bv) return 1; + } else { + if (av > bv) return 1; + else if (av < bv) return -1; + } + return 0; + } +} + +type GetResult = Item | null; +export interface GetCallbackFunc { (item: GetResult): void } +export interface SearchResult { + total: number; + data: Item[]; +} +export interface SearchCallbackFunc { (results: SearchResult): void } +export interface SearchFunc { (condition: SortCondition, func: SearchCallbackFunc): void } + +interface ItemLoadCallbackFunc { (items: Collection): void } + +class ItemUtil { + + private database: loki; + private items: Collection; + private simpfLinks: Collection; + private loading: boolean; + private callbacks: ItemLoadCallbackFunc[]; + + constructor() { + this.database = new loki('database'); + this.items = this.database.addCollection('items'); + this.simpfLinks = this.database.addCollection('simpf-links'); + this.loading = true; + this.callbacks = []; + this.load(); + } + + load(): void { + axios.get('/database/items.json', { responseType: 'json' }).then((response) => { + const itemsJson = response.data as Item[]; + itemsJson.forEach((json: Item) => { + this.items.insert(json); + }); + const lock = new AsyncLock(); + lock.acquire('items', () => { + this.loading = false; + this.callbacks.forEach((callback) => { + callback(this.items); + }); + this.callbacks = []; + }); + }); + const simpfLinks = simpfLinksJson as SimPFLink[]; + simpfLinks.forEach((simpfLink: SimPFLink) => { + this.simpfLinks.insert(simpfLink); + }); + } + + registerItemLoadCallback(func: ItemLoadCallbackFunc): void { + const lock = new AsyncLock(); + lock.acquire('items', () => { + if (this.loading) { + this.callbacks.push(func); + } else { + func(this.items); + } + }); + } + + getUrl(item: ItemCore): string { + if (item.doi !== '') { + return '/database/item/id/' + funcs.escape(item.doi); + } + return '/database/item/' + String(item.item_id); + } + + getFileUrl(file: ItemBasicFile): string { + return '/database/file/' + String(file.file_id) + '/' + funcs.escape(file.original_file_name); + } + + getPreviewFileUrl(file: ItemBasicFile): string { + return '/database/file/' + String(file.file_id) + '.png'; + } + + getSearchByKeywordUrl(type: KeywordSearchType, keyword: string): string { + const params = new URLSearchParams({ type, keyword }); + return '/database/search?' + params.toString(); + } + + getItemTypeSearchUrl(type: string): string { + return '/database/search/itemtype/' + funcs.escape(type); + } + + getSearchByAdvancedKeywordsUrl(query: AdvancedSearchQuery): string { + const paramString = query.getQueryParams().toString(); + return '/database/search/advanced' + (paramString.length > 0 ? '?' + paramString : ''); + } + + getSearchKeywordByQuery(queryString: string): KeywordSearchQuery { + const query = new URLSearchParams(queryString); + const qtype = query.get('type'); + const type = qtype !== null && KEYWORD_SEARCH_TYPE_RANGE.includes(qtype) ? qtype as KeywordSearchType : 'all'; + const qkeyword = query.get('keyword'); + const keyword = qkeyword === null ? '' : qkeyword; + return ({ type, keyword }); + } + + getAdvancedSearchQueryByQuery(queryString: string): AdvancedSearchQuery { + const query: AdvancedSearchQuery = new AdvancedSearchQuery(); + query.setByQueryString(queryString); + return query; + } + + get(itemId: number, func: GetCallbackFunc): void { + this.registerItemLoadCallback((items) => { + const filter = { + item_id: itemId + } + const item = items.findOne(filter); + func(item); + }); + } + + getByDoi(doi: string, func: GetCallbackFunc): void { + this.registerItemLoadCallback((items) => { + const filter = { + doi: doi + } + const item = items.findOne(filter); + func(item); + }); + } + + getList(itemIds: number[], func: SearchCallbackFunc): void { + this.registerItemLoadCallback((items) => { + const filter = { + item_id: { + '$in': itemIds, + } + } + const sort = (a: Item, b: Item) => { + const aIdx = itemIds.findIndex((itemId) => { return a.item_id === itemId; }); + const bIdx = itemIds.findIndex((itemId) => { return b.item_id === itemId; }); + if (aIdx > bIdx) { + return 1; + } else if (aIdx < bIdx) { + return -1; + } + return 0; + } + const data = items.chain().find(filter).sort(sort).data(); + const res = { + total: data.length, + data: data, + } + func(res); + }); + } + + getListByIndexId(indexId: number, condition: SortCondition, func: SearchCallbackFunc): void { + this.registerItemLoadCallback((items) => { + const filter: any = { + 'index.index_id': indexId + }; + const offset = condition.limit * (condition.page - 1); + const result = items.chain().find(filter); + const itemSorter = new ItemSorter(condition); + const ret = { + total: result.count(), + data: result.sort(itemSorter.sort).offset(offset).limit(condition.limit).data() + }; + func(ret); + }); + } + + getListByItemType(itemType: string, subItemType: string, condition: SortCondition, func: SearchCallbackFunc): void { + this.registerItemLoadCallback((items) => { + let filter: any = { + item_type_name: 'xnp' + itemType, + } + if (subItemType !== '') { + switch (itemType) { + case 'conference': + filter.presentation_type = subItemType; + break; + case 'data': + filter.data_type = subItemType; + break; + case 'files': + filter.data_file_filetype = subItemType; + break; + case 'model': + filter.model_type = subItemType; + break; + case 'presentation': + filter.presentation_type = subItemType; + break; + case 'simulator': + filter.simulator_type = subItemType; + break; + case 'stimulus': + filter.stimulus_type = subItemType; + break; + case 'tool': + filter.tool_type = subItemType; + break; + default: + break; + } + } + const offset = condition.limit * (condition.page - 1); + const result = items.chain().find(filter); + const itemSorter = new ItemSorter(condition); + const ret = { + total: result.count(), + data: result.sort(itemSorter.sort).offset(offset).limit(condition.limit).data() + }; + func(ret); + }); + } + + getListByKeyword(type: KeywordSearchType, keyword: string, condition: SortCondition, func: SearchCallbackFunc): void { + this.registerItemLoadCallback((items) => { + const regex = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const num = keyword.match(/^[0-9]+$/) ? parseInt(keyword, 10) : null; + let filter: any = { '$or': [] }; + const appendToFilter = (type: string, strKeys: string[], numKeys: string[]) => { + const basicStrKeys: string[] = ['title', 'keyword', 'doi', 'description', 'uname', 'name', 'index.title']; + const basicNumKeys: string[] = []; + let filterItemType: any = { + item_type_name: 'xnp' + type, + '$or': [] + }; + let sKeys: string[] = basicStrKeys.concat(strKeys); + let nKeys: string[] = basicNumKeys.concat(numKeys); + sKeys.forEach((key) => { + let criteria: any = {}; + criteria[key] = { '$regex': regex }; + filterItemType['$or'].push(criteria); + }); + if (num !== null) { + nKeys.forEach((key) => { + let criteria: any = {}; + criteria[key] = { '$eq': num }; + filterItemType['$or'].push(criteria); + }); + } + filter['$or'].push(filterItemType); + } + if (type === 'basic') { + filter['$or'].push({ 'title': { '$regex': regex } }); + filter['$or'].push({ 'keyword': { '$regex': regex } }); + } else { + if (type === 'all' || type === 'binder') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'description']; + const numKeys: string[] = []; + appendToFilter('binder', strKeys, numKeys); + } + if (type === 'all' || type === 'book') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'classification', 'editor', 'publisher', 'isbn', 'url', 'author', 'file.caption', 'file.original_file_name']; + const numKeys: string[] = []; + appendToFilter('book', strKeys, numKeys); + } + if (type === 'all' || type === 'conference') { + const strKeys: string[] = ['doi', 'title', 'conference_title', 'place', 'abstract', 'author', 'file.caption', 'file.original_file_name']; + const numKeys: string[] = ['conference_from_year', 'conference_from_month', 'conference_from_mday', 'conference_to_year', 'conference_to_month', 'conference_to_mday']; + appendToFilter('conference', strKeys, numKeys); + } + if (type === 'all' || type === 'data') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'description', 'readme', 'rights', 'experimenter', 'data_type', 'file.caption', 'file.original_file_name']; + const numKeys: string[] = ['publication_year', 'publication_month', 'publication_mday']; + appendToFilter('data', strKeys, numKeys); + } + if (type === 'all' || type === 'files') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'description', 'data_file_name', 'data_file_mimetype', 'data_file_filetype']; + const numKeys: string[] = []; + appendToFilter('files', strKeys, numKeys); + } + if (type === 'all' || type === 'memo') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'description', 'item_link', 'file.original_file_name']; + const numKeys: string[] = []; + appendToFilter('memo', strKeys, numKeys); + } + if (type === 'all' || type === 'model') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'description', 'readme', 'rights', 'creator', 'model_type', 'file.caption', 'file.original_file_name']; + const numKeys: string[] = []; + appendToFilter('model', strKeys, numKeys); + } + if (type === 'all' || type === 'paper') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'journal', 'page', 'pubmed_id', 'author']; + const numKeys: string[] = ['publication_year', 'volume', 'number']; + appendToFilter('paper', strKeys, numKeys); + } + if (type === 'all' || type === 'presentation') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'description', 'readme', 'rights', 'creator', 'presentation_type', 'file.caption', 'file.original_file_name']; + const numKeys: string[] = ['publication_year', 'publication_month', 'publication_mday']; + appendToFilter('presentation', strKeys, numKeys); + } + if (type === 'all' || type === 'simulator') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'description', 'readme', 'rights', 'developer', 'simulator_type', 'file.caption', 'file.original_file_name']; + const numKeys: string[] = ['publication_year', 'publication_month', 'publication_mday']; + appendToFilter('simulator', strKeys, numKeys); + } + if (type === 'all' || type === 'stimulus') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'description', 'readme', 'rights', 'developer', 'stimulus_type', 'file.caption', 'file.original_file_name']; + const numKeys: string[] = ['publication_year', 'publication_month', 'publication_mday']; + appendToFilter('stimulus', strKeys, numKeys); + } + if (type === 'all' || type === 'tool') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'description', 'readme', 'rights', 'developer', 'tool_type', 'file.caption', 'file.original_file_name']; + const numKeys: string[] = []; + appendToFilter('tool', strKeys, numKeys); + } + if (type === 'all' || type === 'url') { + const strKeys: string[] = ['doi', 'title', 'keyword', 'url', 'file.original_file_name']; + const numKeys: string[] = []; + appendToFilter('url', strKeys, numKeys); + } + if (type !== 'all') { + filter['item_type_name'] = 'xnp' + type; + } + } + const offset = condition.limit * (condition.page - 1); + const result = items.chain().find(filter); + const itemSorter = new ItemSorter(condition); + const ret = { + total: result.count(), + data: result.sort(itemSorter.sort).offset(offset).limit(condition.limit).data() + }; + func(ret); + }); + } + + getListByAdvancedSearchQuery(query: AdvancedSearchQuery, condition: SortCondition, func: SearchCallbackFunc): void { + this.registerItemLoadCallback((items) => { + const filter: any = query.getSearchFilter(); + const offset = condition.limit * (condition.page - 1); + const result = items.chain().find(filter); + const itemSorter = new ItemSorter(condition); + const ret = { + total: result.count(), + data: result.sort(itemSorter.sort).offset(offset).limit(condition.limit).data() + }; + func(ret); + }); + } + + getSimPFLinkUrl(itemId: number) { + const simpfLink = this.simpfLinks.findOne({ id: itemId }); + if (simpfLink === null) { + return ''; + } + return simpfLink.url; + } +} + +export default new ItemUtil(); \ No newline at end of file diff --git a/src/functions.ts b/src/functions.ts new file mode 100644 index 0000000..72a1c0c --- /dev/null +++ b/src/functions.ts @@ -0,0 +1,130 @@ +import XRegExp from 'xregexp'; +import Config, { MultiLang } from './config'; + +const escape = (str: string) => { + return encodeURIComponent(str).replace(/[!'()*]/g, (c) => { + return '%' + c.charCodeAt(0).toString(16); + }); +} + +const unescape = (str: string) => { + return decodeURIComponent(str); +} + +const htmlspecialchars = (str: string) => { + return str.replace(/(<|>|&|'|")/g, (match) => { + switch (match) { + case '<': + return '<'; + case '>': + return '>'; + case '&': + return '&'; + case '\'': + return '''; + case '"': + return '"'; + } + return ''; + }); +} + +const camelCase = (str: string) => { + return str.replace(/[-_](.)/g, (...matches) => { + return matches[1].toUpperCase(); + }); +} + +const snakeCase = (str: string) => { + var camel = camelCase(str); + return camel.replace(/[A-Z]/g, (...matches) => { + return "_" + matches[0].charAt(0).toLowerCase(); + }); +} + +const pascalCase = (str: string) => { + var camel = camelCase(str); + return camel.charAt(0).toUpperCase() + camel.slice(1); +} + +const base64Encode = (str: string) => { + return btoa(unescape(encodeURIComponent(str))); +} + +const base64Decode = (str: string) => { + return decodeURIComponent(escape(atob(str))); +} + +const ordinal = (num: number) => { + const hundred = num % 100; + if (hundred >= 10 && hundred <= 20) { + return 'th'; + } + const ten = num % 10; + const suffix = ['st', 'nd', 'rd']; + return ten > 0 && ten < 4 ? suffix[ten - 1] : 'th'; +} + +const mlang = (str: string, lang: MultiLang) => { + const mlLangs = ['en', 'ja']; + // escape brackets inside of + let text = str.replace(/(]*)(>)/isg, (whole, m1, m2, m3) => { + if (m2.match(/type=["']?(?:text|hidden)["']?/is)) { + return m1 + m2.replace(/\[/g, '__ml[ml__') + m3; + } + return whole; + }); + // escape brackets inside of + text = text.replace(/(]*>)(.*)(<\/textarea>)/isg, (whole, m1, m2, m3) => { + return m1 + m2.replace(/\[/g, '__ml[ml__') + m3; + }); + // simple pattern to strip selected lang_tags + const re = new RegExp('\\[/?(?:[^\\]]+\\|)?' + lang + '(?:\\|[^\\]]+)?\\](?:
      )?', 'g'); + text = text.replace(re, ''); + // eliminate description between the other language tags. + mlLangs.forEach((mlLang) => { + if (mlLang !== lang) { + const re = XRegExp('\\[(?:[^/][^\\]]+\\|)?' + mlLang + '(?:\\|[^\\]]+)?\\].*?\\[/(?:[^\\]]+\\|)?' + mlLang + '(?:\\|[^\\]]+)?\\](?:
      )?', 'isg'); + text = text.replace(re, (whole) => { + return whole.match(/<\/table>/) ? whole : ''; + }); + } + }); + // unescape brackets inside of + text = text.replace(/(]*>)(.*)(<\/textarea>)/isg, (whole, m1, m2, m3) => { + return m1 + m2.replace(/__ml\[ml__/g, '[') + m3; + }); + // unescape brackets inside of + text = text.replace(/(]*)(>)/isg, (whole, m1, m2, m3) => { + if (m2.match(/type=["']?(?:text|hidden)["']?/is)) { + return m1 + m2.replace(/__ml\[ml__/g, '[') + m3; + } + return whole; + }); + return text; +} + +const siteTitle = (lang: MultiLang) => { + return mlang(Config.SITE_TITLE, lang); +} + +const siteSlogan = (lang: MultiLang) => { + return mlang(Config.SITE_SLOGAN, lang); +} + +const Functions = { + escape, + unescape, + htmlspecialchars, + camelCase, + snakeCase, + pascalCase, + base64Encode, + base64Decode, + ordinal, + mlang, + siteTitle, + siteSlogan, +}; + +export default Functions; \ No newline at end of file diff --git a/src/index.css b/src/index.css index ec2585e..2daa7e9 100644 --- a/src/index.css +++ b/src/index.css @@ -1,13 +1 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} +@import-normalize; diff --git a/src/index.tsx b/src/index.tsx index 87d1be5..711294a 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,7 +1,10 @@ +import 'react-app-polyfill/ie11'; +import 'react-app-polyfill/stable'; import React from 'react'; import ReactDOM from 'react-dom'; -import './index.css'; import App from './App'; +import './common/assets/xoops.css'; +import './index.css'; import * as serviceWorker from './serviceWorker'; ReactDOM.render(, document.getElementById('root')); diff --git a/src/logo.svg b/src/logo.svg deleted file mode 100644 index 6b60c10..0000000 --- a/src/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/pico/Pico.tsx b/src/pico/Pico.tsx new file mode 100644 index 0000000..6ce402d --- /dev/null +++ b/src/pico/Pico.tsx @@ -0,0 +1,61 @@ +import React from 'react'; +import { Redirect, Route, RouteComponentProps, Switch } from 'react-router-dom'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import './assets/pico_main.css'; +import PicoUtils from './lib/PicoUtils'; +import PicoCategory from './PicoCategory'; +import PicoContent from './PicoContent'; +import PicoIndex from './PicoIndex'; +import PicoMenu from './PicoMenu'; + +interface Props { + lang: MultiLang; + name: string; +} + +const Pico = (props: Props) => { + const { lang, name } = props; + return ( + <> + + } /> + ) => { + const { location } = props; + const { pathname, search } = location; + const path = pathname.replace('/' + name + '/', ''); + if (path === '' || path === 'index.php') { + const params = new URLSearchParams(search); + const paramCatId = params.get('cat_id'); + if (paramCatId !== null && paramCatId.match(/^\d+$/)) { + const catId = parseInt(paramCatId, 10); + return ; + } + const paramContentId = params.get('content_id'); + if (paramContentId !== null && paramContentId.match(/^\d+$/)) { + const contentId = parseInt(paramContentId, 10); + return ; + } + const paramPage = params.get('page'); + if (paramPage !== null && paramPage === 'menu') { + return ; + } + return ; + } + const category = PicoUtils.getCategoryByPath(name, path); + if (category !== null) { + return ; + } + const content = PicoUtils.getContentByPath(name, path); + if (content !== null) { + return ; + } + return ; + }} /> + + + + ); +} + +export default Pico; diff --git a/src/pico/PicoCategory.tsx b/src/pico/PicoCategory.tsx new file mode 100644 index 0000000..224fd0b --- /dev/null +++ b/src/pico/PicoCategory.tsx @@ -0,0 +1,84 @@ +import React, { Fragment } from 'react'; +import Helmet from 'react-helmet'; +import { Link } from 'react-router-dom'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import PicoUtils, { PicoCategoryData, PicoContentData } from './lib/PicoUtils'; + +interface Props { + lang: MultiLang; + name: string; + catId: number; +} + +const PicoCategory = (props: Props) => { + const { lang, name, catId } = props; + const pico = PicoUtils.getModule(name); + if (pico === null) { + return ; + } + const category = PicoUtils.getCategory(name, catId); + if (category === null) { + return ; + } + const parentCategories = PicoUtils.getParentCategories(name, category.pid); + const subCategories = PicoUtils.getSubCategories(name, catId); + const contents = PicoUtils.getCategoryContents(name, catId); + return ( +
      + + {Functions.mlang(category.title, lang)} - {Functions.mlang(pico.name, lang)} - {Functions.siteTitle(lang)} + + {pico.show_breadcrumbs !== 0 && ( +
      + {parentCategories.map((parentCategory: PicoCategoryData, idx: number) => { + const link = '/' + name + '/' + parentCategory.link; + return ( + + {idx > 0 && <> > } + {Functions.mlang(parentCategory.title, lang)} + + ); + })} + {parentCategories.length > 0 && <> > } + {Functions.mlang(category.title, lang)} +
      + )} + {catId === 0 && pico.message !== '' && ( +

      {Functions.mlang(pico.message, lang)}

      + )} +

      {Functions.mlang(category.title, lang)}

      + {category.desc !== '' && ( +

      {Functions.mlang(category.desc, lang)}

      + )} + {subCategories.length > 0 && ( + <> +

      {Functions.mlang('[en]Subcageroies[/en][ja]サブカテゴリー[/ja]', lang)}

      + {subCategories.map((subCategory: PicoCategoryData) => { + const url = '/' + name + '/' + subCategory.link; + return ( +
      +
      {Functions.mlang(subCategory.title, lang)}
      +
      {Functions.mlang(subCategory.desc, lang)}
      +
      + ); + })} + + )} + {contents.length > 0 && ( + <> +

      {Functions.mlang('[en]Contents[/en][ja]コンテンツ[/ja]', lang)}

      +
        + {contents.map((content: PicoContentData) => { + const url = '/' + name + '/' + content.link; + return
      • {Functions.mlang(content.title, lang)}
      • ; + })} +
      + + )} +
      + ); +}; + +export default PicoCategory; \ No newline at end of file diff --git a/src/pico/PicoContent.tsx b/src/pico/PicoContent.tsx new file mode 100644 index 0000000..522bbba --- /dev/null +++ b/src/pico/PicoContent.tsx @@ -0,0 +1,109 @@ +import React, { Component, Fragment } from 'react'; +import Helmet from 'react-helmet'; +import { Link } from 'react-router-dom'; +import { HashLink } from 'react-router-hash-link'; +import Loading from '../common/lib/Loading'; +import PageNotFound from '../common/lib/PageNotFound'; +import XoopsCode from '../common/lib/XoopsCode'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import PicoUtils, { PicoCategoryData, PicoPageData } from './lib/PicoUtils'; + +interface Props { + lang: MultiLang; + name: string; + contentId: number; +} + +interface State { + loading: boolean; + page: PicoPageData | null; +} + +class PicoContent extends Component { + + private isActive: boolean; + + constructor(props: Props) { + super(props); + this.state = { + loading: true, + page: null, + }; + this.isActive = false; + } + + componentDidMount() { + const { name, contentId } = this.props; + this.isActive = true; + this.updatePage(name, contentId); + } + + componentDidUpdate(prevProps: Props, prevState: State) { + const { name, contentId } = this.props; + const prevName = prevProps.name; + const prevContentId = prevProps.contentId; + if (name !== prevName || contentId !== prevContentId) { + this.setState({ loading: true, page: null }); + this.updatePage(name, contentId); + } + } + + componentWillUnmount() { + this.isActive = false; + } + + updatePage(name: string, contentId: number) { + this.isActive = true; + PicoUtils.getPage(name, contentId, (page: PicoPageData | null) => { + if (this.isActive) { + this.setState({ loading: false, page }); + } + }) + } + + render() { + const { lang, name, contentId } = this.props; + const { loading, page } = this.state; + if (loading) { + return ; + } + if (page === null) { + return ; + } + const pico = PicoUtils.getModule(name); + if (pico === null) { + return ; + } + const categories = PicoUtils.getContentCategery(name, contentId); + return ( +
      + + {Functions.mlang(page.title, lang)} - {Functions.mlang(pico.name, lang)} - {Functions.siteTitle(lang)} + + {pico.show_breadcrumbs !== 0 && ( +
      + {categories.map((category: PicoCategoryData, idx: number) => { + const link = '/' + name + '/' + category.link; + return ( + + {idx > 0 && <> > } + {Functions.mlang(category.title, lang)} + + ); + })} +  > {Functions.mlang(page.title, lang)} +
      + )} +
      + +
      +
      + {Functions.mlang('[en]Jump to the top[/en][ja]この記事の1行目に飛ぶ[/ja]', lang)} +
      +
      + ); + } +} + +export default PicoContent; diff --git a/src/pico/PicoIndex.tsx b/src/pico/PicoIndex.tsx new file mode 100644 index 0000000..2f8578d --- /dev/null +++ b/src/pico/PicoIndex.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import PicoUtils from './lib/PicoUtils'; +import PicoCategory from './PicoCategory'; +import PicoContent from './PicoContent'; +import PicoMenu from './PicoMenu'; + +interface Props { + lang: MultiLang; + name: string; +} + +const PicoIndex = (props: Props) => { + const { lang, name } = props; + const pico = PicoUtils.getModule(name); + if (pico === null) { + return ; + } + if (pico.show_menuinmoduletop !== 0) { + return + } + if (pico.show_listasindex !== 0) { + return + } + const content = PicoUtils.getFirstContent(name, 0); + if (content === null) { + return ; + } + return ; + +} + +export default PicoIndex; diff --git a/src/pico/PicoMenu.tsx b/src/pico/PicoMenu.tsx new file mode 100644 index 0000000..05afc0c --- /dev/null +++ b/src/pico/PicoMenu.tsx @@ -0,0 +1,92 @@ +import React from 'react'; +import Helmet from 'react-helmet'; +import { Link } from 'react-router-dom'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; +import Functions from '../functions'; +import PicoUtils, { PicoCategoryData, PicoContentData } from './lib/PicoUtils'; + +interface Props { + lang: MultiLang; + name: string; +} + +interface PicoMenuCategoryProps { + lang: MultiLang; + name: string; + category: PicoCategoryData; + depth: number; +} + +const PicoMenuCategory = (props: PicoMenuCategoryProps) => { + const { lang, name, category, depth } = props; + const subCategories = PicoUtils.getSubCategories(name, category.id); + const contents = PicoUtils.getCategoryContents(name, category.id); + const level = 'level' + depth; + const link = {Functions.mlang(category.title, lang)}; + let title =
      {link}
      ; + switch (depth) { + case 1: + title =

      {link}

      ; + break; + case 2: + title =

      {link}

      ; + break; + case 3: + title =

      {link}

      ; + break; + case 4: + title =

      {link}

      ; + break; + case 5: + title =
      {link}
      ; + break; + } + return ( + <> + {title} + {contents.length > 0 && ( +
      +
        + {contents.map((content: PicoContentData) => { + const url = '/' + name + '/' + content.link; + return
      • {Functions.mlang(content.title, lang)}
      • ; + })} +
      +
      + )} + {subCategories.length > 0 && ( + <> + {subCategories.map((subCategory: PicoCategoryData) => { + return ; + })} + + )} + + ); +} + +const PicoMenu = (props: Props) => { + const { lang, name } = props; + const pico = PicoUtils.getModule(name); + if (pico === null) { + return ; + } + const category = PicoUtils.getCategory(name, 0); + if (category === null) { + return ; + } + return ( +
      + + {Functions.mlang('[en]Menu[/en][ja]メニュー[/ja]', lang)} - {Functions.mlang(pico.name, lang)} - {Functions.siteTitle(lang)} + + {pico.message !== '' && ( +

      {Functions.mlang(pico.message, lang)}

      + )} + +
      + ); +}; + +export default PicoMenu; \ No newline at end of file diff --git a/src/pico/PicoXoopsPathRedirect.tsx b/src/pico/PicoXoopsPathRedirect.tsx new file mode 100644 index 0000000..e39d888 --- /dev/null +++ b/src/pico/PicoXoopsPathRedirect.tsx @@ -0,0 +1,43 @@ +import React, { Component } from 'react'; +import { Redirect, RouteComponentProps, withRouter } from 'react-router'; +import PageNotFound from '../common/lib/PageNotFound'; +import { MultiLang } from '../config'; + +interface Props extends RouteComponentProps { + lang: MultiLang; + name: string; +} + +class PicoXoopsPathRedirect extends Component { + + getRedirectUrl(): string { + const { name, location } = this.props; + const pathname = location.pathname || ''; + const search = new RegExp(`^/modules/${name}(?:/+(.*))?$`); + const matches = pathname.match(search); + if (matches === null) { + return ''; + } + const path = matches[1] || ''; + switch (path) { + case '': + case 'index.php': { + const params = new URLSearchParams(location.search); + const paramString = params.toString(); + return '/' + name + '/' + (paramString !== '' ? '?' + paramString : ''); + } + } + return '/' + name + '/' + path; + } + + render() { + const { lang } = this.props; + const url = this.getRedirectUrl(); + if (url === '') { + return ; + } + return ; + } +} + +export default withRouter(PicoXoopsPathRedirect); diff --git a/src/pico/assets/pico_main.css b/src/pico/assets/pico_main.css new file mode 100644 index 0000000..9413c22 --- /dev/null +++ b/src/pico/assets/pico_main.css @@ -0,0 +1,140 @@ +div.pico_breadcrumbs { + font-size: 95%; + padding: 0 0 3px; + border-bottom: 1px #aaa solid; +} + +.pico_body { + margin: 0 -2px; + padding: 15px 8px; +} + +div.pico_menu h1 { + margin: 18px 0 0 0; + padding: 3px; + background-color: #eee; +} +div.pico_menu h2 { + margin: 18px 0 0 10px; + padding: 3px; + background-color: #eee; +} +div.pico_menu h3 { + margin: 18px 0 0 20px; + padding: 3px; + background-color: #eee; +} +div.pico_menu h4 { + margin: 18px 0 0 30px; + padding: 3px; + background-color: #eee; +} +div.pico_menu h5 { + margin: 18px 0 0 40px; + padding: 3px; + background-color: #eee; +} +div.pico_menu div.level1 { + margin-left: 0; +} +div.pico_menu div.level2 { + margin-left: 10px; +} +div.pico_menu div.level3 { + margin-left: 20px; +} +div.pico_menu div.level4 { + margin-left: 30px; +} +div.pico_menu div.level5 { + margin-left: 40px; +} + +em.pico_notice { + font-weight: bold; + font-style: normal; + color: #ff0000; +} + +div.pico_controllers_in_menu { + float: right; + position: relative; + top: -1.5em; +} + +div.bottom_of_content_body { + clear: right; +} + +ul.pico_list_contents li { + list-style: none outside; +} +ul.pico_list_contents_in_menu li { + list-style: none outside; +} + +div.pico_print_icon { + float: right; + width: 40px; + height: 40px; +} +div.pico_tellafriend_icon { + float: right; + width: 40px; + height: 40px; +} +div.pico_vote form { + display: inline; +} + +table.pico_pagenavigation { + border-top: 1px #aaa solid; + margin-top: 20px; +} + +table.pico_form_table th.pico_waiting { + color: red; +} +table.pico_form_table td.pico_waiting { + color: red; + background-color: white; +} + +table.pico_form_table td, +table.pico_form_table th { + color: black; + vertical-align: top !important; + text-align: left; +} +p.pico_submit { + text-align: center; + margin: 0; + padding: 10px; +} + +input.pico_ascii_only { + ime-mode: disabled; +} +input.pico_number_only { + ime-mode: disabled; + text-align: right; +} + +pre.pico_history_diff del { + color: red; +} +pre.pico_history_diff ins { + color: blue; +} + +div.pico_pagebreak { + margin: 10px; +} +div.pico_pagebreak span { + border: 1px solid black; + padding: 2px; + margin: 2px; +} +div.pico_pagebreak span.selected { + border: 0px; +} diff --git a/src/pico/lib/PicoUtils.ts b/src/pico/lib/PicoUtils.ts new file mode 100644 index 0000000..c33f876 --- /dev/null +++ b/src/pico/lib/PicoUtils.ts @@ -0,0 +1,180 @@ +import axios from 'axios'; +import loki from 'lokijs'; +import configJson from '../assets/config.json'; + +export interface PicoModuleData { + name: string; + dirname: string; + message: string; + show_menuinmoduletop: number; + show_listasindex: number; + show_breadcrumbs: number; + show_pagenavi: number; +} + +export interface PicoCategoryData { + id: number; + title: string; + desc: string; + pid: number; + weight: number; + link: string; +} + +export interface PicoContentData { + id: number; + title: string; + cat_id: number; + weight: number; + link: string; +} + +interface PicoConfigData { + module: PicoModuleData; + categories: PicoCategoryData[]; + contents: PicoContentData[]; +} + +interface PicoData { + module: PicoModuleData; + categories: Collection; + contents: Collection; +} + +export interface PicoPageData { + id: number; + title: string; + content: string; +} + +export const PICO_CATEGORY_ID_ROOT = 65535; +export type GetPageCallback = (page: PicoPageData | null) => void; + +class PicoUtils { + + private database: loki; + private modules: Map; + + constructor(json: PicoConfigData[]) { + this.database = new loki('pico'); + this.modules = new Map(); + json.forEach((data) => { + const name = data.module.dirname; + const pico = { + module: data.module, + categories: this.database.addCollection(name + '_categories'), + contents: this.database.addCollection(name + '_contents'), + }; + data.categories.forEach(category => { + pico.categories.insert(category); + }); + data.contents.forEach(content => { + pico.contents.insert(content); + }); + this.modules.set(name, pico); + }) + } + + getModule(name: string): PicoModuleData | null { + const pico = this.modules.get(name); + if (typeof pico === 'undefined') { + return null; + } + return pico.module; + } + + getCategoryByPath(name: string, link: string): PicoCategoryData | null { + const pico = this.modules.get(name); + if (typeof pico === 'undefined') { + return null; + } + const content = pico.categories.findOne({ link: link }); + return content; + } + + getCategory(name: string, catId: number): PicoCategoryData | null { + const pico = this.modules.get(name); + if (typeof pico === 'undefined') { + return null; + } + const category = pico.categories.findOne({ id: catId }); + return category; + } + + getParentCategories(name: string, catId: number): PicoCategoryData[] { + const categories: PicoCategoryData[] = []; + const pico = this.modules.get(name); + if (typeof pico === 'undefined') { + return categories; + } + while (catId !== PICO_CATEGORY_ID_ROOT) { + const category = pico.categories.findOne({ id: catId }); + if (category === null) { + break; + } + categories.unshift(category); + catId = category.pid; + } + return categories; + } + + getSubCategories(name: string, catId: number): PicoCategoryData[] { + const pico = this.modules.get(name); + if (typeof pico === 'undefined') { + return []; + } + return pico.categories.chain().find({ pid: catId }).simplesort('weight').data(); + } + + getCategoryContents(name: string, catId: number): PicoContentData[] { + const pico = this.modules.get(name); + if (typeof pico === 'undefined') { + return []; + } + return pico.contents.chain().find({ cat_id: catId }).simplesort('weight').data(); + } + + getContentCategery(name: string, contentId: number): PicoCategoryData[] { + const pico = this.modules.get(name); + if (typeof pico === 'undefined') { + return []; + } + const content = pico.contents.findOne({ id: contentId }); + if (content === null) { + return []; + } + return this.getParentCategories(name, content.cat_id); + } + + getFirstContent(name: string, catId: number): PicoContentData | null { + const pico = this.modules.get(name); + if (typeof pico === 'undefined') { + return null; + } + const contents = pico.contents.chain().find({ cat_id: catId }).simplesort('weight').limit(1).data(); + if (contents.length !== 1) { + return null; + } + return contents[0]; + } + + getContentByPath(name: string, link: string): PicoContentData | null { + const pico = this.modules.get(name); + if (typeof pico === 'undefined') { + return null; + } + const content = pico.contents.findOne({ link: link }); + return content as PicoContentData | null; + } + + getPage(name: string, contentId: number, callback: GetPageCallback): void { + axios.get('/' + name + '/' + contentId + '.json').then((response) => { + const page = response.data as PicoPageData; + callback(page); + }).catch(e => { + callback(null); + }); + } +} + +export default new PicoUtils(configJson); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 5a2c1c5..be1b873 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,18 +29,18 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.4.3": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250" - integrity sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ== +"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.4.5": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.4.tgz#4c32df7ad5a58e9ea27ad025c11276324e0b4ddd" + integrity sha512-+DaeBEpYq6b2+ZmHx3tHspC+ZRflrvLqwfv8E3hNr5LVQoyBnL8RPKSBCg+rK2W2My9PWlujBiqd0ZPsR9Q6zQ== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helpers" "^7.4.4" - "@babel/parser" "^7.4.4" + "@babel/generator" "^7.5.0" + "@babel/helpers" "^7.5.4" + "@babel/parser" "^7.5.0" "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/traverse" "^7.5.0" + "@babel/types" "^7.5.0" convert-source-map "^1.1.0" debug "^4.1.0" json5 "^2.1.0" @@ -49,12 +49,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" - integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== +"@babel/generator@^7.4.0", "@babel/generator@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.0.tgz#f20e4b7a91750ee8b63656073d843d2a736dca4a" + integrity sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA== dependencies: - "@babel/types" "^7.4.4" + "@babel/types" "^7.5.0" jsesc "^2.5.1" lodash "^4.17.11" source-map "^0.5.0" @@ -92,10 +92,10 @@ "@babel/traverse" "^7.4.4" "@babel/types" "^7.4.4" -"@babel/helper-create-class-features-plugin@^7.4.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz#fc3d690af6554cc9efc607364a82d48f58736dba" - integrity sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA== +"@babel/helper-create-class-features-plugin@^7.4.0", "@babel/helper-create-class-features-plugin@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.5.0.tgz#02edb97f512d44ba23b3227f1bf2ed43454edac5" + integrity sha512-EAoMc3hE5vE5LNhMqDOwB1usHvmRjCDAnH8CD4PVkX9/Yr3W/tcz8xE8QvdZxfsFBDICwZnF2UTHIqslRpvxmA== dependencies: "@babel/helper-function-name" "^7.1.0" "@babel/helper-member-expression-to-functions" "^7.0.0" @@ -235,28 +235,28 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.2.0" -"@babel/helpers@^7.4.3", "@babel/helpers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" - integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== +"@babel/helpers@^7.4.3", "@babel/helpers@^7.5.4": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.5.4.tgz#2f00608aa10d460bde0ccf665d6dcf8477357cf0" + integrity sha512-6LJ6xwUEJP51w0sIgKyfvFMJvIb9mWAfohJp0+m6eHJigkFdcH8duZ1sfhn0ltJRzwUIT/yqqhdSfRpCpL7oow== dependencies: "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/traverse" "^7.5.0" + "@babel/types" "^7.5.0" "@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" + integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6" - integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.0.tgz#3e0713dff89ad6ae37faec3b29dcfc5c979770b7" + integrity sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA== "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" @@ -284,6 +284,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-decorators" "^7.2.0" +"@babel/plugin-proposal-dynamic-import@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506" + integrity sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/plugin-proposal-json-strings@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" @@ -300,10 +308,10 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.4.3", "@babel/plugin-proposal-object-rest-spread@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" - integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== +"@babel/plugin-proposal-object-rest-spread@^7.4.3", "@babel/plugin-proposal-object-rest-spread@^7.5.4": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.4.tgz#250de35d867ce8260a31b1fdac6c4fc1baa99331" + integrity sha512-KCx0z3y7y8ipZUMAEEJOyNi11lMb/FOPUjjB113tfowgw0c16EGYos7worCKBcUAh2oG+OBnoUhsnTSoLpV9uA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" @@ -339,7 +347,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-dynamic-import@7.2.0": +"@babel/plugin-syntax-dynamic-import@7.2.0", "@babel/plugin-syntax-dynamic-import@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== @@ -395,10 +403,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@^7.4.0", "@babel/plugin-transform-async-to-generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" - integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== +"@babel/plugin-transform-async-to-generator@^7.4.0", "@babel/plugin-transform-async-to-generator@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" + integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -461,10 +469,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@^7.4.3", "@babel/plugin-transform-destructuring@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" - integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== +"@babel/plugin-transform-destructuring@^7.4.3", "@babel/plugin-transform-destructuring@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a" + integrity sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -477,10 +485,10 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" -"@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" - integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== +"@babel/plugin-transform-duplicate-keys@^7.2.0", "@babel/plugin-transform-duplicate-keys@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" + integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -529,30 +537,33 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" - integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== +"@babel/plugin-transform-modules-amd@^7.2.0", "@babel/plugin-transform-modules-amd@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" + integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== dependencies: "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.4.3", "@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" - integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== +"@babel/plugin-transform-modules-commonjs@^7.4.3", "@babel/plugin-transform-modules-commonjs@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74" + integrity sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ== dependencies: "@babel/helper-module-transforms" "^7.4.4" "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-simple-access" "^7.1.0" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.4.0", "@babel/plugin-transform-modules-systemjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" - integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== +"@babel/plugin-transform-modules-systemjs@^7.4.0", "@babel/plugin-transform-modules-systemjs@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" + integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== dependencies: "@babel/helper-hoist-variables" "^7.4.4" "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" "@babel/plugin-transform-modules-umd@^7.2.0": version "7.2.0" @@ -562,12 +573,12 @@ "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.2", "@babel/plugin-transform-named-capturing-groups-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz#5611d96d987dfc4a3a81c4383bb173361037d68d" - integrity sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.4.2", "@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" + integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg== dependencies: - regexp-tree "^0.1.0" + regexp-tree "^0.1.6" "@babel/plugin-transform-new-target@^7.4.0", "@babel/plugin-transform-new-target@^7.4.4": version "7.4.4" @@ -600,7 +611,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-react-constant-elements@7.2.0", "@babel/plugin-transform-react-constant-elements@^7.0.0": +"@babel/plugin-transform-react-constant-elements@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.2.0.tgz#ed602dc2d8bff2f0cb1a5ce29263dbdec40779f7" integrity sha512-YYQFg6giRFMsZPKUM9v+VcHOdfSQdz9jHCx3akAi3UYgyjndmdYGSXylQ/V+HswQt4fL8IklchD9HTsaOCrWQQ== @@ -608,6 +619,14 @@ "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.5.0.tgz#4d6ae4033bc38f8a65dfca2b6235c44522a422fc" + integrity sha512-c5Ba8cpybZFp1Izkf2sWGuNjOxoQ32tFgBvvYvwGhi4+9f6vGiSK9Gex4uVuO/Va6YJFu41aAh1MzMjUWkp0IQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name@7.2.0", "@babel/plugin-transform-react-display-name@^7.0.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" @@ -624,9 +643,9 @@ "@babel/plugin-syntax-jsx" "^7.2.0" "@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz#20c8c60f0140f5dd3cd63418d452801cf3f7180f" - integrity sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g== + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b" + integrity sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.2.0" @@ -640,12 +659,12 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.2.0" -"@babel/plugin-transform-regenerator@^7.4.3", "@babel/plugin-transform-regenerator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz#5b4da4df79391895fca9e28f99e87e22cfc02072" - integrity sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g== +"@babel/plugin-transform-regenerator@^7.4.3", "@babel/plugin-transform-regenerator@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" + integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== dependencies: - regenerator-transform "^0.13.4" + regenerator-transform "^0.14.0" "@babel/plugin-transform-reserved-words@^7.2.0": version "7.2.0" @@ -702,10 +721,11 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-typescript@^7.3.2": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.4.4.tgz#93e9c3f2a546e6d3da1e9cc990e30791b807aa9f" - integrity sha512-rwDvjaMTx09WC0rXGBRlYSSkEHOKRrecY6hEr3SVIPKII8DVWXtapNAfAyMC0dovuO+zYArcAuKeu3q9DNRfzA== + version "7.5.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.5.2.tgz#ea7da440d29b8ccdb1bd02e18f6cfdc7ce6c16f5" + integrity sha512-r4zJOMbKY5puETm8+cIpaa0RQZG/sSASW1u0pj8qYklcERgVIbxVbP2wyJA7zI1//h7lEagQmXi9IL9iI5rfsA== dependencies: + "@babel/helper-create-class-features-plugin" "^7.5.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.2.0" @@ -773,45 +793,47 @@ semver "^5.5.0" "@babel/preset-env@^7.1.6": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.4.tgz#b6f6825bfb27b3e1394ca3de4f926482722c1d6f" - integrity sha512-FU1H+ACWqZZqfw1x2G1tgtSSYSfxJLkpaUQL37CenULFARDo+h4xJoVHzRoHbK+85ViLciuI7ME4WTIhFRBBlw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.5.4.tgz#64bc15041a3cbb0798930319917e70fcca57713d" + integrity sha512-hFnFnouyRNiH1rL8YkX1ANCNAUVC8Djwdqfev8i1415tnAG+7hlA5zhZ0Q/3Q5gkop4HioIPbCEWAalqcbxRoQ== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-dynamic-import" "^7.5.0" "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.4.4" + "@babel/plugin-proposal-object-rest-spread" "^7.5.4" "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-dynamic-import" "^7.2.0" "@babel/plugin-syntax-json-strings" "^7.2.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.4.4" + "@babel/plugin-transform-async-to-generator" "^7.5.0" "@babel/plugin-transform-block-scoped-functions" "^7.2.0" "@babel/plugin-transform-block-scoping" "^7.4.4" "@babel/plugin-transform-classes" "^7.4.4" "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.4.4" + "@babel/plugin-transform-destructuring" "^7.5.0" "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-duplicate-keys" "^7.5.0" "@babel/plugin-transform-exponentiation-operator" "^7.2.0" "@babel/plugin-transform-for-of" "^7.4.4" "@babel/plugin-transform-function-name" "^7.4.4" "@babel/plugin-transform-literals" "^7.2.0" "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.4.4" - "@babel/plugin-transform-modules-systemjs" "^7.4.4" + "@babel/plugin-transform-modules-amd" "^7.5.0" + "@babel/plugin-transform-modules-commonjs" "^7.5.0" + "@babel/plugin-transform-modules-systemjs" "^7.5.0" "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" "@babel/plugin-transform-new-target" "^7.4.4" "@babel/plugin-transform-object-super" "^7.2.0" "@babel/plugin-transform-parameters" "^7.4.4" "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.4" + "@babel/plugin-transform-regenerator" "^7.4.5" "@babel/plugin-transform-reserved-words" "^7.2.0" "@babel/plugin-transform-shorthand-properties" "^7.2.0" "@babel/plugin-transform-spread" "^7.2.0" @@ -819,9 +841,9 @@ "@babel/plugin-transform-template-literals" "^7.4.4" "@babel/plugin-transform-typeof-symbol" "^7.2.0" "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.4.4" - browserslist "^4.5.2" - core-js-compat "^3.0.0" + "@babel/types" "^7.5.0" + browserslist "^4.6.0" + core-js-compat "^3.1.1" invariant "^2.2.2" js-levenshtein "^1.1.3" semver "^5.5.0" @@ -845,6 +867,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-typescript" "^7.3.2" +"@babel/runtime-corejs2@^7.2.0": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.5.4.tgz#7111dbb344acce1f7dd601786cff40d516b27a96" + integrity sha512-sHv74OzyZ18d6tjHU0HmlVES3+l+lydkOMTiKsJSTGWcTBpIMfXLEgduahlJrQjknW9RCQAqLIEdLOHjBmq/hg== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.2" + "@babel/runtime@7.4.3": version "7.4.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.3.tgz#79888e452034223ad9609187a0ad1fe0d2ad4bdc" @@ -852,10 +882,10 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.2": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d" - integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.4.tgz#cb7d1ad7c6d65676e66b47186577930465b5271b" + integrity sha512-Na84uwyImZZc3FKf4aUF1tysApzwf3p2yuFBIyBfbzT5glzKTdvYI4KVW4kcgjrzoGUjC7w3YyCHcJKaRxsr2Q== dependencies: regenerator-runtime "^0.13.2" @@ -868,25 +898,25 @@ "@babel/parser" "^7.4.4" "@babel/types" "^7.4.4" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8" - integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.0.tgz#4216d6586854ef5c3c4592dab56ec7eb78485485" + integrity sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" + "@babel/generator" "^7.5.0" "@babel/helper-function-name" "^7.1.0" "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/parser" "^7.5.0" + "@babel/types" "^7.5.0" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.11" -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" - integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.0.tgz#e47d43840c2e7f9105bc4d3a2c371b4d0c7832ab" + integrity sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ== dependencies: esutils "^2.0.2" lodash "^4.17.11" @@ -916,25 +946,36 @@ integrity sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw== "@hapi/hoek@6.x.x": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-6.2.1.tgz#d3a66329159af879bfdf0b0cff2229c43c5a3451" - integrity sha512-+ryw4GU9pjr1uT6lBuErHJg3NYqzwJTvZ75nKuJijEzpd00Uqi6oiawTGDDf5Hl0zWmI7qHfOtaqB0kpQZJQzA== + version "6.2.4" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-6.2.4.tgz#4b95fbaccbfba90185690890bdf1a2fbbda10595" + integrity sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A== + +"@hapi/hoek@8.x.x": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.0.2.tgz#f63a5ff00e891a4e7aa98f11119f9515c6672032" + integrity sha512-O6o6mrV4P65vVccxymuruucb+GhP2zl9NLCG8OdoFRS8BEGw3vwpPp20wpAtpbQQxz1CEUtmxJGgWhjq1XA3qw== "@hapi/joi@^15.0.0": - version "15.0.2" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.0.2.tgz#2989041a06ee2941cf6dd247ffff8032640d16bb" - integrity sha512-c3NwWBHzUnEavcaCpGaepOcygS17pSnOh5ZYUBz+sfqCP7kC9haLcRnd3U8KFC4TbLFmRwKnmYglsc47m9yapg== + version "15.1.0" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.0.tgz#940cb749b5c55c26ab3b34ce362e82b6162c8e7a" + integrity sha512-n6kaRQO8S+kepUTbXL9O/UOL788Odqs38/VOfoCrATDtTvyfiO3fgjlSRaNkHabpTLgM7qru9ifqXlXbXk8SeQ== dependencies: "@hapi/address" "2.x.x" "@hapi/hoek" "6.x.x" + "@hapi/marker" "1.x.x" "@hapi/topo" "3.x.x" +"@hapi/marker@1.x.x": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@hapi/marker/-/marker-1.0.0.tgz#65b0b2b01d1be06304886ce9b4b77b1bfb21a769" + integrity sha512-JOfdekTXnJexfE8PyhZFyHvHjt81rBFSAbTIRAhF2vv/2Y1JzoKsGqxH/GpZJoF7aEfYok8JVcAHmSz1gkBieA== + "@hapi/topo@3.x.x": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.0.tgz#5c47cd9637c2953db185aa957a27bcb2a8b7a6f8" - integrity sha512-gZDI/eXOIk8kP2PkUKjWu9RW8GGVd2Hkgjxyr/S7Z+JF+0mr7bAlbw+DkTRxnD580o8Kqxlnba9wvqp5aOHBww== + version "3.1.2" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.2.tgz#57cc1317be1a8c5f47c124f9b0e3c49cd78424d2" + integrity sha512-r+aumOqJ5QbD6aLPJWqVjMAPsx5pZKz+F5yPqXZ/WWG9JTtHbQqlzrJoknJ0iJxLj9vlXtmpSdjlkszseeG8OA== dependencies: - "@hapi/hoek" "6.x.x" + "@hapi/hoek" "8.x.x" "@jest/console@^24.7.1": version "24.7.1" @@ -1115,10 +1156,10 @@ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== -"@svgr/babel-plugin-svg-dynamic-title@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.2.0.tgz#43f0f689a5347a894160eb51b39a109889a4df20" - integrity sha512-gH2qItapwCUp6CCqbxvzBbc4dh4OyxdYKsW3EOkYexr0XUmQL0ScbdNh6DexkZ01T+sdClniIbnCObsXcnx3sQ== +"@svgr/babel-plugin-svg-dynamic-title@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.1.tgz#646c2f5b5770c2fe318d6e51492344c3d62ddb63" + integrity sha512-p6z6JJroP989jHWcuraeWpzdejehTmLUpyC9smhTBWyPN0VVGe2phbYxpPTV7Vh8XzmFrcG55idrnfWn/2oQEw== "@svgr/babel-plugin-svg-em-dimensions@^4.2.0": version "4.2.0" @@ -1135,56 +1176,56 @@ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== -"@svgr/babel-preset@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.2.0.tgz#c9fc236445a02a8cd4e750085e51c181de00d6c5" - integrity sha512-iLetHpRCQXfK47voAs5/uxd736cCyocEdorisjAveZo8ShxJ/ivSZgstBmucI1c8HyMF5tOrilJLoFbhpkPiKw== +"@svgr/babel-preset@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.1.tgz#62ffcb85d756580e8ce608e9d2ac3b9063be9e28" + integrity sha512-rPFKLmyhlh6oeBv3j2vEAj2nd2QbWqpoJLKzBLjwQVt+d9aeXajVaPNEqrES2spjXKR4OxfgSs7U0NtmAEkr0Q== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" - "@svgr/babel-plugin-svg-dynamic-title" "^4.2.0" + "@svgr/babel-plugin-svg-dynamic-title" "^4.3.1" "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" "@svgr/babel-plugin-transform-svg-component" "^4.2.0" "@svgr/core@^4.1.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.2.0.tgz#f32ef8b9d05312aaa775896ec30ae46a6521e248" - integrity sha512-nvzXaf2VavqjMCTTfsZfjL4o9035KedALkMzk82qOlHOwBb8JT+9+zYDgBl0oOunbVF94WTLnvGunEg0csNP3Q== + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.1.tgz#58c44d0ccc3fe41718c50433758b549dabd4d197" + integrity sha512-TXFcvzp6QjxKP5Oy7qoQY08w/nAix9TMOc4jSi3wjIJBBMUqypVwQJFMxtHrViGMQGmFdaN1y2diQrhvA+xNNQ== dependencies: - "@svgr/plugin-jsx" "^4.2.0" + "@svgr/plugin-jsx" "^4.3.1" camelcase "^5.3.1" - cosmiconfig "^5.2.0" + cosmiconfig "^5.2.1" -"@svgr/hast-util-to-babel-ast@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.2.0.tgz#dd743435a5f3a8e84a1da067f27b5fae3d7b6b63" - integrity sha512-IvAeb7gqrGB5TH9EGyBsPrMRH/QCzIuAkLySKvH2TLfLb2uqk98qtJamordRQTpHH3e6TORfBXoTo7L7Opo/Ow== +"@svgr/hast-util-to-babel-ast@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.1.tgz#b3ea5b2228b50ff335a5d3cf3855f4b1f9fbc70e" + integrity sha512-MZbRccEpsro70mE6mhiv5QUXjBwHGDQZ7XrVcrDs44inaNvYUtIcheX0d9eColcnNgJmsfU3tEFfoGRnJ9E5pA== dependencies: - "@babel/types" "^7.4.0" + "@babel/types" "^7.4.4" -"@svgr/plugin-jsx@^4.1.0", "@svgr/plugin-jsx@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.2.0.tgz#15a91562c9b5f90640ea0bdcb2ad59d692ee7ae9" - integrity sha512-AM1YokmZITgveY9bulLVquqNmwiFo2Px2HL+IlnTCR01YvWDfRL5QKdnF7VjRaS5MNP938mmqvL0/8oz3zQMkg== +"@svgr/plugin-jsx@^4.1.0", "@svgr/plugin-jsx@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.1.tgz#5b7f849213d1411886e1cec9b6c287faec69143e" + integrity sha512-v9sgsn/VpDM9G1U0ZDCair7ZmYqNrVC5LiSyIQli03DAm34bYLM12xVOOrl3dg8NGNY1k4C3A6YgBL3VKjA6Og== dependencies: - "@babel/core" "^7.4.3" - "@svgr/babel-preset" "^4.2.0" - "@svgr/hast-util-to-babel-ast" "^4.2.0" + "@babel/core" "^7.4.5" + "@svgr/babel-preset" "^4.3.1" + "@svgr/hast-util-to-babel-ast" "^4.3.1" rehype-parse "^6.0.0" unified "^7.1.0" - vfile "^4.0.0" + vfile "^4.0.1" "@svgr/plugin-svgo@^4.0.3": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.2.0.tgz#2a594a2d3312955e75fd87dc77ae51f377c809f3" - integrity sha512-zUEKgkT172YzHh3mb2B2q92xCnOAMVjRx+o0waZ1U50XqKLrVQ/8dDqTAtnmapdLsGurv8PSwenjLCUpj6hcvw== + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" + integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== dependencies: - cosmiconfig "^5.2.0" + cosmiconfig "^5.2.1" merge-deep "^3.0.2" - svgo "^1.2.1" + svgo "^1.2.2" "@svgr/webpack@4.1.0": version "4.1.0" @@ -1200,10 +1241,15 @@ "@svgr/plugin-svgo" "^4.0.3" loader-utils "^1.1.0" +"@types/async-lock@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/async-lock/-/async-lock-1.1.1.tgz#81f218213bebcc5f740efe9648272c774a2e4b4b" + integrity sha512-TU1X8jmAU2BjwKryBFV/GDezz7Ge0xu9ZuYC7dy6wKj4hnL0JcxeseCOr/G2JkGylff6hdUBrR+Ee5ApAQeU5g== + "@types/babel__core@^7.1.0": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.1.tgz#ce9a9e5d92b7031421e1d0d74ae59f572ba48be6" - integrity sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw== + version "7.1.2" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.2.tgz#608c74f55928033fce18b99b213c16be4b3d114f" + integrity sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1227,12 +1273,30 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz#328dd1a8fc4cfe3c8458be9477b219ea158fd7b2" - integrity sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw== + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.7.tgz#2496e9ff56196cc1429c72034e07eab6121b6f3f" + integrity sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw== dependencies: "@babel/types" "^7.3.0" +"@types/cookie@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.3.3.tgz#85bc74ba782fb7aa3a514d11767832b0e3bc6803" + integrity sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow== + +"@types/history@*": + version "4.7.2" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.2.tgz#0e670ea254d559241b6eeb3894f8754991e73220" + integrity sha512-ui3WwXmjTaY73fOQ3/m3nnajU/Orhi6cEu5rzX+BrAAJxa3eITXZ5ch9suPqtM03OWhAHhPSyBGCN4UKoxO20Q== + +"@types/hoist-non-react-statics@^3.0.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -1265,15 +1329,20 @@ dependencies: "@types/jest-diff" "*" -"@types/node@*": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.0.tgz#d11813b9c0ff8aaca29f04cbc12817f4c7d656e5" - integrity sha512-Jrb/x3HT4PTJp6a4avhmJCDEVrPdqLfl3e8GGMbpkGGdwAV5UGlIs4vVEfsHHfylZVOKZWpOqmqFH8CbfOZ6kg== +"@types/lokijs@^1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/lokijs/-/lokijs-1.5.2.tgz#ed228f080033ce1fb16eff4acde65cb9ae0f1bf2" + integrity sha512-ZF14v1P1Bjbw8VJRu+p4WS9V926CAOjWF4yq23QmSBWRPe0/GXlUKzSxjP1fi/xi8nrq6zr9ECo8Z/8KsRqroQ== -"@types/node@12.0.12": - version "12.0.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.12.tgz#cc791b402360db1eaf7176479072f91ee6c6c7ca" - integrity sha512-Uy0PN4R5vgBUXFoJrKryf5aTk3kJ8Rv3PdlHjl6UaX+Cqp1QE0yPQ68MPXGrZOfG7gZVNDIJZYyot0B9ubXUrQ== +"@types/node@*", "@types/node@12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.2.tgz#a5ccec6abb6060d5f20d256fb03ed743e9774999" + integrity sha512-gojym4tX0FWeV2gsW4Xmzo5wxGjXGm550oVUII7f7G5o4BV6c7DBdiG1RRQd+y1bvqRyYtPfMK85UM95vsapqQ== + +"@types/object-assign@^4.0.30": + version "4.0.30" + resolved "https://registry.yarnpkg.com/@types/object-assign/-/object-assign-4.0.30.tgz#8949371d5a99f4381ee0f1df0a9b7a187e07e652" + integrity sha1-iUk3HVqZ9Dge4PHfCpt6GH4H5lI= "@types/prop-types@*": version "15.7.1" @@ -1285,6 +1354,13 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== +"@types/rc-tree@^1.11.3": + version "1.11.3" + resolved "https://registry.yarnpkg.com/@types/rc-tree/-/rc-tree-1.11.3.tgz#b40c096c54bab2a56b88de813af47b96e7e82b00" + integrity sha512-RxWXGy5PiR02TyZ1fNuqmBIeLylUOSIHLuWpnRswI18N2lpAqzXLaJhIctnGcn0OXjYss96EEJddL8tLFXuvNQ== + dependencies: + "@types/react" "*" + "@types/react-dom@16.8.4": version "16.8.4" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.8.4.tgz#7fb7ba368857c7aa0f4e4511c4710ca2c5a12a88" @@ -1292,6 +1368,60 @@ dependencies: "@types/react" "*" +"@types/react-helmet@^5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-5.0.8.tgz#f080eea6652e44f60b4574463d238f268d81d9af" + integrity sha512-ZTr12eDAYI0yUiMx1K82EHqRYa8J1BOOLus+0gL+AkksUiIPwLE0wLiXa9FNqD8r9GXAi+yRPZImkRh1JNlTkQ== + dependencies: + "@types/react" "*" + +"@types/react-html-parser@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/react-html-parser/-/react-html-parser-2.0.0.tgz#37ead288a6e72b8dfda028f083991bd639728523" + integrity sha512-8u6C5F1t1veOac2jujtJbCm1GrIDZWqeBJu+XL5pluafhmatFL+qgtje9H2djYSq+5frcmq7jWmHwrBf0eV5ew== + dependencies: + "@types/react" "*" + +"@types/react-overlays@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@types/react-overlays/-/react-overlays-1.1.3.tgz#fb97081cbf506917e358f0523b34fed14e2de2f7" + integrity sha512-oOq5NWbyfNz2w2sKvjkHdvGQSMA+VDVfI5UOfGPR0wkik2welad1RDVnVgH15jKf58jrZNBa1Ee4SVBgCGFxCg== + dependencies: + "@types/react" "*" + "@types/react-transition-group" "*" + +"@types/react-router-dom@*", "@types/react-router-dom@^4.3.4": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-4.3.4.tgz#63a7a8558129d2f4ff76e4bdd099bf4b98e25a0d" + integrity sha512-xrwaWHpnxKk/TTRe7pmoGy3E4SyF/ojFqNfFJacw7OLdfLXRvGfk4r/XePVaZNVfeJzL8fcnNilPN7xOdJ/vGw== + dependencies: + "@types/history" "*" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router-hash-link@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/react-router-hash-link/-/react-router-hash-link-1.2.1.tgz#fba7dc351cef2985791023018b7a5dbd0653c843" + integrity sha512-jdzPGE8jFGq7fHUpPaKrJvLW1Yhoe5MQCrmgeesC+eSLseMj3cGCTYMDA4BNWG8JQmwO8NTYt/oT3uBZ77pmBA== + dependencies: + "@types/react" "*" + "@types/react-router-dom" "*" + +"@types/react-router@*": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.0.3.tgz#855a1606e62de3f4d69ea34fb3c0e50e98e964d5" + integrity sha512-j2Gge5cvxca+5lK9wxovmGPgpVJMwjyu5lTA/Cd6fLGoPq7FXcUE1jFkEdxeyqGGz8VfHYSHCn5Lcn24BzaNKA== + dependencies: + "@types/history" "*" + "@types/react" "*" + +"@types/react-transition-group@*": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-2.9.2.tgz#c48cf2a11977c8b4ff539a1c91d259eaa627028d" + integrity sha512-5Fv2DQNO+GpdPZcxp2x/OQG/H19A01WlmpjVD9cKvVFmoVLOZ9LvBgSWG6pSXIU4og5fgbvGPaCV5+VGkWAEHA== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@16.8.23": version "16.8.23" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.23.tgz#ec6be3ceed6353a20948169b6cb4c97b65b97ad2" @@ -1327,6 +1457,11 @@ "@types/unist" "*" "@types/vfile-message" "*" +"@types/xregexp@^3.0.30": + version "3.0.30" + resolved "https://registry.yarnpkg.com/@types/xregexp/-/xregexp-3.0.30.tgz#333d550467dd27ef989f375629f8f279a97cee39" + integrity sha512-u1dpabg81Rd660bYebOqMXO0+E63H1hxunPAWGebNb7TpxqZYe9YaVLgkkj6ZnzLs3yLumtVB956o8u8OZdhXw== + "@types/yargs@^12.0.2", "@types/yargs@^12.0.9": version "12.0.12" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" @@ -1525,7 +1660,7 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.4, accepts@~1.3.5: +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== @@ -1552,9 +1687,9 @@ acorn-jsx@^5.0.0: integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== acorn-walk@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" - integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== acorn@^5.5.3: version "5.7.3" @@ -1562,9 +1697,16 @@ acorn@^5.5.3: integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.5, acorn@^6.0.7: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.0.tgz#67f0da2fc339d6cfb5d6fb244fd449f33cd8bbe3" + integrity sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw== + +add-dom-event-listener@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" + integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw== + dependencies: + object-assign "4.x" address@1.0.3: version "1.0.3" @@ -1582,14 +1724,14 @@ ajv-errors@^1.0.0: integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== ajv-keywords@^3.1.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" - integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== ajv@^6.1.0, ajv@^6.5.5, ajv@^6.9.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== + version "6.10.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.1.tgz#ebf8d3af22552df9dd049bfbe50cc2390e823593" + integrity sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -1754,7 +1896,7 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@~2.0.6: +asap@~2.0.3, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -1813,6 +1955,11 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== +async-lock@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/async-lock/-/async-lock-1.2.0.tgz#cd6a53cb1ec3f86af25eafdeb6bc7c6e317258b8" + integrity sha512-81HzTQm4+qMj6PwNlnR+y9g7pDdGGzd/YBUrQnHk+BhR28ja2qv497NkQQc1KcKEqh/RShm07di2b0cIWVFrNQ== + async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -1829,16 +1976,17 @@ atob@^2.1.1: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^9.4.9: - version "9.5.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.5.1.tgz#243b1267b67e7e947f28919d786b50d3bb0fb357" - integrity sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ== + version "9.6.1" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.1.tgz#51967a02d2d2300bb01866c1611ec8348d355a47" + integrity sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw== dependencies: - browserslist "^4.5.4" - caniuse-lite "^1.0.30000957" + browserslist "^4.6.3" + caniuse-lite "^1.0.30000980" + chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.14" - postcss-value-parser "^3.3.1" + postcss "^7.0.17" + postcss-value-parser "^4.0.0" aws-sign2@~0.7.0: version "0.7.0" @@ -1850,6 +1998,14 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +axios@^0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" + integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + axobject-query@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" @@ -1915,6 +2071,13 @@ babel-plugin-dynamic-import-node@2.2.0: dependencies: object.assign "^4.1.0" +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + babel-plugin-istanbul@^5.1.0: version "5.1.4" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz#841d16b9a58eeb407a0ddce622ba02fe87a752ba" @@ -1995,7 +2158,7 @@ babel-preset-react-app@^9.0.0: babel-plugin-macros "2.5.1" babel-plugin-transform-react-remove-prop-types "0.4.24" -babel-runtime@^6.26.0: +babel-runtime@6.x, babel-runtime@^6.23.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -2058,31 +2221,31 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== -bluebird@^3.5.3: - version "3.5.4" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" - integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw== +bluebird@^3.5.5: + version "3.5.5" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" + integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== -body-parser@1.18.3: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== dependencies: - bytes "3.0.0" + bytes "3.1.0" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" + http-errors "1.7.2" + iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" bonjour@^3.5.0: version "3.5.0" @@ -2210,19 +2373,19 @@ browserslist@4.5.4: electron-to-chromium "^1.3.122" node-releases "^1.1.13" -browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.4.2, browserslist@^4.5.2, browserslist@^4.5.4: - version "4.5.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.5.6.tgz#ea42e8581ca2513fa7f371d4dd66da763938163d" - integrity sha512-o/hPOtbU9oX507lIqon+UvPYqpx3mHc8cV3QemSBTXwkG8gSQSK6UKvXcE/DcleU3+A59XTUHyCvZ5qGy8xVAg== +browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.4.2, browserslist@^4.5.2, browserslist@^4.6.0, browserslist@^4.6.2, browserslist@^4.6.3: + version "4.6.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.4.tgz#fd0638b3f8867fec2c604ed0ed9300379f8ec7c2" + integrity sha512-ErJT8qGfRt/VWHSr1HeqZzz50DvxHtr1fVL1m5wf20aGrG8e1ce8fpZ2EjZEfs09DDZYSvtRaDlMpWslBf8Low== dependencies: - caniuse-lite "^1.0.30000963" - electron-to-chromium "^1.3.127" - node-releases "^1.1.17" + caniuse-lite "^1.0.30000981" + electron-to-chromium "^1.3.188" + node-releases "^1.1.25" bser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" - integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= + version "2.1.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.0.tgz#65fc784bf7f87c009b973c12db6546902fa9c7b5" + integrity sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg== dependencies: node-int64 "^0.4.0" @@ -2260,22 +2423,27 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -cacache@^11.0.2: - version "11.3.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" - integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^11.0.2, cacache@^11.3.2: + version "11.3.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" + integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== dependencies: - bluebird "^3.5.3" + bluebird "^3.5.5" chownr "^1.1.1" figgy-pudding "^3.5.1" - glob "^7.1.3" + glob "^7.1.4" graceful-fs "^4.1.15" lru-cache "^5.1.1" mississippi "^3.0.0" mkdirp "^0.5.1" move-concurrently "^1.0.1" promise-inflight "^1.0.1" - rimraf "^2.6.2" + rimraf "^2.6.3" ssri "^6.0.1" unique-filename "^1.1.1" y18n "^4.0.0" @@ -2352,10 +2520,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000939, caniuse-lite@^1.0.30000955, caniuse-lite@^1.0.30000957, caniuse-lite@^1.0.30000963: - version "1.0.30000967" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000967.tgz#a5039577806fccee80a04aaafb2c0890b1ee2f73" - integrity sha512-rUBIbap+VJfxTzrM4akJ00lkvVb5/n5v3EGXfWzSH5zT8aJmGzjA8HWhJ4U6kCpzxozUSnB+yvAYDRPY6mRpgQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000939, caniuse-lite@^1.0.30000955, caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30000981: + version "1.0.30000983" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000983.tgz#ab3c70061ca2a3467182a10ac75109b199b647f8" + integrity sha512-/llD1bZ6qwNkt41AsvjsmwNOoA4ZB+8iqmf5LVyeSXuBODT/hAMFNVOh84NdUzoiYiSKqo5vQ3ZzeYHSi/olDQ== capture-exit@^2.0.0: version "2.0.0" @@ -2405,9 +2573,9 @@ chardet@^0.7.0: integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: - version "2.1.5" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" - integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== + version "2.1.6" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" + integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -2424,14 +2592,14 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: fsevents "^1.2.7" chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + version "1.1.2" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" + integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== chrome-trace-event@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" - integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== dependencies: tslib "^1.9.0" @@ -2458,6 +2626,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classnames@2.x, classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + clean-css@4.2.x: version "4.2.1" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" @@ -2560,31 +2733,31 @@ color-string@^1.5.2: simple-swizzle "^0.2.2" color@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.1.tgz#7abf5c0d38e89378284e873c207ae2172dcc8a61" - integrity sha512-PvUltIXRjehRKPSy89VnDWFKY58xyhTLyxIg21vwQBI6qLwZNPmC8k3C1uytIgFKEpOIzN4y32iPm8231zFHIg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== dependencies: color-convert "^1.9.1" color-string "^1.5.2" combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" comma-separated-tokens@^1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.6.tgz#3cd3d8adc725ab473843db338bcdfd4a7bb087bf" - integrity sha512-f20oA7jsrrmERTS70r3tmRSxR8IJV2MTN7qe6hzgX+3ARfXrdMJFvGWvWQK0xpcBurg9j9eO2MiqzZ8Y+/UPCA== + version "1.0.7" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.7.tgz#419cd7fb3258b1ed838dc0953167a25e152f5b59" + integrity sha512-Jrx3xsP4pPv4AwJUDWY9wOXGtwPXARej6Xd99h4TUGotmf8APuquKMpK+dnD3UgyxK7OEWaisjZz+3b5jtL6xQ== commander@2.17.x: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.11.0, commander@^2.19.0, commander@~2.20.0: +commander@^2.11.0, commander@^2.19.0, commander@^2.20.0, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== @@ -2604,11 +2777,23 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +component-classes@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/component-classes/-/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691" + integrity sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE= + dependencies: + component-indexof "0.0.3" + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +component-indexof@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-indexof/-/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24" + integrity sha1-EdCRMSI5648yyPJa6csAL/6NPCQ= + compressible@~2.0.16: version "2.0.17" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" @@ -2676,10 +2861,12 @@ contains-path@^0.1.0: resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" content-type@~1.0.4: version "1.0.4" @@ -2698,10 +2885,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= +cookie@0.4.0, cookie@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== copy-concurrently@^1.0.0: version "1.0.5" @@ -2720,54 +2907,48 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.0.1.tgz#bff73ba31ca8687431b9c88f78d3362646fb76f0" - integrity sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g== +core-js-compat@^3.0.0, core-js-compat@^3.1.1: + version "3.1.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.4.tgz#e4d0c40fbd01e65b1d457980fe4112d4358a7408" + integrity sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg== dependencies: - browserslist "^4.5.4" - core-js "3.0.1" - core-js-pure "3.0.1" - semver "^6.0.0" + browserslist "^4.6.2" + core-js-pure "3.1.4" + semver "^6.1.1" -core-js-pure@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.0.1.tgz#37358fb0d024e6b86d443d794f4e37e949098cbe" - integrity sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g== +core-js-pure@3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.4.tgz#5fa17dc77002a169a3566cc48dc774d2e13e3769" + integrity sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA== core-js@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738" integrity sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew== -core-js@^2.4.0: - version "2.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" - integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + +core-js@^2.4.0, core-js@^2.6.5: + version "2.6.9" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" + integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" - integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== - dependencies: - is-directory "^0.3.1" - js-yaml "^3.9.0" - parse-json "^4.0.0" - require-from-string "^2.0.1" - -cosmiconfig@^5.0.0, cosmiconfig@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.0.tgz#45038e4d28a7fe787203aede9c25bca4a08b12c8" - integrity sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g== +cosmiconfig@^5.0.0, cosmiconfig@^5.2.0, cosmiconfig@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== dependencies: import-fresh "^2.0.0" is-directory "^0.3.1" - js-yaml "^3.13.0" + js-yaml "^3.13.1" parse-json "^4.0.0" create-ecdh@^4.0.0: @@ -2801,6 +2982,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-react-context@<=0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.2.tgz#9836542f9aaa22868cd7d4a6f82667df38019dca" + integrity sha512-KkpaLARMhsTsgp0d2NA/R94F/eDLbhXERdIq3LvX2biCAXcDvHYoOqHfWCHf1+OLj+HKBotLG3KqaOOf+C1C+A== + dependencies: + fbjs "^0.8.0" + gud "^1.0.0" + cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -2829,6 +3018,14 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +css-animation@^1.3.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/css-animation/-/css-animation-1.5.0.tgz#c96b9097a5ef74a7be8480b45cc44e4ec6ca2bf5" + integrity sha512-hWYoWiOZ7Vr20etzLh3kpWgtC454tW5vn4I6rLANDgpzNSkO7UfOqyCEeaoBSG9CYWQpRkFWTWbWW8o3uZrNLw== + dependencies: + babel-runtime "6.x" + component-classes "^1.2.5" + css-blank-pseudo@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" @@ -3027,22 +3224,22 @@ csso@^3.5.1: dependencies: css-tree "1.0.0-alpha.29" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: - version "0.3.6" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" - integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== +"cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4, cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^1.0.0, cssstyle@^1.1.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.2.tgz#427ea4d585b18624f6fdbf9de7a2a1a3ba713077" - integrity sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow== + version "1.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.3.0.tgz#c36c466f7037fd30f03baa271b65f0f17b50585c" + integrity sha512-wXsoRfsRfsLVNaVzoKdqvEmK/5PFaEXNspVT22Ots6K/cnJdpoDKuQFw+qlMiXnmaif1OgeC466X1zISgAOcGg== dependencies: - cssom "0.3.x" + cssom "~0.3.6" csstype@^2.2.0: - version "2.6.5" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.5.tgz#1cd1dff742ebf4d7c991470ae71e12bb6751e034" - integrity sha512-JsTaiksRsel5n7XwqPAfB0l3TFKdpjW/kgAELf9vrb5adGA7UCPLajKK5s3nFrcFm3Rkyp/Qkgl73ENc1UY3cA== + version "2.6.6" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.6.tgz#c34f8226a94bbb10c32cc0d714afdf942291fc41" + integrity sha512-RpFbQGUE74iyPgvr46U9t1xoQBM8T4BL8SxrN66Le2xYAPSaDJJKeztV3awugusb3g3G9iL8StmkBBXhcbbXhg== cyclist@~0.2.2: version "0.2.2" @@ -3050,9 +3247,9 @@ cyclist@~0.2.2: integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= damerau-levenshtein@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" - integrity sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ= + version "1.0.5" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz#780cf7144eb2e8dbd1c3bb83ae31100ccc31a414" + integrity sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA== dashdash@^1.12.0: version "1.14.1" @@ -3082,6 +3279,13 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -3299,6 +3503,13 @@ dom-converter@^0.2: dependencies: utila "~0.4" +dom-helpers@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" + dom-serializer@0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" @@ -3392,15 +3603,15 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.122, electron-to-chromium@^1.3.127: - version "1.3.133" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.133.tgz#c47639c19b91feee3e22fad69f5556142007008c" - integrity sha512-lyoC8aoqbbDqsprb6aPdt9n3DpOZZzdz/T4IZKsR0/dkZIxnJVUjjcpOSwA66jPRIOyDAamCTAUqweU05kKNSg== +electron-to-chromium@^1.3.122, electron-to-chromium@^1.3.188: + version "1.3.189" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.189.tgz#aa84055eb36d364a68852ad2d25e1315a1d06196" + integrity sha512-C26Kv6/rLNmGDaPR5HORMtTQat9aWBBKjQk9aFtN1Bk6cQBSw8cYdsel/mcrQlNlMMjt1sAKsTYqf77+sK2uTw== elliptic@^6.0.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" - integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== + version "6.5.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" + integrity sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -3425,6 +3636,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -3575,9 +3793,9 @@ eslint-plugin-jsx-a11y@6.2.1: jsx-ast-utils "^2.0.1" eslint-plugin-react-hooks@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.6.0.tgz#348efcda8fb426399ac7b8609607c7b4025a6f5f" - integrity sha512-lHBVRIaz5ibnIgNG07JNiAuBUeKhEf8l4etNx5vfAEwqQ5tcuK3jV9yjmopPgQDagQb7HwIuQVsE3IVcGrRnag== + version "1.6.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.6.1.tgz#3c66a5515ea3e0a221ffc5d4e75c971c217b1a4c" + integrity sha512-wHhmGJyVuijnYIJXZJHDUF2WM+rJYTjulUTqF9k61d3BTk8etydz+M4dXUVH7M76ZRS85rqBTCx0Es/lLsrjnA== eslint-plugin-react@7.12.4: version "7.12.4" @@ -3751,6 +3969,11 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +exenv@^1.2.0, exenv@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" + integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50= + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -3782,38 +4005,38 @@ expect@^24.8.0: jest-regex-util "^24.3.0" express@^4.16.2: - version "4.16.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" - integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== dependencies: - accepts "~1.3.5" + accepts "~1.3.7" array-flatten "1.1.1" - body-parser "1.18.3" - content-disposition "0.5.2" + body-parser "1.19.0" + content-disposition "0.5.3" content-type "~1.0.4" - cookie "0.3.1" + cookie "0.4.0" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.1.1" + finalhandler "~1.1.2" fresh "0.5.2" merge-descriptors "1.0.1" methods "~1.1.2" on-finished "~2.3.0" - parseurl "~1.3.2" + parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" - range-parser "~1.2.0" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" safe-buffer "5.1.2" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -3838,9 +4061,9 @@ extend@^3.0.0, extend@~3.0.2: integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" - integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" @@ -3876,9 +4099,9 @@ fast-deep-equal@^2.0.1: integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-glob@^2.0.2: - version "2.2.6" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295" - integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w== + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" "@nodelib/fs.stat" "^1.1.2" @@ -3905,9 +4128,9 @@ faye-websocket@^0.10.0: websocket-driver ">=0.5.1" faye-websocket@~0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== dependencies: websocket-driver ">=0.5.1" @@ -3918,6 +4141,19 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +fbjs@^0.8.0: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" @@ -3960,17 +4196,17 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" - integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" + parseurl "~1.3.3" + statuses "~1.5.0" unpipe "~1.0.0" find-cache-dir@^0.1.1: @@ -4023,9 +4259,9 @@ flat-cache@^2.0.1: write "1.0.3" flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + version "2.0.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== flatten@^1.0.2: version "1.0.2" @@ -4040,6 +4276,13 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + follow-redirects@^1.0.0: version "1.7.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" @@ -4143,9 +4386,9 @@ fs-extra@^4.0.2: universalify "^0.1.0" fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + version "1.2.6" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" + integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== dependencies: minipass "^2.2.1" @@ -4243,7 +4486,7 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -4301,15 +4544,20 @@ globby@^6.1.0: pinkie-promise "^2.0.0" graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + version "4.2.0" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" + integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= +gud@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== + gzip-size@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" @@ -4429,9 +4677,9 @@ hash.js@^1.0.0, hash.js@^1.0.3: minimalistic-assert "^1.0.1" hast-util-from-parse5@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-5.0.0.tgz#a505a05766e0f96e389bfb0b1dd809eeefcef47b" - integrity sha512-A7ev5OseS/J15214cvDdcI62uwovJO2PB60Xhnq7kaxvvQRFDEccuqbkrFXU03GPBGopdPqlpQBRqIcDS/Fjbg== + version "5.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-5.0.1.tgz#7da8841d707dcf7be73715f7f3b14e021c4e469a" + integrity sha512-UfPzdl6fbxGAxqGYNThRUhRlDYY7sXu6XU9nQeX4fFZtV+IHbyEJtd+DUuwOqNV4z3K05E/1rIkoVr/JHmeWWA== dependencies: ccount "^1.0.3" hastscript "^5.0.0" @@ -4440,14 +4688,14 @@ hast-util-from-parse5@^5.0.0: xtend "^4.0.1" hast-util-parse-selector@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.1.tgz#4ddbae1ae12c124e3eb91b581d2556441766f0ab" - integrity sha512-Xyh0v+nHmQvrOqop2Jqd8gOdyQtE8sIP9IQf7mlVDqp924W4w/8Liuguk2L2qei9hARnQSG2m+wAOCxM7npJVw== + version "2.2.2" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.2.tgz#66aabccb252c47d94975f50a281446955160380b" + integrity sha512-jIMtnzrLTjzqgVEQqPEmwEZV+ea4zHRFTP8Z2Utw0I5HuBOXHzUPPQWr6ouJdJqDKLbFU/OEiYwZ79LalZkmmw== hastscript@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.0.0.tgz#fee10382c1bc4ba3f1be311521d368c047d2c43a" - integrity sha512-xJtuJ8D42Xtq5yJrnDg/KAIxl2cXBXKoiIJwmWX9XMf8113qHTGl/Bf7jEsxmENJ4w6q4Tfl8s/Y6mEZo8x8qw== + version "5.1.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.0.tgz#a19b3cca6a26a2bcd0f1b1eac574af9427c1c7df" + integrity sha512-7mOQX5VfVs/gmrOGlN8/EDfp1GqV6P3gTNVt+KnX4gbYhpASTM8bklFdFQCbFRAadURXAmw0R1QQdBdqp7jswQ== dependencies: comma-separated-tokens "^1.0.0" hast-util-parse-selector "^2.2.0" @@ -4464,6 +4712,18 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== +history@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/history/-/history-4.9.0.tgz#84587c2068039ead8af769e9d6a6860a14fa1bca" + integrity sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^2.2.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^0.4.0" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -4473,6 +4733,13 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" + integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== + dependencies: + react-is "^16.7.0" + hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -4540,7 +4807,7 @@ html-webpack-plugin@4.0.0-beta.5: tapable "^1.1.0" util.promisify "1.0.0" -htmlparser2@^3.3.0: +htmlparser2@^3.3.0, htmlparser2@^3.9.0: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -4557,7 +4824,18 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= @@ -4567,10 +4845,21 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-parser-js@>=0.4.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" - integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= http-proxy-middleware@^0.19.1: version "0.19.1" @@ -4605,14 +4894,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4625,9 +4907,9 @@ icss-replace-symbols@^1.1.0: integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= icss-utils@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.0.tgz#339dbbffb9f8729a243b701e1c29d4cc58c52f0e" - integrity sha512-3DEun4VOeMvSczifM3F2cKQrDQ5Pj6WKhkOq6HD4QTnDUAq8MQRxy5TX6Sy1iY6WPBe4gQ3p5vTECjbIkglkkQ== + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== dependencies: postcss "^7.0.14" @@ -4686,9 +4968,9 @@ import-fresh@^2.0.0: resolve-from "^3.0.0" import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" + integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -4718,11 +5000,6 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4731,16 +5008,21 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" @@ -4766,9 +5048,9 @@ inquirer@6.2.2: through "^2.3.6" inquirer@^6.2.2: - version "6.3.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" - integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== + version "6.5.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" + integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== dependencies: ansi-escapes "^3.2.0" chalk "^2.4.2" @@ -4776,7 +5058,7 @@ inquirer@^6.2.2: cli-width "^2.0.0" external-editor "^3.0.3" figures "^2.0.0" - lodash "^4.17.11" + lodash "^4.17.12" mute-stream "0.0.7" run-async "^2.2.0" rxjs "^6.4.0" @@ -4860,7 +5142,7 @@ is-buffer@^1.0.2, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.0: +is-buffer@^2.0.0, is-buffer@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== @@ -5049,7 +5331,7 @@ is-root@2.0.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.0.0.tgz#838d1e82318144e5a6f77819d90207645acc7019" integrity sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg== -is-stream@^1.1.0: +is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -5083,6 +5365,11 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -5105,6 +5392,14 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -5149,9 +5444,9 @@ istanbul-lib-source-maps@^3.0.1: source-map "^0.6.1" istanbul-reports@^2.1.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.4.tgz#4e0d0ddf0f0ad5b49a314069d31b4f06afe49ad3" - integrity sha512-QCHGyZEK0bfi9GR215QSm+NJwFKEShbtc7tfbUdLAEzn3kKhLDDZqvljn8rPZM9v8CEOhzL1nlYoO4r1ryl67w== + version "2.2.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" + integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== dependencies: handlebars "^4.1.2" @@ -5272,9 +5567,9 @@ jest-get-type@^24.8.0: integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ== jest-haste-map@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.0.tgz#51794182d877b3ddfd6e6d23920e3fe72f305800" - integrity sha512-ZBPRGHdPt1rHajWelXdqygIDpJx8u3xOoLyUBWRW28r3tagrgoepPrzAozW7kW9HrQfhvmiv1tncsxqHJO1onQ== + version "24.8.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.1.tgz#f39cc1d2b1d907e014165b4bd5a957afcb992982" + integrity sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g== dependencies: "@jest/types" "^24.8.0" anymatch "^2.0.0" @@ -5554,7 +5849,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.9.0: +js-yaml@^3.13.0, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -5674,9 +5969,9 @@ json-stringify-safe@~5.0.1: integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json3@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== json5@^1.0.1: version "1.0.1" @@ -5715,11 +6010,12 @@ jsprim@^1.2.2: verror "1.10.0" jsx-ast-utils@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" - integrity sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA== + version "2.2.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" + integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== dependencies: array-includes "^3.0.3" + object.assign "^4.1.0" killable@^1.0.0: version "1.0.1" @@ -5863,11 +6159,35 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lodash._reinterpolate@~3.0.0: +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= + +lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= + +lodash.keys@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -5884,19 +6204,19 @@ lodash.tail@^4.1.1: integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= lodash.template@^4.2.4, lodash.template@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" - integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A= + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== dependencies: - lodash._reinterpolate "~3.0.0" + lodash._reinterpolate "^3.0.0" lodash.templatesettings "^4.0.0" lodash.templatesettings@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" - integrity sha1-K01OlbpEDZFf8IvImeRVNmZxMxY= + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== dependencies: - lodash._reinterpolate "~3.0.0" + lodash._reinterpolate "^3.0.0" lodash.unescape@4.0.1: version "4.0.1" @@ -5908,17 +6228,22 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.5: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== +"lodash@>=3.5 <5", lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.5: + version "4.17.14" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" + integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== loglevel@^1.4.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" - integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= + version "1.6.3" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280" + integrity sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA== -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +lokijs@^1.5.6: + version "1.5.6" + resolved "https://registry.yarnpkg.com/lokijs/-/lokijs-1.5.6.tgz#6de6b8c3ff7a972fd0104169f81e7ddc244c029f" + integrity sha512-xJoDXy8TASTjmXMKr4F8vvNUCu4dqlwY5gmn0g5BajGt1GM3goDCafNiGAh/sfrWgkfWu1J4OfsxWm8yrWweJA== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -6087,15 +6412,15 @@ mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.40.0" -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.0.3, mime@^2.3.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.2.tgz#ce5229a5e99ffc313abac806b482c10e7ba6ac78" - integrity sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg== +mime@^2.0.3, mime@^2.4.2: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== mimic-fn@^1.0.0: version "1.2.0" @@ -6107,6 +6432,15 @@ mimic-fn@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mini-create-react-context@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz#79fc598f283dd623da8e088b05db8cddab250189" + integrity sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw== + dependencies: + "@babel/runtime" "^7.4.0" + gud "^1.0.0" + tiny-warning "^1.0.2" + mini-css-extract-plugin@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0" @@ -6148,7 +6482,7 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.4: +minipass@^2.2.1, minipass@^2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== @@ -6156,7 +6490,7 @@ minipass@^2.2.1, minipass@^2.3.4: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.1.1: +minizlib@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== @@ -6180,9 +6514,9 @@ mississippi@^3.0.0: through2 "^2.0.0" mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" @@ -6202,6 +6536,11 @@ mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@ dependencies: minimist "0.0.8" +moment@^2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -6219,11 +6558,16 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" @@ -6243,9 +6587,9 @@ mute-stream@0.0.7: integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= nan@^2.12.1: - version "2.13.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" - integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== nanomatch@^1.2.9: version "1.2.13" @@ -6270,11 +6614,11 @@ natural-compare@^1.4.0: integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= needle@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.1.tgz#d272f2f4034afb9c4c9ab1379aabc17fc85c9388" - integrity sha512-CaLXV3W8Vnbps8ZANqDGz7j4x7Yj1LW4TWF/TQuDfj7Cfx4nAPTvw98qgTevtto1oHDrh3pQkaODbqupXlsWTg== + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== dependencies: - debug "^4.1.0" + debug "^3.2.6" iconv-lite "^0.4.4" sax "^1.2.4" @@ -6284,9 +6628,9 @@ negotiator@0.6.2: integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== neo-async@^2.5.0, neo-async@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" - integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== nice-try@^1.0.4: version "1.0.5" @@ -6300,6 +6644,14 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-forge@0.7.5: version "0.7.5" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" @@ -6311,9 +6663,9 @@ node-int64@^0.4.0: integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= node-libs-browser@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77" - integrity sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA== + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" @@ -6325,7 +6677,7 @@ node-libs-browser@^2.0.0: events "^3.0.0" https-browserify "^1.0.0" os-browserify "^0.3.0" - path-browserify "0.0.0" + path-browserify "0.0.1" process "^0.11.10" punycode "^1.2.4" querystring-es3 "^0.2.0" @@ -6337,7 +6689,7 @@ node-libs-browser@^2.0.0: tty-browserify "0.0.0" url "^0.11.0" util "^0.11.0" - vm-browserify "0.0.4" + vm-browserify "^1.0.1" node-modules-regexp@^1.0.0: version "1.0.0" @@ -6371,10 +6723,10 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.13, node-releases@^1.1.17: - version "1.1.18" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.18.tgz#cc98fd75598a324a77188ebddf6650e9cbd8b1d5" - integrity sha512-/mnVgm6u/8OwlIsoyRXtTI0RfQcxZoAZbdwyXap0EeWwcOpDDymyCHM2/aR9XKmHXrvizHoPAOs0pcbiJ6RUaA== +node-releases@^1.1.13, node-releases@^1.1.25: + version "1.1.25" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.25.tgz#0c2d7dbc7fed30fbe02a9ee3007b8c90bf0133d3" + integrity sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ== dependencies: semver "^5.3.0" @@ -6424,9 +6776,9 @@ npm-bundled@^1.0.1: integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== npm-packlist@^1.1.6: - version "1.4.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" - integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== + version "1.4.4" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" + integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -6475,7 +6827,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@4.1.1, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@4.1.1, object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -6798,7 +7150,7 @@ parse5@5.1.0, parse5@^5.0.0: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== -parseurl@~1.3.2: +parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -6808,10 +7160,10 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== path-dirname@^1.0.0: version "1.0.2" @@ -6855,6 +7207,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= + dependencies: + isarray "0.0.1" + path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -6959,6 +7318,11 @@ pnp-webpack-plugin@1.2.1: dependencies: ts-pnp "^1.0.0" +popper.js@^1.14.4: + version "1.15.0" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2" + integrity sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA== + portfinder@^1.0.9: version "1.0.20" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" @@ -7067,11 +7431,11 @@ postcss-custom-media@^7.0.7: postcss "^7.0.14" postcss-custom-properties@^8.0.9: - version "8.0.10" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.10.tgz#e8dc969e1e15c555f0b836b7f278ef47e3cdeaff" - integrity sha512-GDL0dyd7++goDR4SSasYdRNNvp4Gqy1XMzcCnTijiph7VB27XXpJ8bW/AI0i2VSBZ55TpdGhMr37kMSpRfYD0Q== + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== dependencies: - postcss "^7.0.14" + postcss "^7.0.17" postcss-values-parser "^2.0.1" postcss-custom-selectors@^5.1.2: @@ -7195,11 +7559,11 @@ postcss-lab-function@^2.0.1: postcss-values-parser "^2.0.0" postcss-load-config@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" - integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== dependencies: - cosmiconfig "^4.0.0" + cosmiconfig "^5.0.0" import-cwd "^2.0.0" postcss-loader@3.0.0: @@ -7601,6 +7965,11 @@ postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== +postcss-value-parser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.0.tgz#99a983d365f7b2ad8d0f9b8c3094926eab4b936d" + integrity sha512-ESPktioptiSUchCKgggAkzdmkgzKfmp0EU8jXH+5kbIUB+unr0Y4CY9SRMvibuvYUBjNh1ACLbxqYNpdTQOteQ== + postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" @@ -7610,10 +7979,10 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2" - integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA== +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" + integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -7653,9 +8022,9 @@ private@^0.1.6: integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@^0.11.10: version "0.11.10" @@ -7679,15 +8048,30 @@ promise@8.0.2: dependencies: asap "~2.0.6" +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + prompts@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.0.4.tgz#179f9d4db3128b9933aa35f93a800d8fce76a682" - integrity sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA== + version "2.1.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz#bf90bc71f6065d255ea2bdc0fe6520485c1b45db" + integrity sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg== dependencies: kleur "^3.0.2" sisteransi "^1.0.0" -prop-types@^15.6.2: +prop-types-extra@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.0.tgz#32609910ea2dcf190366bacd3490d5a6412a605f" + integrity sha512-QFyuDxvMipmIVKD2TwxLVPzMnO4e5oOf1vr3tJIomL8E7d0lr6phTHd5nkPhFIzTD1idBLLEPeylL9g+rrTzRg== + dependencies: + react-is "^16.3.2" + warning "^3.0.0" + +prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -7697,13 +8081,13 @@ prop-types@^15.6.2: react-is "^16.8.1" property-information@^5.0.0, property-information@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.0.1.tgz#c3b09f4f5750b1634c0b24205adbf78f18bdf94f" - integrity sha512-nAtBDVeSwFM3Ot/YxT7s4NqZmqXI7lLzf46BThvotEtYf2uk2yH0ACYuWQkJ7gxKs49PPtKVY0UlDGkyN9aJlw== + version "5.1.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.1.0.tgz#e4755eee5319f03f7f6f5a9bc1a6a7fea6609e2c" + integrity sha512-tODH6R3+SwTkAQckSp2S9xyYX8dEKYkeXw+4TmJzTxnNzd6mQPu1OD4f9zPrvw/Rm4wpPgI+Zp63mNSGNzUgHg== dependencies: xtend "^4.0.1" -proxy-addr@~2.0.4: +proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== @@ -7717,9 +8101,9 @@ prr@~1.0.1: integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= psl@^1.1.24, psl@^1.1.28: - version "1.1.31" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" - integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== + version "1.2.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.2.0.tgz#df12b5b1b3a30f51c329eacbdef98f3a6e136dc6" + integrity sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA== public-encrypt@^4.0.0: version "4.0.3" @@ -7778,7 +8162,12 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.5.2, qs@~6.5.2: +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== @@ -7798,7 +8187,7 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== -raf@3.4.1: +raf@3.4.1, raf@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== @@ -7820,21 +8209,58 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.0.3, range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" unpipe "1.0.0" +rc-animate@^2.6.0: + version "2.9.1" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.9.1.tgz#dfbc7fd4dccd21bd865820316a34c6fa67f41066" + integrity sha512-QTLxb0vAAR7BTwIXQTZGLjtvU8yHjUFhMe1arrFAQMd4/dAKaDzFeXfoYVcn14w518QyczRT+XBCfZbJNV5wvQ== + dependencies: + babel-runtime "6.x" + classnames "^2.2.6" + css-animation "^1.3.2" + prop-types "15.x" + raf "^3.4.0" + rc-util "^4.8.0" + react-lifecycles-compat "^3.0.4" + +rc-tree@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-2.1.0.tgz#ea43c246cf9038fa16be5d08a08c73a38aa6aa61" + integrity sha512-DyHG/W9rW8cYfBrqVrZUep5yt30scyBuYvFnGrU32bh1DUj8GKqOcdoRBaIiOBYurmIiJ02rq6BeBbvVtVp0mw== + dependencies: + babel-runtime "^6.23.0" + classnames "2.x" + prop-types "^15.5.8" + rc-animate "^2.6.0" + rc-util "^4.5.1" + react-lifecycles-compat "^3.0.4" + warning "^4.0.3" + +rc-util@^4.5.1, rc-util@^4.8.0: + version "4.8.1" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.8.1.tgz#1ca4faba70b2915e5511fc732805294c38019cee" + integrity sha512-siJw/pPunmiQ/YVp/SXNuri3907+GgAmw8TeMVGv9H2LhE/0NlKonuU5CBwPeLQyKdKmJro4EUitEpekwP5osA== + dependencies: + add-dom-event-listener "^1.1.0" + babel-runtime "6.x" + prop-types "^15.5.10" + react-lifecycles-compat "^3.0.4" + shallowequal "^0.2.2" + rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -7857,6 +8283,20 @@ react-app-polyfill@^1.0.1: regenerator-runtime "0.13.2" whatwg-fetch "3.0.0" +react-context-toolbox@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/react-context-toolbox/-/react-context-toolbox-2.0.2.tgz#35637287cb23f801e6ed802c2bb7a97e1f04e3fb" + integrity sha512-tY4j0imkYC3n5ZlYSgFkaw7fmlCp3IoQQ6DxpqeNHzcD0hf+6V+/HeJxviLUZ1Rv1Yn3N3xyO2EhkkZwHn0m1A== + +react-cookie@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/react-cookie/-/react-cookie-4.0.1.tgz#c21b2c30a5cacf320b45338fa3dcaf76d9fe9c2c" + integrity sha512-h61qAtSXvfjNa81h3XCFdFoyFaF+nb7gjK0cxQuTiCPMPAe50D950FjLCFhaIfSpAesQFAmkxf5XFpWoEVBDAA== + dependencies: + "@types/hoist-non-react-statics" "^3.0.1" + hoist-non-react-statics "^3.0.0" + universal-cookie "^4.0.0" + react-dev-utils@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.0.1.tgz#5c03d85a0b2537d0c46af7165c24a7dfb274bef2" @@ -7888,7 +8328,7 @@ react-dev-utils@^9.0.1: strip-ansi "5.2.0" text-table "0.2.0" -react-dom@16.8.6: +react-dom@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== @@ -7903,11 +8343,123 @@ react-error-overlay@^5.1.6: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.6.tgz#0cd73407c5d141f9638ae1e0c63e7b2bf7e9929d" integrity sha512-X1Y+0jR47ImDVr54Ab6V9eGk0Hnu7fVWGeHQSOXHf/C2pF9c6uy3gef8QUeuUiWlNb0i08InPSE5a/KJzNzw1Q== -react-is@^16.8.1, react-is@^16.8.4: +react-fast-compare@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" + integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== + +react-ga@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/react-ga/-/react-ga-2.6.0.tgz#c3fe830ead2ad25117e1d33280d9698de9b28496" + integrity sha512-GWHBWZDFjDGMkIk1LzroIn0mNTygKw3adXuqvGvheFZvlbpqMPbHsQsTdQBIxRRdXGQM/Zq+dQLRPKbwIHMTaw== + +react-helmet@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-5.2.1.tgz#16a7192fdd09951f8e0fe22ffccbf9bb3e591ffa" + integrity sha512-CnwD822LU8NDBnjCpZ4ySh8L6HYyngViTZLfBBb3NjtrpN8m49clH8hidHouq20I51Y6TpCTISCBbqiY5GamwA== + dependencies: + object-assign "^4.1.1" + prop-types "^15.5.4" + react-fast-compare "^2.0.2" + react-side-effect "^1.1.0" + +react-html-parser@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/react-html-parser/-/react-html-parser-2.0.2.tgz#6dbe1ddd2cebc1b34ca15215158021db5fc5685e" + integrity sha512-XeerLwCVjTs3njZcgCOeDUqLgNIt/t+6Jgi5/qPsO/krUWl76kWKXMeVs2LhY2gwM6X378DkhLjur0zUQdpz0g== + dependencies: + htmlparser2 "^3.9.0" + +react-image-lightbox@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/react-image-lightbox/-/react-image-lightbox-5.1.0.tgz#b47b904b027c918acdd9efa94dc0a0ddd8125c86" + integrity sha512-R46QvffoDBscLQgTl4s3kFxVbnP7a+nIh7AXJNS0EXVeDaa6zKDKtIT+jFeEvs+F9oUHtZfenG1NHhTkO4hEOA== + dependencies: + prop-types "^15.6.2" + react-modal "^3.6.1" + +react-is@^16.3.2, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: version "16.8.6" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== +react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-modal@^3.6.1: + version "3.8.2" + resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.8.2.tgz#c47397a8602beb7aae0059a3b404f20416241d03" + integrity sha512-wxNk94wy/DMh2LyJa8K+LyOQDhQfhKuBrZ4SxS091p75cpW+STfY+9GpAuvl6P6Yt2r/+wxYH8Z3G5Ww/L8Tiw== + dependencies: + exenv "^1.2.0" + prop-types "^15.5.10" + react-lifecycles-compat "^3.0.0" + warning "^4.0.3" + +react-overlays@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-1.2.0.tgz#205368eeb0a5fb0b7f9b717fa7a12d518500abdb" + integrity sha512-i/FCV8wR6aRaI+Kz/dpJhOdyx+ah2tN1RhT9InPrexyC4uzf3N4bNayFTGtUeQVacj57j1Mqh1CwV60/5153Iw== + dependencies: + classnames "^2.2.6" + dom-helpers "^3.4.0" + prop-types "^15.6.2" + prop-types-extra "^1.1.0" + react-context-toolbox "^2.0.2" + react-popper "^1.3.2" + uncontrollable "^6.0.0" + warning "^4.0.2" + +react-popper@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.3.tgz#2c6cef7515a991256b4f0536cd4bdcb58a7b6af6" + integrity sha512-ynMZBPkXONPc5K4P5yFWgZx5JGAUIP3pGGLNs58cfAPgK67olx7fmLp+AdpZ0+GoQ+ieFDa/z4cdV6u7sioH6w== + dependencies: + "@babel/runtime" "^7.1.2" + create-react-context "<=0.2.2" + popper.js "^1.14.4" + prop-types "^15.6.1" + typed-styles "^0.0.7" + warning "^4.0.2" + +react-router-dom@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.0.1.tgz#ee66f4a5d18b6089c361958e443489d6bab714be" + integrity sha512-zaVHSy7NN0G91/Bz9GD4owex5+eop+KvgbxXsP/O+iW1/Ln+BrJ8QiIR5a6xNPtrdTvLkxqlDClx13QO1uB8CA== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.0.1" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router-hash-link@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/react-router-hash-link/-/react-router-hash-link-1.2.1.tgz#da3b6384e5bff90e9b2172d2e689a994646f2f45" + integrity sha512-ddkCtmk/JwMmuU087TGShQHYyNjsJ+/9CTyuVdvvKf6ACgqk2Ma9ndX2xogo7WWmyq9AjuziBm5bmJ12zBxtsQ== + dependencies: + prop-types "^15.6.0" + +react-router@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.0.1.tgz#04ee77df1d1ab6cb8939f9f01ad5702dbadb8b0f" + integrity sha512-EM7suCPNKb1NxcTZ2LEOWFtQBQRQXecLxVpdsP4DW4PbbqYWeRiLyV/Tt1SdCrvT2jcyXAXmVTmzvSzrPR63Bg== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.3.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + react-scripts@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.0.1.tgz#e5565350d8069cc9966b5998d3fe3befe3d243ac" @@ -7968,7 +8520,20 @@ react-scripts@3.0.1: optionalDependencies: fsevents "2.0.6" -react@16.8.6: +react-side-effect@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-1.1.5.tgz#f26059e50ed9c626d91d661b9f3c8bb38cd0ff2d" + integrity sha512-Z2ZJE4p/jIfvUpiUMRydEVpQRf2f8GMHczT6qLcARmX7QRb28JDBTpnM2g/i5y/p7ZDEXYGHWg0RbhikE+hJRw== + dependencies: + exenv "^1.2.1" + shallowequal "^1.0.1" + +react-spinner-material@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/react-spinner-material/-/react-spinner-material-1.1.1.tgz#b996d893251dd82ec12e21e03a28af100df05cab" + integrity sha512-zoCsu4hmL2Z6Ihm6aI40+FKUUQ6ckMK2FvAwYpHd9xdc7Q9V4OiDlbDfH5XgxZUZuB/tAjvDaC+dbRexEw2D2A== + +react@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== @@ -8026,9 +8591,9 @@ read-pkg@^3.0.0: util-deprecate "~1.0.1" readable-stream@^3.0.6, readable-stream@^3.1.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9" - integrity sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw== + version "3.4.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -8058,9 +8623,9 @@ recursive-readdir@2.2.2: minimatch "3.0.4" regenerate-unicode-properties@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz#7b38faa296252376d363558cfbda90c9ce709662" - integrity sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ== + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== dependencies: regenerate "^1.4.0" @@ -8079,10 +8644,10 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-transform@^0.13.4: - version "0.13.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb" - integrity sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A== +regenerator-transform@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" + integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w== dependencies: private "^0.1.6" @@ -8094,10 +8659,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp-tree@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.6.tgz#84900fa12fdf428a2ac25f04300382a7c0148479" - integrity sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w== +regexp-tree@^0.1.6: + version "0.1.11" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.11.tgz#c9c7f00fcf722e0a56c7390983a7a63dd6c272f3" + integrity sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg== regexpp@^2.0.1: version "2.0.1" @@ -8129,9 +8694,9 @@ regjsparser@^0.6.0: jsesc "~0.5.0" rehype-parse@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-6.0.0.tgz#f681555f2598165bee2c778b39f9073d17b16bca" - integrity sha512-V2OjMD0xcSt39G4uRdMTqDXXm6HwkUbLMDayYKA/d037j8/OtVSQ+tqKwYWOuyBeoCs/3clXRe30VUjeMDTBSA== + version "6.0.1" + resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-6.0.1.tgz#a5401d7f4144d5e17cbb69be11f05a2a7ba87e27" + integrity sha512-FrGSbOzcGxIvWty1qHjKTvHT4WBTt7C6JLs65EkvFPa7ZKraSmsoDDj6al1eBxaXS1t/kiGdPYazUe58Mgflgw== dependencies: hast-util-from-parse5 "^5.0.0" parse5 "^5.0.0" @@ -8220,11 +8785,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -8262,6 +8822,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-pathname@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" + integrity sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -8280,9 +8845,9 @@ resolve@1.10.0: path-parse "^1.0.6" resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18" - integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA== + version "1.11.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" + integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== dependencies: path-parse "^1.0.6" @@ -8309,7 +8874,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -8325,9 +8890,9 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: inherits "^2.0.1" rsvp@^4.8.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911" - integrity sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA== + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-async@^2.2.0: version "2.3.0" @@ -8344,17 +8909,22 @@ run-queue@^1.0.0, run-queue@^1.0.3: aproba "^1.1.1" rxjs@^6.4.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.1.tgz#f7a005a9386361921b8524f38f54cbf80e5d08f4" - integrity sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg== + version "6.5.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" + integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== dependencies: tslib "^1.9.0" -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -8400,11 +8970,11 @@ sax@^1.2.4, sax@~1.2.4: integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== saxes@^3.1.9: - version "3.1.9" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.9.tgz#c1c197cd54956d88c09f960254b999e192d7058b" - integrity sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw== + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== dependencies: - xmlchars "^1.3.1" + xmlchars "^2.1.1" scheduler@^0.13.6: version "0.13.6" @@ -8445,15 +9015,20 @@ semver@5.5.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@6.0.0, semver@^6.0.0: +semver@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== +semver@^6.0.0, semver@^6.1.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" + integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== dependencies: debug "2.6.9" depd "~1.1.2" @@ -8462,14 +9037,14 @@ send@0.16.2: escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" + range-parser "~1.2.1" + statuses "~1.5.0" -serialize-javascript@^1.4.0: +serialize-javascript@^1.4.0, serialize-javascript@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== @@ -8487,42 +9062,32 @@ serve-index@^1.7.2: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" + parseurl "~1.3.3" + send "0.17.1" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= @@ -8532,6 +9097,11 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -8559,6 +9129,18 @@ shallow-clone@^1.0.0: kind-of "^5.0.0" mixin-object "^2.0.1" +shallowequal@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-0.2.2.tgz#1e32fd5bcab6ad688a4812cb0cc04efc75c7014e" + integrity sha1-HjL9W8q2rWiKSBLLDMBO/HXHAU4= + dependencies: + lodash.keys "^3.1.2" + +shallowequal@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -8599,9 +9181,9 @@ simple-swizzle@^0.2.2: is-arrayish "^0.3.1" sisteransi@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" - integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== + version "1.0.2" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.2.tgz#ec57d64b6f25c4f26c0e2c7dd23f2d7f12f7e418" + integrity sha512-ZcYcZcT69nSLAR2oLN2JwNmLkJEKGooFMCdvOkFrToUt/WfcRWqhIg4P4KwY4dmLbuyXIx4o4YmPsvMRJYJd/w== slash@^1.0.0: version "1.0.0" @@ -8688,7 +9270,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@~0.5.10: +source-map-support@^0.5.6, source-map-support@~0.5.10, source-map-support@~0.5.12: version "0.5.12" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== @@ -8712,9 +9294,9 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== space-separated-tokens@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.3.tgz#bc6500e116d13285a94b59b58c44c7f045fe6124" - integrity sha512-/M5RAdBuQlSDPNfA5ube+fkHbHyY08pMuADLmsAQURzo56w90r681oiOoz3o3ZQyWdSeNucpTFjL+Ggd5qui3w== + version "1.1.4" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.4.tgz#27910835ae00d0adfcdbd0ad7e611fb9544351fa" + integrity sha512-UyhMSmeIqZrQn2UdjYpxEkwY9JUrn8pP+7L4f91zRzOQuI8MF1FGLfYU9DKCYeLdo7LXMxwrX5zKFy7eeeVHuA== spdx-correct@^3.0.0: version "3.1.0" @@ -8738,9 +9320,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" - integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== spdy-transport@^3.0.0: version "3.0.0" @@ -8817,16 +9399,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2": +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== - stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" @@ -9001,7 +9578,7 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -svgo@^1.0.0, svgo@^1.2.1: +svgo@^1.0.0, svgo@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316" integrity sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA== @@ -9022,14 +9599,14 @@ svgo@^1.0.0, svgo@^1.2.1: util.promisify "~1.0.0" symbol-tree@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== table@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" - integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== + version "5.4.1" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.1.tgz#0691ae2ebe8259858efb63e550b6d5f9300171e8" + integrity sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w== dependencies: ajv "^6.9.1" lodash "^4.17.11" @@ -9042,19 +9619,19 @@ tapable@^1.0.0, tapable@^1.1.0: integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== + version "4.4.10" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" + integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" + minipass "^2.3.5" + minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" - yallist "^3.0.2" + yallist "^3.0.3" -terser-webpack-plugin@1.2.3, terser-webpack-plugin@^1.1.0: +terser-webpack-plugin@1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz#3f98bc902fac3e5d0de730869f50668561262ec8" integrity sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA== @@ -9068,6 +9645,22 @@ terser-webpack-plugin@1.2.3, terser-webpack-plugin@^1.1.0: webpack-sources "^1.1.0" worker-farm "^1.5.2" +terser-webpack-plugin@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4" + integrity sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg== + dependencies: + cacache "^11.3.2" + find-cache-dir "^2.0.0" + is-wsl "^1.1.0" + loader-utils "^1.2.3" + schema-utils "^1.0.0" + serialize-javascript "^1.7.0" + source-map "^0.6.1" + terser "^4.0.0" + webpack-sources "^1.3.0" + worker-farm "^1.7.0" + terser@^3.16.1: version "3.17.0" resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" @@ -9077,6 +9670,15 @@ terser@^3.16.1: source-map "~0.6.1" source-map-support "~0.5.10" +terser@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.2.tgz#b2656c8a506f7ce805a3f300a2ff48db022fa391" + integrity sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -9127,6 +9729,16 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= +tiny-invariant@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.5.tgz#0d198cf4f50ba34b28a16d8b28dcc4b02b813c44" + integrity sha512-BziszNEQNwtyMS9OVJia2LK9N9b6VJ35kBrvhDDDpr4hreLYqhCie15dB35uZMdqv9ZTQ55GHQtkz2FnleTHIA== + +tiny-warning@^1.0.0, tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -9174,6 +9786,11 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -9203,9 +9820,9 @@ trim-right@^1.0.1: integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= trough@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.3.tgz#e29bd1614c6458d44869fc28b255ab7857ef7c24" - integrity sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw== + version "1.0.4" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.4.tgz#3b52b1f13924f460c3fbfd0df69b587dbcbc762e" + integrity sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q== ts-pnp@1.1.2, ts-pnp@^1.0.0: version "1.1.2" @@ -9213,14 +9830,14 @@ ts-pnp@1.1.2, ts-pnp@^1.0.0: integrity sha512-f5Knjh7XCyRIzoC/z1Su1yLLRrPrFCgtUAh/9fCSP6NKbATwpOL1+idQVXQokK9GRFURn/jYPGPfegIctwunoA== tslib@^1.8.1, tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== tsutils@^3.7.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.10.0.tgz#6f1c95c94606e098592b0dff06590cf9659227d6" - integrity sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q== + version "3.14.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.14.0.tgz#bf8d5a7bae5369331fa0f2b0a5a10bd7f7396c77" + integrity sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw== dependencies: tslib "^1.8.1" @@ -9248,7 +9865,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-is@~1.6.16: +type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -9256,15 +9873,25 @@ type-is@~1.6.16: media-typer "0.3.0" mime-types "~2.1.24" +typed-styles@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" + integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c" - integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA== +typescript@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" + integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== + +ua-parser-js@^0.7.18: + version "0.7.20" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" + integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw== uglify-js@3.4.x: version "3.4.10" @@ -9275,13 +9902,21 @@ uglify-js@3.4.x: source-map "~0.6.1" uglify-js@^3.1.4: - version "3.5.11" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.11.tgz#833442c0aa29b3a7d34344c7c63adaa3f3504f6a" - integrity sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg== + version "3.6.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" + integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== dependencies: commander "~2.20.0" source-map "~0.6.1" +uncontrollable@^6.0.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-6.2.3.tgz#e7dba0d746e075122ed178f27ad2354d343196c7" + integrity sha512-VgOAoBU2ptCL2bfTG2Mra0I8i1u6Aq84AFonD5tmCAYSfs3hWvr2Rlw0q2ntoxXTHjcQOmZOh3FKaN+UZVyREQ== + dependencies: + "@babel/runtime" "^7.4.5" + invariant "^2.2.4" + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -9320,14 +9955,14 @@ unified@^7.1.0: x-is-string "^0.1.0" union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" get-value "^2.0.6" is-extendable "^0.1.1" - set-value "^0.4.3" + set-value "^2.0.1" uniq@^1.0.1: version "1.0.1" @@ -9347,9 +9982,9 @@ unique-filename@^1.1.1: unique-slug "^2.0.0" unique-slug@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" - integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" @@ -9359,12 +9994,22 @@ unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== unist-util-stringify-position@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.0.tgz#4c452c0dbcbc509f7bcd366e9a8afd646f9d51ae" - integrity sha512-Uz5negUTrf9zm2ZT2Z9kdOL7Mr7FJLyq3ByqagUi7QZRVK1HnspVazvSqwHt73jj7APHtpuJ4K110Jm8O6/elw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.1.tgz#de2a2bc8d3febfa606652673a91455b6a36fb9f3" + integrity sha512-Zqlf6+FRI39Bah8Q6ZnNGrEHUhwJOkHde2MHVk96lLyftfJJckaPslKgzhVcviXj8KcE9UJM9F+a4JEiBUTYgA== dependencies: "@types/unist" "^2.0.2" +universal-cookie@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/universal-cookie/-/universal-cookie-4.0.2.tgz#c3398a64c72ff0c31fecb1ac4966c424e8669c6d" + integrity sha512-n14lhA//lQeYRweP9j9uXsshN9Cs4LunVSnvAGmnA69SofwsjpUU03geaCaPC9LlsH2rkBy99o3zxQyVOldGvA== + dependencies: + "@types/cookie" "^0.3.3" + "@types/object-assign" "^4.0.30" + cookie "^0.4.0" + object-assign "^4.1.1" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -9490,15 +10135,20 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-equal@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" + integrity sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vendors@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" - integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" + integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== verror@1.10.0: version "1.10.0" @@ -9517,12 +10167,12 @@ vfile-message@^1.0.0: unist-util-stringify-position "^1.1.1" vfile-message@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.0.tgz#750bbb86fe545988a67e899b329bbcabb73edef6" - integrity sha512-YS6qg6UpBfIeiO+6XlhPOuJaoLvt1Y9g2cmlwqhBOOU0XRV8j5RLeoz72t6PWLvNXq3EBG1fQ05wNPrUoz0deQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.1.tgz#951881861c22fc1eb39f873c0b93e336a64e8f6d" + integrity sha512-KtasSV+uVU7RWhUn4Lw+wW1Zl/nW8JWx7JCPps10Y9JRRIDeDXf8wfBLoOSsJLyo27DqMyAi54C6Jf/d6Kr2Bw== dependencies: "@types/unist" "^2.0.2" - unist-util-stringify-position "^1.1.1" + unist-util-stringify-position "^2.0.0" vfile@^3.0.0: version "3.0.1" @@ -9534,23 +10184,21 @@ vfile@^3.0.0: unist-util-stringify-position "^1.0.0" vfile-message "^1.0.0" -vfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.0.0.tgz#ebf3b48af9fcde524d5e08d5f75812058a5f78ad" - integrity sha512-WMNeHy5djSl895BqE86D7WqA0Ie5fAIeGCa7V1EqiXyJg5LaGch2SUaZueok5abYQGH6mXEAsZ45jkoILIOlyA== +vfile@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.0.1.tgz#fc3d43a1c71916034216bf65926d5ee3c64ed60c" + integrity sha512-lRHFCuC4SQBFr7Uq91oJDJxlnftoTLQ7eKIpMdubhYcVMho4781a8MWXLy3qZrZ0/STD1kRiKc0cQOHm4OkPeA== dependencies: - "@types/unist" "^2.0.2" + "@types/unist" "^2.0.0" is-buffer "^2.0.0" replace-ext "1.0.0" unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= - dependencies: - indexof "0.0.1" +vm-browserify@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" + integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== w3c-hr-time@^1.0.1: version "1.0.1" @@ -9575,6 +10223,20 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= + dependencies: + loose-envify "^1.0.0" + +warning@^4.0.2, warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + watchpack@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" @@ -9602,13 +10264,13 @@ webidl-conversions@^4.0.2: integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webpack-dev-middleware@^3.5.1: - version "3.6.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.6.2.tgz#f37a27ad7c09cd7dc67cd97655413abaa1f55942" - integrity sha512-A47I5SX60IkHrMmZUlB0ZKSWi29TZTcPz7cha1Z75yYOsgWh/1AcPmQEbC8ZIbU3A1ytSv1PMU0PyPz2Lmz2jg== + version "3.7.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" + integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== dependencies: memory-fs "^0.4.1" - mime "^2.3.1" - range-parser "^1.0.3" + mime "^2.4.2" + range-parser "^1.2.1" webpack-log "^2.0.0" webpack-dev-server@3.2.1: @@ -9703,11 +10365,12 @@ webpack@4.29.6: webpack-sources "^1.3.0" websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= + version "0.7.3" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== dependencies: - http-parser-js ">=0.4.0" + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" websocket-extensions ">=0.1.1" websocket-extensions@>=0.1.1: @@ -9722,7 +10385,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@3.0.0: +whatwg-fetch@3.0.0, whatwg-fetch@>=0.10.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== @@ -9914,7 +10577,7 @@ workbox-window@^4.3.1: dependencies: workbox-core "^4.3.1" -worker-farm@^1.5.2: +worker-farm@^1.5.2, worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== @@ -9981,27 +10644,34 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-1.3.1.tgz#1dda035f833dbb4f86a0c28eaa6ca769214793cf" - integrity sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw== +xmlchars@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.1.1.tgz#ef1a81c05bff629c2280007f12daca21bd6f6c93" + integrity sha512-7hew1RPJ1iIuje/Y01bGD/mXokXxegAgVS+e+E0wSi2ILHQkYAH1+JXARwTjZSM4Z4Z+c73aKspEcqj+zPPL/w== xregexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== +xregexp@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.2.4.tgz#02a4aea056d65a42632c02f0233eab8e4d7e57ed" + integrity sha512-sO0bYdYeJAJBcJA8g7MJJX7UrOZIfJPd8U2SC7B2Dd/J24U0aQNoGp33shCaBSWeb0rD5rh6VBUIXOkGal1TZA== + dependencies: + "@babel/runtime-corejs2" "^7.2.0" + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^3.0.0, yallist@^3.0.2: +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==

      *Xi~*iYaX+z_zipRC*mBZzL>_I?-pX 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