From cea852db48c1ec37a3ae63dc0a5633eab4ae8380 Mon Sep 17 00:00:00 2001 From: Jacson Passold Date: Mon, 23 Apr 2018 18:01:06 -0300 Subject: [PATCH 01/58] mapper options to metadata and right metadata value to Value mapper --- src/exposers/class-tainacan-exposers.php | 2 +- src/exposers/mappers/class-tainacan-dublin-core.php | 2 +- src/exposers/mappers/class-tainacan-mapper.php | 2 +- src/exposers/mappers/class-tainacan-value.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/exposers/class-tainacan-exposers.php b/src/exposers/class-tainacan-exposers.php index 8dbe3f406..9533c71a8 100644 --- a/src/exposers/class-tainacan-exposers.php +++ b/src/exposers/class-tainacan-exposers.php @@ -118,7 +118,7 @@ class Exposers { $ret = $item_arr; $field_mapping = $item_arr['field']['exposer_mapping']; if(array_key_exists($mapper->slug, $field_mapping)) { - if(is_array($mapper->options) && !array_key_exists( $field_mapping[$mapper->slug], $mapper->options) ) { + if(is_array($mapper->metadata) && !array_key_exists( $field_mapping[$mapper->slug], $mapper->metadata) ) { throw new \Exception('Invalid Mapper Option'); } $ret = [$mapper->prefix.$field_mapping[$mapper->slug].$mapper->sufix => $item_arr['value']]; //TODO Validate option diff --git a/src/exposers/mappers/class-tainacan-dublin-core.php b/src/exposers/mappers/class-tainacan-dublin-core.php index 49043bfe7..6c3682a5d 100644 --- a/src/exposers/mappers/class-tainacan-dublin-core.php +++ b/src/exposers/mappers/class-tainacan-dublin-core.php @@ -9,7 +9,7 @@ class Dublin_Core extends Mapper { public $context_url = 'http://dublincore.org/documents/dcmi-terms/'; public $header = ''; public $prefix = 'dc:'; - public $options = [ + public $metadata = [ 'contributor' => [ 'URI' => 'http://purl.org/dc/elements/1.1/contributor', 'label' => 'Contributor' diff --git a/src/exposers/mappers/class-tainacan-mapper.php b/src/exposers/mappers/class-tainacan-mapper.php index 36cc79eec..14d952388 100644 --- a/src/exposers/mappers/class-tainacan-mapper.php +++ b/src/exposers/mappers/class-tainacan-mapper.php @@ -7,7 +7,7 @@ abstract class Mapper { public $name = null; public $allow_extra_fields = true; public $context_url = null; - public $options = false; + public $metadata = false; public $prefix = ''; public $sufix = ''; public $header = false; diff --git a/src/exposers/mappers/class-tainacan-value.php b/src/exposers/mappers/class-tainacan-value.php index 38e57928a..675598670 100644 --- a/src/exposers/mappers/class-tainacan-value.php +++ b/src/exposers/mappers/class-tainacan-value.php @@ -8,6 +8,6 @@ class Value extends Mapper { public $allow_extra_fields = true; public $context_url = ''; public $header = ''; - public $options = []; + public $metadata = false; } \ No newline at end of file From a3e112042e4f27b8ba3ee7be13ec3a01f9e0354f Mon Sep 17 00:00:00 2001 From: Leo Germani Date: Wed, 25 Apr 2018 13:22:18 -0300 Subject: [PATCH 02/58] remove redundant permalink filter from dev interafce --- .../class-tainacan-dev-interface.php | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/src/dev-interface/class-tainacan-dev-interface.php b/src/dev-interface/class-tainacan-dev-interface.php index d781e779d..8f237a64a 100644 --- a/src/dev-interface/class-tainacan-dev-interface.php +++ b/src/dev-interface/class-tainacan-dev-interface.php @@ -27,8 +27,6 @@ class DevInterface { add_action('save_post', array(&$this, 'save_post'), 10, 2); add_action('admin_enqueue_scripts', array(&$this, 'add_admin_js')); - add_filter('post_type_link', array(&$this, 'permalink_filter'), 10, 3); - $Tainacan_Collections = \Tainacan\Repositories\Collections::get_instance(); $Tainacan_Filters = \Tainacan\Repositories\Filters::get_instance(); $Tainacan_Logs = \Tainacan\Repositories\Logs::get_instance(); @@ -62,34 +60,6 @@ class DevInterface { wp_localize_script( 'tainacan-dev-admin', 'tainacan_plugin', $settings ); } - /** - * Filters the permalink for posts to: - * - * * Replace Collectino single permalink with the link to the post type archive for items of that collection - * - * @return string new permalink - */ - function permalink_filter($permalink, $post, $leavename) { - - $collection_post_type = \Tainacan\Entities\Collection::get_post_type(); - - if (!is_admin() && $post->post_type == $collection_post_type) { - - $collection = new \Tainacan\Entities\Collection($post); - $items_post_type = $collection->get_db_identifier(); - - $post_type_object = get_post_type_object($items_post_type); - - if (isset($post_type_object->rewrite) && is_array($post_type_object->rewrite) && isset($post_type_object->rewrite['slug'])) - return site_url($post_type_object->rewrite['slug']); - - } - - return $permalink; - - - - } /** * Run through all post types attributes and add metaboxes for them. From 2a0f17af2653d87f440150b138d06e103732a868 Mon Sep 17 00:00:00 2001 From: weryques Date: Wed, 25 Apr 2018 14:35:54 -0300 Subject: [PATCH 03/58] Return header image and moderators --- ...s-tainacan-rest-collections-controller.php | 19 ++++ .../entities/class-tainacan-collection.php | 10 +- .../class-tainacan-repository.php | 102 ++++++++++-------- 3 files changed, 85 insertions(+), 46 deletions(-) diff --git a/src/api/endpoints/class-tainacan-rest-collections-controller.php b/src/api/endpoints/class-tainacan-rest-collections-controller.php index 25cbbfd5c..7532fe72f 100644 --- a/src/api/endpoints/class-tainacan-rest-collections-controller.php +++ b/src/api/endpoints/class-tainacan-rest-collections-controller.php @@ -148,9 +148,28 @@ class REST_Collections_Controller extends REST_Controller { $item_arr = $item->__toArray(); if ( $request['context'] === 'edit' ) { + $moderators_ids = $item_arr['moderators_ids']; + + $moderators = []; + + foreach ($moderators_ids as $id){ + $user_data = get_userdata($id); + + if($user_data){ + $user['name'] = $user_data->display_name; + //$user['roles'] = $user_data->roles; + $user['id'] = $user_data->ID; + + $moderators[] = $user; + } + } + + $item_arr['moderators'] = $moderators; + $item_arr['current_user_can_edit'] = $item->can_edit(); } + unset($item_arr['moderators_ids']); } else { $attributes_to_filter = $request['fetch_only']; diff --git a/src/classes/entities/class-tainacan-collection.php b/src/classes/entities/class-tainacan-collection.php index ad6708f7e..5c3cac850 100644 --- a/src/classes/entities/class-tainacan-collection.php +++ b/src/classes/entities/class-tainacan-collection.php @@ -31,6 +31,7 @@ class Collection extends Entity { $enable_cover_page, $cover_page_id, $header_image_id, + $header_image, $moderators_ids; /** @@ -68,7 +69,7 @@ class Collection extends Entity { $array_collection = parent::__toArray(); $array_collection['featured_image'] = $this->get_featured_image(); - $array_collection['featured_img_id'] = $this->get_featured_img_id(); + $array_collection['header_image'] = $this->get_header_image(); $array_collection['author_name'] = $this->get_author_name(); return $array_collection; @@ -207,6 +208,13 @@ class Collection extends Entity { return get_the_post_thumbnail_url( $this->get_id(), 'full' ); } + /** + * @return false|string + */ + function get_header_image(){ + return wp_get_attachment_url( $this->get_header_image_id() ); + } + /** * @param $id */ diff --git a/src/classes/repositories/class-tainacan-repository.php b/src/classes/repositories/class-tainacan-repository.php index f8911c881..22a1b076b 100644 --- a/src/classes/repositories/class-tainacan-repository.php +++ b/src/classes/repositories/class-tainacan-repository.php @@ -117,7 +117,6 @@ abstract class Repository { } $post_t = $collection->get_db_identifier(); - $obj->WP_Post->post_type = $post_t; } @@ -134,50 +133,9 @@ abstract class Repository { } } - if ( method_exists( $obj, 'get_featured_img_id' ) ) { - if ( ! get_post_thumbnail_id( $obj->WP_Post->ID ) ) { - // was added a thumbnail + $diffs = $this->insert_thumbnail( $obj, $diffs ); - $settled = set_post_thumbnail( $obj->WP_Post, (int) $obj->get_featured_img_id() ); - - if ( $settled ) { - - $thumbnail_url = get_the_post_thumbnail_url( $obj->WP_Post->ID ); - - $diffs['featured_image'] = [ - 'new' => $thumbnail_url, - 'old' => '', - 'diff_with_index' => 0, - ]; - - } - - } else { - - // was update a thumbnail - - $old_thumbnail = get_the_post_thumbnail_url( $obj->WP_Post->ID ); - - $fid = $obj->get_featured_img_id(); - - if(!$fid){ - $settled = delete_post_thumbnail($obj->WP_Post); - } else { - $settled = set_post_thumbnail( $obj->WP_Post, (int) $fid ); - } - - if ( $settled ) { - - $thumbnail_url = get_the_post_thumbnail_url( $obj->WP_Post->ID ); - - $diffs['featured_image'] = [ - 'new' => $thumbnail_url, - 'old' => $old_thumbnail, - 'diff_with_index' => 0, - ]; - } - } - } + // TODO: Logs for header image insert and update do_action( 'tainacan-insert', $obj, $diffs, $is_update ); do_action( 'tainacan-insert-' . $obj->get_post_type(), $obj ); @@ -741,12 +699,66 @@ abstract class Repository { } } - unset($diff['id'], $diff['collection_id'], $diff['author_id'], $diff['creation_date']); + unset($diff['id'], $diff['collection_id'], $diff['author_id'], $diff['creation_date'], $diff['featured_img_id']); $diff = apply_filters( 'tainacan-entity-diff', $diff, $new, $old ); return $diff; } + /** + * @param $obj + * @param $diffs + * + * @return mixed + */ + protected function insert_thumbnail( $obj, $diffs ) { + if ( method_exists( $obj, 'get_featured_img_id' ) ) { + if ( ! get_post_thumbnail_id( $obj->WP_Post->ID ) ) { + // was added a thumbnail + + $settled = set_post_thumbnail( $obj->WP_Post, (int) $obj->get_featured_img_id() ); + + if ( $settled ) { + + $thumbnail_url = get_the_post_thumbnail_url( $obj->WP_Post->ID ); + + $diffs['featured_image'] = [ + 'new' => $thumbnail_url, + 'old' => '', + 'diff_with_index' => 0, + ]; + + } + + } else { + + // was update a thumbnail + + $old_thumbnail = get_the_post_thumbnail_url( $obj->WP_Post->ID ); + + $fid = $obj->get_featured_img_id(); + + if ( ! $fid ) { + $settled = delete_post_thumbnail( $obj->WP_Post ); + } else { + $settled = set_post_thumbnail( $obj->WP_Post, (int) $fid ); + } + + if ( $settled ) { + + $thumbnail_url = get_the_post_thumbnail_url( $obj->WP_Post->ID ); + + $diffs['featured_image'] = [ + 'new' => $thumbnail_url, + 'old' => $old_thumbnail, + 'diff_with_index' => 0, + ]; + } + } + } + + return $diffs; + } } ?> From d3c401d316a6baf1611d545f63a86348cd41f20d Mon Sep 17 00:00:00 2001 From: weryques Date: Wed, 25 Apr 2018 14:37:02 -0300 Subject: [PATCH 04/58] Resolve conflicts --- src/admin/tainacan-admin-i18n.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/admin/tainacan-admin-i18n.php b/src/admin/tainacan-admin-i18n.php index 514cc4b63..2074fa68a 100644 --- a/src/admin/tainacan-admin-i18n.php +++ b/src/admin/tainacan-admin-i18n.php @@ -21,6 +21,7 @@ return [ // Actions 'edit' => __( 'Edit', 'tainacan' ), 'new' => __( 'New', 'tainacan' ), + 'add' => __( 'Add', 'tainacan' ), 'import' => __( 'Import', 'tainacan' ), 'export' => __( 'Export', 'tainacan' ), 'cancel' => __( 'Cancel', 'tainacan' ), @@ -32,6 +33,7 @@ return [ 'continue' => __( 'Continue', 'tainacan' ), 'approve_item' => __( 'Approve', 'tainacan' ), 'not_approve_item' => __( 'Not approve', 'tainacan' ), + 'add_one_item' => __( 'Add one item', 'tainacan' ), // Wordpress Status 'publish' => __( 'Publish', 'tainacan' ), From 2a6faae6bf5e2bef14fbc382934ac032c0a40c14 Mon Sep 17 00:00:00 2001 From: Mateus Machado Luna Date: Wed, 25 Apr 2018 14:09:42 -0300 Subject: [PATCH 05/58] Adds correct placeholders for thumbnail and coverpage in CollectinEditionForm. Begins implementation of Moderators List. --- .../edition/collection-edition-form.vue | 82 +++++++++++++++--- src/admin/images/placeholder.png | Bin 2546 -> 0 bytes src/admin/images/placeholder_rectangle.png | Bin 0 -> 222307 bytes src/admin/images/placeholder_square.png | Bin 0 -> 164740 bytes src/admin/tainacan-admin-i18n.php | 5 ++ src/js/store/modules/collection/actions.js | 14 +++ 6 files changed, 90 insertions(+), 11 deletions(-) delete mode 100644 src/admin/images/placeholder.png create mode 100644 src/admin/images/placeholder_rectangle.png create mode 100644 src/admin/images/placeholder_square.png diff --git a/src/admin/components/edition/collection-edition-form.vue b/src/admin/components/edition/collection-edition-form.vue index ccc4c1d1f..0dd1ba793 100644 --- a/src/admin/components/edition/collection-edition-form.vue +++ b/src/admin/components/edition/collection-edition-form.vue @@ -63,7 +63,7 @@ class="image-placeholder">{{ $i18n.get('label_empty_header_image') }} + :src="(collection.header_image == undefined || collection.header_image == false) ? headerPlaceholderPath : collection.header_image">
{{ props.option.title.rendered }} - +
Edit + :href="coverPageEditPath">{{ $i18n.get('edit') }}    View + :href="coverPage.link">{{ $i18n.get('see') }}    + @click.prevent="removeCoverPage()">{{ $i18n.get('remove') }}
- - + + + + + + + + + +
    +
  • + {{ moderator.name }} +
  • +
+
+ {{ $i18n.get('info_no_moderator_on_collection') }} +
@@ -253,7 +287,8 @@ export default { enable_cover_page: '', featured_image: '', header_image: '', - files:[] + files:[], + moderators: [] }, thumbnail: {}, cover: {}, @@ -281,7 +316,11 @@ export default { isNewCollection: false, // Fream Uploader variables frameUploader: undefined, - thumbPlaceholderPath: tainacan_plugin.base_url + '/admin/images/placeholder.png' + thumbPlaceholderPath: tainacan_plugin.base_url + '/admin/images/placeholder_square.png', + headerPlaceholderPath: tainacan_plugin.base_url + '/admin/images/placeholder_rectangle.png', + isFetchingModerators: false, + users: [], + newModerator: '' } }, methods: { @@ -293,7 +332,8 @@ export default { 'updateThumbnail', 'updateHeaderImage', 'fetchPages', - 'fetchPage' + 'fetchPage', + 'fetchUsers' ]), ...mapActions('fields', [ 'fetchFields' @@ -402,6 +442,21 @@ export default { this.coverPageTitle = this.coverPage.title.rendered; this.coverPageEditPath = tainacan_plugin.admin_url + '/post.php?post=' + selectedPage.id + '&action=edit'; }, + fecthModerators(search) { + this.isFetchingModerators = true; + this.fetchUsers(search) + .then((users) => { + this.users = users; + this.isFetchingModerators = false; + }) + .catch((error) => { + this.$console.error(error); + this.isFetchingPages = false; + }); + }, + onAddModerator(user) { + this.form.moderators.push({'id': user.id, 'name': user.name}); + }, removeCoverPage() { this.coverPage = {}; this.coverPageTitle = ''; @@ -524,7 +579,7 @@ export default { this.$console.error(error); this.isFetchingPages = false; }); - } + } this.isLoading = false; }); @@ -540,6 +595,7 @@ export default { .thumbnail-field { max-height: 128px; + margin-bottom: 40px; .content { padding: 10px; @@ -554,6 +610,7 @@ export default { margin-right: 10px; bottom: 50%; font-size: 0.8rem; + font-weight: bold; z-index: 99; text-align: center; color: gray; @@ -601,6 +658,9 @@ export default { } } + .moderators-list { + font-size: 0.85 rem; + } diff --git a/src/admin/images/placeholder.png b/src/admin/images/placeholder.png deleted file mode 100644 index 0b9e18d23b957d3cf5d73152cd2b99058864e556..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2546 zcmVz~P#00004b3#c}2nYxW zdBqHShmW^EM(Xhs?#)??e{}Ow3+h#?Czsh(L94_3wxCRWCUSirz@ z6;uDszS|%eKP<5_F2zD*W(XDuCWyv8bFGY&(y3TL-}j3|8;UFpm=cVX(px>un}s1F zqckiqk1;{`7K>NG;35I{NGX4~2A^UvWp+&&^nE}0?RrNGYi(3QE(Ik|bd}zI>&8BBCgwq9{m8NlGb7lEh02?E+)LgpA1^ zr4+?+OnIKaxgjYfrD?i~m021qSy>paW^)g~lH_^*Q8pldq4W$ZG&>B1Y?=Hwb1vQcBA6e0EEvQi{?v^_pfc{p=u^ z6)DSdN&hVo{d=HUmU+4(THGq?M7lvV-$4+IwAtjnJ_2C$7B3+PW(5%7+Kf}0rp^Q4 zO$8G~^Ul%$cZw*AoYrPc+ipXp*Ar0`Eedd_KmhEr0&FtL=}a)8^7{|O97Rz$6N}DN z?Pduk*_Trb6Wr4Oc*WI1wNG5RCbWjG(%vw}Sq0-dUYWX<3)f`2E-DDd65lRp4BOg_ zX_J=op!aN|Nz?SlZ1Wn#acu0Glu{H$Q4q{p=q_lD3Bs{^Fm+8f%XGa6=E$Pi$_0&K zk~LvLoXKe$+=U}_m$(vxf4(?piG&S1NYYPxpO*LELbvBmYt6=sh z8d#RCvL73!nyrKo)@>5OC4B(PvPY2WkKtnJtyjV9#lk41UJJ?gXjydPIHoMievCa< zDcF8DuW2>+T{w03<6D>avDS4h#Q52LU$=0{DDf+e{Qc5SgTOC3$pF+W+ud}%yozIPl z^gbRNc5knxl$0dN+fvjs3k9HbppON*^!mQ1`~7bAxoZuu>uc!c{9sYu`L^wuQi`%H z8=O9vL#!`A)7RQ=T{js5^&IS*g3hrZly`=#%O`oBQ{VUWd_EUF>o=D)WNkhLWGW<^ z;vL=#*Mq8M5Xw(rLFQDj%d#Y;)Z3iX6q7LwE~;N#7tfMj(xsx&tFwqvAe11MVdhvD zow6*csw!&RcGj~o3VO#xGM}VWQE2o z4E|k8`6iNJO_pJ@?ixkT%jH7X>vi%t9B*m$m_@+3KM)4QG4$FXlzAX4x?C>C@0U{2 z@87?vX&S1k(UYmytHZ!zARd9`LBEE{Zb*TDOtogt1;Q)Ka&*~>SHZx|z||1Z+ajv5 zSO^v;2xuNzmN{!*KyiU)E8OKN4hEnR~n)K&2D43yQoo+E~ADT%KFNo(Sumrx61Kl;@nZ=*m zd9E=vVEYAi@r=2?Gl1qWUqFyT2)f;F)b~BbTPy{2`HR3@*cq+P8eN2Fi@<{aP1+lL zG=`taW#N~<=E-dk&1U^DK35WaiswjMj}ZBHMMIz>ys2Q;x(?Fxqr^M6ygJL=YKIy#(Y zqhWE{wq<#40@i_VO%Tigecw~pbu8`=DfC*$5>K(YOXA9BcD048($^Ak8LJ?e8DO84 zwF6|dPjX`O2yZW;bl-l zEsBL;h|VP%{TQ12{Z7~Gl^&1B>u;P1f?1i*o*S$$uj`tss-mW8HoUuOSftfw;@eb0 z(=^n!?b}({+}tWAE_gpGwc zI;JPsH%&ub*S(5+TWo^!EOp`|G-!Y=18~}i;fV2p3f&;uUC3LpI)vpMi7h#e2N9Y+Ei7wsw-zD zm?OBPHN>JLgjh8gW+j-tv$j}3+qSRyDBss-C73;1n61P@^xr+*Za1py`t@%<2!e6I zmSWKnLeTww_v)fp35IB2qQM~=9K-@p9bR%m$r9KJW-oBw3QY(>UDv(RZkPASs?tlu zzuF6{!X1p^?RKN8swmHMC+86a3$p;6#IiRK+h8krn;&El%uKf0^1~IV4u5V1zZ7;O zz%l6EyI253Q&pAmJk$)Cm1dqRV+XV zL2cWA%^XrN*mN+6#SJLvbzMh)0j#ck`gDDj=l}o!07*qo IM6N<$f(VPbIRF3v diff --git a/src/admin/images/placeholder_rectangle.png b/src/admin/images/placeholder_rectangle.png new file mode 100644 index 0000000000000000000000000000000000000000..6323baa2b8704bdf00cbeceb44ff097cb8ae2dc4 GIT binary patch literal 222307 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 literal 0 HcmV?d00001 diff --git a/src/admin/images/placeholder_square.png b/src/admin/images/placeholder_square.png new file mode 100644 index 0000000000000000000000000000000000000000..dac9a96d7a43e40f8e88f13b4706fed008f4ae87 GIT binary patch literal 164740 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

%Ys0RkoAkesmXnQDPq%aGIrd(&oI zRftJZb|zkn!ViGY>8JGl837CFqtYyGn59{Ztf$Q$9(mn|qIW)eSR(}vZOE_g1Zs03 zE0Y2Pzui=RHWLG4rz8At>zzX>!>0L?my`B1a_BiGQ>0_X1jida+uE`7cj|=T^5|ZS zWpLgOWCx7UFe7lBq))1gn%CpjfX*a-q*9qeQ00>n`Xt0cK*w8wlui7PEote|pOiQM zBAo^yYJ9w4J^|gbXTObwMQctFa7FLxd`8-d5Z}%P?4fXy`9)=q4kyN~Ehem7{R6D& z=+6(aI`ogY&M(MfC@m&u_p8nzb4r=B@29%3dBkXU`D@uzZZC5Y{BJx}u& zC#b^V!HkHhjv)V>xC=KAzCv6Hih=>Wk9j-#paF`6?zR__foO<{>O0aL(UU${QXRAm z7;TQ^Rd52bm)kgkR4?Uh9HUr3n~wYxnJXlBP2>@s>PBE~ROOaM%~yz=)ZZJq9yLDH zIBo-=-)fZP@>MN#9N#jACCQ^NK`CZO2})S^4eNH~E>*_NIpTk-)9f`bPHZBjc>^_>lm-;ODd@e%RYDdbbHUr_|xd45=!MD*H4 za7@B0{)~+Fg(-W80q5g_A?g-@iL3k&dDyOmn2FFDatgdeBjQ zdDSu7kEM#i23JPqCp802_q|;}c8vPCPQfLnq^BXuA{DyYtaA0SPpl%%87m!hSuH7c z^}fvG#-dkgrK$>-npB=lc>K0q4|dW~IYp1DyS{oa)=Q;V#l@7N4u{ z0pN5o8;@o*WH{B^A>=dYAcP$~Mk}hhj(uYq{>joYTYeEtCq%RhzUqklp-iU@DJefi zF9fwQwf03L`*h;IU)`JtvD(Y=WtFBAGZV`78iWF{2c*rk6|Ab|;F1ipBb(xesPi)9 zCgo5B)mRo%qv{^TCO2}cr1NM7Ba{GL7>hx-U-C>cD=h|+S~)?A?*Qu?kR16{*T~rruC^q1Y@UHH&Nh*m|h)nHEAUK%)9}OqVDfJ_j z(7^^JG57lW?ny+e*Y;G$hBjTEumk%GXjlEE_j0u{P ze)NfN0e|mrUA13fzcax*y9>con9|& zd8P``#UO!zJ4o`NF~MccLYBu-Xa*4Wy(4SOU5c~Y5+=1gOR}qDZZ=!y{9QLm5}kM? zc7+xY%f^zh?Wt-(L#w7`#CDESe5F)0=J!5z>(qumD3^du+VsAd;tog<* zEGQ$cihT-!_kciHSJ!C=&2bEa(HlJx6WO%F9mD#i94dKQaG2+{z1PC#C<;jzO7^(e z2OeL`TGCXVSv5qSvGBA^ps-N4)kmR5<)~7~G1^pcwRTQh)|!aaNqTjIv$BH5Q&*}S zn>oiSlG)X)LEK$_j1-R7t$VW1O}&$sO|=d=Q@XnSwk)PXYb1vfHsj^KE zKLGm016S=nA12M25Qu2-fOzejf6xyXQtERKRe8vr;MA8({n&XYd?DU}T^u|gx_)c_ z9bv(hgBUfs=%|r2O~eaGU@9LsnZZozBS0j@G$u2maf^@6$YyX24#d1T6~2%EVO)-NKxs$(XG9L0I>8rOK|Idvx`Zgkh z0#*+61hAa|7nW$w-rl$w(KJUS8TAE=*_O>YPQ*=Br1~oVjV+vz>#7zq-L`Ne1s@|jg7o6w4Q;2ine4`SY+pIKb{T9UkIRlUR5?S@kjgcEM#JCX&o zL?Q*`50koS>qS@tqG}n0$caZ*r;+NU?9g;&?RO>Zi56lWeMk#w2-4B99Klg<;Fulu zS=+pG?5lFAVf@hH0l|p2UeX-SBEZuEVQp55P7&iUG>=s}pgt6CeFO_hF{uDI5U_{n zVdY|MGev1FS(Y45SQ{hckw+`DUH`-PnDY$=&SQ%pY9z;1_LFT!JQi^amP<*vPOTL? z=xNdx2y{z}!dcJ-1Zy3tDxPH~+46aEEQ!*w>fELlh1i7Vwk+W#?+gyrOH!GW&M@sL zS|YdQQf!3nA62Jo`Y66Nuu0oH^{&ev{3R*(Tv?fHlmVrT-F50V$=&EZyF+O#oVyP* z+y7uDCi11!Je>bmb&-$P%b8)HvoT#=SruU|vbx#}q!#=wI`vY_?A)%g%`sl6qgfXafAb;TagUPwyrKM@PA?uc4gy%( zKihDS&`R;?^nXyt9ie#oU1`Z6a9K^~nh_OQlTm#Gmu-Dvv;y1M?tz#6FUGWaI|=%a zgzMgx2~*yztL!flsu(BTqtg*IxDtry5g9i6)}K=})oi9F_MQKL7_}#&aDRT46 zEJCwbC$EJTUAtEgtk~2Fc;An@t?7E7wvSAQ!a-8PfPa#6LHY5^Jg5Nfzg?|$l04EC zlO%;z3UJ1|khO;P5XHn=DfSp>u@MF@Ix71BIB`5Qg5dJUi<;jh+GzOL>B=r_;gS{` zn3U7^05srx-pM2)=L~a6n%`)jv@}^+}+GG9*br5%=Jr ziGXj%iL(s6T2q2ommZU4n*s^)FP1*8uZp#95rdpl(DOF?GUHLx2L#IQ4Z&VtOFGlU zw7tJmyPU8eLn*(+M3Dw}BHJrJdx^X;9A$Mha#JhL!h=Pjw^ZmNy8@fy;CyE&_bt5( zQ>RG7LN{X(GAl=O<5f7}ccf;XxprIZP>*#}$ThK9;C9F|p2TAF$BfC1h z=_T7(?jP97zRV_I97`Nb?^u;Ko=#;^p$lo?0E9K4 zwcKXY0L?gnfWmI0@Sr3ZOmsgVt4+a#fCn#MPE&;wy55+3hxjoo%Fc{iR6DUxqNgPE zD-JZQ@Mjq>d23zlhNdM8qmw~QxNPC#wc9lR7zoViB%_7TKBNT`2pPZdZ=@O1PNW%* ztnQu#F$h)Je{)B1GXDR4F5r7|Z;? zWz!|PN&Hg|DBE%m@Vi~jvD|W6+MKxED_CRAfW7P7u^T4H_;OKXFp%gj>vyqjL1i`{t* zvGDe|!?>)`lN{K5{liN|n-$e^hN z>>F0Z`y?|RjymDQzuMV1ftsQa3f%^!`Wop-qaoTi^J*Q^+{K(NVx{XO7=^wUTN{V!945jM)E+5iUJ#i zhA?_ioQCMq0pvJrqT_9$2Yvo+G|4(Z!a&i*Y!{I{e@Y6(h>B>}5g!4<*@GWcZOtM+ z6e1xE*L0V+|OySgjh!X#~FJOUj90rc)#%$;z(qCKe+`%9>5>48kpCOoD6NygrHAb>8o@ z)^p!{hV&@)cNFI!kqeIEt&~KS*imB1Ipfl1w+vy|t_UVL^rdm3(Q7);2z9Z|V0%97 zfT89K!m$P&ZHXyU=&zhhf-8jlSy4<V1onF?3 z1+Ey4Iu^RSlX>Tc819@5lHj;AvF9$i%}v=h?uc%?V|}?k*Mul%FD_uv=|zAb2eBMi z^fJ1lw!p@vp#7G(?;ZqHR~%0XlH1?Cm!1nL#(EAHIs}-8=spgylcrhvC{IotLz{dz zJHsLEM&URM$>^mWa>|^=^oSZAs$u8DuxFhCCzvGoRAg5(u&#WlB`8^`{6GL|Pm)P` z#gVBHxDAv!tbcX)NS3zk$YyDWqO;yOd`&w`CKk^2H>R|2Ui93fXCu4cn(z2yTUNdC z96MDhoja!yOJRH0oSQ3cCh)O!&RB7=tou;jsOX`sgl?{RjNR;&JDFQQ&07feiDcf z3OE`No1{I<)D6D2`IA1Bn4tJl`GgC>n_m85va+JN*{A$$>rD+a`kuJE_TZ%lR!>#V z^ZMTDaQSDOmiBY7d~UXdOFAp4N%iO}_3G?w-(6Ds%Dzcc&Q}Mz+ii{YiI={@%x{9U z4W17GfOrHxFZXi1ZKXX6G+PXvMSN6sQ#I7bYcoCM2Y@wIW^eMQ5Ac(vXLf10T6pi? z!NFP_GrHVD<9UH-p?Itd<4*orrG9J5&&c6$;so-$AAflVNsza3&G|=Z$50Uo_*?*m zt=~jRj;md8HOi)QK3==5#1Wl(ql)UT%9l}@ay+xop^M4g-LkeA-Su)bZ4~_-@m4;3 zrZl!P9G)n@gwP~;?OYK#l{RejVo%=gYlrb@Q|aNDtk^r2dBBxph#zCNsX*j&6_Md|X;xD2*-Q8e)jiAB!vX2x0be%%e|eWYGgZgrn@} zR`F7pzSoMh5Y@df+cETvZ-dYum+c39=>s5``L!cKxR85cy|K?>4A|pag@Y?I8pI(i z5EQqY&;(J5y<2ytoV3Yl4ckwIZN)dLBgdJ(r<~^(6c!O-ojGR-tI28XOSV<`dzM&N zTkq}2`cS6t1DqZ%+h9f2hyO=hbQsN0=XOUaGi!^%Pl7+kj zUyzngIF9P7p-D+eTf?@kP6KApva$TUJ-W!(eYUr^k5`y&++ga2_%*m={F1L^dI=37 zRJhxSm~E?vJ?a*-ZTWb#=Uu#K5Y>%b1eCK3=dowXL@#8s!$h0aL)>cMEH#aJ7D>m! zh08^5MBIpgM0_@aEmZQ-XH$UZg7$MygC|G=NjZaUC!S7ttgv8nB6P#4Yn$F{ zFVU@YRO}F^7G4~=VMB+4&J@HSvp?mv^n_B~Q9KvILXssW$@yr^Mr?f*CZ%9*&XBJWma=~gaxH0>&(GicVg54E4e4iNq?pe^eb2x$M>;-tW@ zqZOs_T<&8nKll-sg9MJ^1?mTx%7Nk#o=Ap zJTxLohPkmN3C(!}i4QMEFKryY{h@oziLMB!;O1gRwjen#R>)P}!RlO@&K(Ecc|5Od z=Y79mXKjmJk_L^1J&waV!R3f%)3u8@^MJOaRglo;8i&HYtRICc-*7g-#@&8F@h%lp zBx_V$eINUwhoz-uo*Fk^-!Rw2F>aF{x0Ll+d!F%koP*jYcj5tJ@*KyvxBdb4i*~G` z7paWV{(zg}s0g!tJH$Nf)LS^=OPoWw{JCljea|-|BKA@+lwx@z=fWZYV|r}*!0*r; zp-sODsH7euH7ho^j!t{=KeujlrVB;*r(beEi`-FAKZQ24X#D;s5`1h6doeNy@gWhs znbkyMbT~SSyH1}zJx|RskG|=`QPNT$3!mUMnK7se3jagr!`;H(Jb?+uibfs-^kt2LLADpWS8KnS<5CP z{l4nnH%jV9I--$ayy$1J@mrS(Ftx+Im*kv6O!#|^U*SQv6z|S8KaG zjtZbf9dKK!?!{Ay> z$jH$|>W_MyTMYmZ$MLf8)0p6#V@-TYio+6cja@#GkuB!Ya+ZY_JF?B=GV{!DJeo)0nhjFJHa{W+sz?x;+q+@TQL;i>s^C_B!kK zI~O{LfhjX&PHEk*#unQ>X9jKeIfaQd0U^Y8GGg4R;mSpnokQLiOvaV^xqEng{KOI` z$}&GOk4z0ukbV#;#Zt^dcxy}RiQI%Eo+skooG?K#H7e*)_Q;D znf)2w1uE%N5gnm=_1}Me;!gnn4w}|pQ^2@e$Q_wza$rvwlqoJ9_w($}`12+X$m~ft z&{N#wMptrI*xX=5l{4%Auh3d>u4)HT4k9EKrS+;)wDRI~rlP>-IPw$L6HX2H(=&5V z2zS-AvhDRVh@zEI&sD9{XXgSG6NxafAfxJ_qnYq_w|Rmz;_!~6R&#xj22K63s*tGk9iU* z!D(=Gj;Sm8MJr|mz4q^1*`THw6oNm{Jwk9~m6_Y}&eNQeH&V*+=;pLxBTRCJN;8f( zC{Hnys1o@jSmCRN6zp&dyz3VF*Tx#vq2m0Bwoz=b3mUE>*)isR0z8oA!*!~GV8_yO zxz=9|$_yD9-BKFv--^9*0Kd3h)+W`i^7Q9SDt>$BwiUfLqq@4qcYUZ;6uukOj>_!O z1iYgNso!T#2pZJG&hA{(mBT)re$Joxb2u7SuxG^Hd_EG-`2h@C4v4Sr!2}fTm&401|5bA!xzp|rd1h<> zllvkZ!l-O|gH`+N8bvMRx2`P8J^ju52Y$iJv^N80(0J~;rP&bmD8bqc6sCE}aPhdf zxYP}c2sL;pXf`q4-ag!WfEhL*r}B5irIk=!bZdk|`;6J8q^_TydF((tyP}oUu>E7t zb_~5#O=o!$)-5>_ezGdcG*yLobRCdslz*yB=XM!CDYtNwkRk^qGySv8$jNf;_oNFpvuNy{|w7sa8>~QY!YVG;jhU}(F zztr)qs`HjJ0va0flDg68&jeJ0uA4cVm(R1WssGyakzYr5e+Ao4jrV2ISH=AQ@Vz}d zK)*#f2L<=eg`D!*)Xb|-ZhL zRzx;+STLihJ=b%YUC4*|kxcwzJ8;cis+)sB3y4jX;rr%fj2 zP{{pk?~`dEjEnnYMTPpikpS4!U_3kn=uwU0Pi z+2h+_zFa0$R8{5vUa}_bqb}a#7#@?mtg0S}Al8~w`;qj6aw`9Xvxd77Hf(fs^eY?$ zw6U{vIK>EV(OP5EcP=g|xDt`NNq(=t+GWCBw}7g8>-V-Lan;eYj>->|85?SWA_V>{ z3tM3_pdZI%&!z^7OZvS|Ib7mD%Vkw-E*uIG5fKJMLD=6>fMN@NEKoNdhmNF$Oq-~9~2dfyL!gZs5LGZ*}iC99NK=D5d5>Ec_ z9PXQao7SO~ctNoNYpM;-U3-tZDxPA}yJ}%qc{%wy;PEz37UiDH{A8fwe1BS(7#+Cc z1a1UroIwqvR2-qO@+Z~R)!DI0KD+#;rEd4Nt6@|efy)mr(F^<&KD62SZZNjNV@HnM zSQq&5o9f29OVJ-Ot9#*+1NZ~Sd{?Id`GbLdj$VPH4!d(9I>UT1p*Q{}l1RhXDxBs$ zy!`FUZ@RErP}$2a3~cUKdM>m7?{Nbbe?c#gMf7wpdR$B1I>ND5r=qF4NTo|Ym1e|sdqC8@oYn#_swk=ybbvJ7Bo=^;- zHq)O7fZs&{3tckjY{F+M8eIE_cL{$runaLrJf36~n z0yQ)fX|9y9^3?HjhZbm`2SKo1ttI22r=r)CV5+t>HuP7juk8$f9i0=`k2Z1`605vz z@cpiA-TUejCW%G+NpIWTy|5S67ZcejCcsoO=i=wS&ItU)t>(8&MUQ#q7`88wjXQ;u zIzD!G5JK)D=f9F=9(OK1;ooz8-@~7Mc>L$eA#A(l+&8wyqA7%>9#EU^1+Mp^nxEB{ z*OR2&+S);~mZ)`Cf~6XA)AhG0Iv)yedbV`yjvYYEBtT@#P}?Vr%7?)*#rmIG8CCJ< zkzPiM3mRY6{h8nc_lUa(b2W8l& zgPuM1$3czEx$kk9Wc?==iIF+dAWjo|=hCM$5M}wiAL8Zd5pLK7%3CkUZSCOj3UKGW37O* zK3k7O8Lka)^&?%Q=9t!+b4j8(@iap~Q)H(BHr*kg4T&|sQ_ie20r`EEghy%q+WRE( z-t%cRJFnTXCz}ARzZ{?|zOTF(XaTB2xj<*mpvfD3p6srsEXq(UNY|oky96BAV)oh9n!OV%% zh~mhdKmt{{gg`H(y^u9~+;F|Ge?LSjz}f-?)6K+VR2SWJ2Lrpf6pU*RWxSdb{-gxP zZ{iT;KqwqSwnJ>{PuN#CFOyRGb-Lc>hOjk9%tjX%T;OVaqvbCq>?9kGRwYvH{%mpqXh_TNpqqtjo*U~Mpk;^HQ;JA+Ea zX+>@beIUAw3?PkiV(~nk`r&`b@5Oiz%SC0lB?0Kbo|d6^chIv+RpL|d zGiIw{rPa8fXl2^hk2CkegH#WF>SDFnjt!rhR4f1AxGUl-8_q7QMV8x|_>EP;?vcwU z6rrBRsp2;bo3Bcw%)3y0_4-H!f}$^$dcQvA>jf87V56o>O-rU%_n=NOfhJlr-HEx9 z^dk5o}%CWd!t}$*=OnF&?O=2X!zNHAlemB8q9+A^m-SL&DGlm7S$hKBR+rebFW?U%^8 zk~zvBXD2#gz@~P+Deo-qTylNP>{?{v0pWYyD%h52JH;Nq5l2d%A7L7^5b`~h8MRI~=H9NS>SNXokTGYl#%=-r|3oop78?~2FVr{U*#nX`o2HkSmZWw;6tP2`o z;rlb-uF19~-kX#CL@|}@e6c?}jlM;qGg;T zj`;-MadL=?u~I+A7U}R1C%6ERqSB{>p4sfDjotE9cf43~ikifFhDyEq!Zz;KC-gGh zegx$Qre4h~e54W?kW|tP|3T@xOs-d>~X2ca^j^&G!u2{9PUu=Z_;Q?a3*`*yXlsMLuV-pu+eg3_{`O;y^)gxgJvxT4D1Q zpBdhaL?{Tsa~TtIEQ8>7>-=f|!+#6&!+YV@slaJ+=hf}I43A_fJ^Gu6%wfY#1U}FU zk2Qr1gw#WIoVXdj$T|0pEkcwB7Hm=M`@U^MYTe0s%{kpr4P9Hj8Gngc{b-7*@OO}U zCvQO408-?&+J0?Ac0Hse^^bp|z+D2wW@3;*6zQ*xP)T7MOFG*A+{*Id0e#hOOf{j# zd@0EAL#;&I{JL_RrZxD6YFg)-FMp$asp@_b(99DU^XSpnv_n}@nzD4FkM~@7M9JIp za9VafNfG7by-$<@AW1&-VreIPxi(!-5N{a^z#JaM_7z*1rHW@Fv`w-NbgQF6^p#)G z=EwjR5&ZuBmBH%OtjlUexOc~e_(jP7Lu!$5C8$WPiMTLuitI)7AH>W~f0YhbQX=o% zFH!ZEbz&U%?GlOQoPt~=z@^QW)Me|5KRF#(F#{bhKR_qbj2!L=3a3nypFXdL`zE;j zY4L*#1aT_&LmMaJX$Lcu5(^q>c;eHfLQ_o>cx8I(wvR6tzn@P-^#4}UP}8y97`$Pf zHf$5Vry?BsE))9c;MiqN@Uv`wQJ%&0=Dx;d6vy;u?vwBUc4@wc$iK3=!2)c<3K9Stl9BuHnW^W?tp-4HpJ z*9xw2s6}t<0+%S|HC`EBEcq$KmgL#m=Qnb@Oc?z91L4CLikktc%{#1paV~f3wN-BU z)azexQIQQetXlc8P6HJ$?Qt2nBVu###o8!x{cZ7Oj#ly4%cIe8<>eD)$Z}%{zTwm} zB~osADL6yft7c>wW0_MTY~zSxoS1=5P}E|KpOp%AW%dn?_cGG1JB1e)E+q5#hJ=}m zV;JOSfY{-%s(bvgY9iSZzALW1eY1dVlRvRd?xEk}mdw(}FJBh-mrW0xrZ2Ek`H~sg zxn+tE(Eyc3+z<#82*@>-F7|6i;{#HLyVjYnV$qBG&aAB`hqUU0x zY(6;ua9^Ov#6O&p7`b>?8!_Za=F>7l^@Ip1+-Lx<)n>AEiSn2GKgvx4;J_X-M5f>_ z)CYdO1MelAL!>xnbL8d7H`q~#{a|93pDXED<-@lTx1u6AcMUMF-sSH69SO3;>=UGu z@fl1d&}?8TIM9RA{U}N=ES8SX`6rzIOjlGCJg*F~@iKXb=%3z>- zT(&Bc*||61B}{mm8QhHSUM(fF%z zdu7zcQgB-xd?W6o=3BruMNS2$wocoR_Mr~l4zvA)u&Bmwb@G-R;H-$_y&Pwz4l56p z=IFa#);H){6DsLbgQj(*H&W4jUtlvv-HUlMJz|?|p{H)OOkt4fy`$mBDnN~z?rE7T z(^kEZf6gtOO#!Hz)h?uA^t~GW*1oMrOf0j51Bcec`|Rq8cAHWu$k4C?$8E3z6IcKV zoG*FeSP4)^ct1f|0?iXDq<0=%Q?OWLLVZ5VoiKu;lw4HB`RVeioRrI z2!niS1F@2m=rZASLd&ox`U&!o6tTchYdT?|%5dV4K|j3sUT3Uxk>PANZU#@qMFbgt z{u%xA+evJZe+jeon`namusjG*;tgZS{_{$=tfILkyEpvipf%TV9_7)bxeI>$S3jYZ z#8s?YHX|H(`Mk$>5}otJjrAkhcASIY(c*caGT{M>zSrLiq=6w0(rj4;_l0Wc%i7v) z*Rmzg)T-_VdtI1K9`~ZvU<9lPaT^xiH;Gv`?=Up@7MdDGrYa6ig;Y9Q*_ktPec~^puYKC5~vQ9{XHcLADFcOQ3l{Y*(IAB7Crc4 z-EFqONbk9vaoiPu5MD_8I-e>QkFI{mZpUAqKr`CyVwE(L>MoyqMip9ZIbVK{4wiq& ztYw->(z3{&Bis&=UPUKq;2Jelb&QoKv92&Hy%FdG46I%xab)f+Xlzpe+WZ-0bpH73 zlmn@agUiILFz{ z4Q>qEiO!=&P9+<^ysL}u_!0YeHiedF8@I6N6wS6(c}7mGD`B1o z^J)QZvgI|TQfJhw{gC*{oqkT1XCX;>!$C1inAshZ)eEj zV{anECqiOsvU*^#u%4E+i2F67-lUYd5%lx$QJ|g0&!v7ZjQlKS8p;AHzhV(zaHL%k z4vM_#A2@{>;uW$bh)K@>kp8X1CY$rQ(fB?Mg%b{b#Lo5_F&ZyvD2-@C6hR-h$quTV(0Q_v3D2VN{yQ(Qg&0J8w~vKG@h21=z(RP;Gn!78>LQGcM%`IDf27cpmfD#t z`xT6)+J^<(D8&ft&}gGaFIOdv;4lql=#d~PcHr>b$)G; z0TYS0BCkjc(w1F`-e7ub@?aJ?DqF?WWkj}Yi>nr~K|O`Q`~}m|Q(UM-YPjX)=ZMb~ zV_3aMFdKL@x-Mf3s!0YsFWH=l(BVkQQajX8iBq0$bi?IyrqgsAPCtZ5sW&X&jajqs_AeNl zrvW1(ZfzcHBFuwukt4*BPZsUpG$?$(VGCGDI*tQ#866vBm;g5uRoL(Wp-7T~h+MqU zJMMd6MB$mpyo=CI5|rM~%||@mXY=4{9s40>q}zqj(|!Ui%H-{g)B04JZn)pYxK!ak zl^*)MN@pQ0>??l%s6*7^MOh#c+R+BebRM_C>4QLET~7&*?vDQB2;Ewt5A0Zsh3{Gt+bMCYYWJa$&K=_sOw?2*sUOMsnO=ilL<%r6>Hxh&j;%)SFLiC!AYSDBv zoM8<2Pkh@8fyb&Z##2ja%z+G`uL@La1G=cWILyH8fW(j={B-rkQO%#LLk~Td|w$l1&xQUH)FlswO&7xr}ys39_(uA6XK8ce6})%e1PN z$8Q=;vRVWMlpZo|0nO;aX%o6(9YpSEpX)zy;?$rZT1ueJ!3UZ&^EBsHs_qAk#+u?N zpB!r!{j=84&ZL4-)^j7wH&5*38XGg$zmvHh=8c8{uclS+Osq=QYf%oL`ntlm`eqMa0J}oq|1y=B@aVe^D`7Hi0FR)S zFOT*rm^9%+<^pN%08Kxn<`OQ~>ww zvENW~%&@Vx?t?NrnGprp1X@;qB61TjYBAHvN^L7~o7~Hta$NNx)>qPkd#=?)&FtCQ z+Oi(mLtIVEZt(0=KjwXZ-RL;rqL!(w!;gg3l&!V&mrd9yXlb@X^Q%mE;CrIh+}jib zN3gChMO1Aia-;A-K$^Iq_CFYHE5)7W?$((H44(z|7W};C!xHToOSYE>nJv4qxg%sIy%lyP<h+*7vHK8rrbQx{b!O6o4`wte}!{!>D|udZ3TUzB2t2cll;d zs{DM})_q^elN$K<+!IH>uTS`N^A!pR(FeG3bqB(uf-bmD*hCs2#4cgof0acVyAB!` z>LDrC-pjl@Q88rN%fl6Mj)>{AvH1aKvnaV}3v_0o%s|_uKR&(2JQn8a%9gF3?Cd#7|9jh<(q? zyiMjfoyJ8q+&j{x=aHE`dr=Mr9<|1#F6bgR*0wGByRXlwbrID*sqp0XD(*LTH}6^A z&~hp2p6_%`qjQ^n7^TMC%c}c(rXlDWn7Z^(O#pir{;8a*L1Wj=-0(A0=S%h(l5r3( zNV)5~T+?{BY<_SQzTIi>FnazpZ#HC8*ElyE!AR}cGpT&!aP_O+>e1A>VD-BP5MNs&!^zF$E(#Vt%ur!;Z+!= zmd(C0eBN$;YUA9cSL$XA$oj9|Ie~pWA#wIiwvDhYGh#A^I1pj^M9)`dG#M1ST~wjc zu6VeY`4{&QTfW2I%y%VwI)jDU`mY2WM-3Zf#Rl6MO`izP-u-%=|3KLz2~y;nU$;`h z+JYG3*RggI?TB#NW~pP!WS#H2*!H4^!h80Ra82H8|Qw0OLA?h=t;;bS0eQ z>Yr**cuY#i#kO9rDOjSni20-HwjInPjmV}G?3*!sT9uxzoy;P<#)5=zr@Q>K);Mz+ zT)bU4!fYhfb=rH+hBhP8NoOwC)Sf#-$IR8_x87qLwndam8-F&Qe*VI4udN7K4mw#M z?Q352^jT1;eY%oL|C=>T}yq0NlMn*_~cyaHvcPpqNtYY zNf)MdBzgoSgRzll921a*`_inqw)$gNw$ipK24+@-T9*HN7BW6GvlFtkUl{kt zd6ylB##~MDMY$Lww`7dAd1Ff#WIt!67xr;ge=IT412mwd&t&3>;8??UB_ljoak{oQ zBwJyh!9hc3VoNXH@y%14ljby)oMviDR(wL!9jRL*auBs(LAqgDa;In%f6(p=T*0ExN=vjvO6qrw9!g_CBI1G>ezAk*a`L|Ce#l zsBUWdKLxypfPw6g%w?JlbsK=oJ+43u4f)HsTr!mDim&cL)ToMX6KC8`Ayx$5x_{Pc z;6loFbb*>^k1ETxkprKpiuw#@vvzYVd0oG;7ZLts%jS3RE91J6wqFy@|6-;4m|1ZF zZX3VXj>5-hYkg8{`wV_cU*VUWIb#*2CY|<37rTwMSLlD!i>nn?3O<90PxZsDFFNvh zK$ohzj8g~a!Kg&{%=<#eyk(<_Y>$EGP7@!-U_#n^l8l#tPJ_8WYif{v#td%>Bu3v7P@fCtSD%=s#Kqo@$<%>=J( z4R!OUlpfk~*7$K<2F(31HR@cbbzK{8Z&$Q%7YgcMZs?4v9&>}|B9TW{jnY+TF#BO9 z5GMRp>`+`qoTVKvy!4@dEXp0|c0e)C&d!c4JR(n3oyDlReiuF7cfat=f_Owy&&%AL z=|<*>;vmeAVXoK7e?|1@-E=pH7AxH?$eU&hnm@UVt{ga21cl4(WmW!Wui~-`%ZM`~ zLq(FyO{zS;%#w>YLJnt@`1O4m@{6af(es_+H_*k_$ zNtu|t|1V77wM_qe1Ah_U=WataTL!Jdm7YOYwZD;WxiW7Uj%9JQ0$DVIxc*vIbqpiu z0*@;2Yuc&5RBqblb(1d9HMspce7EqnE71=H!Zay$eEHBUhhrAuD1pNQIa-HRW#SdU zkQBe!-*?YC)${fH#dN*Y{qNa?MX$SLMDC>W&od(eiASp+Laa+lN^%lnrv;m zl*k69`qtioMuEswdI>FJ8K-9XMbEI!S**L^@eRp=KE ztlP(wA4K?0V-9rk0f>ekj)(nQRCBIdk>)duWZ`)giKZ>G3p)PUn2{nx+E9fnx!|7h z`$Tzy#(BD03BRv88Fkxkc8mY&U=oQ)YPlxXLqF4zulc90` z(07m+bn1R#Cwx8sBFxQL{ftuq2M76``u4;K0K{qX+57sMAvBzpLizolanvWlu5eh( zsV*D7$AGmTr=P0YIg?c0rCUD>`z3=hABV+~=pv{zyFf!i*u{0B-DA!U;Bo+!0TSUZ z$WC|(n%B>%8a|Wq_{N&x+ki>j*$p0v=0s6A4)GSXEj2C1a6%%irKxrCl9=50-W z^J?{lH3OG?^Y=|_($ZEGmRmmPqi2af3=Z2nWN|6K^rY3c4!5dLzsC(+yIdKcs2$XE z8hmK9Fx=~>=V+NKw3Op=1fLFMr@o;cjSYaHshNgd!Y;K{XBiqCy#DLeQXU|ZNyKgrhbrQOY79V-X zQdZ|wVwbzLWeZA#duulgeVo5VUXD8tgq-|f!-A*bFv;637#6q9<1Xbf$5~rzZJWoN z+M&Bqw^QkPK$f&@A6>jf(C&M<4=U+KWGHF!YuJQHiNTPV+vnEc+j;PB?6zxbuDdt2 zwFT=hbfB^3$!pO`WL|K|=IJT476Z+>P8|>!d~=d<<}~Z}+l4b@%w}iLXFB2IC#^9~ zS!TliBRhJy(tVFjvkza;7s2uF*ZUndJ|>%vegl?V+xWw?k<9X{@2z`JPs}EYDRg(1 z%Qe*i{Awj7>#6S7O#*PX&q^x+7!quFP+?Nb#<_8pOD&0FWmWlWE!eOlip%drc^Dct zsN5{_vGsl-Mi&}+HHC&^jIrWYuGKJNL-dTt$1TUO(n?4g?@ku?mRrkbhaT+6_4_cn zJ2~jCRhsCOYeJT#>g;5qEb&d%)z_4z>~ynoLl+f&t+s`x;*22}b z_yD#`QoAZn)3l0Jwj==QEvNyCO>X@!Z_gDgBD+kZw41y`E@HKWi*K~ms_D3)`68 zvbn0Qr7F9nKi$}lphJE|zvYW|TNCFWDB+@?sIr=g+WG1&ZrUyj9 zs~+=v!!m1M?G4`)JlzRTqaUjCHzF$TCrwia=>5sbcP#ngs@XVYu<&2q(e{weayqS& zrGIu)1zOB6O5d9}g5=-#f8!W5M<#7h(u#;sZC|tIO>)P_joS`aWngD2e6g;2hc{V7 zcTU7*1$T^w9;5)#fJ!ebj#h?&Lx;u=_D1-All-t(XQHegbb6~csuM{nNWSaa&yqAB zm3KXwzRaji5w)$cWU%YMR)16 z>m~r2g@KN|5gtdsT6QWb;G;E1FOD^q7fb##+xpUxA|-AiJ7nmT|zz^ ze;toiC5}9Lc7_?}U0<*$ke)Q`<{u%ckB5~Jy4BSD|IoBG0nf}wlG^Ojjo0id>+gB3 zB0@oZWzmI`>1#*G>}C=na<|vF>C0>p4C9{VwsXKh2CL|i%gIk1e^hsw4ttQ2`EXuNaXB8zQbh0 z&sJXQ@C~UzEk`QE*ZZB4C|==-<`JmByydWwlrmZiK}!6BMw~bbewNR@>u~iOqW(K^ zaqx^kI&qhfF}`9kmcX>bJCLAqF}I_c&Ke8~%hS;MF=MT=`eKKwYqm}$J)WuhWJ2mI ze@dT6NASH`l7dS0x`?zCnYj*`XGY6rMe$Dm&9m%x1)iUbb^KXYs#M~ zBe*WIR5xYI+xoO>D?0lK*vxLO4|Yf8XlvwD$sI2HcjTf`1Axh-&#AwTUE$DQe=hB6 zE^Kx>7?M4oy`gk2I2Q36t!*BB01QG^cba=Z%bW?7D12A?&)q4;hlM9_2%*E~_mtKm zTM`_==!KsG7 zyAxgKf`(X|6RRfnQSTZ=bdYC14}#~K*n2Lrc;*I!8FV>M6EUA4zw><3;W1%mr1B>8yhZRbpdIPF z9>Ii9LMGHcWPYODhO2h<0OQDM>=Np#b~KaGh_N0~MM*6ueKzBq@SXaKVw{%v|9lXs zc%F3m+xf(Uc|*YpOndeZ!a(!Gx#9BhhmpcxfMi}J9eBu_0*muu(Xd=onHckjs?MsK z@GF74XqOig0twGzT@YL=0csyIonJ)nLaOdfCR(& zk;Aflrgs*${~lH?vdp5kbqGaN1FbkLSJqu?Q)Vr~86xVD)Fy^zVkUN(ac)h93-D5D z7=)1?%>jxU57Es$j7nCuEq~00;scIrXIHhg7tw!J@=T7(YDu9QU&`Glq}E7_8uPHx zbu_6sf=Fl}q{e&6M=D;;btZxa#^+?e$-V2`>*Xf0yWTTA1sk89mr#B`njmVR)`LhhOhAf!OQCRo`^_V5$kb=&X{CliHK;ERZp98EF~hSQ*G;3_ zrq6`l6Lzc}%O>}rw7C!3Lex`ySK{mt|AjQvyM(d4k_EqQ>%k?AL&wFD{9)*jl;++@ zJ7oyGnM^9Y*pm-v;Ub1%*J?`2uH#9h1Min{6XH@`6crNg(C4iw4_9^+G}hpbvN#HS z1J2EdVdV4ly>rZEb(*ww*nZ01bsZ()$ls>t=3`qDKbtOTiZ@L<%dCJmMpgHEUCK@f zx(}G0zy0~vfhNaT61sot*#!-M7dV$w&A>4<%s!apK5)3Y;F?(sLTD&RuQN#^T`-9I z!MsJ{gJLO}n`^StZ}>V#+0TT}#Nlf1>t?x&0I?;D6NyDRdL*Y<5<4n!_-;rh0@Z7v z|Iy|f*8J270kh3y6VuAI4p)5dz@aN%G<3*!NEePOKO`PH!SdbNov!6gL&f*N5oT%! zrxcPq#r-cUSK|Yyyi5bfawenjXt4*LS%X7SPNAZ6X!LoXcl2GCcU`xH>#~2|_+?g3 zInriTf;2S0nhVx+s}vuJAG(VVJ=c%t6EfsZoB9xs|LaRhu>OrmnM`zB&nnCiJ%!yp z6G8o7r$0fR6eKL9(~sP$md56cq7T(iwiDT4tN|(du>n+@_1U!^TYGTlM;Gfhd+L%_DA;Am-EI~PC_wlNucvXpz57l17>SO>69PxkOBdwp7nkbF~|wZu~~1@8ty)I zuA^}_f;mbD26`jjZVZR@LPUP%>g@E?MVsfCS7dulOP>dPfO24|4x7F28lNE^ERT7t z6-f#PWuveTJ4G8wR83sH-fO$d<^Db;bBTT;xQB)DA?|iwZcW?~KhnJO>}Gsvm!Hj` zbQo4Y8=*R<=o^#PG?u@O(lNAzbnIS<1j08_KTB70E{ZZ0Zg^=z@|nZfLF+(kSwC8Z zXq*+7`Tqz>+0=7uU4N9sHh4u*!W9S&FjEl9j<;MbgnJa{$Wkpp!#mMs_Z3= zQSGml^XS6R)D6qWmA~;zM_DeA&M$v1izdP$Rh8B7b{ZSsdkIwz6pWLo#}t63fvOJ- zNGAtB-Tipg-+aVvU+2k|Y1lo(RR#-rUf7e){OyO)*q_50G_ETobLj8G(uw^?yC2`e zGvkY1|K(+Cd_q{yQZTn5HlG4BQl)SThD$@^OOKlWP2Yv)GW2?*7QI7DjnAM=*owue zb@$DLEXqc>sDGq$-MHw7HK)fB9V+Wi?|L~SLVDypiu^+eS(2hzbjkEB|H_w5PW)uF0*f+fL(+58r5<)Qie86C&zwiZ@itGfGA#c8#m`d z?LY*?A08db?kQR;35-oCcwANy!bOXlc}E(WI!Y_Q2_37c2VFRS;E-YmQAPw>>r$F# zX&w&XQjktda~ZozB)}o5+m`6v0Hj%_8#buq+#GXdThiLX5E6c9-mY)OSOhvcv_ih{ zOLvm|K3y~Qd-tYT+qHS9@Ays+x&|^M0{S?oI$YV{EFm63+vJ_QI{+)iKJWl(*Bad_lwBsC`NIBcQ(|eMs|-Gb23mE%*%CGlT@m@?bd;ff0m{cQh@0w1xPibQ;Aa zJwL%%#7j6xT_Iq*y1{IvGiX1f;?pD3`IF<5LoAfns%Oz8?QcgIA0W*K)nbWg043sPh6E6OIZjQW^D7@JaV?UwhJm>O2 zYobJ(D8Qal_?0b88+w(RjrxEaJYw7+-|eVnWm8iZ;AblSXC_LMS0X6As~H#n*XmEH z?D)?w-PR7V=)uAQk!b=tX&KwZxt2~0pB)$HO#C-b#2ok`J%fe3XR4Bh&ax)BfTH)X zb7C5K2oy?u!<>sBLTN>|6hxvZboNP>#=s8(FhwsjV1N0zv3TXSrny61T$k-$Iw?M8 zcbqbSoQFw{nWodE#ivzuMVfVCtDk#^?e`BSIuEMI6y*_xKgd6dUT3I&iw_Dy+2^*pUZ;K|72(r1M6#+AJ4Q;zghp}2WO`Y7$soRfgk zY>;+g~XDY;7_+~HVJ5dsu)m54vcZoIL1Vj0hZI0dz zD6s(Yh_aDgWztJ4_CqR6=)`AJp^a)C)`OHse6wBneh`RWTkDn^su|#K6^K}7@;!v% zBK}g3V7<@su3gSQ?nXgJp!@Yn(p%L_XtdS?Fwf7}X;BV6y0rnRT2wvkW)b<=aSD#W z$I|V#cIb-nr3>-cd^R65(0_ojt{j%-=!N!Px;if^t5*x}5al?!%f#c)x;a-GkG~4Eu0q8;^giXsFvZ*bdZKh* zND>O9qa7VAW8!xf0Fu1Dws7d=_zeLPo@ULx}9S03r3is$_O7fQ#a4%l34I*y9NEZ4x6ggdfP$CRq- zJf>Jvr-8ns@C?c2Nc1Va(GE|-915HAzE1p9aUWv<*`88$a^KOdbw$=Ovna;3;!LA1 zM~N+}%}EbXgHYV+s(C{v_u8}srBh1}IY``wFtUTt^5tLpnY>Fcuf*E3_Y5@_F6}$s-(}Ksiyy8mOBGEKVSL+yXnOF$I^{T z!^`pG;PhT*T=bJWpW(mtmLiO!wb&h_5^e_!$@)l8?wohaZi+6^1TPM<#w{StRg5(G z4n~m4fp`mI{`vbwd+p$M zkFn}*)XZ*pEEm1&LNb48n>^GkvKps1ZzD8c!-gypK8URo&3iGdQ`#KlC&5N?o#r!u%okRfK%5Lt9|mJ&`x#Rc zim6{RZuP-=sb^|c_c{Icb~Ia2$mD7c<5t8ww*f8f+?b_Q9%MDBVvLt*0%~U}llRUe zxd#iVxw&GKyw~IA#tjp)dbtlex^)70EH)y@IA7=~QKCVdcv>QKc zx+@k#Xy<6}C~&X3=PB!ctfnAzQDv_!+j@9}(BfDS_y5Br50{^#Wn3z#H;q2Ee0M<7 z(gdoI@7xKyUhs^ekM|v(Vzta9ig?rVCfD!*AcluN)JGM4if}eE~V?Yn6Kf+}e>-{s+-7ebRc8m`#j8D!xqX+RHc>*#2$W z62jZ>hY$}=Up@|G{=G=%{ht>&$8Am<2T(jMCbqjjmI;lXAd$Cy+G zlkOz`S>HelrbaPKOyjE7)&SS`vpxvruFHHg{v=a|xCv)#n;sPWJ<&9a&&D2wWuJn_ zVeOwor6}fKtQa9~;uQC+6r0Y?P>!FeLIUBrOL^)*^2W-G-D?{YA@qaJ;)~ad@8&`8b?mhQ{B}0#vZnU&(Klgh- zQ46fB&hUwsO-@q z)sQ6GI+ZV{|Bv#-4`QhjkV+AU!pZhnx|Ud3K%>A%@Qq26g?BE%jIMym6t z6ZJX`O|Il7tm|&B3t-|x;~R`v0|bXGme@J5M-mLfT=7#FFMNfLhQaRf6Hy!o=D*Un zcSpdSx!FoPCot%m>b|#W!E~PnA&5Z){<4y_nvgziRa-EeK>guSqK5mXvFx7jwjLO= zcyTuOY1kIbXrXMqxQvEB9j@H->kg@$mX^?EmhnbZju~R$(DBp7QT;K}^GQI7EzLwu zYVh?xvcml@{TQvP@K@;>+UM=|rA&Kka_~LznMJh|SDo}es|cVdeaO~#!fOm0wW6&_tN)b zE(gWE*F-GuMFqNT?#m9XUd8(cT&e!%>ex=mA2D290|O9vqNpj5LUFEXT(MfO1`J=T z3GFvU|8->oXfs*cST$s?@gbA~Zca#g{QR@gR^*i^)+-R4{(G2bj7zI;4_T^91$ZS& z9E07vYL!Z8K88yjaQlp-wx>B?z`zfIrOK{L?fl^BR*xf>Sq0n|mC5KmDmik-OnW4B zH?GAiwiYDw;thYTV^;d|UjqUV{pl^Id0tm##?QdpzJ}&KVet$PAPoPPq3|2A5(`rl zS>jqOPWt$76LeDaGjP|fjP=>Jd3+b*UQoXIZTfHf95%0gUCvCoUp4rq>wJz#pCaKq z3=mKk#rW%_plcaB>@+EL(KJDQihh#FcMLmR+o#C%Xyt6`hw5lX+Cd6#0fz;P_XV9PFjb5^}5C-Zr*HT`Rxl zB|XChAnKGFdx#U`Z`9*pKQh%b%h7q6RoNOUa$;L!we87IciF&n`7vx({Nw3Mx3Y!k z{Q4!eeNA+Ag{7#ZT47p1o&W6YeJ+HLXQF`YD4Dwzo`0%sU%fD8`R*Z;!9fu*+8Aj% z=&coJMra;da?T8qlkVvFaR7j`#9ZM+S9_vstG(uiZ@}k6q`8nHq!Kfn)Xa$@>H=*v z^=&$e^Fp!&#wUF$>igQ-qqJ~+HbgiIH5D{e zCm=GzcjcERiq&rmi$(`;c=yk?WKqin|8j!o2LYZ7+rCb$x^Ab3_=0in5C7y^niKKq zBx#&FRC;G(SFjh);CZYoSTdf0~fRMKA7H8fH&)=~Nr ze;0)wQL_;bK8o*4H!-}h&iwVfTRWOJpnOI2U7_&<>Rp*0ge;{QU4w>7`^-fn{Fxdy zND^~!knnFP(nb+9Uu{U!gxy}vD`m(GKtRsv7JZ?MiPP|77o#G$$AJ#yJk!33$2H%r z)PB5o6CVO32l-SMc3lccBWeW=LWeplc#B+f$PD+1pSy$~s=PGGA{2hZ>N-k;Zm!ET zpPJ58`0h33s!VHgN?Z@;k2D*CY(d>uUe3&`MZJ~glDKu$J(adI*o&OP>0V+kN2DPokDCqu`3AeD(?7F|pANqsW1k8URV$WL z$4$UuF7f0DM{OyN{U6hVpQ|%dy}C*o1s8vI#O()}p`A(Q3`QB1{D!!7)DhubSNmtf zqZD1m3CeX_pC*L|f9{(-)I|8So-h-q%_4;;wo#EdG^^r8(b)zMv_oVTQ*~PAlp(Gr z3Dk^;shEGREFrpgL<-*Kw8Qq*^Xt#yhhF6P3MImzZLbYLp+nXDc3W*9jli9|*a7A* zK@#0}=|`^FzS=)ku!V!q+(lc0{Cre(Gfk`(RScM&|)aG-u=y&v`4sNSX_EBE7q154I*Orn)zfVI5 z#Y^pJq>w$L%^)7L!fE*T%GZbOlPm(p6)SoKL5tNaHXTYq1E0Fz0z}F&URaS&VF=vi zMX{Pst#qAXUChjM-cgZl{050xLR0bRjF{BtGCoTk0JgrqibwMG50=eGDQkCo^65`2 z+Ou|V^b=v6EuVQmNX(V$sl|PCMFmv0M*QVe$$TyW=kBFNX-`RKOLmxAvN~CiN>Qf^ zt%@{CSwO5xjlwfk&0?|r3hb|%j9 zC`7v$G0CeP(zNVXM}*op!8++m`38SI*uB5Y)_J=&DbJv2W}A)9T0A5^PCebO1xrtP z%rGoQE%O|4DQhGD%bg+X-L51`Hafuu5i8+~iGBcE{`}8N zT&M-D;wJQhOQ^qatdR5wH#ZelR4J)W_vN**3a!VKN@CH@Whp*qQNHqd3 z2tsOG=__Gk-Uh_GY#GsQ5}*50P98f32}u+E{DMwK&f}Ia1I}x8a#Fti3~AH!nbctb zhV8$$jkWVe{_XQcy)xtrfBp-~qe_kwjD#+PGqmKFB5>eKNlFMfh=_NCmZ}`Z#B6u1 zZJ_&9t4*2zwwN`nq%2te?hsd4whb3|>CA}Rajm_GE{=`x)gQiFzmUH%A6b;u5Mw3N zrkQC=Hc?Q7tnKzI60?vNsu%-tZpjugei_u8&4}gd6$xMX4-am4=8KvRqU*}?OK@cL zYB$1XI}wJgJq?d35w?S-u-9CBP$(#>LjDLNs}~ujQ^rLjQjtkL|1T+2;rCC7+SAl*=KNRwAMXf&`;d40 zT0;L9`14cY0Nrqr=x(yb$bDbaIHRkX|LsC_**w^XD}#Q$X@6bPNY{4XNnsIqbhEyG zKrNZ}uN)`&bg~m*!-X>dYergcz~2)5+-i_QDN&SvIYba*SqWP`dkDP|9eW1~eE}5B z6m^M@;iQ9~8vzK?f#i2AIdHu(pU6Zvg8yPoqk8-~``H)9X@}=q$sfL=9a1VNZxRn~0t#!S#w%H0R8v1e3R7pw*x^}uY&C0Z3 z>M1mA6=yD-`ADGlxbT@1JV$g?FJxmX>8P#VT(?FV(@TU1F_CL8x><+QYBqk0bwjt3 zWMqfo@O0&0I(mva9C{s^5Scfk^ZQnTIy5}T;{0)nqj&Cf zJMmf43kh=OBA%T_45LaST|55nO`z#?tUmEYC{E=5R@b~iiPXhefHaSl@WX!s_W*OR-FP=*)P<5{?lGrs~b zOucqIU*O*z4SNu>E)fmC%@8g{La(esJdW@!fJBh(R$F21UEc`z{z8$+!P}-HXcf`P zQj~|9ptMdfC7)nMKK6gbSshJ(a($ZmO4BG3GBI_apMSBP6n4SgWBFkKEWJgK`vc$2 zveut|=$l)<;jt%ym&0eX6=EIsj%xP}J+kISE#emYhVwtK7wnzs-qGCqW424(h$nLp zr@f?-DODy(CEXh&9x-^d|MWbZ1ckSI77%75i7BVWpZe6B=c9Zt8b7>_9r#%J;@x)N zRG=>sdZ}Svof(FXg}|erw||#L;3SLq8;Q=sJ!R)zH2ju?# znv{B?>9WC0(T~z$P>|o}a}LK!bdj_MPGLU_zBf`=5CuLk>%W0u{o{HGmr#g1tl%lp zIf+_9V(LJsauQ@rLM<5vXv4j7dVvUQZ}|pXaE%MTIft|VTF#OHx0~rS2xzE&*{FWm zyr`>@@|&Z}$7!cn@cY>pU7u7zHvL5{Rk8@D={+)W093Z#288JMf0?7IRTou8^Q zVQH)Ut+3W<3Gs(>9pMkBquk+?={O_Zr&m8YioQ&~vYLLC%w_Rqh|%l?P~D0%R3j@k<@ZRNeOaUkqA2 zif3zo;w5OP{JI3kNl1dgIrA)q`Zq2s{aC7}bb$G>hIl68&EQz>HAKY@@Jn?ev=HmW z*=FHi;yBj5e%9!Nl@+htn+TN{--&oLf2PMD)nv2%GcNip)r}C!)R}su?CjzkQ=X~P z%8d^R^9)Wvt{)40uy@rqKfSu3bkh<9rsVo}=hvZ<0+lf*7f48(OIbJmuqve+@n*Q$ ze{%5i3|lOH_!f+bQn*Rzsja9d;LHr7p87@yHO!25G(`Cd=+2hveocir9u^fpi7>nB zy(_-@vF#|_A8rtlCC{boNLLI)q5lZ0j;|gT*0L0X2|Ay>vhG`^nz)3{t90E&j~8a7 z!ijE7p>J)QFQIg_qKN&=J^us%e?+htsyO&`;v2#>HK7+e~z?5yP6`jqtM{ z8j@ZN4|bn^J-MBZtUL&TR6%oJNX(zr`pb<-ZWqoNxIm9~ho<=+9DX^2_7a)ri+V(3 zzH`sQ3Ntte-J8vzh?$$1hvOuy5T;{Ok!c9RmQAO~M;(l(%2rgN#tr73j0&j8-lg0M zE?-z^Fb;OXRF7bf8)kxr@<-Y0AX^fneO+;70ja!26;x5Wo|e=lb==83k-3Qv%+);J zQsQDsVx|NG#4EfR@Y^b_E`QRfo5oX$%Pn{?o1 z4-rdTI36iIbn_wyYMVtKOOnbPhdn~QZ16qAqSO?59!?o({DQJ@UNF-(WLmlziYJc# z3dc#Zb+K4hoY`gb;UY)HbA`g^h%*gsS8kOwZ2h8dt;i$__4o*IA|Fq^8Q1Wx_Gfi3 zF6YnKm#_+#g}p2>e#rk9u$CK^BuIP!QpRj+-Sps_9}@k~Ej>v1F)hUg;Qhu!!rIbN zj}vjF5?*+wI@U?+Jkx!pikxU)jHJ7MP#u#{{UU=G!GZ#nW<-( zC?FYj7N)@K*lap%aGK=PW<|~yw|3(az*4@D`@6=QZVx~yqo=BF$OUCH>50>>yIgIB zbB4wVpt1O-!n)QF>C_5MC^}5Ta7mTZ5KNtK+UOKuI|*ga606cW93`??X(u0;cCrD* z#>Fv3(CNoMjcXQOrxE@m7M5n3MBJd2wN8{Mh%U z&7!do47hRj^oaULK$028)7>R@j7Z6@=MEz4@or9Z67v;{+7af*F(VPBx{*z8fAV#cr=#L$V#}0|F>iRHre;R591WMrn8{G8RjIGLaU^!8;(}`uGjf-5Fj;ZhJd`$ z?$Sv4mj=tK7)gpuK}^*J2hw{Rx07|f(ZvKadM`~le5jKUKo=2P*(fzqpK-DjHn z4pwnu6j5xG|1E5|BgE;21ORaUcG?9wdhm_viU`ZJ$r1+>wBo5dXh!_gN15}-hOE#I z`6v*>mc3K*HzAoOh*%iQGO6+Yqg(Bec)9n+YW)Vomuutw5G|l}C+Z52`Yu*v}7RBzi%Uc*4+L6R;mI$~^ zLK4saxtQzu_VYCR0Vo@^_zPV@htBsbx&-{$`Y`iq%SNZ(`pPork_m<9Th3P1y*~FL z$c6vwmalUcD=^hJ`BHPD-u6t+d#`0o^9YSD=Z7mZzwHw6*0<En|%gOY6UDp}*!o@U&V21r`@dSiq&pKatrDRWLWdbTO!3a-DwL}UqI z%PbR`kC2ogp$A;|46b=-_16GEV4E9PY&*r0yh6=rJb)HsfF9o&;iKLP&CoLYqVLNC z@#cea|6Em9B1_Z6p{pWI=7j5RlwpnYFBmj*^-vrdO#S-Vzio(+d}KOe`9c254SEn}mx2MZz%niD)<{ImJYC>bzTV6AbTcFhm$4w34B3S?@QA=&H_n!}S0_2XKxU ztf#7}KN#+Rg{r}#TzX;{Z?$s4a(@@cAt?sLx3eK#&bGi&@T;mHbvhh|6gK>m}x>1#w z$VQ5z4*4Ykt=D!`D@J5}G?cv+Sba6^aPn^;5jK9n29?YD5;4Zch5YNYa6$AsB|Ss9 zWGjs5xNKe5<1!-=qW zPV~eW%FJ;IYmpe~yK)QQf2td$C*iotz5-wc5#8vPW(&@S43PABu$mi2BJ4A${Uo<; zQ86V;E_$@lZVg-W9&3}Mo4b-Hcgeu{OXVa}8Nfk9B{G)y{itzPF8VzV` z?rCR7Ety@6oKyJ)BCHrhN8=IsT6OD}%Hj|Rtm_*fQ7A^h{A ziO$v=J$g`lBm^LwhT$1YtML7d{%PSK1F5V;+^r)lTIj-r>JoNWZarMGSbRB2MkkEg z0@Q3d%3=a!duW#n7!tUC>r&l|JFiYdW-S1>fnO-*gt_dPNOU{ zd|fo#1Q9ZnbJMHggh7DH=AU58lv}#tHSl)>>=W2iy0!AzG~t_GLX6R;C6gbg=a-b- zdVthE1!7fU?bdsLw_m=#f^Idgiap5pK}TWr43C49>cdagZAN6Q{@2$}fIP9(c6PoA z(FQ_PN5I%h0~WZ9r!PElx3KE4y&B5h%+&sEIF!{6qown}(+cQF2Zl{ty;x+A(Fp0L z`WU+DqEG<^!l;7#Azp)vO0XqQUyQ$nm=%#m@OF>8w1lV&4c?g>>}w=)bst(Z_&P>W z?*ELH!50qIS9UW)lVL+7Cp9~+T}`Khi#GNa;Z;oJIB1Jp+sfM6eU?l;Gj{i@oy5Ai zHDu;z@v>WmUoZGNd!5_murUexJ)}bbKPLL*=b*+*Afh-&Si@;UiXa31JN-txt&~}s zadq%rcLN@7q5>efPOx?oQ4o4r)y zj-NKqPq|s!O)D_mRE2mh!*|0NN6>te_pHMhjQ7dK`Uhu5Aj;`qgI?S`hl;+QAej+Y zDS`6t&}`f=r4J&h-RJa(s-$ycjIgp9*#jydHjlge=?SC-IH~n#yj+8b2-*M&5r8syjXZQEE+#$!ITsVBkKBEij>IJA(RP? zs?5m%*FM&`kwdU^e&Paql%xIoRJGOZe_v_~eX~d5FSul`R41PW&eSH-0)7{Q?6ADj zo%;1dkEbsiAZ`|!jVhUXX&N`-=v#+lidGpMhq$AxNY=Q8NrsBI>K% zY|FCp2IJ?!QZx{&DbG87>IVBd;p5ansND7iCHHE>)8UC=wCy?5f zu)@-Sb>Bcn~kDqqq(%xKhFJl22CUCETvtR922osL`kiG3}=K zZo!^~uw#@-Z{CW_aRN?nYoscJ`1Q#w?Qg_c})x zZS%Mfo?SHf23ubx6_uP(Wy@TXXiA;%!PC*sHOg5 z0gap}do4b$3J!LUjEvk0sSJZ$To$f7{djbCA90!rS|B3aWkNgDBMLL+?m=RF}p zp01*#|!w@^GT^$J5r3wLU2wPly05B~?9Eb48c#!>{gw13d(wXr|LW@_|lq(LIAw!g2 zl?We6N;XHhk$8M=-*|Wo9}zNqSF(KA*+1h+C5rCiq27jg8wH=&#^EzKFU)nIAiQUDJM>0wju755_;1_QjL_6Zdj zXVhBuN}~RvsRfp47Yz0D5ZbVv9Q^m~6G&;=MH;ej)k*l`R4rX;ybVa|V-)LZNwUYX z_4K7C4-y_+8v)V~rqudUmU_te`JU3}M`z1$A9owU2>7W~7g0S0`7$Ek<@X^y$Y&hk z?L|7z{g}}?4L7y3L%zhkT}>in;D-Ec00X3u6BlYNMCy3vN(641{iwvHFji3Y%aKl|u5BXzmv#>0?8aTLx_*vrpRu`)o#;xs&NcL~D1W6;u+0o0wN z4Ddxa8&HXj*XAQ}A&&cI(=~Hvf~`-3Ap|*DNGd|}N{GNtPtMY9L=cdbBsMEGoGA6#8$9IxH?XhJ;PBn z<2^huyB5MHs~3RI$|usPOorlq`csVIuVDrOD!3W|>>c0!FGTL4PeT#y^_S@EzcIYC zhN2u2{wC?~`XirEP9x!HVJ!>A#D1kI?+&J;m#sKC7VAnHrXh7`?8aJ#42R+ubk4M8 zYr=!>MELST82y^Z8qM=g5bj)2g&R5~P!EoU$k6%ckBp$9(|I}}5`NeoMrG0(%ED9Z z(8QgZeB4E32tU;+0NflTgT;Iq9aCO~1kiG}l4h3dGI6rkK{5}KW zG`!tRWe!a#7FozUzD+m9s7%G|^W`ts*!Cq{i8h^{LD`1oUFi%d&`GUU^vkFlI|%;^ zdR~km(DHFEfZIFSf#a-hQ&FCb!i;&P2u5P_fCxn~K2csOMvEfYPClEyvGo^*0$#7- za?}5P1Kki8?}qH;wQmZRBH(K|o7wQ|y9!h_c{J7>Aex&8JlUT2+>0h8IfUKF?=3~d?3Q0y50HVc&Y!hD;ai;(vSniit|{If1Zc&d6uAJ=z^+=aQTk;Md|QULhw z`>sd`A8aO;O0)j1S_z&gHmcMHzKCihPQcdLz1kYsZIEF&Xc{A;Xs}}5{06i_p=Kqb@0ZPXIfK! zW+-ZD6t+QB^!Si}Sqs^fw2lxcZQ0_&{{2T;SK|3oCr4Au9BV z3Ga&`2a_SI{eYY9okvm}1)jUN=o@Ckjb13qh}XnDdu0O6L`f>&N7S4bLH;248yj#E z)`sEm#G^hiwgv3d$}e+KrM)Ube$Yzp`)-wTXQMJ`!HH`#rcEZI=qPD;NZ92GKInGG z$%L#wm`jHp!^~!-0#@suA`2rro1CdKNE-*b;p!Vu| z4S&ZMdW8vFuZ2MMz#5-oFlqGk2(rC2FQGh?L0njoPx8;WHq=xbjsn7e|Lu+itURCG zl0J$X7B-I7lP<{v6(bXRk#GQLzrtCu*b^GH1B4>GK;XZ!x5qT4nfR#&VJ3@xQ#wPlZ~&n_JtW~H+PS<#zB4*dC~=go!c*bg z5+3F0LIQi8%-%vh#$@@-M)@NkX4owsajmF~9 zmu{G(cgv#7zd|3DRBsyPGc{o%U)Nro5)%rhLz!U5o4_>XUPpwtaF&2^umBq1rY1;^_hs&rBU!}B(AXa#ECHX$o3%k~xc zA?dv5Q~Ld~uY|_%1*PLgoBoUb_z{>0{T_lK$r}el=WA~0&}T}wCFBYN)!{x^v8|5a zwB5Q>Zx|RhqH%QNxL9N~=$zgWyvo0{TC7d7d2e-03WX8sV;PqGIzuglak z`eN!qiN+P;vBg=s{L?8Xldr>8K`!bbBgC}r<3j|&0oRdB zCZMGLrd-^u!gN%d{Kq6!hnZApE&7I2A&v*G1GjTjhG-2LyRUvsowAr?+`E?m+Oh`i z<1?mDaq?U^8^*_PqPHuaF!NE(p&dleD7g&DLelERODZGtTLw3ALs<$wQopwi5f^{E zITw1BUvbdO^qx}diF@23ZxGWI7N+*?p+HWF)@6*;(koBnqJM9| zl=$*>WUOhQFZQ8#+Ug5vdd0gv{)hKOWCRKfVztWQhH>{3(t)_*qgz@sZn`FprsgaM z0FnDq)QS2X`ap>;Z4{rY}ge76M;+^Gc*4)nt(s^c7PcOX1!;@1Y8oc*!40$+NNkDI#9-cQVsaFKK! zMRAkG;#xyJI_||c3G22#qK2*)a3dzVZvBw7$IM3ggXmMu0i`*(mF&Hd`(KsKeK>w+ z-U2ZS*WY5~aKI6U;%~yArfo$g?Csm<`T&}ZzbI(Xu^V^8vY-hP$0W3!NXx2hJ`%p`Fz`!4 zA&+rV$0!d*K%AR?15#g=$i4I;?)2l4Y0cQyG$CQw{cx&-Ap?h_s0W3vJr#RfQgo6_ znV5q@c(Iy&xL}u*9o?L>hgz$i+-sbOV+@uh0$TcAiP66=$KUMM!CF}*8 zFHBu7)SgwCwgjxmd0-Ik{qRvAAi?U_1Jj{8;tv4t!#ooXJ1zfzgp&3hgbnU|!j|or zA;1sD(BlY~=cpq?g7nYNi2c|OgxiIQSahNVj~{4Jwsn{&%wt}YWWt!pkP9+Sqk0&c zC-e7*X`CRE&g_n%p=^fho-f(y!F(F!9I7ttg{aKM?f4UgIwd>kr+B4R9|`BiW3dEK zwM>=UFq*shF+E%?NL~>X-{UESN;2*S5`*0#t?K66Ck#jD%=WH{K7;s-~Za4NJkktNqGDQULwZP3IM5(!2*`iZu&X1h42G5V>~{&UEF(@bXdoHYKS9N zbM6DOrPR*C^k({SX#h|yF`g=-UBi9qoX<5^DUjY3_AX0&`*|W%Pe6~uukj+ptfyF3 zzoLrWk9?B3wdOAms=@?vKmCAb0L2wk_D5`O=+0*w56r?i6i;m=IaHJf+@<<^LgEwr zkLj08{iqF)T_+uKB#D*aPi|`{ky(!xbRS`C32fTjopNZ0gCGp+Kcs4<$c71P9TqQ&+nS$RfPS7 zXH;(^TehpH#M@Z)R+AWo8RC!ozqmYNIYNk2E9RRfq+z2D{C_|juoJB57~Qf^q4O(* z6N+icU{`ktwM*Yw(@8++9muy8TL#(qY-P8(_(bviXUV5+siU|;Lcqw4z&+@5Fb}3J zN9022Ce>90KlN2HR|qyMgLtwKPA!Qsd@6&aEUUH<$RP)XKxWInl%hUwQypTOn4<|% z7;dY>$m6U!exA!XdaBHW! z)NvlJJNf(X8^<7i6I^K3*mFM*)A7WE5^AU+YO2z+mIkJbUgtOtR0hTEyU1 zx42%kOWITpzwAc9_&d;H+{#otNBzv1bGdhSa?GfQcL^^})9as+{a|r1aH`r;s*u6w zTe;&KWQK{|g#+bn5**fG!=YyTCTszH!dylQvBkzGQ+Vfj7mBqjPNc-)|C}eVz8G4nqoa?|BoKk#^U^@&(fzaU`ETkMWIW@Q9@8< zEE3^KAlIY!DW2bkOB~}{U+_+o_k@2H_fQLekJlC&Qw)xJ3Dm`!oE7M^c2|KuSq+CK zB$q@K(-j8+IQ(W!-s94XI$+ioh`m!jaBjjxB2{gg0JL4&gYv!*YWXJ5S;LoQ@H3H_ zpLLLanzcT>SR}Uiy2()rS1hYeplUo&_D!dA1Y_%g8*lF}g1?WsY!mjEnTk7XuLt`Zex$xW@p{{uF>k#_H@!^tC?%K0OnFwkgHioT%92U@9>8!Q% z<87}9Mq#B>c@kCc)tsU-(+mOU+aTvJ&Z%Ef8tO{?Mp$h(y-Vwj8Mq!&N2w4lv2rxi zhYMxo+biTC2_$7RzvbWupMhJcWkcj-kedIxhTs#$QN$qe0$%bG zbS(mlx|2qDt`uz3kZ0vZ@?w(M*7$#KCzkH_<(Wm2^2b zZ5pi7`#jUa197VYEwV+RtOnlR+&s_c);c7`Uu2kJnYC4KFx1L%;wu5{tMprHEyNX-}^N_)CZdQJumLACw;F*SqIkP>l8Hd zc_da7${m*zu=a~mA5+W3;lkEonO{ji%`8GYw#}du?oD7VwU)2q6Q%PFm3wf4iX~_= z;JfxQ_?t)HmGvU8$?D?dLzK!61?M)E$z??RL5SJ@8;gW0mimD!H&oOIt!A#FmVk`X zuanTW0e-8MaJ_z`c6*GqcU)cS&gyEq%znElhBSBK-AJ(Qq%=0`n40J zd}7-K^!pecs8bOqm+-Ex+|O5A@Q|sJbVbBD+t1EDNAC(YP;=&2+@*ofun1ASf+hKA z#=@qich9+%aP#(Ua%kboQZ9~I{w%2?^gyoqkf|mu9ql?CB|b|VV|P=3Xv=qM>*9fF zT;1!PpEpZg3QbFIy^PeqEA=$1L>?ab5^Rq=Kdq>mqrYWERcm^*$wmx<<$# zD9gIojQa9TDmrt4cbc@@1i_zUp89;#x>9oPH{?kr&0jIPJy;rqV0BikF^4tc$MWc7||^B2oH|;3_m_zH~JOT|nfw_%1R|m|h@N-nY`GQzssvQvmL# zDfX+@HIkr|5b3sAD}AYK{O;$VnK!NuhDno2Cwk*P6F8#tWDzf8-W!D^Y3eiJ21K!? z)06BIMbvQp0InJMd|Yrq%`m;j0d8m)uNkON%McND-wf#oQNO+dPZ)fbhW(=tM_7kT z92OVIXRjSQ$}^>~Fr4rxX?YVRNBZK}w~(Rw?5Y-mNX>rt@r(tsl|}<(Dvl^<3e`l1 zk5t#F$@n$YwFr^J9N-B90bw#spobzFn+n}yZ7FOuJ}ci7l;+;%4!4ELaoB>NYUK_df}!vWQ`Zsy`g-<<4<{*>k-aRl4ek|PdsLNvoJYFoL`IY;I4 z5zKr=Oe;q&7puWRV=8-$LRRaEeq2SIIWL&Jt))9okhoE{qL?=yvyQuLDPYAjo@}Up z1&8@id{ddn#R+f2cJQzg62H#TUVUx`inL+25rh@A4u){5hKma}*UUyd8E_eH+!5+F zrd7@@>MLQm#05$jE^52!jf>2Lw>J)DI1u+J@yEKm%Ba?8X+tpEFl3Ck3-El19;&Y* zlkD*1ZJ5O7+o_}vGgbIs;Zm_*A z#KZV^jlMg7E%>hC5WHv>ub9ye!||Ub+@q09WGg0{z*maiRswV^a;TT-*61SYc zm|m_#BT|0T8&#!A+<1SE#5$hLsCZuAL1v$_^)rd`^i}6u$<&Ds7?}Q#f!x%hYdc0! zUzVN{;xHE;`i{&G-`D}4=Nn`+46Bp9X#i23vemFi^w8(znD#Z&<^;@)@emeC=XZA# zO*5@G4xv$Z{zz0kCrlCBg7Ft<9}~8mIYMpN=DQ2sc30i|4540qi(!VS!-Ty-Se1c#4;kIo7gsh_^VaydiIi{}t!5||Z;42*`*kU$1X>v(u_|XrAs}a6N z83Q_pw`rTXReKo&wFcdrLT?@ajR-O__2R?QvU<(3&SLo0n@nuy+c)P!YM1cour&Ic z6-hF>{%bEReSrb&m`h>^oF?e7yU3Hn9aU1xEPfqy8iRtDay~D}`OGusGXi=L_UGyk z9AN%kA_Q^|>R%~8wpn=YvZSrVf`SOD3WaIIVKJUw#e5q}`VkIyrc8!8AySPk(@kcu zc9pOF;rb*RCwmqs;H2INZtR|jBnpV6-4Xs}?_&uA`B^+1EXSdc!dFg46J1yw4AiH2 z_`FO&*s{PNHks;YM4YshoN+4P3DXu=h6!RbGz)Ht6b{QQ^4E06z1`f3VTqpzUAa{T zM-c>?V>kMq*MVOPdFAaBKZ(ZKI zO~%%5EVYFujy0*^=MOv%TrxLFnX5r%H`!`Vn=t=@(8lTejCk_5RDW*8Z2GWUj& z7XN!s3(&1%I8H19f`EGNksQN9z9D%bd{Ig?MT2>)UzsT2xCJV%DUFs{>m$E+`O1X0 zv*7(goKhk}%aXWp^mXPIk!S!cBB3U3E+m|rW9r7B)AleV)3={*6-lR7P=fm+#Y6T!4ef($n(sJA3 z+@Ul~mN1#3B~6=>!_OLE@V~M~n6jBJ@q_tNXMRYBi1E*-?y7d-YMYBv8o6qhzA zhSz4+K6I|;%cG6qSe>%D{{S~_jx38VO2xaDU3Ve~tbJ(6Jd2OvN_w?6)272Z6h^n+ zGVxE+h(TNU4#8ZUXWAYgVr_dtGK;(>b(!3oAyMNU2lAo1x#J9H?FNaT*9I{e`@?Fa zc{t+sUq1ou;>r5P4*ipQmOFcTdZv<1`|R9v)PH9o*2hy~;`2R^`>nVU8ln@+9!2iO7S9*;M zl$vj&X9sR_4@-Z2*;5@#nW#JNE;`}u>_m;Nj)K}d|9(m62)#Fz z8b0Tn|5M+MlzE$kf!Bxr4&vG1k!yrt>|_4#ng#tG}lSX)-{ z#Lp>yMLT@ucj_8!7Px522a7&SUiTOQAc%adKaTf2Kff==rFK4c304NvZ|&UAs{x>> z!HC()}%jt0gSFr z&in?WVAcgbvyDb4>o((cPeRW)#Si-@HWFK+c#1Lw)&-IAJ!wI48_lkAROZGdn~)z@ zKh3V3nIq=gratfI#qf&$La_Qy$eW5;gbq8Nx_-VhDi<()T!NL>M5QPho+)cwYd1K3 zp0SEw(!-rMk1X$v53?TxT;dz?OTb3niZw*d?uv&v`0n|O13NgXpl|O@doKWls9sUq zL7Z&xtpuYbuAQQauqT5YSz4|5Gwl|g_?%Wa`?CSJs4p=@rk=hMaC6DY*YkXK?q9oq z&W2hnt=E}eXM1s?%oGrH5mFke8ju6`Z|q z{bvY#N=lokD||i_$=V=((Cri44MjJk&Us}8w)_+}P*9?U->i#!f6ms#jw5#?#+HHQ z%nm|jo&isu`mLVci|D3pW-)Xr-AQBi*+#DCw)c0QcZ1&fs`82CvCQT|UOoH$z+2QK zOB+aKhDUguJB;B){8h8=LMA!v>sPe>wDbQmfVNnN3Y>`Hr2=&;KXV9TOcHl7xxjAFfvnvK+n=e5{xJ zmcH@k{Z`=>53wLhe8^te%p6|znLszHK|L7GMrWt^KaS^-_-?4>^`-u5#Qi3i_87i^ zDC)s?de=g4=RK86hoMP#s$5A;-wa#0Ma;yOGGPqPVw5|FS9o`2X+2`ga^rGPXo#sF zW;UnoR&%^nL6KR=j>N{?N?5hSK^bS4C#SuylROcRx&z5d`(AqBOT}ysT;a@ElZZ{3 za--iaQhCS{F~k^4`g^9^sj;h=8qjxK^PAqU7caR|kFn6TK`HnF5<4FF@+w03&Bs)O z$K4&GM>*Ffx3^@*7W_hFWJ!7K<7~%qlVTE;0^UYPQo+5GLY$I=c;Hq zVRA-KxwJ4rO!%{e!}7(unuGE0rOescD!2D#SbOs@n{< z-UJk`{nO%oHX@@B?Z>)IURFl+eAHD8))L7z+*@PrAH?DBMW)!9(ps=y+{GezL#gkP z9=IX{cYY;K1&_|iC_d-CX*E8d(k^-}Ewp&191I8xI#l#&IYb$Xx$7R`#p^(??BJv0 zLa$Yi$umYc4~N_0L`WuNv}nn8ogoT&<0|*x3VYyXctU?A`MGY*i&)5Kg;lYC zRdLFmr%b#{Usr!}2Eq-G8t}t|?$~8i1}a(zDc=sC^`}a#SdOx9j`Ctg7~ad^PHRMX z@p%Z&O8TzHv=2&ND+}@< zvh@z8nosM^i;c1Bj}CR=O<15ChE;5*&v{##i=ltCVmWW2ep0^!Q~&)Z);0djDdO-p z;sP<%E->chZC<`Iec{0ttnizP}A$fJ|u zYk03pGS%Y#7$U2C31sdauBvaDTzbg1+aWSonPR<^W8w#QQsc(L$Kh|3FSruW_7~DXX!c>o;Gx5<_iC}69}TKKiO+S{RFQK3 zV!RaF*%67PrEII_JMXP{jTD9Mm3);JK|I3c`y3(h+}%M|>EQ!2973-=H_fm5@kMamZZMQu`*s59{X&j+4(9c0WX$)3obPn8 zql{g`UaPOzjSlUaz<9P^jum2AKLIjVj>0qmGN=LwWv(X@#T=4;N{{Fv*1!8k(B0TV z+Q5;sX}@f}CIiP9Pg-v`djliMUXnq`zY;+ zy2IO6kGIf$vDCKD(!+0BeIK8|c$DI4OLx*&$|0OP6l2#eLcr_$4XHy_#I!|03uzVg zj)oD%d_9)eQOdFN8*a9mR@53ytxy$TJla^h#M_DyS;qs^KF%i8#=KCz7mvE*XiD)L z^e>ny9hmRd>8)n8sz#v@G2sxN<-^pQ;rFsB12nu7af43M#@LZ`oz*H&LR)P}6fVJJfFK#i4P5H_+CzW`) zYJsNJpzgq$bVr`Av?kRva#|?QDH%cwq-6^(P6xdYipN4tIlu55L9D#eJiRR@0}{5N zZ}1OwGxzSFbHnNj0DBjkpvga151YxM-IAmg$Kw+sY{Jb}Mn9@j$J$s`k z$#FcEv8ZHO4r^CiZ5Ko>&W&CuzNSAz-vNz9z*x=|W@f0kS&P~Fn|R9Ng-t0-Hm$MH zkEHPFZ|<7~>h%Ii+L#HZG@jDk7>)f_d5cFZ}t1>GjM-X)7FX<8dfDy>n zn=9ynCu-SN@RfM{08RqsT-0r`4u99>OUKwJH^^B2wP6m+>BS`$3FQ{~Z7ESkKB0%_ zreO4gAkl>9fK58}`9S(I`yEqFcF!YIsM)xJR&}g%P2?NePfl}^L3!P$(jAJxE9nap zUa|TCWC-XR`cBD3&??gc?eup8r|K~}kB)?Y^_PyPHm5xa6?dEiU}tl_0nG+btyq|y z^FSWtE13#Ug!3cPSFas!m{T0JNXZ?rCS5R9xqd0%H_&U58@Z{M% z^bk66Q78UY3;4KrBNqDL_r;smtjVrye>&<_?c35l^}{O$5Y^24YiALkf5}jDFMT%> zo{8Dr*7_Ax6hs~RR4z*~-l;Tu18o$Z{0`EtjP^1~qrWgTlwI?$3bdxo?zn}O6vX9h zp5BV{R8bFK`HPLf$c?L2pK zz!;sWu6t-2VR~)RYlOjZ>>h&rbQy2`4(bcQdD05g2MNZ@JZ3Vuwux7M3^*{j)_tI?b^}9QgZSsr;l@U_~d{A9PZ;YC1m~;LVfBq zQ@gPy{|YTRWsM2w)kvXCEiFw2pbq`vfwRZH_jkVT=HT+aDOq%JXDBOKW$1wJxE!)_ za4k!S=?X-4h4?c1t+0ikN@8r$mDqFXe#hvat74s<9EZ`U21xGn3a?ls+k1UCfkIEEFcL<)CqP6ocz_7?pjm@3#5G|F}~q{^B< zrEf|+Ga1gpWltaODDy{i{j-X>g77@;bN+rCm+>iACf~ch6;|$i=Mg0Ow5>sJ5o=q# zOml@z>RRsX(Q$bl+sgUQGc$@wDltFF6(<%9ma{Izj`;m<8hs#tPMumRK%)nKf#)h2 zVk-x~R{gzcF0hazeL(c)lhiLiYWQ%7=BB6?zgJzh%wKp%nXR5*KIsj0nyIH)8zjzd zn?QDaVsO#IJ;W>eMoDxBOfn8VL%b7pB<1FxzR6sDuUknSMF&R;K3ghy7bH|}0g%R- zNlW7QfiDd~&3mZYM>~s!oZeO24gbfZI};T*8>M*wnA@dNOrOp_(o`}BIFjVUqaEY& zE3xHwQ|*GOMEVCr6Bdoz(?^AFwKHO7Q^~Zch9L+88lVD>p3sMnvp1i)&ZSpoJJ}2- zs}z?Evm_VOloZpS&LX4@bi%Y3m@N=xk^l`u-vNBTdH;_hl8+_J1sykm!8J~9NXnG2yYbjJ!t_tBgKI?>*!j_LW%q(Ml>Dgsz}-1! zwDa;^#djA;>rPvq;7equO?Q4%Dv4~cHvv#%IT}@><$n03~Fi3w3GD}R0Dmu z1jnNw0k^z-)uh?bePTJM)Cu8dyYaI^oUefhU%9H{cuz!WlW5fsep>K5b=m#H+Fj^x z>{I|8MZQ%*iRs~78H6@0vT;2V+Q7colYkka-5M-w$HD9s(#lhwE)@4!Px;V3ym1I} z!N7UcNm}8H(z;A60O#ua_Q~zk)Z@l+&6=V8p{2w>?B1@cuyxZM`>n6BbA12NqLou}d1_^~^ty67gYn zC!6?K@h7TX+4P~?prM0&Tvo-@b^K1ovyP>W?KEylu)Zbt5WglCL+uZZi%UGS>_y!JhVpF+5Xx zv1r7>xBYyrrYb$W+d6tjHNO*_vGpCeI}V>%mOb#z_05lN@G{_2?oEXM4v+*^D~~Ou zAE+}Pxf`4}lLE3ahs)C=-&&bkv4NVI{oOv`M$PeT#u-tP|2YG-Bxh8I73bOnnG;{54-e5xi3^CNA_(ZVLnjNMS4c#tT6 zdiTLKsS*`WDbRi@eK3o28-DD9Tx&$-*DR~kjK>7JtRpIpxhSHN_$NJTGw%bR0Jbmgqu!_FOmI34urlW<0&O#p(#$;t@pYJWgew*eJTUPV8Ph_6Y{yFO& zJo;;DFMO!ClQaYXZ?Mgj%qZdTCu+`}dP+^EMu*<+&TO8l3e?vslaCOxa{vF|L-k)TJIHUuJ!kV}h0b~#q} z&*MFJ?tk=mO#)r5mh7FBpV*YBsYbZ})f;9G0`glB7B7yg3~K<(BxG;l+;`E| z&0UHqhmhI^Gk&sv4zizioozTbW&W|C89VojXdk43Sf&d7T1aczSbMPO#I?&S>h9Zy zY`V1tcTmr7FUFuYkJ`z#*E@*0NDg5Qf2?|Xd2jteILGuTX48X5&OWnwRI^MQPD z!~DuFr?Hz5{4lP7Kz=LCpp-Uks-(vk?5fQ7$M$>cM`EBSgCXfST3NGyPPGM73%z-Z zSAd(cYH{L5{GT4(ZR{HNYPgB8QN71a{Bm2hf=@$l%0*aZA_C?TimC@)*XesFj7i8Z z$2CA7Mg2?iOW7zOWoW7!|Gwh=|81c#N7U(@Rc2xI)Vnbee6mK zcb?2vJBWlcV_CfrZTMhX#^c#X_H6?V{IqZy5X{xPSwm@y!mbFn@6k_0wbBbA;-H>lg~`wi?I>4xd-}q$GD54JXnZE^5q5fv z$9%t}nLGDmh@R+`P4P~?AjymVtF47UXWzEu>Y9P&&dCKHdF2lZ2!yb(G+~a1{ryHr z7x{zCquG@M<2T~=Cs+eq>p-+r-#}}n?woP-D|M%tF2?l6$VusPx`{#P{5oXlSbhyR zQ{FKR4BK&tbiE;8U@V#M-g@Y8mDG*z#H2`Qp@l)`Aan7)Bh*IUaVW)rsr7+d*qY{WUHg;o8Rn4;y z+-*g>6D>`-KfS+{KhkmNI`2WDCl29($-t2OqAaFjPrB_562yEqYR zPux3U-4J}GotInn`EzVD{!Fhm?j;w1;OFeTvEW!MdRYX&5FEsE|0pRtJWAD_C#8J~ z+Z;H0zM>)w!poy0pL}Ea?lIvNg{02#sFh&tqmzb}jL!3cB*y&t-ER=?9~IoB1_vh; z^fiR6t?pYZb3ZHh8J|26$JT~>oO441y|EZ4HO3P`4w#7ceo~jA#Y+Z;;<$tTC7hw#1B|GwlDowrtQ2OWurOavG(6nKOdF{L}W$9fusTW$e%8n z#f0Ap3(Ux*Hu!hB+d4hre^v&^Ir?#s{7t`c{31Ct429+a?{3At>87Rx8!E|0@SAtX z8Wti>VhhY8;(;LNw?m?lAv%8FB3CgD=Ws_9^j)oma65uWUUSBykE=&S?C0QAlP=Uw za9M^|Tpg5yyS|Ewil9*^jG-M2JzPSC6p>LRmI%Y?F?VMt2!((Hy=_vJB;~&~2B}(% z?K&*wS5e=MX9nW~JnDX6!u%nR(*7gBHh|aFPDeUXi_p8j6^8euf8pN)9%r{4p%whk za)mZeX!SgCta@>Tb^<=s+qX%TEKY1p-F+h^(h{e-G-N!1y&A13Pl`EVpb0t51Jdgm zwu5J7%f<&Ml~n}?l!G{+rlAv%f)KR`olM#%iKyH{ssvBkd$DCBQ?9&N5(JJ52?2RZ zjyt$o;E4kw`i-Usw|A+v8I?SN4ay(<+9w(xO`0xpKhoh{kEhf-Jjy%2-d(h(zVF-Q z9NdJh$|*zk5Hht{=tm;eFRiZAY|)m5{R{$_g2Q1!J$KkQN`_Xi)(N3NK0SqdDqg!E z-2z5?`2!*rehoNN_ej~*Ku8BH+$%?5E~tAhKOkj<2@PD2wGQnqcKj+bo(!z-E!|MdSx0eCv8vvz_T7Hd6e!lY2UVH$mECWlmj>;2hbW^Du+7d zOMr9;&$KZ(QVTQ}92`U3qr^*v)CbVSppeBxA)(EsjtM?QIz~%Pc`TN#jmCDq5F<#c8OnNEFgm$J}mh~0Qz|&D4Dvq)PuSOyR)8bx|uvV zC5o)2h&_Tb07e9Xd3f5BakX9@Sv$eV6d)K<_Kj6iFNsz)zR|B%E z84_Iem{VMM-7v2y-MdRIlw12>ve3p#vgqhE5hI~z^N%14&C%Eyp-+)wVC)CAQClK| z;)YYsn`72;io|7wd}(CpG<2-<9%_c?-sqPcN;{LY3E_QY7d_3UB^+kF)tt#mB+`Ue zO!3RYsg<5P2;U18sYl#Xsh>0tyQj$uxis(;9Gx^%#nEOgdG4JL{!YLtOeI>{TNAl& zsU7_gpYEEovlCx{n4f&}3D-S*c%`y4zKI(vr0nH6ff%6K zg>EBJTPM4L7PF>Ht%DQ)`_@p2GOl(oP=-cMxb%f*T?*$Va?a;=9OSIhcz#hm3_=;V zK$SwmdMKmIhvgg6;{HqGX-(yNe{$#;Eh3&}KMT=w6-Cj=)-e>6`n@>1piX*jfp)-= z#HG(n^>y+lOEU)5(cqZAy>&6~QT*ZC@vS;mr~i4qbezqbWRC#&KaBNUhXcNRyYtEq z_aQLSP2@AF@7dR=`ckh(d+O_Fp>p`LKR%3hhGlV8X2D>umo+}4jlDnkzhtJKmSSa& zU5?`9Mt0?hrphunr-7JY=Tq2DsVh>*LJJTL>?Nk64SH*3z=3v3609I#%VR;+Q?blx zgU7D|of}WuoIUkb6lc8o@L@kFkRKl4{&e&vnYF-K1f+m)(u?oube0Y7LkO;PguXp#jTmNfp7x#~TwN;mIHRl0)WpkzT&vBejSF z+Itt)TIkFE`MXK9;ITS|7r&5P+Y5mWyc~wIfDJf!a`U;hQU62$gQw=VQm4T*6CiL9 z*9$W2cR9)?dSvOywMU3xHM^H;w||G=%Lr+hUAB9E`p?TKZm_?0lXw0rqiyfW2_@E+ z+?X~kwrssSTaP?+(}vO7NTOIQT4PJcVGomT<{L)HO`g9*M)=LridRyhle6 z1Z)Ul4rx*ZSYI#`g4FLH##a97nl{(a{nd-HVY-8ufp6WAKpi$a@FP> zNhzK#-kFA|Lu&^NR$Bj(1!}H$@TLa-h@?S4)1!|0U|M-=SN((k!4ow{1tu1)*jV>< z%oorVK!V3lNc|=Thj9gf%FKojBn^0j)gVy8$scwNZzr>@{LgSqjvl9^r-$ziZyV)k zdyCrx5Z#ZvfK~J(B|P?}%`wEhy5Qu9rdj_q)FX|l2!P<*R*2%n)wSOiLri-^SZK_) z;=j^U?<-c>+SO?yMvX`P4o>6~*T( z8E52?^ClV+M_Z1-NyP;CFkb>(eD(%pW`C*YlOZ6bitMhSud3t0!r8R}6KcAFdI?lXMw8!M2t99gpj5p17#qp0P zesfb+vrODUEok1r4k%^@p9r%=V&^s^a0B^BDfy|Jm<0@%&j3h6 zzm?lR#;$K7zNmOD|0bJ+18ac0kf^<}s^`S|Y92>Z0%!6!GyNLoQkY`QMW~0+-U+xf z$9%L)Xp=sZ!+@SU)>BU-Btv?bN7Pu^mpH~6m|NhG{-xpb6g;WzE?G=8qT#YpBiK>) zMR+k1ixQke_X@5=J?^B3n6flM^lfHnQ1OIW`&;3+A1Jeth64W)AQg5jb3pVLG(zhb z`+B$JM31<>|Cfe>Ka83t>NL5IM_@KcYK=LK%(B9{jg-zvmH~+g_Q-4~w`NlD@quy$ zlG?3fIF={4(=JJJnQJGPxFIh&D2MEHN=fy$zH%`FijR+wi!rGEIz&=%pZx6wL(_Q8AT(rCvo4= z7QhbPn<9L$kghVlF#0@{ zkHP41Jv2t2)!S$zCW>NEFHQ!9DL`{iq|E7F8N-V&SY+2q#s3{!wkqc+^oC z;~~}}tF>nUy(w#8P6zQub%3qUx*r4Zs$|^hH)khqJj(5b#oZ`1{J#NV@`xAOTc<92 zy(!b)L6ss3EdL4wqu0xtN7ONRWqbULp5RHyaXc2($U(g{Cj~X6kjRa?71%KA^wg8j z5mNBmXot+Rqwh7sZzxZ@_qeS!`L&tS(hMh3fBJ`zPgXBfI>Fh1@LiBk+Bq?}!NcLq zrX~;qW1E5#+9FC_j$lxg8-6xakcXT23$O1%u4kqrITa3tgB1iltP_pX=pT5AM{G)w^`kebfV%v_dl!aEv-h|iV(TT+C1RJ&l|FAM5!oPcd;f3OnOR8M0GW_ zj@B2`)%v571Tq~t1FA!eM#kcKHw0m3rUc;lFIM>IB(Q>dO6-E_>byzLv>qg&We}$~ zLA}m0j9fjUY$*y`(4%G2+n&u$fs#vz5=Mig_I(@r?ioC1?dcz|BSxVweG00OVb@bh zziAhZ!SDu7e@V(YaPVQwB%>2gZq&}yvp;S=<&%Z_)2Wn%J(2ZBR*svq6WS>nu*n_&9M$ z6AKdvImDig4(kD%59!z2W>^NsHzif9X34f;}^OQm2b0W*M}j z)v1Lz$?Sa7`|*4@D{V6Gx_WroQa}6%k5;jII;ewXAEfLe$mBA(M6(9&xJF;<&F$3Y zNdt>O@kV}QDEB{V;bLj2DV~xab93WC-ic_7k}r&gkQxpzJX0?p zC4~o7C3;Jd3+8WAFC!RnijY23ZcfY*ShJAx?QxszsTiiX>yF4`|zeH zFpHWzlr!>o2G%lJD#V;OO(vy|?xa+_Vs`X_?8p_qe}P~WuTB_K);bc}Gk11cRtDkH zRSK6Tk4yUqI#W+H!=eWNbUYP`dR{S`s{xUX{^kY@x&ti7L2of=MGf!ADLl$!wx@FBtHi=%Od+RK#Zwrw49dEN$84=D|OO3KkGpLE1J@#uDD z1F;6;Ra!^hi@&`WTYtGmUl#6^i#;B$LZ&?m2t#3Ih-~gh(q~Dc9qpG_i}#hVg0|#a z10~JJptFTTkNJIVq%RU;*EZwAw^Tmi$uAHW)`QLCP0lLY^3yOYHwn=ti-|qI~vnnVS^a2gMbFt)FG`QSjP|UBg>2HN zz>=sQX@T5$j!D&B0>JTJ8FLy7Vo-9>6UE{F^>Sxw8;S7BZmsCbTd6Z?E%ZK8t3hN~ zYs;0`Wu|Xu_Q5QnmF=V#oFH*}r|lxppgbWls2!G+_eZKD(^g5{7iks@(ZqgB+MumI2Z0##YV|SWNqby2{-C9Km>=e%N15 z9e?R>Q#U06g6@#%3HQ21R*Vp>)B>8j#s5h*jEL5N_qBR2gjX6WZn z6wsbqI&imhsp9ngCG>ARmdP|E=V`RHVhNlsR6PH^7k!^F;y^A0ROZ z!^wNUj4poTn%TSlA(uY}lPvjMU>vyc};>HOel^pCqpZmsCd$E0rN3*MDm znOvVLo&Ww#v@x=Q^&HxJYrms~aO6vGfZE(TA45Q~0~~ST%>gP%8ED&|(}&hxhc?k` z^u|t4`0LoSakNCyoP*(!YlLvk-+#;BQ;V4OH0a7N3HYH#7Wa#)wXL!AF8O4?!Mi}< zL)yj4fCo5&ji<~69C|t*ax|x-31cD<%D;D^TL)?svtsjS^fyya91rSA%dN+As=k_j z8DcP6>j?P_32gvx>qy=v2h}%W0vUjl z_WkeA zUQ5&R<%cVTJsKxp7V$;pz@q|pl=Bq#d_$pP?$t_IIE^;bZhR%|N>G~Zx{TjvI*j~~PhOqMCx0I`pACypc*~gA^*3P$;qh)yeCC~MVA8|2 zS)_#dh#JU)724ZGYnrq0NR&lm$dMu7L#S&RvX!dkX z1Q-|4TW`oLb5oBHnQ5z?sgfa{d``F3KO9fx0vq$6Xn-yHTG>i$By}+t*h<0kN?&Qt zzxO-vJWd)f5m3YhS*un1h!#gVbk)Af6Qz%$jqx^@5j1hzCP8ZZ-%mj-+gqB8#yL`4 zf6Y4zoLa=sC-tt!EK`hmi@%wAlCMn$V&YOfYFosPYv-Na#iXnFq)WyM_Biai#(_CW zGcw{}<-iky6Eip``qFh?6V`F}i}UJ+oD*qfz!u(oeLs@xyNA%2c1OHRw9r(DszizXBi@jRHFJB#Ln?2iea#P^FPsLO#aCkgl22cIjrV0~xQEF7E$;C` zmNvOij6x{t#z(rKo|qlM}-)T|gpl?3&Mt4y+mP#t=`&?nT+rAvd7!Cev=J)T&lBgcXTOq%fA7+6 zW;{k4AM;gh>P4yQ$h%q0wJHZyaU#>3-IJ)1l@t!&EO$)Ft_xSGm<6DWNrg5z8J$(uMo6sdnMhHjP-R^!=B7v>A2{9{o69 zA{X3Fjss^Y&?x$Qk~UBhg3D-@GcTs}8%7P^lyYs^2?urkf{z5J;tSMWkVO!<A# zsss*Z)iB6?!x__A`gNiw8Mz7x9Hy&bJVf@%EXbJz>B%pdYEZAG7GKXpxIGNV-}8PQ z*wPH$lzetm4lA1ne!<-(b}HyBr`H5-q#Jzn+E+L+CR>*B0>2!JX~TnN5*w(sO^2NK z7aU@+tQ{m!;AWnQ>%^?*>hf;r4<00hz{!X$15U*~inWgUplAWJWx6S3Zn z_$z^?3wJ{JjF)m@NX$R9$S9D8GuYr6DuyESC%M-DyC~HgFHEVAdW}qpF>yURm+*p8Otl`qQ5@|uvx(SNN4aNzSB5g1%=6*BFeeT+mFUB%VN~#AMk8jE z@mTr&&6_s`*=O*|;@mM{#D%QAauawneI`O76k5TkQ^>mqw>?NG#2B^DA7ZI%`ZZdS z*$b_zr;~^Kr<1K&wKV)(4jNXJZJ2R@ytc{O+FgShJ*=G1)SQLWTB6bwaU_ew{U_v& z`86lW!5a2FFZpuwkHwUJ*PTu;`m(GZ!ql>Um|fME3kj7w&`@0$!8U2G>x+UyI3+eW zMPTWKvMRnS`Uvj)pdgbb14n!bP!$Ea*hZsq+^sh^1&w;hMQHAA~jZc1TY0mx4|`z-5<`3jr;?%AOKn(Tk~$BjG`% z906SpKS%n|qsm*Y16jzGA_bA1-P1r2+0x8TQg2JCH2Uof4jjCZ6o)3>N!;+Fpr7RxDF!-7no9VLuVF$l z$Z5iYOZ8L_xw%_ypYqKWo&*L(Uo}uh@C?(Mv1qRuF z{XS<{%kVS3tY=6*JwyF5pK|V~@Rh~7d_USdfsbbsV&68KZH*vlr3SaQA+lZm*IgX# z5g`!XjJfgXch^5D6RR2p?4-$V)YPXHermA?aLT5^>*q-r=M*p4M{*kKUtEb~ty- zlBr@GCekiezku97JewCC3qpPS$Y1bp^)jl@)0OY7YAd_MJeAG|WZhLIo^loh9A%a$ zi1KnIP?fqcBba6V&NYXneZRY%DE_J^O7A|n&eb$5buIdl1%vTL}jGlsI@j7MEB zzE4ERohMk6i`z)f)7azEiNYILg&ZjE9aoYAxM3WIq_vP6zj46pqz>uIJFLQqI$B_5 z7)MQ9(&aqQ=UQD8uCsW%w2NE+pCNJ0$~Ju?oGZWL3Nj2If6&sQx|r{WA1PgQ_Zo2h|z(Nrqo zxAV&OlXzco`;dAPe5iCQ;oJ-yjuN^@@iLYGX1So0LEQRdStq#FQ_#0{ZLP6X(L=o7 zS*SWT@W$j}ugWu2mje4|QYqDirQc+-7@sbvlqx@S9d5*7aD2oV; zL2;}siB`O~7}9kxsn_E@1H#VJ3v6q79*WQG$}Y@Pas!62kE;K%s*)gQ#f?hSO-JMMVC3@j;TxYfGm? z-Q1#6^eqpjbb4Hz<)qX@Ww7eW#hLULspPY7p=Z_<|6Jb8C><2TOP_*>k9aUEeEsQ5 zqIA$L*_qqe%Acy=XG>e4LH*^?o)~WvDo3fuYUklx2gz>2_4am%V2>F8lw3=hif zhh9!8H|PYyqO%3%5SYB@EVlpC6t}BPuehZ$fJKtnCUHy?^cNah?C7cu;{0vf!L$H% z>aHWubNkPoFxqY94uA-KAw>tOHxzrp&Kd{4pVmTck9;>+c$kU@R;9v|+C=dE(~tG* zqO?O3yy`)G$#U8rDe2?1YDP5$GFl!>k_jZ)7B z_8Xwn057O{Y=)s&y`Hv<&#d-YO^dd)F*S<0H&>7R3aez{N`>9oI7OG66upTcvrz~}p43l4x&BI5oWd(~A4rJLP*|!iLJhP^ z6cT7D$Wf|0l66#0OKnTRJ%;hvCuyh$n6p_4ZOpn8eAvoIYquH&KFzX3D*bxdZl)NB z^*9R~(e!2w))Tpf-i$xP+RWcC6s-C=JEDi;H_anFMEc?_SSG=`K6JjJVx0L@vn~5mpGIA+C=wJ#zzTvXxTt0T+0l2hjbEYQ0R4{;hoc=iirJbTxQ1I*&sHz44vHYb)2#A_p z8tKGZxyfOAHM7&s~yLa%aaCpNy zkA=l)Ji7w7dvXiE8DGQ*Y1_s^nXr!@1qq~}fO+v$+7}fLXTBT#GqHrhR?B~`+{p1c zv3BQ*(N%BFzs(*}CO&vE@UK(LZPXm8p~ z@&r4tTs%b=TF}p>GeyoSD-E!Y7#-E@W>ibt8=N!rwYNp=QZjV@Jqdw zz{>04H?=90y8)P4sCvpYTKoHxC$IzWQ2M;Okrp<0samAomqlPL?6|r&mOhXVyKq3D zgQll55nXw}LJG!J`tJ~A@9-*p%$ZeYP$j0lhVxdx=1qp~^$WPkJj9ydn0jv1EmnjO zFZ2J^!@vcY^@DKW_Y7%_Xyk@#64Mc)>g!n)x_vlhLv;)5d-ZyCrXZ64tJKCpzyOx^ zK!G}i2*iJ#F@m)i*7gva!7FJN#xLU;B=G-)*$4`**J3its1!=^%?3rSy|6u!QV!-8~7lURnq7W4)I`#}b1-cA;R6$f>A;EcG96(CB#SDWlk zi-Cl@%!sUbg98jJb9l$#Oh`5t6;2EbinmY|PX@EzTi48VEf~ihzX^veLq#J*7PLGRf{*QF;bz&`mj>O&Efb_Kt33Am}nbp(0Skj*6(h}A; zna@cH|7t-HVF6H17dg>i7qZ|Yo0^WY=5cufJJlJq>M)n8)cCaeiTCHT!Lar|t9k(u zk(5;0cV#X3H(@bPjwb!x{jZ9uGxh2&*0Hds`n~^XHpqp)E%};zCuCeM4aqW-AQG$J z`|}kt3-2?OQPF`ln#m%TG`OJ85Q7y(lnZZ*>4uU4P_HzVXLCl5#>J3YYeP|4-eR$G z>iLVZQwuJ&RhLhvi*4w&mihioUy?Me+P^KD1a%%u;Quw#(;CNhg=GkoPeMiuEXw=1 zXaIgzzo7j0MhaPU>CZm&X8Jp#@GFt!3&GybWi}fkNQzzF!}~FYQD;eyqSJt3xP6r#5Lo$X@_1>*O=@dBlv!Nj>>A7uC{A2ofg0*kk4w@AS!3>>`K zn5$xNCT=&@yCR`i3qmIz`GaBhP8t3CU>^WQcXadXls;l4}1UO{n@$56NipRcoVpg@BDy7Yx zXy-@=*nsie6Kit$Z*!eOdvSSWH$s~u4Jsd;gd$T={K+ph!2neE?Z@1qSFk79<}g-I z1jA|aM+Gbbhdo=0lm<&;7(khPslhz+zFW==8Ia8jqbD-FY*wG#9vas7VoK^To1+XE8 zTv!|4XmxWEU`tJS;QGRTQEC&U-FnaFR5sMV_H9M}nY^#M1EdG(LjM9ZrdgkCxI&xC z@uFKXzgf(Hk%MNBvjaiU0a0oPtH!}5)EAM4tn`be^cnq4HXoU6 zKD7R@ThoDgOV&6oN4K&2wfKHabP5I)PvulpWFj z$myjgZk%-yn>VulXe}vx6kRG@Sq079S$3jry;_|A*g?f9f6+&^wiK52W;rRc`&oyP zV1SF1aZ9E#@$gfJGf%);AjHGA*=GbS*MprKTyzx!d$n0y z-`14RV;O05iw?ySM5 z1Hne1$uHF*%4~;IG9xXnHO-p=k@l~wf=WDy1V*VrsHqy}A7q+p#zZ<5$9QBQ;_-kK z@G77!Ecx|Q=PaNt*y3n9F(8`Fexy&4D>Rp05*;-NTbsLYYchR~?4A^}^fMYnc z4=A-JvKmL=9u9@nAZjJ^vN1DouK%aOl#*q*^1lqD47U8zuw)-6CX8w~*r*DkT0i@p zK;1~cqaMN8$Qc2-VXlh4eaw49?~|N%sLirq13>`fXI;v0Lzl9~XYK{vXih$LW+71XLJq!KZmW}fClv-L*;+l)!~_uYYXWrQhL?iU3TJQ_Z*BOus>y$ z-m+LeZ^?d6+*92FDIIF;_5gP#!-jgBdD1! zE@Z7~t19j^hOmlj7VZwu{(2aaE9u9OehL3|b%zq3r_W=ZCS$#?-@fXFOw9ZaL*Y@E zq3k8K4QK_}prd(~Nugipka9wDCu6_zx8&vJLGeX%v72S=TWE!1gGGSY63sMY@A`*P z3fpn1R7;_Z7nM1&Dr_&lfDO@4qzMb<l+I}FYc{g=+qiB=6+qH&nMFHWKD~?d~OUInYH)g`r9uxW!8!Pp>-#qHC1*@ zm`TKE=9Ii9p_2$Nx{Ux1-TI|5B|We?Sk|u zaHL`IYa{gvu&7|J}oc-2x?Hc>)L)i1M&)DL>R=kM{84s-7 zK3Y6c1)iF_T|5LfBt@`5{OHD8Ppt1fD-opt4fk_xsCK6Q?SolwuQ=yf-^2@GbaVl$mc}NTo z;Si-g)j^=__2&FD?Edw!f=6?PMkPb-G2Kc?L_Eqq^I60E3+p$fJCE^nPT7~#RQ5;_ zXNs~`^f{)iuk#rJVoFV^ShpJcpC-T3#{#dwxe^s8IRmj#Io4`jNwlW9qkDd zwUnHeT263U48FCf9E;KKXZwx>mAhIs}B%To}hHYdILC4ux@$JMHiy zfCjm(qnx7P7r30S#;5YFl~(N*)?>*$HnbpCQ~k6Hdrq5&YP9AZr0A9n59yr*w&_dp zcJ`E#3HUm&#KnbfjdSz6uJn(}f+Z_hdnMM?&g>~tZ~>J79%!eIK#-}f{V9wuGKB4` zTp3g!xO?NbH_@8zEplbnRLcvCVL!m$?9t%ud>Xt))Q3kNLldc`g~hzQi+xX>brR4# zcsrfAU1WbO+iOy@N5%d3T8zZCkH>rLpUsr#sViX{4E_v(k5Ck{3`?y2dPI*@XhSvQ zD1(C6#Edq{>Be;X?{O)g9%94iA3K!}dn|>wX6=&655b=wb~dT*#Z7P%W{*tpV$hF1 z8F^>4CyKb*6>|50X-WnxlWJ-r3n}Vd62P(qq%0YBy#Omv60{7R5Wh<^y`dfT6kQLG zrav-nVcsgzWV{ zQ-r?3ngEUJo3h;|DIblln(j994o+Ah&(A!9B+R%D!WnJle8h-@&7$7{%`xtxnbaSNz2 z|FpYQj7tr02|LOFPJZ(2+1z#8zAzap^Z;cn(ahstVKZ%DtlFm?qq2tiF+~u&Ys^#H zk%v&RnttplFIQ3;Av;eN7VikRc*-`ql;(Rr;l%m9fxDs0;+f($Y-{k+{eo>252`>R zgw$FXY5srY0GRDK`c-gK9J82=HMj+?P6?YUwI-9BM7i0J{&5}^mnf9slJ7ycMW%YHYHd5^c#q`JdM z@aylK;~!&x%z!1j0-gZ)K(``7nsx0JGsr^J3+vnqa379GN|S2Z#?htzZs|YrPh`Qq zr+^3kouYR}G*Hj$2JKz}pveZj_*rTC>&Xr7A~y1fd%x<_{h;UX#d56_IrOYc1eQB4 zQ@`yF4XAN<0e7H}NOA^)-w(DTS!}-4-trPnnrkaS-NY^H$|;gF^JMiW2S&Nw8YRe! z%GUZJt%u;g7|E%3yK#vmjh04+1Uho@0}({K@T)(wtCrpqw)0`pT(<>Vou~!U@$7j+7>vK4E+@{!>?!^ z1sb)eK_79wrk-bWPWS$VOF7YEqzx;~*dOX(C;hOPWFJ_~K`-^j$LhYof znUW9=ndsg4%}}Nw4R8;*Yc4Kp3%_-(lL{9eK|P0oqe+kL{%1t&VPrTvTJIU%Yz19D zl4HHy_$Hre`U&E9bn=w_>?ac1X7TE}?`xT!Q~m~DiPE*~Q-SqJ=>8QMut9xQBCfD5 z+f;Fa>U(ASyzGyMQ*wg|nSZ-63U+t)znUTJMNTV-Fiom6xo8?49>#fLKi1xqOW|mr z8-M?N>@;)e%2M$IV=o45=*-$DIa49f`#hoI#_kh;9p)+$ZXAcbT}4b3#@SiihIySURIc0t{v5ojPZ(g2Z`8#OCFVwNj1n$3-pEuu9+go{jB-OgS9(3e*&TUj)DbueOE%oFuN36_mt*O zri3Tp87}mX>}(=f0p}{7Nh(`ne7|T6)mv&9i^nH$9Yzvo9bUZp(NXSb!tKy+X#RW{ zT4JpqZ1?f>dBGP!xGBJ+1b-OXI zz7cQG+oiWH{{9!~Ptce*R4sd@U3^gIhLi6b(UsmP{Vccj$>mg?z@@esd*!RY{ILk= zQF0qviJ)|Wb7N!1UdInTe)qSX+n51>5Z{Hguh4cc4%L*#z z^_X?;vy+(DmJ<}gav>RXrC68B7QE4%LD0y>yZ`rHQji(8(4czHhzFA%Wy~gdJ-&&B zN6QX!ETnN+q#-!6TzmD?%P}7c5RghAeFiL#(d(vjWmLr+OGY=0v^@dqbG>yD@%_;GbpO zOSN?qnz<}($~o*J?SV3Gl;_8&bJXCIokhF!UP34Z_IoIrhAStEn&JEN?Dz(}eA5P# z+mHf;)}fHn21pR# zs`{$H|DK=MPZ~&lfQJUJfvD!useWZ0rd{Me@pj%RG%P`m#$G zsj%h@pv=00As+a3@?M(4{JW1q#(NE@SufjeU$!PQMVLj`NA{y-T~FH8Eyv zeN^_LxfSu?##cQKXyOjHh?=ruD&_g(BCt-%)^`*_8F{_{HY5SRZ@b8mfuYZ2{b(;~ z4y6_3G(}@CP^j{DM&S{ zJB&lC8N;Jrk9MW?geJ57%G^etPgK&W7ra6MSkemA0eu6g zPtl*$|1;${XCy^+!lxlUaFt4Pms?$E>&xgiuw61%LxH$4OO$WIS0pw3oz&gP=( za;wP>c%KAM2gFU_*O<51*oI!wy8iwv%l&YgJxB+{2w7+@^|5DBX<=x6+lXc?T!WGcQ$ zUn$}Nr?MjpCynu>X>aA~z$9trUQoJ$1r@veml(9u%y2k=}~V}N2>=f zBZil7C7^nev_)vZ=*5BS}y1QeCipU+%rBt*~ocn`lX#zE zm{C?n8qPMLZd7E@pmwX-+M%K#0?3_d3ZedQT9-4T>ITn_fx3})qwlZ>L~y^6>V@Md z@N>|ndgJPYFzR;Ft9p~6o>jm%95&NukautL5Qq}A3`B4mPPAo;N#N@YSsDaBVyY?| z>_)eB0w_8Zcp}ys+t#Fo!l!M?6n+HqnqZ(^FK%bmAdZgJwNT6|vK>%NhjoOuHQou( z4c#TXZ^?hy5Wo`RB5S>=cP{)%@9w!D5J*Nx)YjIWT;{di1!a_HDbU~A!bBl@A3hwF zhqY{*Sig8x6SO8(!`Dp6K06F4)e zr}u9yut9HfqNpw%W=>-PYE$w4vO`-te}Yz7#gi)OH=Db- z*!p>wz@M@v(&Gy<9^&0Htdh|BM|=iD4BgH6Po2_ z2T&^pZDnvyJtO;i#832}C6AOjLB|Y>p3}zEM-Sza7eY?pYL}XKMt@HojV2Qx&X_Vl z#1}}}mRRH$qTG$aS}ahf)6Mw~l?t$cs1kVZ!HBVkHcPKZxXJ~7R9^-YAquA8SA^&E zsUB}5tSI7N*G496dX1uC6ICin++n4!go41lJ_#9~)J-t-lOE+ELk-|C`4_9iZAFV7CKN@N##4B zvlIh9C~yRWWRu9iPWU;D2tPi!)iAXr=`+KYXvt6A$9O| zDJKb=E?{G}9a}fIu>#3z2T`k(@dYIxTv{`fjNPLc@X)r{nMb9+iCFTtl+; z)Q;*CBkloH%e8oL7mp#Q59-6sS`g68`^>R9s#bLsk`vyl`M^PySU)q_5lREiNUYs< zQM-ST+)Sd4GWAxXH(e8I*jsCF1QVGBk3dK0X-qslP(0NpQcs3tADKc20+-qyu|&|F zF$dw-3R6UhRN<`GgCX}qCxo;%W}pI=Z_pIkqtSE+8mUL0VAv*A>E zRF;WF8wSDs3~K3qnJPr9HO3ump5FDK>G&VRo;nGnCNiltThl%S$;}?)dG3})uR)zi znoLHGn%rg;-0lf+WzQ~V;71&LNe8}+mhg8O>`#A&EA#_nG9t&xp;VHE33h!w)jOLXVTvk=&aG%M}*B$ zGthLOzWwkpbbhm>1Nz@-DS(=Ko5oJMu|itAOarH-tplFO|2$ zYs-3|mTKiq;n7jpe#XfDk;qCO7lVCuM!>TXpXc6NA?5^@v>U1~5{_|(u-b6i4|>&N zja3cyW#ZNednEcNpjCw@t+`>-XR>$TpG52n{ri3+YDN^SS)z|cz_M?KTZ-s!^hy*s zFq^?E<-`T3!8OxK@W2;_Ib%wfX*j-O#WI^w3G9*iLv6C#li^(iE+BaJZSX=P7?f(pF zYY~*%8=)kejvp@NglR1wI{+Euue-|Uf7nG;e=t1CNk^o@~AVmIuWLI&2k^si`i z_{GwXvz*qvK0T}N>II&Wt8e)ei_4AnJLX}9E)-&J-OQVXLjo2Rx830>G?pcRSGK}k z?HAY`BzHT8zKGhT=_{-wsrq-IUsEyKcvJX_QCizb{1V-jWB6d;CImGwO`?b(H6X^1Z_3Q=M-1`-P@hSTeWNPwV}{? z=tANT>At05#`tT_@lnF#6_lLj=W0GQx@q0=IOS3w!yxM3e01=R^<+Tw>;qzc$my8| zH6vn++s5=Xx-l^FE!LxiNpn{g0IHwyPRNfpim!@Zj_YO2oc9km#)q&iPub0kNj!Vp zaoY}{gz9lAz}?sEWP;gA+u*q1RRW5U8NJ?MuMh0z3+7I7K6L2Ug>*A|e$AL|^z+oz zUrm(^^g5bO4Z|qoA9LC z=Dp>!4;Y|V={SLp3+`0XF@0pTHrQnUmUiqB zMrC&qwm{v$nL{19qNV{XWVis!v%*ziGu_gAbJbom<)`~ZpHLOns1S{A7IPo08k3#ZyXelL>xSE>1{lQjho1g?Il$l@ z{~erS`gl5n{)aCm`>gR508@RXE$9h$Y5xV1T`^l6W#0L}B1=!!v}HV2f9!F z)6S;{WDXV@McME#!K;?ZA+2sKFm$+f#^7(uXglq$-9`-viv49cY@%P~dwvaY{Q0jK z+>?I6P8(f6E3}c~d(ci|`|*k{XhA7#cW3cQsSk;UHcE*trXORMy3wTSe|q~eK@wym z{rvdc1Bu@KrvIUCl3v&Dna#}x5`hvE_JtVCt1gD!N16*}QG(hE`sfRRKJ8ze+92+! zyODR{Q`z)W(roDc_yp@tsh|jL!BlTozK#7SiQgM6xCmC58?!+YV}uq^yMvr8fAqpj zNIE$^M<_NWt?iw~V^5a05b~@z8&YEZNRpDk1-!Yy!nF6{Sf$Bx!8w~M#-oh$5sFz& zz5n=NH&cfu>_o%j+2N~~h(12bDO&Ukj!xwC&A2tb9q1~bN`qsRMLq`UPfP+SA1nlf zoEnR~TUf6j*s1-JEz*B8_)MQe$s~27KW8R&V&Hplpv%$Y3*v$W<7(%fgkrEIJE$=2 zyg4!Rq5_ZXx@M{{eXn5NQw^Pnnm$o9NFwHnF{&eH&rSB3WolXCZL;Xi2Vk7dJ{E-Y zk%1~Zy+eiq>NK+xY4_5WBGyaR8n#j^Dzb*RYiH;??Vu19 zCH{ZM#~MUxwg@?@J5@sdUpi7=HzxD?TVQ;P!o~N;vLNjRp>+M_Q z3Zya^`-;J%mYFx&hs-gV?TP^iE#qO1SDV1WGFK>9_0QPyu7d0&4RHf>AjPrYEsTDL z4|C|Z*IrI}818Aieut-U;)34V0{e?d$jdTHpav!G!Q+F6%BrUuWbis{G)F?jHF}YLDgDapM$hw5urlttbRcRxm93}79OumvdO@piXM9NBL?P>L<+7=F!MU;u%A0I7c+sxG#we&Bw)sAg%-InK6W>@2%T~ze7xd4{ ztVTq?3~;+VpozF$dxk4Ry-(_&5J%&6kLDzTNrrtjyMB;k-AwzT=kVZ+D19; zohTaA+ZiY;A`47EJz$MrY9lo8#{#u_#8yD3(-%B%ekJ^1@L}Z~PykNmds}c~#y$PS znP>sPiFe(E$s@bp5mc#3r!5*l5Du#1bb%Om?)~p0)K}AM8^e#LC0IWxB~^ho$Bff4&@+lqxhAm7>w#oT?>^W&Po=@cNP1GMr>s^^Fc}Ap>uMphFJt%z*j6j-Q5a!%6&7L03&{z&+ zm@RmL9WH~@DvbB~%MOmEh2Rd&i^_@tCrSD`F_T(rP}r%abECuw2%sF^C5eegU(xF$ zhbVa^qn5taXl%2+;z&1)TKHuVB4(fxp?ue~g0 z%FAG~^bo)%?h=4fhZ`6#_zQa>KF4JMEbhqNIDjG1!K&aqZ68@+B8oqRq-(gmOK&kQVdA5OH)OQvfEj| ze;{G>T-bB7p`mA$j)p{KT!nCk?5L}$-54lUO7uDJlKi988ax%_BYF#AmlWq+asL`- z+=!SjbZt%W@{u8J4HQNq3=N?l1$pmo$~&n*(>SoO@GXj{Oy5|YCM*G*1`D26lxQ8c z#Wbd@c6RdlzI#klr8O3oKnps)prt`W|E+?dXjI2;u%8QQQ+9#dwjkexZQx^WW}~w? zIeWaM{p()3q3_9B^v?zsg7QnB1`Piqh%c6eH~a&IcDDEe!@nXie6+B#>ie?r1kVwp zyT-yMawjm12fMi}hQ=DmjbY@8s7oa$p9G`7M98&?bhL6~eT|;^Kw~dSjZHCnwp8w! zm(jCI$DZZCW;C`08vENsC}fJ!vlVjByo{bzI`%BTkI`6fXzaPv*m9$1E99OnGxB6!|plY%(8Gvt-j8e!0gqhLs23sS@BC$+SEX*iQF~N_LSv1CnT<4;xr`yJ;yDOM>C zMS?O)R8|@K-^His&VyJ9HmM(o*}Z;43Lhw|L?q2J1BC_juanX}nK z9Fh7djX9Vu2T3>Lc?2D#^s_pHf%di`)(A876JF?(BA821eW6R~n zj)=y5cgl^`GaB1RC0d@Grebo^X>?j<#EpUx{lB5n+rjk(+biuvC_(*vsT|0Mvxm4n z2g7v8UQ&!GqxLS4MvlXh>*)e!HJg)szSVZq#zGmh;OmrGW;hc{=6ehNxZ&8E?jiJr z^{`KeDU&7Mv3Us8R@GaAfJ%}8DB4wrs3g&kiVj4~v-d?zq^G|Mz|m<{V?iERbtK%B zpd3YiI6jIq%@po6 zDOWH_NNSb6q-u8s)~#V-ekn{wDli^GNZq?M&nCAQBHEj=KnhaBIXA)>=^Y_d-&P7z z6Sb3&h+)GVI`NL^MD=6`w4)S?xSJ&k=4gX7N0v!AN9q6>plG_$*ncT1mY|bTC^EE< zqa2v-is*Ov3<}*%<3KV+#8tZuOnkxA<|I?#knn4;VZN+P{YB_X{S!iDcENL!DPk7d zEKo8pWt&kqqWytFp*)mTmbzakjADixBrQYIM20V&2G%4kL(=-7DEnvHYZ>Bo8O2C_ z1wteDd`wWIUKIwa(oT@e1$EMgf?IG-W|D;>DCvL7KIB9eicq~J+(C}7i{vzzs;FU7 zVw7m5f&zCS3N*~sbU;Mn8V*()4?NP)v|O6A5aVXElFwh=C<&e|Nw7#fjV^XIG%cxF zg%(PE;TT(ld#Fsb0d{G82&@Y_6ilW$F_{jwrULwW_bIxwvPj~Sgtt*x^nb}1LKCrB zWjAx*Bt|77Ax#_udBnC)biDd7xKxsM6yZ7uyZsC?DpyHd^`(Li)jvxybYdixm7|W( z5$=h1u2E@~<25AVnCL_$ORt!8wHb-!fiuCc+aOQIRMB9Z?AMV9fu(dG3Rh&6LA(Wf z*Hi#|%Nbz6b6BTQ^1Hul{whHH&lVZ^1XA!Zs$69TK)P+SOh^YM2q+k~6AQ|R8OBAa zCnmRsLVY;K?VNP)->>jrIyk~;(oBSZuTQ5j6S+ZQ&9DE@HT7W&X+A7(BPlFXWE@D0 zbn(S&S3fxB7_cY)`N)|0P#ZA&z+#b`22}7dPKc!u&EuFRh6ER(uv=Du{v0OhPxU$K zV>M*X+)Du;nWJslt_A;P%1;g&lmufOksO(8uR)2I3E9u9KT@_x+HEwc4G{sXG{D6F zE0m-od<;rQ`VA=>OVr^QJ5YcQ-(8Y1G08uObnxG64~8tlIBIV@8hbM&7Yw@J&X`%; zQGqCh7cW7Xoiv38Aae_|kB1n5Oxa5VK~gwGX(y;R@(NH-Qd9~uk>XAx+|nxm#{?7c zz?<0vVnp6p;H`%=e`e&ZYV!_A-kRQ%>MdvoD8+$xS{iCt?JA_Jr4T5w38STVbI32l zf_~v}!3HjnL6m)GVuarYb^+&lU`-Vi!AbU0_vF-NS>A-RuBnF`OOl{Qqs39jmC2e( zyNFg?UH%U-&@PH0ocM=k(tC>crqJ>Z6I&Bagq&D6f#S*Mm#&i3lO}v+6>?#AwnE=4 z+B^m*%~#6fLqdH#O0u48&x-08G}=n4BT^&jNF*6{L2sc*(~;2}X3|tuP0Zr-_0%waMjxsBAM;4{5?xXou7$4!}k6K<8iS=vQ>7 z(kkgFQX+=ys2S8YDCF9UjXs@yr7}@ql~bR+!B}P>K&O{$;LL>D4E8(wCqWdxC8Ron z4PwKLB1r&?XdkqLo!C*eYfl~XM?}MHMHg%*u1hCEr}aq4!z(<TDK{?bVPd{jlnuv|0)|*|4&ewmzUbxVIrbn+7X8!7-@#Z zkLnFa_GpQ5I5qo{BTv17gPj_Z81_p7l?Y!+3s`!iNE}(1e7@wC9lW*l9{7-zRjG3v z{1f$KM7Pm%4m5VFaCLXEJK9+s_K~^e$KgmIDS1pROT-sxy`f#0nRxBtOql`II~Mpii4#Qfs6Qn3w4@ET+Vw-5&%oiB<^-Tv#Ex;sbi;`M2q zvD8ho?T{{cy>n;L+&OqDTdL1ui)hifkIa!uBVp0TWijHp>(x96wb;W`QhR_CS(^^5 z@RgCl0{@XlX7!{;H*PFx_x0wFe!NuwopaSmH($PY#&?+qRZiK?6U086Yc5EAUHteG0Adux4)>0OIaR}BfNZ?pIg6dqKLrVapfGyD; zKg@oiy||q6Hc}^y%7#64@}`&r3H*`jXnPvC zAhT3nbCkvN7%MJb;MmvHpLk#WGadUmFpT%pGB7IHUX>;kaIw;%aQzIN53|QkbE|cj zJ1Cy%@G(+5G>y%K_O+wnYaLNrl=wPKA36O4?;#wY;vo38ja*x3Uph{m_9~w`Zb8J{H;e{bXQCS<|Z>f5kbu)urwxoX!|B zuYvhqKV;|Y#f~cQ`ddhel7EnIqtFM|Cv}jv8$NfwDIjDy62q1O#0a?*aL)Xg(w|SV zaulp{a~C>k1I)WxF*3(B+DVy_l}5-MNB%*2XJiiB@_$gIK2ij#^c*O%1*J5x)PW1h zI83-*JM>p__j5iY0+LU4&sc*4%oFlwk}Vs7CWT#1=;@8a&H^5bcBVr4qeR3F8Ospe7< z^j`6-A}M@raliodh$z*qop_)1$3?CZtWh_hGP-sF{GyYWR>W6%FP|$-Qx$@{8#E}; z+GVDMa!EuuXBw*q7?Ee`aqCTGOco*fKeBB{=D>2-Lc~?HWu+eyC}KKj_c!e@hq?># zc0tym^`$#yvucgvcw0&9Lrbfr&;_x^iCYuE(8=hNbQDFcy=gtORKNfw^H|hnSsBtQ zyRV&meSpR@6DHUGQ?_^TQxhE(u;PsBF!~>SJB-sQzx3qVR~#snqL9ViwIXC(iu5PT`fpzaqZ`j7XrBtI_9$9+$rB#l4O3TAZ9naQm*jXnM zj+QrY2uzNAN9yFnFKI~yyormv7Qdc`1;i_i$f}5~#vM5~!MB00t`_;87f)K+^SU{9^&+=dYJ58Y*hP!oW|{Yh zcP8T;rFtvG?c#?G%gU{_Ro=KAEj^MD!Wplkz(Kb#B0m`0VyiU?j z1r7Kd>s{%prP3QCTuQ?_ONPxknium&gom7Sb+_|B$fEN+8di|={!O~TPHNUV4Zqm{ z>}d5uDG@=e@tk%A+bQijyt)2AJJ{(CIGS-kGFYKp`yoEbCevI!#tpD#;f}U&su$Jp zj*Qv3$aPGG}i}J!9fuX?QZdel2UaMoah1e*jsInGaJ9M zYJ5mXpLIE0H4o2^$Ajp}{4VANQj*8zjlwMr6$DqFaQ(C-TdEee7#xp*1i1gc2&{Gmf|f=>Fx zHAh3NGdVS?_EFY68#X4n-S_sx zz0XLgd%>IsMB59jx{HVD)Qcc6F+J_oR>2OY2$U(?xX8$U11b1|V~wM5QtFPj4s2h< z)j-6kkaMT1TwEXk`O8cEKm^Zku-yno8jcl@P_U5(*8y$QJQzGocdMux{)UATH1>ZfD zM9O-AlQ*?DxRc5DGp=Do1B!pBD(ehobdo9~Q@H3@#t9XBrvb!7#drY)Oyr73^P&V! zwU_h+9{E#y&Vlt~9Uzi;Yix#x^sevUbn#+c9dP!H4|{*Vdy9qM95p<6*pVTTAO1hg C(rmf_ literal 0 HcmV?d00001 diff --git a/src/admin/tainacan-admin-i18n.php b/src/admin/tainacan-admin-i18n.php index 74b40be5f..85d5056d8 100644 --- a/src/admin/tainacan-admin-i18n.php +++ b/src/admin/tainacan-admin-i18n.php @@ -25,6 +25,7 @@ return [ 'import' => __( 'Import', 'tainacan' ), 'export' => __( 'Export', 'tainacan' ), 'cancel' => __( 'Cancel', 'tainacan' ), + 'remove' => __( 'Remove', 'tainacan' ), 'save' => __( 'Save', 'tainacan' ), 'next' => __( 'Next', 'tainacan' ), 'see' => __( 'See', 'tainacan' ), @@ -89,6 +90,7 @@ return [ 'label_image' => __( 'Image', 'tainacan' ), 'label_thumbnail' => __( 'Thumbnail', 'tainacan' ), 'label_empty_thumbnail' => __( 'Empty Thumbnail', 'tainacan' ), + 'label_moderators' => __( 'Moderators', 'tainacan' ), 'label_button_view' => __( 'Button View', 'tainacan' ), 'label_button_edit' => __( 'Button Edit', 'tainacan' ), 'label_button_delete' => __( 'Button Delete', 'tainacan' ), @@ -167,7 +169,10 @@ return [ 'info_no_collection_created' => __( 'No collection was created in this repository.', 'tainacan' ), 'info_no_category_created' => __( 'No category was created in this repository.', 'tainacan' ), 'info_no_item_created' => __( 'No item was created in this collection.', 'tainacan' ), + 'info_no_page_found' => __( 'No page was found with this name.', 'tainacan' ), + 'info_no_user_found' => __( 'No user was found with this name.', 'tainacan' ), 'info_no_item_found' => __( 'No item was found here with these filters.', 'tainacan' ), + 'info_no_moderator_on_collection' => __( "This collection doesn't have any moderator yet.", 'tainacan' ), 'info_error_deleting_collection' => __( 'Error on deleting collection.', 'tainacan' ), 'info_error_deleting_category' => __( 'Error on deleting category', 'tainacan' ), 'info_collection_deleted' => __( 'Collection deleted.', 'tainacan' ), diff --git a/src/js/store/modules/collection/actions.js b/src/js/store/modules/collection/actions.js index feb51caf5..c0cab9037 100644 --- a/src/js/store/modules/collection/actions.js +++ b/src/js/store/modules/collection/actions.js @@ -242,4 +242,18 @@ export const fetchPage = ({ commit }, pageId ) => { reject( error ); }); }); +}; + +// Users for moderators configuration +export const fetchUsers = ({ commit }, search ) => { + return new Promise((resolve, reject) => { + axios.wp.get('/users?search=' + search) + .then(res => { + let users = res.data; + resolve( users ); + }) + .catch(error => { + reject( error ); + }); + }); }; \ No newline at end of file From 23e5c369a7f07bae584e20e8dae281c4f690c6e5 Mon Sep 17 00:00:00 2001 From: Mateus Machado Luna Date: Wed, 25 Apr 2018 14:38:26 -0300 Subject: [PATCH 06/58] Continuing implementation of modeators list. --- .../edition/collection-edition-form.vue | 26 +++++++++++++++---- src/js/store/modules/collection/actions.js | 4 +-- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/admin/components/edition/collection-edition-form.vue b/src/admin/components/edition/collection-edition-form.vue index 0dd1ba793..32dd65ba6 100644 --- a/src/admin/components/edition/collection-edition-form.vue +++ b/src/admin/components/edition/collection-edition-form.vue @@ -204,7 +204,7 @@ id="tainacan-text-moderators-input" :data="users" v-model="newModerator" - @select="onAddModerador($event)" + @select="onAddModerator($event)" :loading="isFetchingModerators" @input="fecthModerators($event)" @focus="clearErrors('moderators')"> @@ -216,13 +216,20 @@

-
+
{{ $i18n.get('info_no_moderator_on_collection') }}
@@ -457,6 +464,9 @@ export default { onAddModerator(user) { this.form.moderators.push({'id': user.id, 'name': user.name}); }, + removeModerator(moderatorIndex) { + this.form.moderators.splice(moderatorIndex, 1); + }, removeCoverPage() { this.coverPage = {}; this.coverPageTitle = ''; @@ -659,7 +669,13 @@ export default { } .moderators-list { - font-size: 0.85 rem; + padding: 10px; + font-size: 0.85rem; + display: flex; + + .tags { + margin-right: 5px; + } } diff --git a/src/js/store/modules/collection/actions.js b/src/js/store/modules/collection/actions.js index c0cab9037..835f48534 100644 --- a/src/js/store/modules/collection/actions.js +++ b/src/js/store/modules/collection/actions.js @@ -205,7 +205,7 @@ export const updateThumbnail = ({ commit }, { collectionId, thumbnailId }) => { export const updateHeaderImage = ({ commit }, { collectionId, headerImageId }) => { return new Promise((resolve, reject) => { axios.tainacan.patch('/collections/' + collectionId, { - header_img_id: headerImageId + header_image_id: headerImageId + '' }).then( res => { let collection = res.data commit('setCollection', collection); @@ -245,7 +245,7 @@ export const fetchPage = ({ commit }, pageId ) => { }; // Users for moderators configuration -export const fetchUsers = ({ commit }, search ) => { +export const fetchUsers = ({ commit }, search) => { return new Promise((resolve, reject) => { axios.wp.get('/users?search=' + search) .then(res => { From 0cf5f408936b1208eaaaf1ee92778bc1095ebbad Mon Sep 17 00:00:00 2001 From: Mateus Machado Luna Date: Wed, 25 Apr 2018 16:07:57 -0300 Subject: [PATCH 07/58] Finishes moderators list in collection edition form --- .../edition/collection-edition-form.vue | 39 +++++++++++++------ src/admin/tainacan-admin-i18n.php | 2 + src/js/store/modules/collection/actions.js | 20 +++++++--- 3 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/admin/components/edition/collection-edition-form.vue b/src/admin/components/edition/collection-edition-form.vue index 32dd65ba6..a6a1e0a5d 100644 --- a/src/admin/components/edition/collection-edition-form.vue +++ b/src/admin/components/edition/collection-edition-form.vue @@ -11,7 +11,7 @@ class="tainacan-form" label-width="120px"> -
+
@@ -158,6 +158,7 @@ :message="$i18n.getHelperMessage('collections', 'cover_page_id')"/> + :title="$i18n.getHelperTitle('collections', 'moderators_ids')" + :message="$i18n.getHelperMessage('collections', 'moderators_ids')"/>
{{ $i18n.get('info_no_moderator_on_collection') }}
@@ -250,6 +249,31 @@ v-model="form.slug" @focus="clearErrors('slug')"/> + + + + + + + + + +
@@ -329,8 +353,9 @@ export default { headerPlaceholderPath: tainacan_plugin.base_url + '/admin/images/placeholder_rectangle.png', isFetchingModerators: false, users: [], - moderators: Array, - newModerator: '' + moderators: [], + collections: [], + isFetchingCollections: true } }, methods: { @@ -343,7 +368,8 @@ export default { 'updateHeaderImage', 'fetchPages', 'fetchPage', - 'fetchUsers' + 'fetchUsers', + 'fetchCollectionsForParent' ]), ...mapActions('fields', [ 'fetchFields' @@ -363,7 +389,8 @@ export default { cover_page_id: this.form.cover_page_id, slug: this.form.slug, status: this.form.status, - moderators_ids: this.form.moderators_ids + moderators_ids: this.form.moderators_ids, + parent: this.form.parent }; this.updateCollection(data).then(updatedCollection => { @@ -424,11 +451,24 @@ export default { this.form.enable_cover_page = this.collection.enable_cover_page; this.form.cover_page_id = this.collection.cover_page_id; this.form.slug = this.collection.slug; + this.form.parent = this.collection.parent; this.moderators = []; // Pre-fill status with publish to incentivate it this.form.status = 'publish'; + // Generates options for parent collection + this.isFetchingCollections = true; + this.fetchCollectionsForParent() + .then((collections) => { + this.collections = collections; + this.isFetchingCollections = false; + }) + .catch((error) => { + this.$console.error(error); + this.isFetchingCollections = false; + }); + this.isLoading = false; }) @@ -587,6 +627,8 @@ export default { this.form.status = this.collection.status; this.form.enable_cover_page = this.collection.enable_cover_page; this.form.cover_page_id = this.collection.cover_page_id; + this.form.parent = this.collection.parent; + this.moderators = JSON.parse(JSON.stringify(this.collection.moderators)); // Generates CoverPage from current cover_page_id info @@ -607,6 +649,18 @@ export default { }); } + // Generates options for parent collection + this.isFetchingCollections = true; + this.fetchCollectionsForParent() + .then((collections) => { + this.collections = collections; + this.isFetchingCollections = false; + }) + .catch((error) => { + this.$console.error(error); + this.isFetchingCollections = false; + }); + this.isLoading = false; }); } @@ -621,7 +675,8 @@ export default { .thumbnail-field { max-height: 128px; - margin-bottom: 40px; + margin-bottom: 96px; + margin-top: -20px; .content { padding: 10px; @@ -692,6 +747,10 @@ export default { margin-right: 5px; } } + .moderators-empty-list { + color: gray; + font-size: 0.85rem; + } diff --git a/src/admin/tainacan-admin-i18n.php b/src/admin/tainacan-admin-i18n.php index 9fd7a2fe1..825e4b9eb 100644 --- a/src/admin/tainacan-admin-i18n.php +++ b/src/admin/tainacan-admin-i18n.php @@ -91,6 +91,8 @@ return [ 'label_thumbnail' => __( 'Thumbnail', 'tainacan' ), 'label_empty_thumbnail' => __( 'Empty Thumbnail', 'tainacan' ), 'label_moderators' => __( 'Moderators', 'tainacan' ), + 'label_parent_collection' => __( 'Parent collection', 'tainacan' ), + 'label_no_parent_collection' => __( 'No parent collection', 'tainacan' ), 'label_button_view' => __( 'Button View', 'tainacan' ), 'label_button_edit' => __( 'Button Edit', 'tainacan' ), 'label_button_delete' => __( 'Button Delete', 'tainacan' ), @@ -165,6 +167,7 @@ return [ 'instruction_select_a_parent_term' => __( 'Select a parent term:', 'tainacan' ), 'instruction_cover_page' => __( 'Type to search a Page to choose.', 'tainacan'), 'instruction_moderators' => __( 'Type to search a User to add.', 'tainacan'), + 'instruction_select_a_parent_collection' => __( 'Select a parent colection.', 'tainacan' ), // Info. Other feedback to user. 'info_name_is_required' => __( 'Name is required.', 'tainacan' ), diff --git a/src/js/store/modules/collection/actions.js b/src/js/store/modules/collection/actions.js index 89bd12a14..efec33335 100644 --- a/src/js/store/modules/collection/actions.js +++ b/src/js/store/modules/collection/actions.js @@ -103,7 +103,7 @@ export const deleteCollection = ({ commit }, id) => { }); } -export const updateCollection = ({ commit }, { collection_id, name, description, slug, status, enable_cover_page, cover_page_id, moderators_ids }) => { +export const updateCollection = ({ commit }, { collection_id, name, description, slug, status, enable_cover_page, cover_page_id, moderators_ids, parent }) => { return new Promise((resolve, reject) => { axios.tainacan.patch('/collections/' + collection_id, { name: name, @@ -112,7 +112,8 @@ export const updateCollection = ({ commit }, { collection_id, name, description, slug: slug, cover_page_id: "" + cover_page_id, enable_cover_page: enable_cover_page, - moderators_ids: moderators_ids + moderators_ids: moderators_ids, + parent: parent }).then( res => { commit('setCollection', { id: collection_id, @@ -122,7 +123,8 @@ export const updateCollection = ({ commit }, { collection_id, name, description, status: status, enable_cover_page: enable_cover_page, cover_page_id: cover_page_id, - moderators_ids: moderators_ids + moderators_ids: moderators_ids.name, + parent: parent }); resolve( res.data ); }).catch( error => { @@ -264,4 +266,18 @@ export const fetchUsers = ({ commit }, { search, exceptions }) => { reject( error ); }); }); -}; \ No newline at end of file +}; + +// Fetch Collections for choosing Parent Collection +export const fetchCollectionsForParent = ({ commit }) => { + return new Promise((resolve, reject) =>{ + axios.tainacan.get('/collections/') + .then(res => { + let collections = res.data; + resolve( collections ); + }) + .catch(error => { + reject(error); + }) + }); +} \ No newline at end of file From 445f6d55c51e93466301670f67bf2a696ce18623 Mon Sep 17 00:00:00 2001 From: Leo Germani Date: Wed, 25 Apr 2018 18:45:12 -0300 Subject: [PATCH 09/58] first tests with crop dialog --- .../edition/collection-edition-form.vue | 62 ++++++++++++++++++- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/src/admin/components/edition/collection-edition-form.vue b/src/admin/components/edition/collection-edition-form.vue index b2bc09556..4046cf5bc 100644 --- a/src/admin/components/edition/collection-edition-form.vue +++ b/src/admin/components/edition/collection-edition-form.vue @@ -542,14 +542,42 @@ export default { frame: 'select', title: 'Select or Upload and Image.', button: { - text: 'Use this media' + text: 'Select and Crop', + close: false }, multiple: false, library: { type: 'image', uploadedTo: this.collectionId }, - uploader: true + uploader: true, + states: [ + new wp.media.controller.Library({ + title: 'Corta aí', + library: wp.media.query({ type: 'image' }), + multiple: false, + date: false, + priority: 20, + suggestedWidth: 1000, + suggestedHeight: 200 + }), + new wp.media.controller.Cropper({ + imgSelectOptions: { + enable: true, + handles: true, + imageHeight: 200, + imageWidth: 1000, + instance: true, + keys: true, + maxWidth: 1000, + persistent: true, + x1: 0, + x2: 250, + y1: 0, + y2: 50 + } + }) + ] }); @@ -558,7 +586,11 @@ export default { } this.frameUploader.on('select', () => { - + this.frameUploader.state('cropper').set( 'canSkipCrop', true ); + this.frameUploader.setState('cropper'); + }); + + this.frameUploader.on('skippedcrop', () => { let media = this.frameUploader.state().get( 'selection' ).first().toJSON(); if (isThumbnail) { @@ -581,6 +613,30 @@ export default { }); + this.frameUploader.on('cropped', (croppedImage) => { + + // it is not cropping where we choose, but almost there + + if (isThumbnail) { + this.updateThumbnail({collectionId: this.collectionId, thumbnailId: croppedImage.attachment_id}) + .then((res) => { + this.collection.featured_image = res.featured_image; + }) + .catch((error) => { + this.$console.error(error); + }); + } else { + this.updateHeaderImage({collectionId: this.collectionId, headerImageId: croppedImage.attachment_id}) + .then((res) => { + this.collection.header_image = res.header_image; + }) + .catch((error) => { + this.$console.error(error); + }); + } + + }); + this.frameUploader.open(); }, deleteThumbnail() { From acb01eba4c263c33688fb302339caf22262c91b6 Mon Sep 17 00:00:00 2001 From: Mateus Machado Luna Date: Thu, 26 Apr 2018 08:40:25 -0300 Subject: [PATCH 10/58] Removes current collection from list of possible parent collections. Uses fetch_only in getCollections for parent selection. --- src/admin/components/edition/collection-edition-form.vue | 7 ++++--- src/js/store/modules/collection/actions.js | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/admin/components/edition/collection-edition-form.vue b/src/admin/components/edition/collection-edition-form.vue index 4046cf5bc..0301a46be 100644 --- a/src/admin/components/edition/collection-edition-form.vue +++ b/src/admin/components/edition/collection-edition-form.vue @@ -267,9 +267,10 @@ :placeholder="$i18n.get('instruction_select_a_parent_collection')"> diff --git a/src/js/store/modules/collection/actions.js b/src/js/store/modules/collection/actions.js index efec33335..938932c6e 100644 --- a/src/js/store/modules/collection/actions.js +++ b/src/js/store/modules/collection/actions.js @@ -271,7 +271,7 @@ export const fetchUsers = ({ commit }, { search, exceptions }) => { // Fetch Collections for choosing Parent Collection export const fetchCollectionsForParent = ({ commit }) => { return new Promise((resolve, reject) =>{ - axios.tainacan.get('/collections/') + axios.tainacan.get('/collections/?fetch_only[0]=name&fetch_only[1]=id') .then(res => { let collections = res.data; resolve( collections ); From 6bbb596fc3451ae2b4d28184e54229f2c9779b05 Mon Sep 17 00:00:00 2001 From: weryques Date: Thu, 26 Apr 2018 13:35:44 -0300 Subject: [PATCH 11/58] Possibility of hide or not a field by default --- src/admin/class-tainacan-admin.php | 58 +-- .../components/edition/field-edition-form.vue | 405 ++++++++++-------- src/admin/components/lists/items-list.vue | 2 +- .../components/search/search-control.vue | 95 ++-- src/admin/pages/lists/items-page.vue | 357 +++++++++------ src/admin/tainacan-admin-i18n.php | 49 +-- src/classes/entities/class-tainacan-field.php | 18 +- .../repositories/class-tainacan-fields.php | 274 ++++++------ src/js/store/modules/fields/actions.js | 143 ++++--- 9 files changed, 766 insertions(+), 635 deletions(-) diff --git a/src/admin/class-tainacan-admin.php b/src/admin/class-tainacan-admin.php index 2f94add74..95d28d06d 100644 --- a/src/admin/class-tainacan-admin.php +++ b/src/admin/class-tainacan-admin.php @@ -57,37 +57,37 @@ class Admin { wp_enqueue_style( 'tainacan-admin-page', $TAINACAN_BASE_URL . '/assets/css/tainacan-admin.css' ); $undesired_wp_styles = [ - //'admin-menu', - //'admin-bar', - //'code-editor', - //'color-picker', - //'customize-controls', - //'customize-nav-menus', - //'customize-widgets', - //'dashboard', - //'dashicons', - //'deprecated-media', - //'edit', - //'wp-pointer', - //'farbtastic', - //'forms', - //'common', - //'install', - //'wp-auth-check', - //'site-icon', - //'buttons', - //'l10n', - //'list-tables', - //'login', - //'media', - //'nav-menus', - //'revisions', - //'themes', - //'widgets', - //'wp-admin' + 'admin-menu', + 'admin-bar', + 'code-editor', + 'color-picker', + 'customize-controls', + 'customize-nav-menus', + 'customize-widgets', + 'dashboard', + 'dashicons', + 'deprecated-media', + 'edit', + 'wp-pointer', + 'farbtastic', + 'forms', + 'common', + 'install', + 'wp-auth-check', + 'site-icon', + 'buttons', + 'l10n', + 'list-tables', + 'login', + 'media', + 'nav-menus', + 'revisions', + 'themes', + 'widgets', + 'wp-admin' ]; - //wp_dequeue_style( $undesired_wp_styles ); + wp_dequeue_style( $undesired_wp_styles ); wp_deregister_style( $undesired_wp_styles ); } diff --git a/src/admin/components/edition/field-edition-form.vue b/src/admin/components/edition/field-edition-form.vue index 4d5159d13..b1aede65e 100644 --- a/src/admin/components/edition/field-edition-form.vue +++ b/src/admin/components/edition/field-edition-form.vue @@ -1,167 +1,180 @@ diff --git a/src/admin/tainacan-admin-i18n.php b/src/admin/tainacan-admin-i18n.php index 74b40be5f..a94871fd2 100644 --- a/src/admin/tainacan-admin-i18n.php +++ b/src/admin/tainacan-admin-i18n.php @@ -56,8 +56,8 @@ return [ 'title_item_page' => __( 'Item Page', 'tainacan' ), 'title_field_page' => __( 'Field Page', 'tainacan' ), - /* translators: alkdjklasdj laksjd klsadj */ - 'title_collection_page' => __( 'Collection Page', 'tainacan' ), + /* translators: alkdjklasdj laksjd klsadj */ + 'title_collection_page' => __( 'Collection Page', 'tainacan' ), 'title_filter_page' => __( 'Filter Page', 'tainacan' ), 'title_category_page' => __( 'Category Page', 'tainacan' ), 'title_term_page' => __( 'Term Page', 'tainacan' ), @@ -73,10 +73,10 @@ return [ 'title_collection_fields_edition' => __( 'Collection Fields Edition Page', 'tainacan' ), // Labels (used mainly on Aria Labels and Inputs) - 'label_clean' => __( 'Clear', 'tainacan' ), - 'label_selected' => __( 'Selected', 'tainacan' ), - 'label_relationship_new_search' => __( 'New Search', 'tainacan' ), - 'label_relationship_items_found' => __( 'Items found', 'tainacan' ), + 'label_clean' => __( 'Clear', 'tainacan' ), + 'label_selected' => __( 'Selected', 'tainacan' ), + 'label_relationship_new_search' => __( 'New Search', 'tainacan' ), + 'label_relationship_items_found' => __( 'Items found', 'tainacan' ), 'label_menu' => __( 'Menu', 'tainacan' ), 'label_main_menu' => __( 'Main Menu', 'tainacan' ), 'label_collection_menu' => __( 'Collection Menu', 'tainacan' ), @@ -94,7 +94,7 @@ return [ 'label_button_delete' => __( 'Button Delete', 'tainacan' ), 'label_button_edit_thumb' => __( 'Button Edit Thumbnail', 'tainacan' ), 'label_button_edit_header_image' => __( 'Button Edit Header Image', 'tainacan' ), - 'label_choose_thumb' => __( 'Choose Thumbnail', 'tainacan' ), + 'label_choose_thumb' => __( 'Choose Thumbnail', 'tainacan' ), 'label_button_delete_thumb' => __( 'Button Delete Thumbnail', 'tainacan' ), 'label_collections_per_page' => __( 'Collections per Page:', 'tainacan' ), 'label_categories_per_page' => __( 'Categories per Page:', 'tainacan' ), @@ -131,23 +131,24 @@ return [ 'label_collection_fields' => __( 'Collection Fields', 'tainacan' ), 'label_collection_filters' => __( 'Collection Filters', 'tainacan' ), 'label_parent_term' => __( 'Parent Term', 'tainacan' ), - 'label_new_term' => __( 'New Term', 'tainacan' ), + 'label_new_term' => __( 'New Term', 'tainacan' ), 'label_new_child' => __( 'New Child', 'tainacan' ), 'label_category_terms' => __( 'Category Terms', 'tainacan' ), 'label_no_parent_term' => __( 'No parent term', 'tainacan' ), 'label_term_without_name' => __( 'Term without name', 'tainacan' ), - 'label_inherited' => __( 'Inherited', 'tainacan' ), - 'label_sorting' => __( 'Sorting', 'tainacan' ), + 'label_inherited' => __( 'Inherited', 'tainacan' ), + 'label_sorting' => __( 'Sorting', 'tainacan' ), 'label_who_when' => __( 'Who and when', 'tainacan' ), 'label_event_title' => __( 'Event', 'tainacan' ), 'label_header_image' => __( 'Header Image', 'tainacan' ), 'label_empty_header_image' => __( 'Empty Header Image', 'tainacan' ), 'label_enable_cover_page' => __( 'Enable Cover Page', 'tainacan' ), - 'label_cover_page' => __( 'Cover Page', 'tainacan' ), - 'label_default_displayed_fields' => __( 'Default Displayed Fields', 'tainacan' ), - 'label_display' => __( 'Display on Listing', 'tainacan' ), - 'label_display_default' => __( 'Display by default', 'tainacan' ), - 'label_display_never' => __( 'Never displayed', 'tainacan' ), + 'label_cover_page' => __( 'Cover Page', 'tainacan' ), + 'label_default_displayed_fields' => __( 'Default Displayed Fields', 'tainacan' ), + 'label_display' => __( 'Display on Listing', 'tainacan' ), + 'label_display_default' => __( 'Display by default', 'tainacan' ), + 'label_display_never' => __( 'Never displayed', 'tainacan' ), + 'label_not_display' => __( 'Not display by default', 'tainacan' ), // Instructions. More complex sentences to guide user and placeholders 'instruction_dragndrop_fields_collection' => __( 'Drag and drop Fields here to Collection.', 'tainacan' ), @@ -190,18 +191,18 @@ return [ 'info_by' => __( 'By: ', 'tainacan' ), 'info_date' => __( 'Date: ', 'tainacan' ), 'info_not_saved' => __( 'Not saved ', 'tainacan' ), - 'info_warning_fields_not_saved' => __('Are you sure? There are fields not saved, changes will be lost.', 'tainacan'), - 'info_warning_filters_not_saved' => __('Are you sure? There are filters not saved, changes will be lost.', 'tainacan'), - 'info_no_description_provided' => __('No description provided.', 'tainacan'), - 'info_warning_category_not_saved' => __('Are you sure? The category is not saved, changes will be lost.', 'tainacan'), - 'info_warning_terms_not_saved' => __('Are you sure? There are terms not saved, changes will be lost.', 'tainacan'), - 'info_warning_orphan_terms' => __('Are you sure? This term is parent of other terms. These will be converted to root terms.', 'tainacan'), - 'info_there_is_no_field' => __('There is no field here.', 'tainacan' ), + 'info_warning_fields_not_saved' => __( 'Are you sure? There are fields not saved, changes will be lost.', 'tainacan' ), + 'info_warning_filters_not_saved' => __( 'Are you sure? There are filters not saved, changes will be lost.', 'tainacan' ), + 'info_no_description_provided' => __( 'No description provided.', 'tainacan' ), + 'info_warning_category_not_saved' => __( 'Are you sure? The category is not saved, changes will be lost.', 'tainacan' ), + 'info_warning_terms_not_saved' => __( 'Are you sure? There are terms not saved, changes will be lost.', 'tainacan' ), + 'info_warning_orphan_terms' => __( 'Are you sure? This term is parent of other terms. These will be converted to root terms.', 'tainacan' ), + 'info_there_is_no_field' => __( 'There is no field here.', 'tainacan' ), 'info_no_events' => __( 'No events', 'tainacan' ), 'info_logs_before' => __( 'Before updating', 'tainacan' ), 'info_logs_after' => __( 'What was updated', 'tainacan' ), - 'info_there_is_no_field' => __('There is no field here yet.', 'tainacan' ), - 'info_there_is_no_filter' => __('There is no filter here yet.', 'tainacan' ), + 'info_there_is_no_field' => __( 'There is no field here yet.', 'tainacan' ), + 'info_there_is_no_filter' => __( 'There is no filter here yet.', 'tainacan' ), 'info_changes' => __( 'Changes', 'tainacan' ), // Tainacan Field Types diff --git a/src/classes/entities/class-tainacan-field.php b/src/classes/entities/class-tainacan-field.php index 945eb5028..a946ead9f 100644 --- a/src/classes/entities/class-tainacan-field.php +++ b/src/classes/entities/class-tainacan-field.php @@ -16,6 +16,7 @@ class Field extends Entity { $description, $required, $multiple, + $display, $cardinality, $collection_key, $mask, @@ -40,6 +41,21 @@ class Field extends Entity { return 'Hello, my name is '. $this->get_name(); } + + /** + * @param $display + */ + function set_display( $display ){ + $this->set_mapped_property('display', $display); + } + + /** + * @return mixed + */ + function get_display(){ + return $this->get_mapped_property('display'); + } + /** * Return the field name * @@ -315,7 +331,7 @@ class Field extends Entity { * @param bool $value */ function set_accept_suggestion( $value ) { - return $this->set_mapped_property('accept_suggestion', $value); + $this->set_mapped_property('accept_suggestion', $value); } /** diff --git a/src/classes/repositories/class-tainacan-fields.php b/src/classes/repositories/class-tainacan-fields.php index f0d2fb110..3353b2277 100644 --- a/src/classes/repositories/class-tainacan-fields.php +++ b/src/classes/repositories/class-tainacan-fields.php @@ -41,138 +41,148 @@ class Fields extends Repository { public function get_map() { return apply_filters('tainacan-get-map-'.$this->get_name(), [ - 'name' => [ - 'map' => 'post_title', - 'title' => __('Name', 'tainacan'), - 'type' => 'string', - 'description'=> __('Name of the field', 'tainacan'), - 'on_error' => __('The name should be a text value and not empty', 'tainacan'), - 'validation' => v::stringType()->notEmpty(), - ], - 'slug' => [ - 'map' => 'post_name', - 'title' => __('Slug', 'tainacan'), - 'type' => 'string', - 'description'=> __('A unique and santized string representation of the field', 'tainacan'), - //'validation' => v::stringType(), - ], - 'order' => [ - 'map' => 'menu_order', - 'title' => __('Order', 'tainacan'), - 'type' => 'string/integer', - 'description'=> __('Field order. Field used if collections are manually ordered', 'tainacan'), - 'on_error' => __('The menu order should be a numeric value', 'tainacan'), - //'validation' => v::numeric(), - ], - 'parent' => [ - 'map' => 'post_parent', - 'title' => __('Parent', 'tainacan'), - 'type' => 'integer', - 'description'=> __('Parent field', 'tainacan'), - 'default' => 0 - //'on_error' => __('The Parent should be numeric value', 'tainacan'), - //'validation' => v::numeric(), - ], - 'description' => [ - 'map' => 'post_content', - 'title' => __('Description', 'tainacan'), - 'type' => 'string', - 'description'=> __('The field description', 'tainacan'), - 'default' => '', - //'on_error' => __('The description should be a text value', 'tainacan'), - //'validation' => v::stringType()->notEmpty(), - ], - 'field_type' => [ - 'map' => 'meta', - 'title' => __('Type', 'tainacan'), - 'type' => 'string', - 'description'=> __('The field type', 'tainacan'), - 'on_error' => __('Field type is empty', 'tainacan'), - 'validation' => v::stringType()->notEmpty(), - ], - 'required' => [ - 'map' => 'meta', - 'title' => __('Required', 'tainacan'), - 'type' => 'string', - 'description'=> __('The field is required', 'tainacan'), - 'on_error' => __('Field required field is invalid', 'tainacan'), - 'validation' => v::stringType()->in(['yes', 'no']), // yes or no - 'default' => 'no' - ], - 'collection_key' => [ - 'map' => 'meta', - 'title' => __('Collection key', 'tainacan'), - 'type' => 'string', - 'description'=> __('Field value should not be repeated', 'tainacan'), - 'on_error' => __('Collection key is invalid', 'tainacan'), - 'validation' => v::stringType()->in(['yes', 'no']), // yes or no - 'default' => 'no' - ], - 'multiple' => [ - 'map' => 'meta', - 'title' => __('Multiple', 'tainacan'), - 'type' => 'string', - 'description'=> __('Allow multiple fields for the field', 'tainacan'), - 'on_error' => __('Multiple fields is invalid', 'tainacan'), - 'validation' => v::stringType()->in(['yes', 'no']), // yes or no. It cant be multiple if its collection_key - 'default' => 'no' - ], - 'cardinality' => [ - 'map' => 'meta', - 'title' => __('Cardinality', 'tainacan'), - 'type' => 'string/number', - 'description'=> __('Number of multiples possible fields', 'tainacan'), - 'on_error' => __('The number of fields not allowed', 'tainacan'), - 'validation' => v::numeric()->positive(), - 'default' => 1 - ], - 'mask' => [ - 'map' => 'meta', - 'title' => __('Mask', 'tainacan'), - 'type' => 'string', - 'description'=> __('The mask to be used in the field', 'tainacan'), - //'on_error' => __('Mask is invalid', 'tainacan'), - //'validation' => '' - ], - 'default_value' => [ - 'map' => 'meta', - 'title' => __('Default value', 'tainacan'), - 'type' => 'string', - 'description'=> __('The value default fot the field', 'tainacan'), - ], - 'field_type_options' => [ // not showed in form - 'map' => 'meta', - 'title' => __('Field Type options', 'tainacan'), - 'type' => 'array/object/string', - 'items' => ['type' => 'array/string/integer/object'], - 'description'=> __('Options specific for field type', 'tainacan'), - // 'validation' => '' - ], - 'collection_id' => [ // not showed in form - 'map' => 'meta', - 'title' => __('Collection', 'tainacan'), - 'type' => 'integer/string', - 'description'=> __('The collection ID', 'tainacan'), - //'validation' => '' - ], - 'accept_suggestion' => [ - 'map' => 'meta', - 'title' => __('Field Value Accepts Suggestions', 'tainacan'), - 'type' => 'bool', - 'description'=> __('Allow the community suggest a different values for that field', 'tainacan'), - 'default' => false, - 'validation' => v::boolType() - ], - 'exposer_mapping' => [ - 'map' => 'meta', - 'title' => __('exposer_mapping', 'tainacan'), - 'type' => 'array', - 'description'=> __('The field mapping options', 'tainacan'), - 'on_error' => __('Invalid Field Mapping', 'tainacan'), - //'validation' => v::arrayType(), - 'default' => [] - ], - ]); + 'name' => [ + 'map' => 'post_title', + 'title' => __( 'Name', 'tainacan' ), + 'type' => 'string', + 'description' => __( 'Name of the field', 'tainacan' ), + 'on_error' => __( 'The name should be a text value and not empty', 'tainacan' ), + 'validation' => v::stringType()->notEmpty(), + ], + 'slug' => [ + 'map' => 'post_name', + 'title' => __( 'Slug', 'tainacan' ), + 'type' => 'string', + 'description' => __( 'A unique and santized string representation of the field', 'tainacan' ), + //'validation' => v::stringType(), + ], + 'order' => [ + 'map' => 'menu_order', + 'title' => __( 'Order', 'tainacan' ), + 'type' => 'string/integer', + 'description' => __( 'Field order. Field used if collections are manually ordered', 'tainacan' ), + 'on_error' => __( 'The menu order should be a numeric value', 'tainacan' ), + //'validation' => v::numeric(), + ], + 'parent' => [ + 'map' => 'post_parent', + 'title' => __( 'Parent', 'tainacan' ), + 'type' => 'integer', + 'description' => __( 'Parent field', 'tainacan' ), + 'default' => 0 + //'on_error' => __('The Parent should be numeric value', 'tainacan'), + //'validation' => v::numeric(), + ], + 'description' => [ + 'map' => 'post_content', + 'title' => __( 'Description', 'tainacan' ), + 'type' => 'string', + 'description' => __( 'The field description', 'tainacan' ), + 'default' => '', + //'on_error' => __('The description should be a text value', 'tainacan'), + //'validation' => v::stringType()->notEmpty(), + ], + 'field_type' => [ + 'map' => 'meta', + 'title' => __( 'Type', 'tainacan' ), + 'type' => 'string', + 'description' => __( 'The field type', 'tainacan' ), + 'on_error' => __( 'Field type is empty', 'tainacan' ), + 'validation' => v::stringType()->notEmpty(), + ], + 'required' => [ + 'map' => 'meta', + 'title' => __( 'Required', 'tainacan' ), + 'type' => 'string', + 'description' => __( 'The field is required', 'tainacan' ), + 'on_error' => __( 'Field required field is invalid', 'tainacan' ), + 'validation' => v::stringType()->in( [ 'yes', 'no' ] ), // yes or no + 'default' => 'no' + ], + 'collection_key' => [ + 'map' => 'meta', + 'title' => __( 'Collection key', 'tainacan' ), + 'type' => 'string', + 'description' => __( 'Field value should not be repeated', 'tainacan' ), + 'on_error' => __( 'Collection key is invalid', 'tainacan' ), + 'validation' => v::stringType()->in( [ 'yes', 'no' ] ), // yes or no + 'default' => 'no' + ], + 'multiple' => [ + 'map' => 'meta', + 'title' => __( 'Multiple', 'tainacan' ), + 'type' => 'string', + 'description' => __( 'Allow multiple fields for the field', 'tainacan' ), + 'on_error' => __( 'Multiple fields is invalid', 'tainacan' ), + 'validation' => v::stringType()->in( [ 'yes', 'no' ] ), + // yes or no. It cant be multiple if its collection_key + 'default' => 'no' + ], + 'cardinality' => [ + 'map' => 'meta', + 'title' => __( 'Cardinality', 'tainacan' ), + 'type' => 'string/number', + 'description' => __( 'Number of multiples possible fields', 'tainacan' ), + 'on_error' => __( 'The number of fields not allowed', 'tainacan' ), + 'validation' => v::numeric()->positive(), + 'default' => 1 + ], + 'mask' => [ + 'map' => 'meta', + 'title' => __( 'Mask', 'tainacan' ), + 'type' => 'string', + 'description' => __( 'The mask to be used in the field', 'tainacan' ), + //'on_error' => __('Mask is invalid', 'tainacan'), + //'validation' => '' + ], + 'default_value' => [ + 'map' => 'meta', + 'title' => __( 'Default value', 'tainacan' ), + 'type' => 'string', + 'description' => __( 'The value default fot the field', 'tainacan' ), + ], + 'field_type_options' => [ // not showed in form + 'map' => 'meta', + 'title' => __( 'Field Type options', 'tainacan' ), + 'type' => 'array/object/string', + 'items' => [ 'type' => 'array/string/integer/object' ], + 'description' => __( 'Options specific for field type', 'tainacan' ), + // 'validation' => '' + ], + 'collection_id' => [ // not showed in form + 'map' => 'meta', + 'title' => __( 'Collection', 'tainacan' ), + 'type' => 'integer/string', + 'description' => __( 'The collection ID', 'tainacan' ), + //'validation' => '' + ], + 'accept_suggestion' => [ + 'map' => 'meta', + 'title' => __( 'Field Value Accepts Suggestions', 'tainacan' ), + 'type' => 'bool', + 'description' => __( 'Allow the community suggest a different values for that field', 'tainacan' ), + 'default' => false, + 'validation' => v::boolType() + ], + 'exposer_mapping' => [ + 'map' => 'meta', + 'title' => __( 'exposer_mapping', 'tainacan' ), + 'type' => 'array/object/string', + 'items' => [ 'type' => 'array/string/integer/object' ], + 'description' => __( 'The field mapping options', 'tainacan' ), + 'on_error' => __( 'Invalid Field Mapping', 'tainacan' ), + //'validation' => v::arrayType(), + 'default' => [] + ], + 'display' => [ + 'map' => 'meta', + 'title' => __( 'Display', 'tainacan' ), + 'type' => __( 'string' ), + 'validation' => v::stringType()->in( [ 'yes', 'no', 'never' ] ), + 'description' => __( 'Display by default on listing or not display or never display. yes = display, no = not diplay, never = never display', 'tainacan' ), + 'default' => 'yes' + ] + ] ); } /** diff --git a/src/js/store/modules/fields/actions.js b/src/js/store/modules/fields/actions.js index ce9ec337f..6a373e7f3 100644 --- a/src/js/store/modules/fields/actions.js +++ b/src/js/store/modules/fields/actions.js @@ -1,11 +1,11 @@ import axios from '../../../axios/axios'; import qs from 'qs'; -export const fetchFields = ({ commit }, {collectionId, isRepositoryLevel, isContextEdit }) => { +export const fetchFields = ({commit}, {collectionId, isRepositoryLevel, isContextEdit}) => { return new Promise((resolve, reject) => { let endpoint = ''; - if (!isRepositoryLevel) - endpoint = '/collection/' + collectionId + '/fields/'; + if (!isRepositoryLevel) + endpoint = '/collection/' + collectionId + '/fields/'; else endpoint = '/fields/'; @@ -14,116 +14,119 @@ export const fetchFields = ({ commit }, {collectionId, isRepositoryLevel, isCont endpoint += '&context=edit'; axios.tainacan.get(endpoint) - .then((res) => { - let fields= res.data; - commit('setFields', fields); - resolve (fields); - }) - .catch((error) => { - console.log(error); - reject(error); - }); + .then((res) => { + let fields = res.data; + commit('setFields', fields); + resolve(fields); + }) + .catch((error) => { + console.log(error); + reject(error); + }); }); -} +}; -export const sendField = ( { commit }, { collectionId, name, fieldType, status, isRepositoryLevel, newIndex }) => { - return new Promise(( resolve, reject ) => { +export const sendField = ({commit}, {collectionId, name, fieldType, status, isRepositoryLevel, newIndex}) => { + return new Promise((resolve, reject) => { let endpoint = ''; - if (!isRepositoryLevel) - endpoint = '/collection/' + collectionId + '/fields/'; + if (!isRepositoryLevel) + endpoint = '/collection/' + collectionId + '/fields/'; else endpoint = '/fields/'; axios.tainacan.post(endpoint + '?context=edit', { name: name, - field_type: fieldType, + field_type: fieldType, status: status }) - .then( res => { + .then(res => { let field = res.data; - commit('setSingleField', { field: field, index: newIndex}); - resolve( res.data ); + commit('setSingleField', {field: field, index: newIndex}); + resolve(res.data); }) .catch(error => { - reject( error.response ); + reject(error.response); }); }); }; -export const updateField = ( { commit }, { collectionId, fieldId, isRepositoryLevel, index, options }) => { - return new Promise(( resolve, reject ) => { +export const updateField = ({commit}, {collectionId, fieldId, isRepositoryLevel, index, options}) => { + return new Promise((resolve, reject) => { let endpoint = ''; - if (!isRepositoryLevel) - endpoint = '/collection/' + collectionId + '/fields/' + fieldId; + if (!isRepositoryLevel) + endpoint = '/collection/' + collectionId + '/fields/' + fieldId; else endpoint = '/fields/' + fieldId; axios.tainacan.put(endpoint + '?context=edit', options) - .then( res => { - let field = res.data - commit('setSingleField', { field: field, index: index }); - resolve( field ); + .then(res => { + let field = res.data; + commit('setSingleField', {field: field, index: index}); + resolve(field); }) .catch(error => { - reject({ error_message: error['response']['data'].error_message, errors: error['response']['data'].errors }); + reject({ + error_message: error['response']['data'].error_message, + errors: error['response']['data'].errors + }); }); }); }; -export const updateFields = ( { commit }, fields) => { +export const updateFields = ({commit}, fields) => { commit('setFields', fields); }; -export const deleteField = ({ commit }, { collectionId, fieldId, isRepositoryLevel }) => { +export const deleteField = ({commit}, {collectionId, fieldId, isRepositoryLevel}) => { let endpoint = ''; - if (!isRepositoryLevel) - endpoint = '/collection/' + collectionId + '/fields/' + fieldId; + if (!isRepositoryLevel) + endpoint = '/collection/' + collectionId + '/fields/' + fieldId; else endpoint = '/fields/' + fieldId; return new Promise((resolve, reject) => { axios.tainacan.delete(endpoint) - .then( res => { - commit('deleteField', res.data ); - resolve( res.data ); - }).catch((error) => { - console.log(error); - reject( error ); - }); - - }); -}; - -export const updateCollectionFieldsOrder = ({ commit, dispatch }, { collectionId, fieldsOrder }) => { - return new Promise((resolve, reject) => { - axios.tainacan.patch('/collections/' + collectionId, { - fields_order: fieldsOrder - }).then( res => { - // dispatch('collection/setCollection', res.data, {root: true}); - resolve( res.data ); - }).catch( error => { - reject( error.response ); - }); - - }); -} - - export const fetchFieldTypes = ({ commit} ) => { - return new Promise((resolve, reject) => { - axios.tainacan.get('/field-types') - .then((res) => { - let fieldTypes = res.data; - commit('setFieldTypes', fieldTypes); - resolve (fieldTypes); - }) - .catch((error) => { + .then(res => { + commit('deleteField', res.data); + resolve(res.data); + }).catch((error) => { console.log(error); reject(error); }); + + }); +}; + +export const updateCollectionFieldsOrder = ({commit, dispatch}, {collectionId, fieldsOrder}) => { + return new Promise((resolve, reject) => { + axios.tainacan.patch('/collections/' + collectionId, { + fields_order: fieldsOrder + }).then(res => { + // dispatch('collection/setCollection', res.data, {root: true}); + resolve(res.data); + }).catch(error => { + reject(error.response); + }); + + }); +} + +export const fetchFieldTypes = ({commit}) => { + return new Promise((resolve, reject) => { + axios.tainacan.get('/field-types') + .then((res) => { + let fieldTypes = res.data; + commit('setFieldTypes', fieldTypes); + resolve(fieldTypes); + }) + .catch((error) => { + console.log(error); + reject(error); + }); }); } -export const updateFieldTypes = ( { commit }, fieldTypes) => { +export const updateFieldTypes = ({commit}, fieldTypes) => { commit('setFieldTypes', fieldTypes); }; From e667869065701da4ec497097d820dd989ccf88b3 Mon Sep 17 00:00:00 2001 From: weryques Date: Thu, 26 Apr 2018 13:53:34 -0300 Subject: [PATCH 12/58] Changes help message and position of it tooltip --- .../components/edition/field-edition-form.vue | 20 +++++++++---------- .../repositories/class-tainacan-fields.php | 2 +- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/admin/components/edition/field-edition-form.vue b/src/admin/components/edition/field-edition-form.vue index b1aede65e..06bdbd1a7 100644 --- a/src/admin/components/edition/field-edition-form.vue +++ b/src/admin/components/edition/field-edition-form.vue @@ -73,8 +73,15 @@ + :addons="false"> + + @@ -86,9 +93,6 @@ name="display"> {{ $i18n.get('label_display_default') }} - @@ -100,9 +104,6 @@ name="display"> {{ $i18n.get('label_not_display') }} - {{ $i18n.get('label_display_never') }} - diff --git a/src/classes/repositories/class-tainacan-fields.php b/src/classes/repositories/class-tainacan-fields.php index 3353b2277..6df5e1564 100644 --- a/src/classes/repositories/class-tainacan-fields.php +++ b/src/classes/repositories/class-tainacan-fields.php @@ -179,7 +179,7 @@ class Fields extends Repository { 'title' => __( 'Display', 'tainacan' ), 'type' => __( 'string' ), 'validation' => v::stringType()->in( [ 'yes', 'no', 'never' ] ), - 'description' => __( 'Display by default on listing or not display or never display. yes = display, no = not diplay, never = never display', 'tainacan' ), + 'description' => __( 'Display by default on listing or not display or never display.', 'tainacan' ), 'default' => 'yes' ] ] ); From 391a70538d4f311a962e5d8384c75a1b14839765 Mon Sep 17 00:00:00 2001 From: Jacson Passold Date: Thu, 26 Apr 2018 14:34:51 -0300 Subject: [PATCH 13/58] add some docs, filter hook for type supported mappers, some notice fix --- src/exposers/class-tainacan-exposers.php | 12 ++++++------ .../mappers/class-tainacan-dublin-core.php | 5 +++++ src/exposers/mappers/class-tainacan-mapper.php | 16 ++++++++-------- src/exposers/mappers/class-tainacan-value.php | 4 ++++ src/exposers/types/class-tainacan-csv.php | 8 ++++++++ src/exposers/types/class-tainacan-html.php | 4 ++++ src/exposers/types/class-tainacan-oai-pmh.php | 4 ++++ src/exposers/types/class-tainacan-txt.php | 4 ++++ src/exposers/types/class-tainacan-type.php | 11 ++++++++++- src/exposers/types/class-tainacan-xml.php | 4 ++++ 10 files changed, 57 insertions(+), 15 deletions(-) diff --git a/src/exposers/class-tainacan-exposers.php b/src/exposers/class-tainacan-exposers.php index 9533c71a8..d913a6229 100644 --- a/src/exposers/class-tainacan-exposers.php +++ b/src/exposers/class-tainacan-exposers.php @@ -10,8 +10,8 @@ defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); */ class Exposers { - private $types = []; - private $mappers = []; + protected $types = []; + protected $mappers = []; private static $instance = null; const MAPPER_CLASS_PREFIX = 'Tainacan\Exposers\Mappers\\'; @@ -216,13 +216,13 @@ class Exposers { ) { if( $type === false || // do not have a exposer type - $type->mappers === true || // the type accept all mappers - ( is_array($type->mappers) && in_array($body['exposer-map'], $type->mappers) ) ) { // the current mapper is accepted by type + $type->get_mappers() === true || // the type accept all mappers + ( is_array($type->mappers) && in_array($body['exposer-map'], $type->get_mappers()) ) ) { // the current mapper is accepted by type $mapper = $Tainacan_Exposers->check_class_name($body['exposer-map'], true, self::MAPPER_CLASS_PREFIX); return new $mapper; } - } elseif( is_object($type) && is_array($type->mappers) && count($type->mappers) > 0 ) { //there are no defined mapper, let use the first one o list if has a list - $mapper = $Tainacan_Exposers->check_class_name($type->mappers[0], true, self::MAPPER_CLASS_PREFIX); + } elseif( is_object($type) && is_array($type->get_mappers()) && count($type->get_mappers()) > 0 ) { //there are no defined mapper, let use the first one o list if has a list + $mapper = $Tainacan_Exposers->check_class_name($type->get_mappers()[0], true, self::MAPPER_CLASS_PREFIX); return new $mapper; } return false; // No mapper need, using Tainacan defautls diff --git a/src/exposers/mappers/class-tainacan-dublin-core.php b/src/exposers/mappers/class-tainacan-dublin-core.php index 6c3682a5d..55d26d0e2 100644 --- a/src/exposers/mappers/class-tainacan-dublin-core.php +++ b/src/exposers/mappers/class-tainacan-dublin-core.php @@ -2,6 +2,11 @@ namespace Tainacan\Exposers\Mappers; +/** + * Support Dublin Core Mapping + * http://purl.org/dc/elements/1.1/ + * + */ class Dublin_Core extends Mapper { public $slug = 'dublin-core'; public $name = 'Dublin Core'; diff --git a/src/exposers/mappers/class-tainacan-mapper.php b/src/exposers/mappers/class-tainacan-mapper.php index 14d952388..5db2ef90e 100644 --- a/src/exposers/mappers/class-tainacan-mapper.php +++ b/src/exposers/mappers/class-tainacan-mapper.php @@ -3,12 +3,12 @@ namespace Tainacan\Exposers\Mappers; abstract class Mapper { - public $slug = null; - public $name = null; - public $allow_extra_fields = true; - public $context_url = null; - public $metadata = false; - public $prefix = ''; - public $sufix = ''; - public $header = false; + public $slug = null; // Slug of Mapper, used as option on api call + public $name = null; // Public name do mapper + public $allow_extra_fields = true; // Allow more field to be register + public $context_url = null; // URL of mapper documentation + public $metadata = false; // array of supported metadata, false for not validade the list + public $prefix = ''; // Tag prefix like "dc:" + public $sufix = ''; // Tag sufix + public $header = false; // API response header or file header to be used with } \ No newline at end of file diff --git a/src/exposers/mappers/class-tainacan-value.php b/src/exposers/mappers/class-tainacan-value.php index 675598670..9dc366eed 100644 --- a/src/exposers/mappers/class-tainacan-value.php +++ b/src/exposers/mappers/class-tainacan-value.php @@ -2,6 +2,10 @@ namespace Tainacan\Exposers\Mappers; +/** + * Mapper class for export fields in key => value format where key can be defined + * + */ class Value extends Mapper { public $slug = 'value'; public $name = 'Value'; diff --git a/src/exposers/types/class-tainacan-csv.php b/src/exposers/types/class-tainacan-csv.php index 3791a4fa8..48e9c389f 100644 --- a/src/exposers/types/class-tainacan-csv.php +++ b/src/exposers/types/class-tainacan-csv.php @@ -2,8 +2,16 @@ namespace Tainacan\Exposers\Types; +/** + * Generate a Csv formated response + * + */ class Csv extends Type { + /** + * List of supported mappers + * @var array + */ public $mappers = ['Value']; /** diff --git a/src/exposers/types/class-tainacan-html.php b/src/exposers/types/class-tainacan-html.php index cd66c9ac2..101b7e985 100644 --- a/src/exposers/types/class-tainacan-html.php +++ b/src/exposers/types/class-tainacan-html.php @@ -2,6 +2,10 @@ namespace Tainacan\Exposers\Types; +/** + * Generate a Html formated response + * + */ class Html extends Type { public $mappers = ['Value']; diff --git a/src/exposers/types/class-tainacan-oai-pmh.php b/src/exposers/types/class-tainacan-oai-pmh.php index 7c9c28334..94a5877b8 100644 --- a/src/exposers/types/class-tainacan-oai-pmh.php +++ b/src/exposers/types/class-tainacan-oai-pmh.php @@ -2,6 +2,10 @@ namespace Tainacan\Exposers\Types; +/** + * Generate a OAI_PMH/oai_dc formated response + * + */ class OAI_PMH extends Xml { public $mappers = ['Dublin Core']; diff --git a/src/exposers/types/class-tainacan-txt.php b/src/exposers/types/class-tainacan-txt.php index bd0d2df4a..133e3167e 100644 --- a/src/exposers/types/class-tainacan-txt.php +++ b/src/exposers/types/class-tainacan-txt.php @@ -2,6 +2,10 @@ namespace Tainacan\Exposers\Types; +/** + * Generate a text formated response + * + */ class Txt extends Type { public $mappers = ['Value']; diff --git a/src/exposers/types/class-tainacan-type.php b/src/exposers/types/class-tainacan-type.php index bc20a8c09..b5902c7f5 100644 --- a/src/exposers/types/class-tainacan-type.php +++ b/src/exposers/types/class-tainacan-type.php @@ -2,15 +2,24 @@ namespace Tainacan\Exposers\Types; +/** + * abstract class for implement exposer types + * + */ abstract class Type { - public $mappers = true; // List of supported mapper, leave true for all + protected $mappers = true; // List of supported mapper, leave true for all /** + * Change response after api callbacks * @param \WP_REST_Response $response * @param \WP_REST_Server $handler * @param \WP_REST_Request $request * @return \WP_REST_Response */ public abstract function rest_request_after_callbacks( $response, $handler, $request ); + + public function get_mappers() { + return apply_filters('tainacan-exporser-type-mappers', $this->mappers, $this); + } } \ No newline at end of file diff --git a/src/exposers/types/class-tainacan-xml.php b/src/exposers/types/class-tainacan-xml.php index c5fe7d567..24ffe1ea9 100644 --- a/src/exposers/types/class-tainacan-xml.php +++ b/src/exposers/types/class-tainacan-xml.php @@ -2,6 +2,10 @@ namespace Tainacan\Exposers\Types; +/** + * Generate a Csv formated response + * + */ class Xml extends Type { /** * From a3ce9230a07d1e0c7d97bba03ebdefafcb6a4b8b Mon Sep 17 00:00:00 2001 From: andre2ar Date: Thu, 26 Apr 2018 15:51:49 -0300 Subject: [PATCH 14/58] Repository importer: first concept --- src/importer/class-tainacan-importer.php | 74 ++++++++++++++------ src/importer/class-tainacan-old-tainacan.php | 46 ++++++++++-- tests/test-importer.php | 16 ++--- 3 files changed, 103 insertions(+), 33 deletions(-) diff --git a/src/importer/class-tainacan-importer.php b/src/importer/class-tainacan-importer.php index 652cd4b09..5d844e04f 100644 --- a/src/importer/class-tainacan-importer.php +++ b/src/importer/class-tainacan-importer.php @@ -78,6 +78,12 @@ abstract class Importer { 'url' => false, ]; + private $is_repository = false; + + private $steps = []; + + private $current_step = 0; + public function __construct() { if (!session_id()) { @session_start(); @@ -294,7 +300,20 @@ abstract class Importer { } return false; } - + + /** + * Sets importer as repository importer + */ + public function set_repository() + { + $this->is_repository = true; + } + + public function set_steps($steps) + { + $this->steps =$steps; + } + /** * Removes method accepeted by the importer * @@ -424,25 +443,40 @@ abstract class Importer { * run the process */ public function run(){ - - if ( ( !isset($this->collection) || ! $this->collection instanceof Entities\Collection ) && $this->import_structure_and_mapping ) { - $new_collection = new Entities\Collection(); - $new_collection->set_name('New Imported Collection'); - $new_collection->set_status('publish'); - $new_collection->validate(); - $new_collection = Tainacan\Repositories\Collections::get_instance()->insert($new_collection); - - $this->set_collection($new_collection); - - if (!method_exists($this, 'create_fields_and_mapping')) { - throw new Exception('Importers with import_structure_and_mapping true must implement create_fields_and_mapping method'); - } + if($this->is_repository && $this->current_step < count($this->steps)) + { + $process_name = key($this->steps); + $function_name = current($this->steps); + $continue = $this->{$function_name}();//If true still there is stuff to process - $this->create_fields_and_mapping(); - - } - - $this->process( $this->start ); - return sizeof($this->get_processed_items()); + if(!$continue) + { + //Move on to the next step + next($this->steps); + $this->current_step++; + } + } + else + { + if ( ( !isset($this->collection) || ! $this->collection instanceof Entities\Collection ) && $this->import_structure_and_mapping ) { + $new_collection = new Entities\Collection(); + $new_collection->set_name('New Imported Collection'); + $new_collection->set_status('publish'); + $new_collection->validate(); + $new_collection = Tainacan\Repositories\Collections::get_instance()->insert($new_collection); + + $this->set_collection($new_collection); + + if (!method_exists($this, 'create_fields_and_mapping')) { + throw new Exception('Importers with import_structure_and_mapping true must implement create_fields_and_mapping method'); + } + + $this->create_fields_and_mapping(); + + } + + $this->process( $this->start ); + return sizeof($this->get_processed_items()); + } } } \ No newline at end of file diff --git a/src/importer/class-tainacan-old-tainacan.php b/src/importer/class-tainacan-old-tainacan.php index 527d21693..b76fc0be7 100644 --- a/src/importer/class-tainacan-old-tainacan.php +++ b/src/importer/class-tainacan-old-tainacan.php @@ -11,6 +11,7 @@ namespace Tainacan\Importer; class Old_Tainacan extends Importer { + public $avoid = [ 'ID', 'post_author', @@ -32,16 +33,53 @@ class Old_Tainacan extends Importer 'filter', 'link', 'thumbnail' + ], + $steps = [ + 'Creating all taxonomies' => 'create_taxonomies', + 'Create empty collections' => 'create_collections', + 'Create repository metadata' => 'create_repo_meta', + 'Create collections metadata' => 'create_collection_metas', + 'Create collections items' => 'create_collection_items', + 'Setting relationships' => 'set_relationships' ]; - public function __construct($import_structure_and_mapping = false) + public function __construct() { parent::__construct(); - + $this->set_repository(); + $this->set_steps($this->steps); $this->remove_import_method('file'); $this->add_import_method('url'); + } - $this->import_structure_and_mapping = $import_structure_and_mapping; + public function create_taxonomies() + { + return false; + } + + public function create_collections() + { + return false; + } + + public function create_repo_meta() + { + return false; + } + + public function create_collection_metas() + { + return false; + } + + public function create_collection_items() + { + return false; + } + + public function set_relationships() + { + return false; } public function fetch_from_remote( $url ){ @@ -70,7 +108,6 @@ class Old_Tainacan extends Importer } } - if(!empty($link)) { $info = wp_remote_get( $link."/items/?includeMetadata=1" ); @@ -116,7 +153,6 @@ class Old_Tainacan extends Importer $file_content = unserialize($file->fread($file->getSize())); $item = $file_content->items[0]; - $fields = []; //Default meta diff --git a/tests/test-importer.php b/tests/test-importer.php index f043b9d8d..e39231430 100644 --- a/tests/test-importer.php +++ b/tests/test-importer.php @@ -31,20 +31,20 @@ class ImporterTests extends TAINACAN_UnitTestCase { /*public function test_automapping_old_tainacan() { - $Tainacan_Items = \Tainacan\Repositories\Items::get_instance(); - $Tainacan_Fields = \Tainacan\Repositories\Fields::get_instance(); + //$Tainacan_Items = \Tainacan\Repositories\Items::get_instance(); + //$Tainacan_Fields = \Tainacan\Repositories\Fields::get_instance(); - $old_tainacan = new Importer\Old_Tainacan(true); + $old_tainacan = new Importer\Old_Tainacan(); $id = $old_tainacan->get_id(); $_SESSION['tainacan_importer'][$id]->set_items_per_step(50); - /*if(!copy('./tests/attachment/json_old_tainacan_base.txt', './tests/attachment/json_old_tainacan.txt')) - { - return false; - } +// if(!copy('./tests/attachment/json_old_tainacan_base.txt', './tests/attachment/json_old_tainacan.txt')) +// { +// return false; +// } - $_SESSION['tainacan_importer'][$id]->set_file( './tests/attachment/json_old_tainacan.txt' ); + //$_SESSION['tainacan_importer'][$id]->set_file( './tests/attachment/json_old_tainacan.txt' ); $_SESSION['tainacan_importer'][$id]->fetch_from_remote( 'http://localhost/colecao/colecao-to-import/' ); $_SESSION['tainacan_importer'][$id]->run(); From 6d32b8c3ff78fbddc409879cdcac6c5dbcc4600d Mon Sep 17 00:00:00 2001 From: weryques Date: Thu, 26 Apr 2018 16:03:51 -0300 Subject: [PATCH 15/58] Term header image --- src/admin/class-tainacan-admin.php | 66 +-- .../components/edition/term-edition-form.vue | 419 +++++++++++++----- src/admin/tainacan-admin-i18n.php | 3 +- src/classes/entities/class-tainacan-term.php | 52 ++- .../repositories/class-tainacan-terms.php | 4 +- src/js/store/modules/category/actions.js | 17 +- 6 files changed, 393 insertions(+), 168 deletions(-) diff --git a/src/admin/class-tainacan-admin.php b/src/admin/class-tainacan-admin.php index 95d28d06d..5104dd9af 100644 --- a/src/admin/class-tainacan-admin.php +++ b/src/admin/class-tainacan-admin.php @@ -56,39 +56,39 @@ class Admin { wp_enqueue_style( 'tainacan-admin-page', $TAINACAN_BASE_URL . '/assets/css/tainacan-admin.css' ); - $undesired_wp_styles = [ - 'admin-menu', - 'admin-bar', - 'code-editor', - 'color-picker', - 'customize-controls', - 'customize-nav-menus', - 'customize-widgets', - 'dashboard', - 'dashicons', - 'deprecated-media', - 'edit', - 'wp-pointer', - 'farbtastic', - 'forms', - 'common', - 'install', - 'wp-auth-check', - 'site-icon', - 'buttons', - 'l10n', - 'list-tables', - 'login', - 'media', - 'nav-menus', - 'revisions', - 'themes', - 'widgets', - 'wp-admin' - ]; - - wp_dequeue_style( $undesired_wp_styles ); - wp_deregister_style( $undesired_wp_styles ); +// $undesired_wp_styles = [ +// 'admin-menu', +// 'admin-bar', +// 'code-editor', +// 'color-picker', +// 'customize-controls', +// 'customize-nav-menus', +// 'customize-widgets', +// 'dashboard', +// 'dashicons', +// 'deprecated-media', +// 'edit', +// 'wp-pointer', +// 'farbtastic', +// 'forms', +// 'common', +// 'install', +// 'wp-auth-check', +// 'site-icon', +// 'buttons', +// 'l10n', +// 'list-tables', +// 'login', +// 'media', +// 'nav-menus', +// 'revisions', +// 'themes', +// 'widgets', +// 'wp-admin' +// ]; +// +// wp_dequeue_style( $undesired_wp_styles ); +// wp_deregister_style( $undesired_wp_styles ); } diff --git a/src/admin/components/edition/term-edition-form.vue b/src/admin/components/edition/term-edition-form.vue index d8f6c96c7..55c0f41c5 100644 --- a/src/admin/components/edition/term-edition-form.vue +++ b/src/admin/components/edition/term-edition-form.vue @@ -1,53 +1,90 @@ diff --git a/src/admin/tainacan-admin-i18n.php b/src/admin/tainacan-admin-i18n.php index 3c1bfdf02..dbeb70c50 100644 --- a/src/admin/tainacan-admin-i18n.php +++ b/src/admin/tainacan-admin-i18n.php @@ -58,7 +58,6 @@ return [ 'title_field_page' => __( 'Field Page', 'tainacan' ), /* translators: alkdjklasdj laksjd klsadj */ - 'title_collection_page' => __( 'Collection Page', 'tainacan' ), 'title_filter_page' => __( 'Filter Page', 'tainacan' ), 'title_category_page' => __( 'Category Page', 'tainacan' ), 'title_term_page' => __( 'Term Page', 'tainacan' ), @@ -96,6 +95,7 @@ return [ 'label_button_view' => __( 'Button View', 'tainacan' ), 'label_button_edit' => __( 'Button Edit', 'tainacan' ), 'label_button_delete' => __( 'Button Delete', 'tainacan' ), + 'label_button_delete_header_image' => __( 'Button Delete Header Image', 'tainacan' ), 'label_button_edit_thumb' => __( 'Button Edit Thumbnail', 'tainacan' ), 'label_button_edit_header_image' => __( 'Button Edit Header Image', 'tainacan' ), 'label_choose_thumb' => __( 'Choose Thumbnail', 'tainacan' ), @@ -207,7 +207,6 @@ return [ 'info_warning_category_not_saved' => __( 'Are you sure? The category is not saved, changes will be lost.', 'tainacan' ), 'info_warning_terms_not_saved' => __( 'Are you sure? There are terms not saved, changes will be lost.', 'tainacan' ), 'info_warning_orphan_terms' => __( 'Are you sure? This term is parent of other terms. These will be converted to root terms.', 'tainacan' ), - 'info_there_is_no_field' => __( 'There is no field here.', 'tainacan' ), 'info_no_events' => __( 'No events', 'tainacan' ), 'info_logs_before' => __( 'Before updating', 'tainacan' ), 'info_logs_after' => __( 'What was updated', 'tainacan' ), diff --git a/src/classes/entities/class-tainacan-term.php b/src/classes/entities/class-tainacan-term.php index d3235c133..f0572bf44 100644 --- a/src/classes/entities/class-tainacan-term.php +++ b/src/classes/entities/class-tainacan-term.php @@ -64,6 +64,7 @@ class Term extends Entity { unset($term_array['status']); $term_array['id'] = $term_id; + $term_array['header_image'] = $this->get_header_image(); return $term_array; } @@ -136,6 +137,13 @@ class Term extends Entity { return $this->get_mapped_property( 'header_image_id' ); } + /** + * @return false|string + */ + function get_header_image(){ + return wp_get_attachment_url( $this->get_header_image_id() ); + } + // Setters /** @@ -205,9 +213,9 @@ class Term extends Entity { if (!parent::validate()) return false; - $parent = $this->get_parent(); - $name = $this->get_name(); - $taxonomy = $this->get_taxonomy(); +// $parent = $this->get_parent(); +// $name = $this->get_name(); +// $taxonomy = $this->get_taxonomy(); /** * Code from WordPress Core, taxonomy.php#2070 @@ -217,30 +225,30 @@ class Term extends Entity { * Prevent the creation of terms with duplicate names at the same level of a taxonomy hierarchy, * unless a unique slug has been explicitly provided. */ - $name_matches = get_terms( $taxonomy, array( - 'name' => $name, - 'hide_empty' => false, - 'parent' => $parent, - ) ); +// $name_matches = get_terms( $taxonomy, array( +// 'name' => $name, +// 'hide_empty' => false, +// 'parent' => $parent, +// ) ); /* * The `name` match in `get_terms()` doesn't differentiate accented characters, * so we do a stricter comparison here. */ - $name_match = null; - if ( $name_matches ) { - foreach ( $name_matches as $_match ) { - if ( is_object($_match) && isset($_match) && strtolower( $name ) === strtolower( $_match->name ) ) { - $name_match = $_match; - break; - } - } - } - - if ($name_match) { - $this->add_error( 'repeated', __('You can not have two terms with the same name at the same level', 'tainacan') ); - return false; - } +// $name_match = null; +// if ( $name_matches ) { +// foreach ( $name_matches as $_match ) { +// if ( is_object($_match) && isset($_match) && strtolower( $name ) === strtolower( $_match->name ) ) { +// $name_match = $_match; +// break; +// } +// } +// } +// +// if ($name_match) { +// $this->add_error( 'repeated', __('You can not have two terms with the same name at the same level', 'tainacan') ); +// return false; +// } $this->set_as_valid(); return true; diff --git a/src/classes/repositories/class-tainacan-terms.php b/src/classes/repositories/class-tainacan-terms.php index e64051b64..0d4b58fa2 100644 --- a/src/classes/repositories/class-tainacan-terms.php +++ b/src/classes/repositories/class-tainacan-terms.php @@ -157,7 +157,9 @@ class Terms extends Repository { update_term_meta($term_saved['term_id'], $prop, wp_slash( $term->get_mapped_property($prop) )); } } - + + // TODO: Log header image updates + do_action('tainacan-insert', $term, $diffs, $is_update); do_action('tainacan-insert-Term', $term); diff --git a/src/js/store/modules/category/actions.js b/src/js/store/modules/category/actions.js index 48d99dcbe..d99c391bb 100644 --- a/src/js/store/modules/category/actions.js +++ b/src/js/store/modules/category/actions.js @@ -146,7 +146,7 @@ export const deleteTerm = ({ commit }, { categoryId, termId }) => { export const updateTerm = ({ commit }, { categoryId, termId, name, description, parent }) => { return new Promise(( resolve, reject ) => { - axios.tainacan.patch('/taxonomy/' + categoryId + '/terms/' + termId, { + axios.tainacan.patch(`/taxonomy/${categoryId}/terms/${termId}`, { name: name, description: description, parent: parent @@ -162,6 +162,21 @@ export const updateTerm = ({ commit }, { categoryId, termId, name, description, }); }; +export const updateTermHeaderImage = ({ commit }, { categoryId, termId, headerImageId }) => { + return new Promise((resolve, reject) => { + axios.tainacan.patch(`/taxonomy/${categoryId}/terms/${termId}`, { + header_image_id: headerImageId + '' + }).then( res => { + let term = res.data; + commit('setSingleTerm', term); + resolve( term ); + }).catch( error => { + reject({ error_message: error['response']['data'].error_message, errors: error['response']['data'].errors }); + }); + + }); +}; + export const fetchTerms = ({ commit }, categoryId ) => { return new Promise((resolve, reject) => { axios.tainacan.get(`/taxonomy/${categoryId}/terms/?hideempty=0`) From 6e8cf146c4499a4ed0e3286d32daf8ae7b6f56e9 Mon Sep 17 00:00:00 2001 From: Mateus Machado Luna Date: Thu, 26 Apr 2018 17:05:49 -0300 Subject: [PATCH 16/58] Creates wpMediaFrames to hold custom media frames classes used in attachments loading. Implements ThumbnailController and HeaderImageController and use it on CollectionEditionForm. --- src/admin/class-tainacan-admin.php | 1 + .../edition/collection-edition-form.vue | 171 ++++++------------ src/admin/js/wp-media-frames.js | 154 ++++++++++++++++ 3 files changed, 207 insertions(+), 119 deletions(-) create mode 100644 src/admin/js/wp-media-frames.js diff --git a/src/admin/class-tainacan-admin.php b/src/admin/class-tainacan-admin.php index 5104dd9af..73fbcba0b 100644 --- a/src/admin/class-tainacan-admin.php +++ b/src/admin/class-tainacan-admin.php @@ -103,6 +103,7 @@ class Admin { wp_enqueue_media(); wp_enqueue_script('undescore', includes_url('js') . '/underscore.min.js' ); wp_enqueue_script('jcrop'); + wp_enqueue_script( 'customize-controls' ); } diff --git a/src/admin/components/edition/collection-edition-form.vue b/src/admin/components/edition/collection-edition-form.vue index 0301a46be..cab2820b7 100644 --- a/src/admin/components/edition/collection-edition-form.vue +++ b/src/admin/components/edition/collection-edition-form.vue @@ -23,14 +23,15 @@ class="button is-rounred is-secondary" id="button-edit-thumbnail" :aria-label="$i18n.get('label_button_edit_thumb')" - @click="editImage($event, true)"> + @click.prevent="thumbnailMediaFrame.openFrame($event)">
{{ $i18n.get('label_empty_thumbnail') }} -
@@ -44,7 +45,6 @@
- + @click="headerImageMediaFrame.openFrame($event)">
@@ -305,6 +305,7 @@ diff --git a/src/admin/components/lists/terms-list.vue b/src/admin/components/lists/terms-list.vue index ebc9653cf..57ec35951 100644 --- a/src/admin/components/lists/terms-list.vue +++ b/src/admin/components/lists/terms-list.vue @@ -274,12 +274,12 @@ export default { } term.depth = termDepth; - if (this.orderedTermsList[term.id] == undefined ) { + if (this.orderedTermsList[term.id] === undefined ) { term.opened = false; term.saved = true ; } else { - term.opened = (this.orderedTermsList[term.id].opened == undefined ? false : this.orderedTermsList[term.id].opened); - term.saved = (this.orderedTermsList[term.id].saved == undefined ? true : this.orderedTermsList[term.id].saved); + term.opened = (this.orderedTermsList[term.id].opened === undefined ? false : this.orderedTermsList[term.id].opened); + term.saved = (this.orderedTermsList[term.id].saved === undefined ? true : this.orderedTermsList[term.id].saved); } if (term.taxonomy != null) this.orderedTermsList.push(JSON.parse(JSON.stringify(term))); diff --git a/src/classes/entities/class-tainacan-term.php b/src/classes/entities/class-tainacan-term.php index f0572bf44..e2d12f346 100644 --- a/src/classes/entities/class-tainacan-term.php +++ b/src/classes/entities/class-tainacan-term.php @@ -213,9 +213,9 @@ class Term extends Entity { if (!parent::validate()) return false; -// $parent = $this->get_parent(); -// $name = $this->get_name(); -// $taxonomy = $this->get_taxonomy(); + $parent = $this->get_parent(); + $name = $this->get_name(); + $taxonomy = $this->get_taxonomy(); /** * Code from WordPress Core, taxonomy.php#2070 @@ -225,30 +225,31 @@ class Term extends Entity { * Prevent the creation of terms with duplicate names at the same level of a taxonomy hierarchy, * unless a unique slug has been explicitly provided. */ -// $name_matches = get_terms( $taxonomy, array( -// 'name' => $name, -// 'hide_empty' => false, -// 'parent' => $parent, -// ) ); + $name_matches = get_terms( $taxonomy, array( + 'name' => $name, + 'hide_empty' => false, + 'parent' => $parent, + 'exclude' => $this->get_id() + ) ); /* * The `name` match in `get_terms()` doesn't differentiate accented characters, * so we do a stricter comparison here. */ -// $name_match = null; -// if ( $name_matches ) { -// foreach ( $name_matches as $_match ) { -// if ( is_object($_match) && isset($_match) && strtolower( $name ) === strtolower( $_match->name ) ) { -// $name_match = $_match; -// break; -// } -// } -// } -// -// if ($name_match) { -// $this->add_error( 'repeated', __('You can not have two terms with the same name at the same level', 'tainacan') ); -// return false; -// } + $name_match = null; + if ( $name_matches ) { + foreach ( $name_matches as $_match ) { + if ( is_object($_match) && isset($_match) && strtolower( $name ) === strtolower( $_match->name ) ) { + $name_match = $_match; + break; + } + } + } + + if ($name_match) { + $this->add_error( 'repeated', __('You can not have two terms with the same name at the same level', 'tainacan') ); + return false; + } $this->set_as_valid(); return true; diff --git a/src/js/store/modules/category/actions.js b/src/js/store/modules/category/actions.js index d99c391bb..0e9a78a8f 100644 --- a/src/js/store/modules/category/actions.js +++ b/src/js/store/modules/category/actions.js @@ -112,12 +112,13 @@ export const fetchCategoryName = ({ commit }, categoryId) => { }; // CATEGORY TERMS -export const sendTerm = ({commit}, { categoryId, name, description, parent }) => { +export const sendTerm = ({commit}, { categoryId, name, description, parent, headerImageId }) => { return new Promise(( resolve, reject ) => { axios.tainacan.post('/taxonomy/' + categoryId + '/terms/', { name: name, description: description, - parent: parent + parent: parent, + header_image_id: headerImageId, }) .then( res => { let term = res.data; @@ -144,12 +145,13 @@ export const deleteTerm = ({ commit }, { categoryId, termId }) => { }); }; -export const updateTerm = ({ commit }, { categoryId, termId, name, description, parent }) => { +export const updateTerm = ({ commit }, { categoryId, termId, name, description, parent, headerImageId }) => { return new Promise(( resolve, reject ) => { axios.tainacan.patch(`/taxonomy/${categoryId}/terms/${termId}`, { name: name, description: description, - parent: parent + parent: parent, + header_image_id: headerImageId, }) .then( res => { let term = res.data; @@ -162,21 +164,6 @@ export const updateTerm = ({ commit }, { categoryId, termId, name, description, }); }; -export const updateTermHeaderImage = ({ commit }, { categoryId, termId, headerImageId }) => { - return new Promise((resolve, reject) => { - axios.tainacan.patch(`/taxonomy/${categoryId}/terms/${termId}`, { - header_image_id: headerImageId + '' - }).then( res => { - let term = res.data; - commit('setSingleTerm', term); - resolve( term ); - }).catch( error => { - reject({ error_message: error['response']['data'].error_message, errors: error['response']['data'].errors }); - }); - - }); -}; - export const fetchTerms = ({ commit }, categoryId ) => { return new Promise((resolve, reject) => { axios.tainacan.get(`/taxonomy/${categoryId}/terms/?hideempty=0`) From eef44e0514acc643d2b911aa881df0404c24e75e Mon Sep 17 00:00:00 2001 From: Leo Germani Date: Fri, 27 Apr 2018 16:26:07 -0300 Subject: [PATCH 23/58] fix admin js dependencies --- src/admin/class-tainacan-admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/admin/class-tainacan-admin.php b/src/admin/class-tainacan-admin.php index 15c79f752..e06843701 100644 --- a/src/admin/class-tainacan-admin.php +++ b/src/admin/class-tainacan-admin.php @@ -95,7 +95,7 @@ class Admin { function add_admin_js() { global $TAINACAN_BASE_URL; - wp_enqueue_script( 'tainacan-user-admin', $TAINACAN_BASE_URL . '/assets/user_admin-components.js', [], null, true ); + wp_enqueue_script( 'tainacan-user-admin', $TAINACAN_BASE_URL . '/assets/user_admin-components.js', ['underscore', 'media-editor', 'media-views', 'customize-controls'], null, true ); $settings = $this->get_admin_js_localization_params(); From 08b25cf383cc9570749fc817f0e4a3318e1ae82c Mon Sep 17 00:00:00 2001 From: Leo Germani Date: Fri, 27 Apr 2018 17:13:32 -0300 Subject: [PATCH 24/58] fix 404 for term archives --- src/theme-helper/class-tainacan-theme-helper.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/theme-helper/class-tainacan-theme-helper.php b/src/theme-helper/class-tainacan-theme-helper.php index 31662bd00..d5ab45cf4 100644 --- a/src/theme-helper/class-tainacan-theme-helper.php +++ b/src/theme-helper/class-tainacan-theme-helper.php @@ -131,8 +131,9 @@ class Theme_Helper { $term = get_queried_object(); - if ($this->is_term_a_tainacan_term($term)) { - // TODO: Why post_type = any does not work? + if ($term instanceof \WP_Term && $this->is_term_a_tainacan_term($term)) { + // TODO: Why post_type = any does not work? + // ANSWER because post types are registered with exclude_from_search. Should we change it? $wp_query->set( 'post_type', \Tainacan\Repositories\Repository::get_collections_db_identifiers() ); } From 2e06472c9557dd6b86142935699e27735cb6483b Mon Sep 17 00:00:00 2001 From: Mateus Machado Luna Date: Fri, 27 Apr 2018 17:25:20 -0300 Subject: [PATCH 25/58] Adds Document and DocumentType selection to ItemEditionForm. Still needs better ways to visualize selected one. Adds 'empty' state to document_type valid values, and sets it as default. Being styling Item Edition Page. --- .../components/edition/item-edition-form.vue | 286 +++++++++++++++++- src/admin/js/wp-media-frames.js | 56 +++- src/admin/tainacan-admin-i18n.php | 9 + .../repositories/class-tainacan-items.php | 4 +- src/js/store/modules/item/actions.js | 17 +- 5 files changed, 353 insertions(+), 19 deletions(-) diff --git a/src/admin/components/edition/item-edition-form.vue b/src/admin/components/edition/item-edition-form.vue index 861396fb5..afd9416df 100644 --- a/src/admin/components/edition/item-edition-form.vue +++ b/src/admin/components/edition/item-edition-form.vue @@ -10,12 +10,149 @@ label-width="120px">
-
+
+ + +
+
+
+ File ID: {{ form.document }} + + +
+
+

{{ form.document }}

+ + +
+
+

{{ form.document }}

+ + +
+
+
    +
  • + +

    {{ $i18n.get('label_file') }}

    +
  • +
  • + +

    {{ $i18n.get('label_text') }}

    +
  • +
  • + +

    {{ $i18n.get('label_url') }}

    +
  • +
+
+ + + + + + + + + + - + + - +
- + +
-
- -
+
+ -
+
+
+
{ + this.form.document_type = 'attachment'; + this.form.document = file.id + ''; + this.updateItemDocument({ item_id: this.itemId, document: this.form.document, document_type: this.form.document_type }); + } + } + ); + this.thumbnailMediaFrame = new wpMediaFrames.thumbnailControl( 'my-thumbnail-media-frame', { button_labels: { @@ -322,6 +522,12 @@ export default { // Fill this.form data with current data. this.form.status = this.item.status; + this.form.document = this.item.document; + this.form.document_type = this.item.document_type; + if (this.form.document_type != undefined && this.form.document_type == 'url') + this.urlLink = this.form.document; + if (this.form.document_type != undefined && this.form.document_type == 'text') + this.textContent = this.form.document; this.loadMetadata(); }); @@ -338,6 +544,56 @@ export default { From e778fc55320cb6c99776d7a43ecc1671a495ff96 Mon Sep 17 00:00:00 2001 From: Leo Germani Date: Mon, 30 Apr 2018 10:26:46 -0300 Subject: [PATCH 28/58] Avoid duplicate users in collections moderators list --- .../entities/class-tainacan-collection.php | 6 +++- tests/test-collections.php | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/classes/entities/class-tainacan-collection.php b/src/classes/entities/class-tainacan-collection.php index 5c3cac850..a597fbfae 100644 --- a/src/classes/entities/class-tainacan-collection.php +++ b/src/classes/entities/class-tainacan-collection.php @@ -601,7 +601,11 @@ class Collection extends Entity { * * @return void */ - function set_moderators_ids( $value ) { + function set_moderators_ids( array $value ) { + + // make sure you never have duplicated moderators + $value = array_unique($value); + $this->set_mapped_property( 'moderators_ids', $value ); } diff --git a/tests/test-collections.php b/tests/test-collections.php index 7d71d8b1b..2dba7a781 100644 --- a/tests/test-collections.php +++ b/tests/test-collections.php @@ -117,6 +117,39 @@ class Collections extends TAINACAN_UnitTestCase { // now he can edit $this->assertFalse(user_can($new_user, $collection_test_moderator->cap->edit_post, $collection_test_moderator->WP_Post->ID)); + } + + function test_avoid_duplicated_moderator () { + $collection_test = $this->tainacan_entity_factory->create_entity( + 'collection', + array( + 'name' => 'testeCaps', + 'description' => 'adasdasdsa', + 'default_order' => 'DESC' + ), + true + ); + $new_user = $this->factory()->user->create(array( 'role' => 'subscriber' )); + wp_set_current_user($new_user); + $user_id = get_current_user_id(); + $this->assertEquals($new_user, $user_id); + + $autor1 = $this->factory()->user->create(array( 'role' => 'author' )); + wp_set_current_user($autor1); + $autor1_id = get_current_user_id(); + + $moderators_ids = [ + $user_id, + $autor1_id, + $user_id, + $autor1_id, + ]; + + $collection_test->set_moderators_ids($moderators_ids); + + $this->assertEquals(2, sizeof( $collection_test->get_moderators_ids() )); + + } function debug_meta($user = false) From fc1daab3dd103557eb041258bba72a956cbcca2d Mon Sep 17 00:00:00 2001 From: Leo Germani Date: Mon, 30 Apr 2018 10:36:31 -0300 Subject: [PATCH 29/58] Force developers to use the correct method to set props to entities --- .../entities/class-tainacan-entity.php | 22 ++++++++++++++++++- tests/test-collections.php | 2 +- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/classes/entities/class-tainacan-entity.php b/src/classes/entities/class-tainacan-entity.php index a9c97350b..5ae28337e 100644 --- a/src/classes/entities/class-tainacan-entity.php +++ b/src/classes/entities/class-tainacan-entity.php @@ -150,13 +150,33 @@ class Entity { /** * set the value of a mapped property + * + * This is a protected method. If you want to set an entity prop + * using the prop name dynamically, use the set() method + * * @param string $prop id of the property * @param mixed $value the value to be setted */ - public function set_mapped_property($prop, $value) { + protected function set_mapped_property($prop, $value) { $this->set_validated(false); $this->$prop = $value; } + + /** + * set the value property + * + * + * @param string $prop id of the property + * @param mixed $value the value to be setted + * @return null|mixed Null on failure, the value that was set on success + */ + public function set($prop, $value) { + $method = 'set_' . $prop; + if ( method_exists($this, $method) ) { + return $this->$method($value); + } + return null; + } /** * set the status of the entity diff --git a/tests/test-collections.php b/tests/test-collections.php index 2dba7a781..0e3118ac3 100644 --- a/tests/test-collections.php +++ b/tests/test-collections.php @@ -145,7 +145,7 @@ class Collections extends TAINACAN_UnitTestCase { $autor1_id, ]; - $collection_test->set_moderators_ids($moderators_ids); + $collection_test->set('moderators_ids', $moderators_ids); $this->assertEquals(2, sizeof( $collection_test->get_moderators_ids() )); From 9170a118257cb59a9d0031ff93dd48364489e227 Mon Sep 17 00:00:00 2001 From: mateuswetah Date: Mon, 30 Apr 2018 17:51:04 -0300 Subject: [PATCH 30/58] Adds new style to Tainacan Header and Subheader. Removes SecondaryMenu and creates TitleRow to hold title and breadrumbs in repository-level pages. Adds contraction functionality to PrimaryMenu. Adds event listing to Collection level (needs fixes). Several adjustments on css values to match recent design. New Implementation of ItemListing still needs improvements for resposiviness! --- src/admin/admin.vue | 44 +++- .../components/edition/item-edition-form.vue | 5 +- .../components/navigation/primary-menu.vue | 130 ++--------- .../components/navigation/secondary-menu.vue | 211 ------------------ .../components/navigation/tainacan-header.vue | 209 +++++++---------- .../navigation/tainacan-subheader.vue | 80 ++++--- src/admin/components/navigation/title-row.vue | 160 +++++++++++++ .../components/search/search-control.vue | 28 ++- src/admin/js/router.js | 10 +- src/admin/js/utilities.js | 3 + src/admin/pages/lists/categories-page.vue | 7 +- src/admin/pages/lists/collections-page.vue | 7 +- src/admin/pages/lists/events-page.vue | 8 +- src/admin/pages/lists/fields-page.vue | 5 +- src/admin/pages/lists/filters-page.vue | 5 +- src/admin/pages/lists/items-page.vue | 137 ++++++------ src/admin/scss/_variables.scss | 20 +- src/admin/scss/tainacan-admin.scss | 10 +- src/admin/tainacan-admin-i18n.php | 2 + 19 files changed, 490 insertions(+), 591 deletions(-) delete mode 100644 src/admin/components/navigation/secondary-menu.vue create mode 100644 src/admin/components/navigation/title-row.vue diff --git a/src/admin/admin.vue b/src/admin/admin.vue index 97a8b22ff..9b18023d3 100644 --- a/src/admin/admin.vue +++ b/src/admin/admin.vue @@ -2,8 +2,15 @@
- - + + +
@@ -18,6 +25,8 @@ name: "AdminPage", data(){ return { + isMenuCompressed: false, + activeRoute: '/collections' } }, components: { @@ -25,7 +34,15 @@ TainacanHeader }, created() { - this.$userPrefs.init() + this.$userPrefs.init(); + this.isMenuCompressed = (this.$route.params.collectionId != undefined); + this.activeRoute = this.$route.name; + }, + watch: { + '$route' (to) { + this.isMenuCompressed = (to.params.collectionId != undefined); + this.activeRoute = to.name; + } } } @@ -63,7 +80,7 @@ margin: $header-height auto 0 auto; position: relative; overflow-y: auto; - height: calc(100% - 58px); + height: calc(100% - 52px); @media screen and (max-width: 769px) { & { @@ -77,5 +94,24 @@ } } + #menu-compress-button { + position: absolute; + z-index: 99999; + top: 70px; + max-width: 23px; + height: 21px; + width: 23px; + border: none; + background-color: $primary-light; + color: $tertiary; + padding: 0px; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + + .icon { + margin-top: -1px; + } + } + diff --git a/src/admin/components/edition/item-edition-form.vue b/src/admin/components/edition/item-edition-form.vue index 70cc97f5e..1a748465b 100644 --- a/src/admin/components/edition/item-edition-form.vue +++ b/src/admin/components/edition/item-edition-form.vue @@ -1,15 +1,14 @@