From c35bfd5649da9c2de81e154b242ab91f999cb385 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 26 Jul 2017 19:16:11 -0300 Subject: [PATCH 01/75] First versiof of the sidenav for the new design --- app/assets/stylesheets/_definitions.scss | 78 ++++++++------- app/assets/stylesheets/_mixins.scss | 64 +++++++------ .../stylesheets/app/application/base.scss | 95 ++++++++++++++++++- .../app/application/font-awesome.scss | 2 +- app/assets/stylesheets/application.css | 2 +- app/helpers/logo_images_helper.rb | 28 +++--- app/helpers/my_helper.rb | 8 +- app/models/event.rb | 4 + app/models/space.rb | 4 + app/models/user.rb | 4 + app/views/join_requests/show.html.haml | 2 +- ...ion_navbar.html.haml => _navbar.html.haml} | 48 +++++----- app/views/layouts/_sidenav.html.haml | 16 ++++ app/views/layouts/application.html.haml | 6 +- app/views/my/_navbar_menu.html.haml | 11 +++ app/views/my/_sidebar.html.haml | 17 ---- app/views/my/activity.html.haml | 6 +- app/views/my/home.html.haml | 7 +- app/views/my/meetings.html.haml | 6 +- .../participants/_guest_participant.html.haml | 2 +- app/views/posts/_post.html.haml | 2 +- app/views/posts/_unified_post.html.haml | 2 +- app/views/spaces/_latest_posts.html.haml | 2 +- config/locales/bg/mconf.yml | 4 +- config/locales/de/mconf.yml | 4 +- config/locales/en/mconf.yml | 4 +- config/locales/es-419/mconf.yml | 4 +- config/locales/pt-br/mconf.yml | 4 +- config/locales/ru/mconf.yml | 4 +- spec/helpers/logo_images_helper_spec.rb | 10 +- 30 files changed, 292 insertions(+), 158 deletions(-) rename app/views/layouts/{_application_navbar.html.haml => _navbar.html.haml} (53%) create mode 100644 app/views/layouts/_sidenav.html.haml create mode 100644 app/views/my/_navbar_menu.html.haml delete mode 100644 app/views/my/_sidebar.html.haml diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index a02a7dda7..09c92ac3f 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -21,8 +21,31 @@ $m-link-color: #2274A5; $m-link-color-hover: lighten($m-link-color, 15); $m-link-color-active: darken($m-link-color-hover, 20); +// standard colors +$m-green-mconf: #004956; // #27535C +$m-green: $olive; +$m-blue: #337ab7; +$m-red: #ff5b5b; +$m-orange: #e98300; //#C47322; +$m-yellow: #f3a712; //#BB9403; +$m-cyan: #00ffff; +$m-gray: #ccc; +$m-dark-gray: #666; +$m-light-gray: #f6f6f6; +$m-very-light-gray: #fcfcfc; +$m-bright-blue: #49afcd; +$m-transparent: rgba(255,255,255,0); + +// site colors +$m-site-bg-color: #f2f2f2; +$m-color-primary: $m-green-mconf; +$m-color-primary-light: lighten($m-green-mconf, 12); +$m-color-secondary: #337ab7; //#4589c4; //$m-bright-blue; +$m-focus-border-color: $m-color-secondary; +$m-logo-initials-bg: red blue yellow green orange purple magenta $m-color-primary $m-color-secondary; + // fonts -$m-font-normal: 0.8rem; /* base size for all fonts */ +$m-font-normal: 14px; //0.85rem; /* 14px, base size for all fonts */ $m-font-mini: $m-font-normal * 0.8; $m-font-small: $m-font-normal * 0.9; $m-font-medium: $m-font-normal * 1.2; @@ -36,11 +59,11 @@ $m-font-h3-multiplier: 1.4; $m-font-h4-multiplier: 1.2; $m-font-h5-multiplier: 1; $m-font-h6-multiplier: 1; -$m-font-color: #333; -$m-font-strong: #000; -$m-font-light: #666; +$m-font-color: #444; //desaturate($m-color-primary, 25%); +$m-font-strong: darken($m-font-color, 10%); //#000; +$m-font-light: lighten($m-font-color, 10%); //#666; $m-font-color-gray: #888; -$m-font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; //Arial, Helvetica, sans-serif; +$m-font-family: "Roboto","Helvetica Neue",Helvetica,Arial,sans-serif; //Arial, Helvetica, sans-serif; $m-font-family-label: "Roboto","Helvetica Neue",Helvetica,Arial,Geneva,sans-serif; $m-font-family-mono: Consolas, Monaco, "Lucida Console", monospace; $m-font-family-h: $m-font-family; @@ -51,33 +74,12 @@ $m-base-line-height: 1.5; $m-link-decoration: none; $m-link-decoration-hover: underline; -// standard colors -$m-green: $olive; -$m-blue: #337ab7; -$m-red: #ff5b5b; -$m-orange: #e98300; //#C47322; -$m-yellow: #f3a712; //#BB9403; -$m-cyan: #00ffff; -$m-green-logo: #004956; // #27535C -$m-gray: #ccc; -$m-dark-gray: #666; -$m-light-gray: #f6f6f6; -$m-very-light-gray: #fcfcfc; -$m-bright-blue: #49afcd; -$m-transparent: rgba(255,255,255,0); - -// site colors -$m-site-bg-color: #fff; -$m-color-primary: $m-green-logo; -$m-color-primary-light: lighten($m-green-logo, 12); -$m-color-secondary: #337ab7; //#4589c4; //$m-bright-blue; -$m-focus-border-color: $m-color-secondary; - // borders $m-border-color-normal: #ddd;// #e8e8e8;/* #ddd; */ $m-border-color-medium: #e6e6e6; $m-border-color-light: #eee; $m-border-color-dark: #ccc; +$m-border-color-highlight: $m-bright-blue; $m-border-radius-base: 2px; $m-border-radius-small: 1px; $m-border-radius-large: 3px; @@ -113,7 +115,7 @@ $m-contents-width: 980px; // TODO: deprecated now that the site is responsive // sidebar $m-sidebar-width-lg: 350px; -$m-sidebar-width-md: 3000px; +$m-sidebar-width-md: 300px; $m-sidebar-width-sm: 300px; $m-sidebar-padding: 25px; $m-sidebar-border: $m-border-color-normal; @@ -130,28 +132,35 @@ $m-sidebar-menu-active-border: $m-sidebar-border; //#d9e2ec; $m-sidebar-menu-active-color: $m-sidebar-menu-color-hover; $m-sidebar-menu-active-color-hover: $m-sidebar-menu-active-color; +// sidenav +$m-sidenav-width-md: 300px; +$m-sidenav-padding: 20px; +$m-sidenav-border: #fff; +$m-sidenav-bg-color: #fff; +$m-sidenav-box-shadow: 5px 0 9px 0px rgba(0, 0, 0, 0.05); + // navbar $m-navbar-menu-open-bg: $m-site-bg-color; $m-navbar-menu-open-link: $m-link-color; $m-navbar-menu-open-link-hover: $m-link-color-hover; $m-navbar-bg-color-light: $m-color-primary; -$m-navbar-bg-color-dark: $m-navbar-bg-color-light; //darken($m-green-logo, 3); +$m-navbar-bg-color-dark: $m-navbar-bg-color-light; //darken($m-green-mconf, 3); $m-navbar-border-width: 0px; $m-navbar-border-color: darken($m-navbar-bg-color-dark, 5); $m-navbar-internal-border-color: lighten($m-navbar-bg-color-dark, 3); $m-navbar-font: $m-font-medium; -$m-navbar-font-color: #ddd;//$m-font-color; -$m-navbar-font-color-hover: white; //$m-link-color-hover; +$m-navbar-font-color: #fff;//$m-font-color; +$m-navbar-font-color-hover: #fff; //$m-link-color-hover; $m-navbar-font-highlight: lighten($m-navbar-bg-color-dark, 8); $m-navbar-link-color: lighten($m-link-color, 15); $m-navbar-link-color-hover: lighten($m-navbar-link-color, 8); $m-navbar-link-color-active: $m-navbar-link-color; -$m-navbar-height: 56px; +$m-navbar-height: 84px; // for a light/white navbar: /* $m-navbar-bg-color-dark: white; */ /* $m-navbar-bg-color-light: white; */ -/* $m-navbar-border-color: $m-green-logo; */ +/* $m-navbar-border-color: $m-green-mconf; */ /* $m-navbar-border-width: 1px; */ /* $m-navbar-font-color: $m-font-color; */ /* $m-navbar-font-color-hover: $m-link-color-hover; */ @@ -176,7 +185,7 @@ $m-footer-bg-color: #fff; $m-footer-border-color: $m-sidebar-border; // dark green bg footer: -/* $m-footer-bg-color: darken($m-green-logo, 3);// $m-navbar-bg-color-dark; */ +/* $m-footer-bg-color: darken($m-green-mconf, 3);// $m-navbar-bg-color-dark; */ /* $m-footer-font-color: #bbb; */ /* $m-footer-border-color: darken($m-footer-bg-color, 10); */ /* $m-footer-link-color: #bbb; */ @@ -194,6 +203,7 @@ $m-footer-border-color: $m-sidebar-border; // z-indexes // TODO: not being used yet $m-z-index-navbar: 100; +$m-z-index-sidenav: 101; $m-z-index-dialog: 200; $m-z-index-tooltip: 999999; diff --git a/app/assets/stylesheets/_mixins.scss b/app/assets/stylesheets/_mixins.scss index bdf873167..ee5e65f84 100644 --- a/app/assets/stylesheets/_mixins.scss +++ b/app/assets/stylesheets/_mixins.scss @@ -46,7 +46,7 @@ // The image will still be replaced by the text, but it shouldn't break the layout anymore. // In some cases the element that includes this might also have to specify its own width and height. @mixin broken-img-parent($float:left) { - overflow: hidden; + //overflow: hidden; img:-moz-broken { float: $float; @@ -94,41 +94,41 @@ // general logo style (user avatars, space logos) @mixin logo-container { + text-decoration: none; + @include broken-img-parent; + img { margin: 2px 0; - padding: 1px; - border: 1px solid $m-border-color-normal; - @include border-radius($m-border-radius-small); + //padding: 1px; + //border: 1px solid $m-border-color-normal; + @include border-radius($m-border-radius-base); + width: 100%; + height: auto; + } - &.logo-space, &.logo-user { - width: 100%; - height: auto; - } + .logo-initials { + color: #fff; + font-weight: 600; + font-size: $m-font-medium; + text-align: center; + vertical-align: middle; + padding: (40px - $m-font-medium)/2 0; + line-height: 1; + } - // default dimensions for logos inside threads - &.logo-space.fixed-width, &.logo-space-activity { - width: 52px; - height: 39px; - } - &.logo-user.fixed-width, &.logo-user-activity { - width: 39px; - height: 39px; - } - /* &.logo-user-big { */ - /* width: 64px; */ - /* height: 64px; */ - /* } */ - &.logo-removed { - width: 39px; - height: 39px; + @for $i from 1 through 9 { + .logo-initials-#{$i} { + background-color: nth($m-logo-initials-bg, $i); } } - a img { - &:hover { border: 1px solid $m-focus-border-color; } + a, a:hover { + text-decoration: none; } - @include broken-img-parent; + /* a img { */ + /* &:hover { border: 1px solid $m-focus-border-color; } */ + /* } */ } @mixin mconf-clearfix { @@ -252,18 +252,24 @@ margin-right: 5px; } } + + &.active a { + border-bottom: 4px solid $m-border-color-highlight; + font-weight: bold; + } } } // very specific selector se we don't mess with dropdowns and others > ul > li > a, > a { - padding: 17px 16px 16px 16px; + padding: 30px 20px 25px 20px; display: block; @include link-colors($m-navbar-font-color, $m-navbar-font-color, $m-navbar-font-color); @include transition(background-color 0.2s ease-in); &:hover { - background: $m-navbar-font-highlight; + border-bottom: 4px solid $m-border-color-highlight; + //font-weight: bold; } } diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index ba11f2989..c654ac112 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -250,9 +250,102 @@ form { // Here we define the basic styles used in all layouts // +#sidenav { + background: $m-sidenav-bg-color; + border-right: 1px solid $m-sidenav-border; + padding: $m-sidenav-padding; + box-shadow: $m-sidenav-box-shadow; + + width: $m-sidenav-width-md; + position: fixed; + left: 0; + right: auto; + top: 0; + bottom: 0; + z-index: $m-z-index-sidenav; + + > .logo { + margin: 0 auto; + display: block; + background: image-url('logos/mconf-color-transp.png') no-repeat left top; + background-size: 87px 45px; + width: 87px; + height: 45px; + + // - logo height - sidenav top padding + margin-top: ($m-navbar-height - 45px)/2 - 20px; + margin-bottom: ($m-navbar-height - 45px)/2; + @include mconf-clearfix; + } + + .search { + padding-top: 20px; + padding-bottom: 20px; + + input { + width: 100%; + text-align: center; + + // TODO: move to common input definitions + border-radius: 4px; + border: none; + background-color: #f4f0f3; //#c9b8c3; + font-family: Roboto; + font-size: 13px; + font-weight: 500; + line-height: 1.15; + //color: desaturate($m-color-primary, 10%); //#784d68; + } + } + + .subtitle { + font-size: $m-font-small; //13px; //$m-font-normal; + line-height: 1; + padding: 8px 0 16px 0; + color: #784d68; + opacity: 0.7; + font-weight: 500; + text-transform: uppercase; + } + + .space-item { + @include mconf-clearfix; + margin: 16px 0; + @include text-truncate; + white-space: nowrap; + + > .logo { + /* border-radius: $input-border-radius-large; */ + @include logo-container; + display: inline-block; + margin-right: 10px; + + /* TODO: move to a default place */ + img, .logo-initials { + width: 53px; + height: 40px; + } + } + + > .name { + display: inline-block; + color: #2c0b23; + font-size: $m-font-medium; + opacity: 0.4; + margin: 8px 0; + + &:hover { + text-decoration: none; + opacity: 0.8; + } + } + } +} + #site { @include container-fixed; // without params this is actually a .container-fluid padding: 0; + padding-left: $m-sidenav-width-md; } #navbar { @@ -273,7 +366,7 @@ form { a:hover { text-decoration: none; } } -#navbar-left { +#navbar-menu { @include navbar-lists; position: absolute; left: 16px; diff --git a/app/assets/stylesheets/app/application/font-awesome.scss b/app/assets/stylesheets/app/application/font-awesome.scss index a3589d7df..75205e6ea 100644 --- a/app/assets/stylesheets/app/application/font-awesome.scss +++ b/app/assets/stylesheets/app/application/font-awesome.scss @@ -6,7 +6,7 @@ @import "compass/typography/links"; @import "definitions"; -$default-icon-color: #888; /* lighten($m-green-logo, 10); */ +$default-icon-color: #888; /* lighten($m-green-mconf, 10); */ $light-icon-color: #aaa; .icon-awesome { diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 630d6b956..f2738125d 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -13,7 +13,7 @@ * Note: the order matters! *= require ./app/application/typography *= require ./app/application/base - *= require ./app/application/sidebar-size + * require ./app/application/sidebar-size * require ./app/application/set-max-width # disabled for now *= require ./app/application/font-awesome *= require ./app/application/simple_form diff --git a/app/helpers/logo_images_helper.rb b/app/helpers/logo_images_helper.rb index 8f9275414..df1316e4a 100644 --- a/app/helpers/logo_images_helper.rb +++ b/app/helpers/logo_images_helper.rb @@ -4,6 +4,8 @@ # This file is licensed under the Affero General Public License version # 3 or later. See the LICENSE file. +require 'digest/sha1' + def image_url(path) "#{root_url}/#{image_path(path)}" end @@ -42,7 +44,7 @@ def logo_image(resource, options={}) image_tag(resource.logo_image_url(version_name), options) else - empty_logo_image(model_type, options) + logo_initials(resource, options) end # Try a gravatar image if we have a confirmed user @@ -55,25 +57,21 @@ def logo_image(resource, options={}) image_tag(GravatarImageTag.gravatar_url(resource.email, grav_options), options) else - empty_logo_image(model_type, options) + logo_initials(resource, options) end end - def empty_logo_url(resource, options={}) - case resource - when :user - "default_logos/" + options[:size] + "/user.png" - when :space - "default_logos/" + options[:size] + "/space.png" - when :event - "default_logos/" + options[:size] + "/event.png" - end + def logo_initials_class(seed) + i = Digest::SHA1.hexdigest(seed).to_i(16) + i = (i % 9) + 1 + #i = (seed/1000) % 10 + "logo-initials-#{i}" end - def empty_logo_image(resource, options={}) - options[:size] = validate_logo_size(options[:size]) - cls = "#{options[:class]} empty-logo".strip - image_tag(empty_logo_url(resource, options), class: cls, title: options[:title]) + def logo_initials(resource, options={}) + logo_initials_cls = logo_initials_class(resource.name) + cls = "#{options[:class]} logo-initials #{logo_initials_cls}".strip + content_tag :div, resource.initials[0..1].upcase, class: cls, title: options[:title] end def link_logo_image(resource, options={}) diff --git a/app/helpers/my_helper.rb b/app/helpers/my_helper.rb index 0db98b22d..58b3be6d0 100644 --- a/app/helpers/my_helper.rb +++ b/app/helpers/my_helper.rb @@ -20,14 +20,14 @@ def home_menu_checkbox(name) end # Stores the current tab in the user's home menu - def home_sidebar_menu_at(tab) - @home_sidebar_menu_tab = tab + def home_navbar_menu_at(tab) + @home_navbar_menu_tab = tab end # Selects the tab if it is the current tab in the user's home menu - def home_sidebar_menu_select_if(tab, options={}) + def home_navbar_menu_select_if(tab, options={}) old_class = options[:class] || '' - @home_sidebar_menu_tab == tab ? + @home_navbar_menu_tab == tab ? options.update({ :class => "#{old_class} active" }) : options end diff --git a/app/models/event.rb b/app/models/event.rb index 405e54f3c..a6680b6d7 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -225,6 +225,10 @@ def is_registered?(user_or_email) end end + def initials + self.name.split(' ').collect{ |w| w[0] }.join('') + end + private def to_ics_internal diff --git a/app/models/space.rb b/app/models/space.rb index 6a104c709..2dec85af6 100644 --- a/app/models/space.rb +++ b/app/models/space.rb @@ -336,6 +336,10 @@ def small_logo_image? logo_image.height < 100 || logo_image.width < 100 end + def initials + self.name.split(' ').collect{ |w| w[0] }.join('') + end + private # Creates the webconf room after the space is created diff --git a/app/models/user.rb b/app/models/user.rb index 1bce1a391..00b864940 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -369,6 +369,10 @@ def enabled_parse(value) enabled_rename(value) end + def initials + self.name.split(' ').collect{ |w| w[0] }.join('') + end + protected def before_disable_and_destroy diff --git a/app/views/join_requests/show.html.haml b/app/views/join_requests/show.html.haml index eb34980c4..ca918f928 100644 --- a/app/views/join_requests/show.html.haml +++ b/app/views/join_requests/show.html.haml @@ -9,7 +9,7 @@ - spaces_menu_at :users = render 'spaces/sidebar', space: @space, full: false - else - - home_sidebar_menu_at(:spaces) + - home_navbar_menu_at(:spaces) = render "my/sidebar", user_spaces: @user_spaces #join-requests-show diff --git a/app/views/layouts/_application_navbar.html.haml b/app/views/layouts/_navbar.html.haml similarity index 53% rename from app/views/layouts/_application_navbar.html.haml rename to app/views/layouts/_navbar.html.haml index 93422295a..1bffaadc6 100644 --- a/app/views/layouts/_application_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -1,27 +1,31 @@ -- url = user_signed_in? ? main_app.my_home_path : main_app.root_path -%a#navbar-logo{:href => url} +-# - url = user_signed_in? ? main_app.my_home_path : main_app.root_path +-# %a#navbar-logo{:href => url} -#navbar-left - %ul - - if user_signed_in? - %li - = link_to main_app.my_home_path do - = t('home.my') - - if mod_enabled?("spaces") - %li= link_to t('space.all'), main_app.spaces_path - - if mod_enabled?("events") - %li= link_to t('.events'), events_path - - if can?(:manage, @site) - %li - = link_to main_app.manage_path do - = t('.manage') +- if content_for?(:navbar_menu) + #navbar-menu + = yield :navbar_menu - - else - -# for anonymous users - - if mod_enabled?("spaces") - %li= link_to t('space.all'), main_app.spaces_path - - if mod_enabled?("events") - %li= link_to t('.events'), events_path +-# #navbar-left +-# %ul +-# - if user_signed_in? +-# %li +-# = link_to main_app.my_home_path do +-# = t('home.my') +-# - if mod_enabled?("spaces") +-# %li= link_to t('space.all'), main_app.spaces_path +-# - if mod_enabled?("events") +-# %li= link_to t('.events'), events_path +-# - if can?(:manage, @site) +-# %li +-# = link_to main_app.manage_path do +-# = t('.manage') + +-# - else +-# -# for anonymous users +-# - if mod_enabled?("spaces") +-# %li= link_to t('space.all'), main_app.spaces_path +-# - if mod_enabled?("events") +-# %li= link_to t('.events'), events_path #navbar-right %ul#navbar-right-links diff --git a/app/views/layouts/_sidenav.html.haml b/app/views/layouts/_sidenav.html.haml new file mode 100644 index 000000000..d20d5ad31 --- /dev/null +++ b/app/views/layouts/_sidenav.html.haml @@ -0,0 +1,16 @@ +-# TODO: set on controller +- spaces = user_signed_in? ? current_user.spaces : [] + +- url = user_signed_in? ? main_app.my_home_path : main_app.root_path +.logo= link_to "", url + +.search + = text_field_tag "search", nil, placeholder: "Search...", class: "form-control" + +.subtitle= "My room" + +.subtitle= "My spaces" +- spaces.each do |space| + .space-item + = link_logo_image(space, :size => '84x64', :"data-placement" => 'bottom', :class => "logo logo-space") + = link_to space.name, space_path(space), class: 'name' diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index d697bc1a8..f72bc619a 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -16,10 +16,12 @@ = yield :headers %body{:class => "#{controller_name_for_view} #{params[:action]} #{layout_name} #{theme_class}"} - #site + #sidenav + = render :partial => "layouts/sidenav" + #site #navbar - = render :partial => 'layouts/application_navbar' + = render :partial => 'layouts/navbar' - if content_for?(:content_notification) #content-notification diff --git a/app/views/my/_navbar_menu.html.haml b/app/views/my/_navbar_menu.html.haml new file mode 100644 index 000000000..f024bae45 --- /dev/null +++ b/app/views/my/_navbar_menu.html.haml @@ -0,0 +1,11 @@ +%ul + %li{ home_navbar_menu_select_if(:home) } + = link_to main_app.my_home_path do + = t(".menu.home") + - if mod_enabled?("activities") + %li{ home_navbar_menu_select_if(:activity) } + = link_to my_activity_path do + = t(".menu.activity") + %li{ home_navbar_menu_select_if(:meetings) } + = link_to my_meetings_path do + = t(".menu.meetings") diff --git a/app/views/my/_sidebar.html.haml b/app/views/my/_sidebar.html.haml deleted file mode 100644 index b3f6dea99..000000000 --- a/app/views/my/_sidebar.html.haml +++ /dev/null @@ -1,17 +0,0 @@ -// Locals: -// user_spaces (array of Space): spaces the user is a member of - -= render 'shared/user_card', user: current_user - -#sidebar-menu - %ul - %li{ home_sidebar_menu_select_if(:home) } - = link_to main_app.my_home_path do - = t(".menu.home") - - if mod_enabled?("activities") - %li{ home_sidebar_menu_select_if(:activity) } - = link_to my_activity_path do - = t(".menu.activity") - %li{ home_sidebar_menu_select_if(:meetings) } - = link_to my_meetings_path do - = t(".menu.meetings") diff --git a/app/views/my/activity.html.haml b/app/views/my/activity.html.haml index 2b43ea355..4fa77871c 100644 --- a/app/views/my/activity.html.haml +++ b/app/views/my/activity.html.haml @@ -1,7 +1,7 @@ - page_title t('.title') -- home_sidebar_menu_at(:activity) +- home_navbar_menu_at(:activity) -= content_for :sidebar do - = render "my/sidebar", user_spaces: @user_spaces += content_for :navbar_menu do + = render "my/navbar_menu", user_spaces: @user_spaces = render "users/recent_activity", :content => @all_contents, :paginate => true diff --git a/app/views/my/home.html.haml b/app/views/my/home.html.haml index 403f269a4..e2feef147 100644 --- a/app/views/my/home.html.haml +++ b/app/views/my/home.html.haml @@ -1,9 +1,8 @@ - page_title t('.title') -- home_sidebar_menu_at(:home) - -= content_for :sidebar do - = render "my/sidebar", user_spaces: @user_spaces +- home_navbar_menu_at(:home) # TODO: home_navbar_menu += content_for :navbar_menu do + = render "my/navbar_menu", user_spaces: @user_spaces = render "shared/webconference_join", room: @room diff --git a/app/views/my/meetings.html.haml b/app/views/my/meetings.html.haml index 01fda9038..52ed60e44 100644 --- a/app/views/my/meetings.html.haml +++ b/app/views/my/meetings.html.haml @@ -1,8 +1,8 @@ - page_title t('.title') -- home_sidebar_menu_at(:meetings) +- home_navbar_menu_at(:meetings) -= content_for :sidebar do - = render "my/sidebar", user_spaces: @user_spaces += content_for :navbar_menu do + = render "my/navbar_menu", user_spaces: @user_spaces #my-meetings %h3= t('.subtitle') diff --git a/app/views/participants/_guest_participant.html.haml b/app/views/participants/_guest_participant.html.haml index 0dff5a792..d7fefaa1b 100644 --- a/app/views/participants/_guest_participant.html.haml +++ b/app/views/participants/_guest_participant.html.haml @@ -1,7 +1,7 @@ .thread.thread-no-hover.user-information.user-simple{:class => "#{cycle("thread-even" , "thread-odd")}"} - user = User.build_guest(:email => participant.email) .logo-in-thread - = empty_logo_image(:user, :size => '32', :class => 'logo logo-user') + = logo_initials(:user, :size => '32', :class => 'logo logo-user') %ul.management-links diff --git a/app/views/posts/_post.html.haml b/app/views/posts/_post.html.haml index 933a7e47e..a530acbcf 100644 --- a/app/views/posts/_post.html.haml +++ b/app/views/posts/_post.html.haml @@ -4,7 +4,7 @@ - if post.author = link_logo_image(post.author, :size => '32', :title => post.author.name, :url => user_path(post.author), :class => "logo logo-user") - else - = empty_logo_image(:user, :size => '32', :class => "logo logo-user") + = logo_initials(:user, :size => '32', :class => "logo logo-user") .thread-content .thread-title = icon_comment t('post.home.one', :space => post.space.name) diff --git a/app/views/posts/_unified_post.html.haml b/app/views/posts/_unified_post.html.haml index df603bae8..8a6c988fb 100644 --- a/app/views/posts/_unified_post.html.haml +++ b/app/views/posts/_unified_post.html.haml @@ -10,7 +10,7 @@ - if thread.author = link_logo_image(thread.author, size: '32', title: thread.author.name, url: user_path(thread.author), class: "logo logo-user") - else - = empty_logo_image(:user, size: '32', class: "logo logo-user") + = logo_initials(:user, size: '32', class: "logo logo-user") .thread-content .thread-title diff --git a/app/views/spaces/_latest_posts.html.haml b/app/views/spaces/_latest_posts.html.haml index 00cc01242..5663a1ea6 100644 --- a/app/views/spaces/_latest_posts.html.haml +++ b/app/views/spaces/_latest_posts.html.haml @@ -12,7 +12,7 @@ - if post.author = link_logo_image(post.author, size: '32', url: user_path(post.author), title: post.author.name, class: "logo logo-user") - else - = empty_logo_image(:user, size: '32', class: "logo logo-user") + = logo_initials(:user, size: '32', class: "logo logo-user") .post-title-wrapper = link_to(first_words(post.title, 40), space_post_path(@space, post), class: 'post-title') %span= t('by') diff --git a/config/locales/bg/mconf.yml b/config/locales/bg/mconf.yml index 160a68967..216161303 100644 --- a/config/locales/bg/mconf.yml +++ b/config/locales/bg/mconf.yml @@ -849,7 +849,7 @@ bg: last_week: "Миналата седмица" latest_events: "Последни събития" layouts: - application_navbar: + navbar: events: "Събития" inbox: "Входящи" login: "Вход" @@ -1483,7 +1483,7 @@ bg: updating: "Обновяване на списъка с вашите записите..." show: events_now: "Текущи събития!" - sidebar: + navbar_menu: upcoming_events: "Предстоящи събития" webconference: attendees: diff --git a/config/locales/de/mconf.yml b/config/locales/de/mconf.yml index b697aec66..65c47bf62 100644 --- a/config/locales/de/mconf.yml +++ b/config/locales/de/mconf.yml @@ -824,7 +824,7 @@ de: last_week: "Letzte Woche" latest_events: "Letzte Ereignisse" layouts: - application_navbar: + navbar: events: "Events" inbox: "Posteingang" login: "Anmelden" @@ -1442,7 +1442,7 @@ de: updating: "Aktualisiere die Liste Ihrer Aufzeichnungen..." show: events_now: "Gerade stattfindende Events!" - sidebar: + navbar_menu: upcoming_events: "Zukünftige Events" webconference: attendees: diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 7b8630740..921385684 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -943,7 +943,7 @@ en: last_week: "Last week" latest_events: "Latest events" layouts: - application_navbar: + navbar: account: "Account" events: "Events" inbox: "Inbox" @@ -1146,7 +1146,7 @@ en: error: "Error updating recordings, plase try again later" success: "Recording list updated!" updating: "Updating list of recordings..." - sidebar: + navbar_menu: menu: account: "Account" activity: "Activity dashboard" diff --git a/config/locales/es-419/mconf.yml b/config/locales/es-419/mconf.yml index 64fa32e3a..e9a7dcfd1 100644 --- a/config/locales/es-419/mconf.yml +++ b/config/locales/es-419/mconf.yml @@ -847,7 +847,7 @@ es-419: last_week: "Última semana" latest_events: "Últimos eventos" layouts: - application_navbar: + navbar: events: "Eventos" inbox: "Bandeja de entrada" login: "Acceder" @@ -1481,7 +1481,7 @@ es-419: updating: "Actualizando su lista de grabaciones..." show: events_now: "¡Eventos ocurriendo ahora!" - sidebar: + navbar_menu: upcoming_events: "Futuros eventos" webconference: attendees: diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index e3855f78f..2c5253e71 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -951,7 +951,7 @@ pt-br: last_week: "Semana passada" latest_events: "Últimos eventos" layouts: - application_navbar: + navbar: account: "Conta" events: "Eventos" inbox: "Caixa de entrada" @@ -1152,7 +1152,7 @@ pt-br: error: "Erro atualizando gravações, tente novamente mais tarde" success: "Lista de gravações atualizada!" updating: "Atualizando lista de gravações..." - sidebar: + navbar_menu: menu: account: "Conta" activity: "Atividades recentes" diff --git a/config/locales/ru/mconf.yml b/config/locales/ru/mconf.yml index a4e9c29b6..2b8c98bc5 100644 --- a/config/locales/ru/mconf.yml +++ b/config/locales/ru/mconf.yml @@ -854,7 +854,7 @@ ru: last_week: "Last week" latest_events: "Последние события" layouts: - application_navbar: + navbar: events: "События" inbox: "Входящие" login: "Вход" @@ -1489,7 +1489,7 @@ ru: updating: "Обновляем список Ваших записей..." show: events_now: "Текущие события!" - sidebar: + navbar_menu: upcoming_events: "Предстоящие события" webconference: attendees: diff --git a/spec/helpers/logo_images_helper_spec.rb b/spec/helpers/logo_images_helper_spec.rb index 0aec0c0fa..49d86d036 100644 --- a/spec/helpers/logo_images_helper_spec.rb +++ b/spec/helpers/logo_images_helper_spec.rb @@ -21,13 +21,13 @@ it { validate_logo_size('129').should eq('128') } end - describe "#empty_logo_image" do - it { empty_logo_image(:user, :size => '32').should eq(image_tag('default_logos/32/user.png', class: 'empty-logo')) } - it { empty_logo_image(:space, :size => '32').should eq(image_tag('default_logos/32/space.png', class: 'empty-logo')) } - it { empty_logo_image(:space, :size => '128').should eq(image_tag('default_logos/128/space.png', class: 'empty-logo')) } + describe "#logo_initials" do + it { logo_initials(:user, :size => '32').should eq(image_tag('default_logos/32/user.png', class: 'empty-logo')) } + it { logo_initials(:space, :size => '32').should eq(image_tag('default_logos/32/space.png', class: 'empty-logo')) } + it { logo_initials(:space, :size => '128').should eq(image_tag('default_logos/128/space.png', class: 'empty-logo')) } # invalid logo sizes - it { empty_logo_image(:user, :size => '10').should eq(image_tag('default_logos/128/user.png', class: 'empty-logo')) } + it { logo_initials(:user, :size => '10').should eq(image_tag('default_logos/128/user.png', class: 'empty-logo')) } end describe "#logo_image" do From dea314819af1c20517de55132c2cb91df37dc5c3 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Tue, 15 Aug 2017 17:56:30 -0300 Subject: [PATCH 02/75] Better footer and navbar for the new design --- app/assets/stylesheets/_definitions.scss | 2 +- app/assets/stylesheets/_mixins.scss | 3 ++- .../stylesheets/app/application/base.scss | 21 ++++++++++++++----- app/views/layouts/_footer.html.haml | 5 +---- app/views/layouts/_navbar.html.haml | 6 +++++- config/locales/en/mconf.yml | 3 +-- config/locales/pt-br/mconf.yml | 3 +-- 7 files changed, 27 insertions(+), 16 deletions(-) diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index 09c92ac3f..e02e68f7f 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -176,7 +176,7 @@ $m-page-menu-active-color-hover: $m-sidebar-menu-active-color-hover; $m-page-menu-active-border: $m-sidebar-border; // footer -$m-footer-height: 72px; +$m-footer-height: 56px; $m-footer-font-color: $m-font-color; $m-footer-link-color: $m-link-color; $m-footer-link-color-hover: $m-link-color-hover; diff --git a/app/assets/stylesheets/_mixins.scss b/app/assets/stylesheets/_mixins.scss index ee5e65f84..1b1a69df8 100644 --- a/app/assets/stylesheets/_mixins.scss +++ b/app/assets/stylesheets/_mixins.scss @@ -237,6 +237,7 @@ > li { display: inline; float: left; + margin: 0 10px; &:first-child { border: 0 } @@ -262,7 +263,7 @@ // very specific selector se we don't mess with dropdowns and others > ul > li > a, > a { - padding: 30px 20px 25px 20px; + padding: 30px 15px 25px 15px; display: block; @include link-colors($m-navbar-font-color, $m-navbar-font-color, $m-navbar-font-color); @include transition(background-color 0.2s ease-in); diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index c654ac112..4ac40b128 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -385,17 +385,17 @@ form { .dropdown-user.chip { margin: 0; - font-size: $m-font-normal; + font-size: $m-font-medium; font-weight: normal; border: none; color: $m-navbar-font-color; @include transition(background-color 0.2s ease-in); @include text-truncate; max-width: 350px; - padding: 13px 16px 11px 26px; + padding: 25px 10px 23px 20px; @include border-radius(0); - height: auto; overflow: inherit; + height: auto; &:hover, &[aria-expanded=true] { background: $m-navbar-font-highlight; @@ -407,6 +407,8 @@ form { } img { + height: 36px; + width: 36px; float: left; margin: 0 8px 0 -12px; border: 1px solid lighten($m-navbar-bg-color-dark, 5); @@ -425,6 +427,14 @@ form { color: $m-font-color-gray; } } + + .navbar-conf-btn { + padding: 22px 10px 20px 10px; + + .btn { + padding: 10px 20px; + } + } } #navbar-logo { @@ -456,6 +466,7 @@ form { @include make-row; margin: 0 auto; padding: 10px 0 0 0; + padding-left: $m-sidenav-width-md; clear: both; color: $m-footer-font-color; @@ -468,7 +479,7 @@ form { } #footer-left { - padding: 4px 16px; + padding: 0 16px; text-align: left; @include make-xs-column(7); } @@ -476,7 +487,7 @@ form { #footer-right { text-align: right; @include make-xs-column(5); - padding: 8px 16px; + padding: 0 16px; ul { float: right; } } diff --git a/app/views/layouts/_footer.html.haml b/app/views/layouts/_footer.html.haml index e60c751c0..ddb5bb573 100644 --- a/app/views/layouts/_footer.html.haml +++ b/app/views/layouts/_footer.html.haml @@ -1,11 +1,8 @@ #footer #footer-left #footer-copyright - = t('.copyright', site: current_site.name, year: Time.now.year) #footer-powered - = image_tag "logos/mconf-ico-color-transp.png", size: "14x14" - = t('.links.powered_by') - = link_to "mconf.org", "http://mconf.org" + = t('.copyright', site: current_site.name, year: Time.now.year, link: "https://mconf.org", link_name: 'mconf.org').html_safe - if user_signed_in? && current_user.superuser? %span.current-version = ' - ' + t('.current_version') + ': ' diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 1bffaadc6..8558a69fb 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -30,7 +30,11 @@ #navbar-right %ul#navbar-right-links - if user_signed_in? - %li.last.dropdown + -# TODO: link, context based link and localization + %li.navbar-conf-btn + .btn.btn-primary= "Conference room" + + %li.navbar-chip.dropdown.last .chip.dropdown-user.dropdown-toggle{ data: { toggle: 'dropdown' } } = logo_image(current_user, size: '32', class: "logo-user") %span.username= current_user.profile.first_name diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 921385684..658ac25a4 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -952,7 +952,7 @@ en: profile: "Profile" register: "Register" footer: - copyright: "© %{year} %{site}" + copyright: "© %{year} %{site} - Powered by Mconf. Visit: %{link_name}." current_version: "Current version" find_us: "Find more about Mconf" github: GitHub @@ -960,7 +960,6 @@ en: links: feedback: "Contact" help: Help - powered_by: "Powered by Mconf, visit" title: Links project_website: "Project website" sponsors: diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index 2c5253e71..a9e6b0863 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -960,7 +960,7 @@ pt-br: profile: "Perfil" register: "Registre-se" footer: - copyright: "© %{year} %{site}" + copyright: "© %{year} %{site} - Powered by Mconf. Visite: %{link_name}." current_version: "Versão atual" find_us: "Mais sobre o Mconf em" github: GitHub @@ -968,7 +968,6 @@ pt-br: links: feedback: "Contato" help: Ajuda - powered_by: "Powered by Mconf, visite" title: Links project_website: "Site do projeto" sponsors: From 4f30c2abafa1950abebae0b3469c3b4902b598ec Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Thu, 17 Aug 2017 17:37:49 -0300 Subject: [PATCH 03/75] More adjustments in the home page for the new design --- app/assets/stylesheets/_definitions.scss | 2 +- .../stylesheets/app/application/base.scss | 20 +++------- .../app/application/bootstrap-custom.scss | 38 +++++++++++++++++++ app/assets/stylesheets/app/my/home.scss | 3 ++ app/views/my/home.html.haml | 8 ++-- app/views/shared/_recording_list.html.haml | 3 +- app/views/space_events/_all_events.html.haml | 4 +- .../space_events/_events_group.html.haml | 2 +- app/views/spaces/_latest_posts.html.haml | 2 +- app/views/spaces/_latest_users.html.haml | 2 +- app/views/spaces/webconference.html.haml | 2 +- config/locales/en/mconf.yml | 3 +- config/locales/pt-br/mconf.yml | 3 +- 13 files changed, 64 insertions(+), 28 deletions(-) diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index e02e68f7f..5a5c6d490 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -67,7 +67,7 @@ $m-font-family: "Roboto","Helvetica Neue",Helvetica,Arial,sans-serif; //Arial, H $m-font-family-label: "Roboto","Helvetica Neue",Helvetica,Arial,Geneva,sans-serif; $m-font-family-mono: Consolas, Monaco, "Lucida Console", monospace; $m-font-family-h: $m-font-family; -$m-font-h-color: #111; +$m-font-h-color: $m-color-primary; //#111; $m-font-h-color-hover: $m-link-color-hover; $m-font-h-color-active: $m-link-color-active; $m-base-line-height: 1.5; diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index 4ac40b128..6557bc647 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -689,7 +689,7 @@ form { background-color: $m-site-bg-color; @include mconf-clearfix; overflow: visible; - padding: 26px; + padding: 60px; h3 { margin-bottom: 8px; @@ -739,22 +739,12 @@ form { } .content-block-footer { - text-align: right; + text-align: center; clear: both; margin: 5px 0; - - &.content-block-footer-fancy { - //background: $m-light-gray; - border-top: 1px solid darken($m-light-gray, 5); - } - - .content-block-footer-middle { - margin-top: -12px; - background: white; - float: right; - padding: 0 10px; - } - + color: $m-color-primary; + font-weight: bold; + font-size: $m-font-small; @include content-block-pagination; } diff --git a/app/assets/stylesheets/app/application/bootstrap-custom.scss b/app/assets/stylesheets/app/application/bootstrap-custom.scss index 3885bbd99..1789a595d 100644 --- a/app/assets/stylesheets/app/application/bootstrap-custom.scss +++ b/app/assets/stylesheets/app/application/bootstrap-custom.scss @@ -256,6 +256,44 @@ label { .table-hover > tbody > tr:hover { background-color: #f6f6f6; } +table, .table { + thead th { + color: #4d4d4d; + font-size: $m-font-small; + text-transform: uppercase; + opacity: 0.6; + } + + tbody { + td:first-child { + border-top-left-radius: 14px; + border-bottom-left-radius: 14px; + /* border-left: 1px solid red; */ + } + + td:last-child { + border-top-right-radius: 14px; + border-bottom-right-radius: 14px; + /* border-right: 1px solid red; */ + } + + tr { + background: #fff; + border: solid 8px $m-site-bg-color; + + &.fadeout { + opacity: 0.6; + } + + td { + /* border-top: 1px solid red; */ + /* border-bottom: 1px solid red; */ + padding: 12px; + color: #848484; + } + } + } +} // Make labels a bit bigger and add a new type of label .label { diff --git a/app/assets/stylesheets/app/my/home.scss b/app/assets/stylesheets/app/my/home.scss index ef1237274..8388bf7bd 100644 --- a/app/assets/stylesheets/app/my/home.scss +++ b/app/assets/stylesheets/app/my/home.scss @@ -24,4 +24,7 @@ body.my.home, body.my.activity, body.my.meetings { margin-top: 20px; } + h1 { + margin-top: 0; + } } diff --git a/app/views/my/home.html.haml b/app/views/my/home.html.haml index e2feef147..e16f7c95d 100644 --- a/app/views/my/home.html.haml +++ b/app/views/my/home.html.haml @@ -4,7 +4,9 @@ = content_for :navbar_menu do = render "my/navbar_menu", user_spaces: @user_spaces -= render "shared/webconference_join", room: @room +%h1= t('.hi', name: current_user.first_name) + +-# = render "shared/webconference_join", room: @room -# TODO: #1087 make it look good for a new user (no recs, no meetings yet) @@ -13,7 +15,7 @@ #users-recent-activity-content.content-block-middle = render :partial => 'shared/recording_list', locals: { meetings: @meetings, show_authors: false, redir_to: my_home_path } - .content-block-footer.content-block-footer-fancy + .content-block-footer .content-block-footer-middle = link_to t('.past_meetings.view_more'), my_meetings_path @@ -40,7 +42,7 @@ - else = t(".spaces.no_spaces") - .content-block-footer.content-block-footer-fancy + .content-block-footer .content-block-footer-middle = link_to t(".spaces.view_all"), spaces_path(my_spaces: true) %span= t(".spaces.or") diff --git a/app/views/shared/_recording_list.html.haml b/app/views/shared/_recording_list.html.haml index da0a63fc2..6c80cbdfa 100644 --- a/app/views/shared/_recording_list.html.haml +++ b/app/views/shared/_recording_list.html.haml @@ -34,7 +34,8 @@ - meetings.each do |meeting| - recording = meeting.recording - %tr + - cls = recording.present? ? '' : 'fadeout' + %tr{ class: cls } %td.meeting-date-col - m_create = format_date(meeting.create_time, :long) diff --git a/app/views/space_events/_all_events.html.haml b/app/views/space_events/_all_events.html.haml index 23ced95de..1c38ebbf7 100644 --- a/app/views/space_events/_all_events.html.haml +++ b/app/views/space_events/_all_events.html.haml @@ -12,7 +12,7 @@ .list-texts - for event in @first_upcoming_events = render :partial => 'events/unified_event', :locals => { :event => event } - .content-block-footer.content-block-footer-fancy + .content-block-footer = link_to t('.all_upcoming'), space_events_path(@space, :show => "upcoming_events"), :class => 'upcoming_link event_navigation' .content-block.event-block @@ -28,5 +28,5 @@ .list-texts - for event in @last_past_events = render :partial => 'events/unified_event', :locals => { :event => event } - .content-block-footer.content-block-footer-fancy + .content-block-footer = link_to t('.all_past'), space_events_path(@space, :show => "past_events"), :class => 'past_link event_navigation' diff --git a/app/views/space_events/_events_group.html.haml b/app/views/space_events/_events_group.html.haml index f913863fd..71376d984 100644 --- a/app/views/space_events/_events_group.html.haml +++ b/app/views/space_events/_events_group.html.haml @@ -9,5 +9,5 @@ .list-texts - for event in events_group = render :partial => "events/unified_event", :locals => { :event => event } - .content-block-footer.content-block-footer-fancy + .content-block-footer = page_navigation_links events_group diff --git a/app/views/spaces/_latest_posts.html.haml b/app/views/spaces/_latest_posts.html.haml index 5663a1ea6..e7dbf3341 100644 --- a/app/views/spaces/_latest_posts.html.haml +++ b/app/views/spaces/_latest_posts.html.haml @@ -24,6 +24,6 @@ .post-text = first_words(strip_tags(post.text), 100) - .content-block-footer.content-block-footer-fancy + .content-block-footer .content-block-footer-middle = link_to t('read_more'), space_posts_path(@space) diff --git a/app/views/spaces/_latest_users.html.haml b/app/views/spaces/_latest_users.html.haml index 33a1f89a7..638223e5e 100644 --- a/app/views/spaces/_latest_users.html.haml +++ b/app/views/spaces/_latest_users.html.haml @@ -6,6 +6,6 @@ - for user in @latest_users = render :partial => 'users/simple_user', :locals => { :user => user } - .content-block-footer.content-block-footer-fancy + .content-block-footer .content-block-footer-middle = link_to t('read_more'), space_users_path(@space) if can?(:show, @space) diff --git a/app/views/spaces/webconference.html.haml b/app/views/spaces/webconference.html.haml index c4b2fd79b..0bd94093f 100644 --- a/app/views/spaces/webconference.html.haml +++ b/app/views/spaces/webconference.html.haml @@ -31,6 +31,6 @@ = render partial: 'shared/recording_list', locals: { meetings: @meetings, show_authors: true, redir_to: webconference_space_path(@space) } - else %span= t('.meetings.no_recordings') - .content-block-footer.content-block-footer-fancy + .content-block-footer .content-block-footer-middle = link_to t('.meetings.view_all'), meetings_space_path(@space) diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 658ac25a4..b0bb59cd7 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -1121,6 +1121,7 @@ en: events: other: "Other" today: "Today" + hi: "Hi %{name}!" not_confirmed: "Your account is not activated yet, please check your email to activate it. In case you didn't receive an email, click here to request a new one." past_meetings: title: "Recorded meetings" @@ -1355,7 +1356,7 @@ en: no_meetings: "There are no meetings or recordings in this room yet." not_recorded: "(This meeting was not recorded.)" playback_links: "Playback links" - started_at: "Date" + started_at: "Date - Time" started_at_desc: "This meeting started at %{meeting_start}" started_at_desc_with_rec: "This meeting started at %{meeting_start} and generated a recording that was processed from %{rec_start} to %{rec_end}" publish: Publish diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index a9e6b0863..e2fabeb6b 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -1127,6 +1127,7 @@ pt-br: events: other: "Outros" today: "Hoje" + hi: "Olá %{name}!" not_confirmed: "Sua conta ainda não foi confirmada, por favor verifique o seu e-mail para confirmá-la. Se por acaso você não recebeu o e-mail clique aqui pra solicitar que ele seja enviado novamente." past_meetings: title: "Reuniões gravadas" @@ -1383,7 +1384,7 @@ pt-br: no_meetings: "Ainda não existem reuniões ou gravações nesta sala." not_recorded: "(Esta reunião não foi gravada.)" playback_links: "Links para reprodução" - started_at: "Data" + started_at: "Data - Hora" started_at_desc: "Esta reunião aconteceu em %{meeting_start}" started_at_desc_with_rec: "Esta reunião aconteceu em %{meeting_start} e gerou uma gravação que foi processada entre %{rec_start} e %{rec_end}" publish: Publicar From 51b50bbf9da85c6db6d290387de2a411c0ad6458 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 18 Aug 2017 16:10:31 -0300 Subject: [PATCH 04/75] Finish prototype of the home page for the new design --- app/assets/stylesheets/_definitions.scss | 8 ++- app/assets/stylesheets/_mixins.scss | 19 ++++-- .../stylesheets/app/application/base.scss | 58 ++++++++++++++----- .../app/application/bootstrap-custom.scss | 7 ++- .../stylesheets/app/application/tags.scss | 2 +- app/helpers/application_helper.rb | 4 ++ app/helpers/icons_helper.rb | 4 +- app/views/layouts/_footer.html.haml | 3 +- app/views/layouts/_navbar.html.haml | 2 +- app/views/layouts/_sidenav.html.haml | 6 +- app/views/layouts/application.html.haml | 7 ++- app/views/my/home.html.haml | 38 +++++------- app/views/spaces/_card_item.html.haml | 21 +++++++ config/locales/en/mconf.yml | 27 ++++++--- config/locales/pt-br/mconf.yml | 27 ++++++--- 15 files changed, 154 insertions(+), 79 deletions(-) create mode 100644 app/views/spaces/_card_item.html.haml diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index 5a5c6d490..90c99dcd9 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -38,11 +38,13 @@ $m-transparent: rgba(255,255,255,0); // site colors $m-site-bg-color: #f2f2f2; +$m-site-content-bg-color: #fff; $m-color-primary: $m-green-mconf; $m-color-primary-light: lighten($m-green-mconf, 12); $m-color-secondary: #337ab7; //#4589c4; //$m-bright-blue; $m-focus-border-color: $m-color-secondary; $m-logo-initials-bg: red blue yellow green orange purple magenta $m-color-primary $m-color-secondary; +$m-logo-bg: lighten($m-color-primary, 15); // fonts $m-font-normal: 14px; //0.85rem; /* 14px, base size for all fonts */ @@ -216,9 +218,9 @@ $m-mail-font-size: $m-font-normal; $m-notifications-top: 6px; // tags -$m-tags-font-color: #39739d; -$m-tags-bg-color: #E1ECF4; -$m-tags-bg-color-hover: #cee0ed; +$m-tags-font-color: #fff; //#39739d; +$m-tags-bg-color: #4b9ace; //#E1ECF4; +$m-tags-bg-color-hover: darken($m-tags-bg-color, 10); // Bootstrap variables // See all available at http://getbootstrap.com/customize/#less-variables diff --git a/app/assets/stylesheets/_mixins.scss b/app/assets/stylesheets/_mixins.scss index 1b1a69df8..7129eaf3a 100644 --- a/app/assets/stylesheets/_mixins.scss +++ b/app/assets/stylesheets/_mixins.scss @@ -93,14 +93,13 @@ } // general logo style (user avatars, space logos) -@mixin logo-container { +@mixin logo-container($imgw: "84px") { text-decoration: none; + display: inline-block; @include broken-img-parent; img { margin: 2px 0; - //padding: 1px; - //border: 1px solid $m-border-color-normal; @include border-radius($m-border-radius-base); width: 100%; height: auto; @@ -126,9 +125,17 @@ text-decoration: none; } - /* a img { */ - /* &:hover { border: 1px solid $m-focus-border-color; } */ - /* } */ + .logo-space { + width: $imgw; + height: $imgw / 1.3125; + @include border-radius($m-border-radius-large); + } + + .logo-user { + width: $imgw; + height: $imgw; + @include border-radius($m-border-radius-large); + } } @mixin mconf-clearfix { diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index 6557bc647..dc377f830 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -315,16 +315,9 @@ form { white-space: nowrap; > .logo { - /* border-radius: $input-border-radius-large; */ - @include logo-container; + @include logo-container(53px); display: inline-block; margin-right: 10px; - - /* TODO: move to a default place */ - img, .logo-initials { - width: 53px; - height: 40px; - } } > .name { @@ -342,10 +335,13 @@ form { } } +#site.with-sidenav, #footer.with-sidenav { + padding-left: $m-sidenav-width-md; +} + #site { @include container-fixed; // without params this is actually a .container-fluid padding: 0; - padding-left: $m-sidenav-width-md; } #navbar { @@ -406,13 +402,13 @@ form { margin-left: 2px; } - img { + img, .logo-user { height: 36px; width: 36px; float: left; margin: 0 8px 0 -12px; - border: 1px solid lighten($m-navbar-bg-color-dark, 5); - background: lighten($m-navbar-bg-color-dark, 5); + border: 1px solid $m-logo-bg; + background: $m-logo-bg; } } @@ -466,7 +462,7 @@ form { @include make-row; margin: 0 auto; padding: 10px 0 0 0; - padding-left: $m-sidenav-width-md; + /* padding-left: $m-sidenav-width-md; */ clear: both; color: $m-footer-font-color; @@ -970,11 +966,11 @@ strong.highlight { border-radius: 16px; border: 1px solid #e4e4e4; - img { - float: right; - margin: 0 -12px 0 8px; + .logo-user, img { height: 32px; width: 32px; + float: right; + margin: 0 -12px 0 8px; border-radius: 50%; } } @@ -1231,3 +1227,33 @@ strong.highlight { } } } + +.card-container { + @include make-row; + + .card-item { + float: left; + @include size(30%, 300px); + margin: 1.6666%; + background: $m-site-content-bg-color; + padding: 20px; + @include border-radius($m-border-radius-large); + text-align: center; + + > .logo { + @include logo-container(84px); + @include mconf-clearfix; + margin: 10px auto; + } + + .card-item-title { + font-size: $m-font-medium; + color: $m-color-primary; + margin: 8px 0; + } + + .card-tags { + margin: 10px 0; + } + } +} diff --git a/app/assets/stylesheets/app/application/bootstrap-custom.scss b/app/assets/stylesheets/app/application/bootstrap-custom.scss index 1789a595d..daaf5f5eb 100644 --- a/app/assets/stylesheets/app/application/bootstrap-custom.scss +++ b/app/assets/stylesheets/app/application/bootstrap-custom.scss @@ -254,7 +254,8 @@ label { border-top-color: $m-border-color-medium; } .table-hover > tbody > tr:hover { - background-color: #f6f6f6; + /* background-color: #f6f6f6; */ + background: $m-site-content-bg-color; } table, .table { thead th { @@ -278,7 +279,7 @@ table, .table { } tr { - background: #fff; + background: $m-site-content-bg-color; border: solid 8px $m-site-bg-color; &.fadeout { @@ -316,6 +317,6 @@ mark { background: rgba(255,255,140,0.5); padding: 2px; margin: 0 -2px; - border-radius: 3px; + border-radius: $m-border-radius-large; display: inline-block; } diff --git a/app/assets/stylesheets/app/application/tags.scss b/app/assets/stylesheets/app/application/tags.scss index 6205ea235..4c661f02d 100644 --- a/app/assets/stylesheets/app/application/tags.scss +++ b/app/assets/stylesheets/app/application/tags.scss @@ -18,7 +18,7 @@ display: inline-block; color: $m-tags-font-color; - &:hover { + &:hover, &:focus { text-decoration: none; } } diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 7dafa1b48..ed3df774b 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -235,4 +235,8 @@ def with_tooltip(title, &block) content = capture(&block) content_tag(:div, content, class: 'with-tooltip tooltipped', title: title) end + + def sidenav_visible? + user_signed_in? + end end diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb index 829d79738..ba6b687d6 100644 --- a/app/helpers/icons_helper.rb +++ b/app/helpers/icons_helper.rb @@ -132,11 +132,11 @@ def icon_attachment_new_version(options={}) end def icon_space_private(options={}) - icon_constructor nil, "fa fa-lock icon-awesome icon-mconf-space-private", options + icon_constructor t('_other.space.private_space'), "fa fa-lock icon-awesome icon-mconf-space-private", options end def icon_space_public(options={}) - icon_constructor nil, "fa fa-globe icon-awesome icon-mconf-space-public", options + icon_constructor t('_other.space.public_space'), "fa fa-globe icon-awesome icon-mconf-space-public", options end def icon_publish(options={}) diff --git a/app/views/layouts/_footer.html.haml b/app/views/layouts/_footer.html.haml index ddb5bb573..2eeb4ce62 100644 --- a/app/views/layouts/_footer.html.haml +++ b/app/views/layouts/_footer.html.haml @@ -1,4 +1,5 @@ -#footer +- cls_sidenav = sidenav_visible? ? 'with-sidenav' : 'without-sidenav' +#footer{ class: cls_sidenav } #footer-left #footer-copyright #footer-powered diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 8558a69fb..26b81342a 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -32,7 +32,7 @@ - if user_signed_in? -# TODO: link, context based link and localization %li.navbar-conf-btn - .btn.btn-primary= "Conference room" + .btn.btn-primary= t(".conference_room") %li.navbar-chip.dropdown.last .chip.dropdown-user.dropdown-toggle{ data: { toggle: 'dropdown' } } diff --git a/app/views/layouts/_sidenav.html.haml b/app/views/layouts/_sidenav.html.haml index d20d5ad31..525913762 100644 --- a/app/views/layouts/_sidenav.html.haml +++ b/app/views/layouts/_sidenav.html.haml @@ -5,11 +5,11 @@ .logo= link_to "", url .search - = text_field_tag "search", nil, placeholder: "Search...", class: "form-control" + = text_field_tag "search", nil, placeholder: t(".search"), class: "form-control" -.subtitle= "My room" +.subtitle= t(".my_room") -.subtitle= "My spaces" +.subtitle= t(".my_spaces") - spaces.each do |space| .space-item = link_logo_image(space, :size => '84x64', :"data-placement" => 'bottom', :class => "logo logo-space") diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index f72bc619a..e7ca59a0b 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -16,10 +16,11 @@ = yield :headers %body{:class => "#{controller_name_for_view} #{params[:action]} #{layout_name} #{theme_class}"} - #sidenav - = render :partial => "layouts/sidenav" + - if sidenav_visible? + #sidenav= render :partial => "layouts/sidenav" - #site + - cls_sidenav = sidenav_visible? ? 'with-sidenav' : 'without-sidenav' + #site{ class: cls_sidenav } #navbar = render :partial => 'layouts/navbar' diff --git a/app/views/my/home.html.haml b/app/views/my/home.html.haml index e16f7c95d..1ddbcd502 100644 --- a/app/views/my/home.html.haml +++ b/app/views/my/home.html.haml @@ -10,14 +10,11 @@ -# TODO: #1087 make it look good for a new user (no recs, no meetings yet) -#user-meetings-recordings.content-block +#user-meetings-recordings %h3= t(".past_meetings.title") - - #users-recent-activity-content.content-block-middle - = render :partial => 'shared/recording_list', locals: { meetings: @meetings, show_authors: false, redir_to: my_home_path } + = render :partial => 'shared/recording_list', locals: { meetings: @meetings, show_authors: false, redir_to: my_home_path } .content-block-footer - .content-block-footer-middle - = link_to t('.past_meetings.view_more'), my_meetings_path + = link_to t('.past_meetings.view_more'), my_meetings_path - if mod_enabled?("spaces") - if @pending_requests.count > 0 @@ -28,23 +25,20 @@ - @pending_requests.each do |jr| = render "join_requests/list_item", jr: jr - #user-spaces.content-block + #user-spaces %h3= t(".spaces.title") - .content-block-middle - - - if @user_spaces.count > 0 - .list-container.list-tablefied - - @user_spaces.each do |space| - - unless space.nil? - - is_member = @user_spaces && @user_spaces.include?(space) - = render "spaces/list_item", space: space, is_member: is_member - - else - = t(".spaces.no_spaces") + - if @user_spaces.count > 0 + .card-container + - @user_spaces.each do |space| + - unless space.nil? + - is_member = @user_spaces && @user_spaces.include?(space) + = render "spaces/card_item", space: space + - else + = t(".spaces.no_spaces") .content-block-footer - .content-block-footer-middle - = link_to t(".spaces.view_all"), spaces_path(my_spaces: true) - %span= t(".spaces.or") - - if can?(:create, Space) - = link_to t(".spaces.create"), new_space_path + = link_to t(".spaces.view_all"), spaces_path(my_spaces: true) + %span= t(".spaces.or") + - if can?(:create, Space) + = link_to t(".spaces.create"), new_space_path diff --git a/app/views/spaces/_card_item.html.haml b/app/views/spaces/_card_item.html.haml new file mode 100644 index 000000000..b257a3886 --- /dev/null +++ b/app/views/spaces/_card_item.html.haml @@ -0,0 +1,21 @@ +-# Locals: +-# space (Space): the target model + +.card-item.card-item-space{ name: space.permalink } + + = link_logo_image(space, :size => '84x64', :"data-placement" => 'bottom', :class => "logo logo-space") + + .card-item-title + = link_to space.name, space_path(space) + + - if space.public + .resource-visibility.small.public + = icon_space_public + = t('.members', :count => space.users.size) + - else + .resource-visibility.small.private + = icon_space_private + = t('.members', :count => space.users.size) + + .card-tags + = render :partial => "spaces/space_tags", :locals => { :space => space } diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index b0bb59cd7..7d9036eb7 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -118,7 +118,9 @@ en: space: disabled: "Disabled" private: "Private" + private_space: "Private space" public: "Public" + public_space: "Public space" unpublish: "Unpublish" update: "Update" updated_time_ago: "%{time} ago" @@ -943,14 +945,6 @@ en: last_week: "Last week" latest_events: "Latest events" layouts: - navbar: - account: "Account" - events: "Events" - inbox: "Inbox" - login: "Sign in" - manage: "Manage" - profile: "Profile" - register: "Register" footer: copyright: "© %{year} %{site} - Powered by Mconf. Visit: %{link_name}." current_version: "Current version" @@ -972,6 +966,19 @@ en: wiki: "Wiki" manage: title: "Management" + navbar: + account: "Account" + conference_room: "Conference room" + events: "Events" + inbox: "Inbox" + login: "Sign in" + manage: "Manage" + profile: "Profile" + register: "Register" + sidenav: + my_room: "My room" + my_spaces: "My spaces" + search: "Search..." less: "less..." locales: error: "Locale not registered" @@ -1131,7 +1138,7 @@ en: no_spaces: "You're still not a member of any space." or: "or" pending: "Pending join requests" - title: "My spaces" + title: "Spaces" view_all: "View all my spaces" title: "Home" view_all_spaces: "View all spaces" @@ -1567,6 +1574,8 @@ en: approve: approved: "The space %{name} was approved" not_enabled: "Moderation of spaces is not enabled or the space is already approved" + card_item: + members: "%{count} members" disapprove: disapproved: "The space %{name} was disapproved" not_enabled: "Moderation of spaces is not enabled" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index e2fabeb6b..d75a992e5 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -117,7 +117,9 @@ pt-br: space: disabled: "Desabilitado" private: "Privado" + private_space: "Comunidade privada" public: "Público" + public_space: "Comunidade pública" unpublish: "Despublicar" update: "Atualizar" updated_time_ago: "%{time} atrás" @@ -951,14 +953,6 @@ pt-br: last_week: "Semana passada" latest_events: "Últimos eventos" layouts: - navbar: - account: "Conta" - events: "Eventos" - inbox: "Caixa de entrada" - login: "Login" - manage: "Gerenciar" - profile: "Perfil" - register: "Registre-se" footer: copyright: "© %{year} %{site} - Powered by Mconf. Visite: %{link_name}." current_version: "Versão atual" @@ -978,6 +972,19 @@ pt-br: change: "Mudar a linguagem" help_us: "Quer este site na sua linguagem? Clique para saber como nos ajudar a traduzi-lo!" wiki: "Wiki" + sidenav: + my_room: "Minha sala" + my_spaces: "Minhas comunidades" + search: "Pesquisar..." + navbar: + account: "Conta" + conference_room: "Sala de conferência" + events: "Eventos" + inbox: "Caixa de entrada" + login: "Login" + manage: "Gerenciar" + profile: "Perfil" + register: "Registre-se" less: "menos..." locales: error: "Linguagem não resgistrada" @@ -1137,7 +1144,7 @@ pt-br: no_spaces: "Você ainda não é membro de nenhuma comunidade." or: "ou" pending: "Pedidos de ingresso pendentes" - title: "Minhas comunidades" + title: "Comunidades" view_all: "Ver todas minhas comunidades" title: "Início" view_all_spaces: "Ver todas comunidades" @@ -1598,6 +1605,8 @@ pt-br: approve: approved: "A comunidade %{name} foi aprovada" not_enabled: "A aprovação de comunidades não está habilitada ou a comunidade já está aprovada" + card_item: + members: "%{count} membros" disapprove: disapproved: "Acesso bloqueado à comunidade %{name}" not_enabled: "A aprovação de comunidades não está habilitada" From 0d8baa6d59dbf856336649113cfdea501c49429d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vit=C3=B3ria=20Rosa?= Date: Tue, 17 Oct 2017 12:16:15 -0200 Subject: [PATCH 05/75] Created param :create => false --- app/controllers/shibboleth_controller.rb | 69 ++++++++++--------- .../invite_userid.html.haml | 2 +- 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/app/controllers/shibboleth_controller.rb b/app/controllers/shibboleth_controller.rb index c48b74065..4405b6074 100644 --- a/app/controllers/shibboleth_controller.rb +++ b/app/controllers/shibboleth_controller.rb @@ -51,43 +51,43 @@ def login else token = @shib.find_and_update_token - # there's a token with a user associated - if token.present? && !token.user_with_disabled.nil? - user = token.user_with_disabled - if user.disabled - logger.info "Shibolleth: user local account is disabled, can't login" - flash[:error] = t('shibboleth.login.local_account_disabled') - redirect_to root_path - else - # the user is not disabled, logs the user in - logger.info "Shibboleth: logging in the user #{token.user.inspect}" - logger.info "Shibboleth: shibboleth data for this user #{@shib.get_data.inspect}" - - # set that the user signed in via shib - @shib.set_signed_in(user, token) - # Update user data with the latest version from the federation - @shib.update_user(token) if current_site.shib_update_users? - - if token.user.active_for_authentication? - sign_in user - flash.keep # keep the message set before by #create_association - redirect_to after_sign_in_path_for(token.user) + if params[:create] == "false" + # there's a token with a user associated + if token.present? && !token.user_with_disabled.nil? + user = token.user_with_disabled + if user.disabled + logger.info "Shibolleth: user local account is disabled, can't login" + flash[:error] = t('shibboleth.login.local_account_disabled') + redirect_to root_path else - # go to the pending approval page without a flash msg, the page already has a msg - flash.clear - redirect_to my_approval_pending_path + # the user is not disabled, logs the user in + logger.info "Shibboleth: logging in the user #{token.user.inspect}" + logger.info "Shibboleth: shibboleth data for this user #{@shib.get_data.inspect}" + + # set that the user signed in via shib + @shib.set_signed_in(user, token) + # Update user data with the latest version from the federation + @shib.update_user(token) if current_site.shib_update_users? + + if token.user.active_for_authentication? + sign_in user + flash.keep # keep the message set before by #create_association + redirect_to after_sign_in_path_for(token.user) + else + # go to the pending approval page without a flash msg, the page already has a msg + flash.clear + redirect_to my_approval_pending_path + end end - end - - # no token means the user has no association yet, render a page to do it - else - if !get_always_new_account - logger.info "Shibboleth: first access for this user, rendering the association page" - render :associate else - logger.info "Shibboleth: flag `shib_always_new_account` is set" - logger.info "Shibboleth: first access for this user, automatically creating a new account" - associate_with_new_account(@shib) + if !get_always_new_account + logger.info "Shibboleth: first access for this user, rendering the association page" + render :associate + else + logger.info "Shibboleth: flag `shib_always_new_account` is set" + logger.info "Shibboleth: first access for this user, automatically creating a new account" + associate_with_new_account(@shib) + end end end end @@ -122,6 +122,7 @@ def info private def load_shib_session + #test_data logger.info "Shibboleth: creating a new Mconf::Shibboleth object" @shib = Mconf::Shibboleth.new(session) @shib.load_data(request.env, current_site.shib_env_variables) diff --git a/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml b/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml index b4125c516..89de9d1e2 100644 --- a/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml +++ b/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml @@ -22,7 +22,7 @@ %ul#login-extra-links - if current_site.shib_enabled? - %li= link_to t('.login_federation'), shibboleth_path + %li= link_to t('.login_federation'), shibboleth_path(:create => false) - if current_site.certificate_login_enabled? %li= certificate_auth_link t('.login_certificate'), false From 99b28cd3737c9baa265bdd1577b7e59cba39fbf1 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Tue, 17 Oct 2017 17:46:02 -0200 Subject: [PATCH 06/75] First version of the new design for the login and register pages --- app/assets/fonts/Roboto Apache License.txt | 203 ------------------ app/assets/fonts/Roboto-Black.ttf | Bin 142472 -> 0 bytes app/assets/fonts/Roboto-BlackItalic.ttf | Bin 149644 -> 0 bytes app/assets/fonts/Roboto-Bold.ttf | Bin 135820 -> 0 bytes app/assets/fonts/Roboto-BoldItalic.ttf | Bin 144700 -> 0 bytes app/assets/fonts/Roboto-Italic.ttf | Bin 148540 -> 0 bytes app/assets/fonts/Roboto-Light.ttf | Bin 140276 -> 0 bytes app/assets/fonts/Roboto-LightItalic.ttf | Bin 145932 -> 0 bytes app/assets/fonts/Roboto-Medium.ttf | Bin 137308 -> 0 bytes app/assets/fonts/Roboto-MediumItalic.ttf | Bin 147876 -> 0 bytes app/assets/fonts/Roboto-Regular.ttf | Bin 145348 -> 0 bytes app/assets/fonts/Roboto-Thin.ttf | Bin 130044 -> 0 bytes app/assets/fonts/Roboto-ThinItalic.ttf | Bin 132376 -> 0 bytes app/assets/fonts/RobotoCondensed-Bold.ttf | Bin 141796 -> 0 bytes .../fonts/RobotoCondensed-BoldItalic.ttf | Bin 145256 -> 0 bytes app/assets/fonts/RobotoCondensed-Italic.ttf | Bin 144404 -> 0 bytes app/assets/fonts/RobotoCondensed-Light.ttf | Bin 141384 -> 0 bytes .../fonts/RobotoCondensed-LightItalic.ttf | Bin 145104 -> 0 bytes app/assets/fonts/RobotoCondensed-Regular.ttf | Bin 140396 -> 0 bytes app/assets/stylesheets/_definitions.scss | 39 ++-- app/assets/stylesheets/_mixins.scss | 9 +- .../stylesheets/app/application/base.scss | 26 +-- .../app/application/bootstrap-custom.scss | 2 + .../app/application/typography.scss | 4 + .../stylesheets/app/registrations/new.scss | 39 +++- app/assets/stylesheets/app/sessions/new.scss | 47 +++- .../stylesheets/app/shared/_social_login.scss | 43 ++++ app/controllers/registrations_controller.rb | 2 +- app/controllers/sessions_controller.rb | 2 +- app/views/layouts/_navbar.html.haml | 4 +- app/views/layouts/application.html.haml | 1 + .../registrations/_signup_form.html.haml | 26 +-- app/views/registrations/new.html.haml | 9 +- app/views/sessions/_login_form.html.haml | 7 +- app/views/sessions/new.html.haml | 8 +- app/views/shared/_social_login.html.haml | 5 + config/locales/en/_simple_form.yml | 7 + config/locales/en/mconf.yml | 15 +- config/locales/pt-br/_simple_form.yml | 7 + config/locales/pt-br/mconf.yml | 15 +- 40 files changed, 231 insertions(+), 289 deletions(-) delete mode 100644 app/assets/fonts/Roboto Apache License.txt delete mode 100644 app/assets/fonts/Roboto-Black.ttf delete mode 100644 app/assets/fonts/Roboto-BlackItalic.ttf delete mode 100644 app/assets/fonts/Roboto-Bold.ttf delete mode 100644 app/assets/fonts/Roboto-BoldItalic.ttf delete mode 100644 app/assets/fonts/Roboto-Italic.ttf delete mode 100644 app/assets/fonts/Roboto-Light.ttf delete mode 100644 app/assets/fonts/Roboto-LightItalic.ttf delete mode 100644 app/assets/fonts/Roboto-Medium.ttf delete mode 100644 app/assets/fonts/Roboto-MediumItalic.ttf delete mode 100644 app/assets/fonts/Roboto-Regular.ttf delete mode 100644 app/assets/fonts/Roboto-Thin.ttf delete mode 100644 app/assets/fonts/Roboto-ThinItalic.ttf delete mode 100644 app/assets/fonts/RobotoCondensed-Bold.ttf delete mode 100644 app/assets/fonts/RobotoCondensed-BoldItalic.ttf delete mode 100644 app/assets/fonts/RobotoCondensed-Italic.ttf delete mode 100644 app/assets/fonts/RobotoCondensed-Light.ttf delete mode 100644 app/assets/fonts/RobotoCondensed-LightItalic.ttf delete mode 100644 app/assets/fonts/RobotoCondensed-Regular.ttf create mode 100644 app/assets/stylesheets/app/shared/_social_login.scss create mode 100644 app/views/shared/_social_login.html.haml diff --git a/app/assets/fonts/Roboto Apache License.txt b/app/assets/fonts/Roboto Apache License.txt deleted file mode 100644 index 63d530249..000000000 --- a/app/assets/fonts/Roboto Apache License.txt +++ /dev/null @@ -1,203 +0,0 @@ -Font data copyright Google 2012 - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/app/assets/fonts/Roboto-Black.ttf b/app/assets/fonts/Roboto-Black.ttf deleted file mode 100644 index 71f01ac2b216d59547ab51d15c031bf64c671738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142472 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/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�mD+ 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 diff --git a/app/assets/fonts/Roboto-Bold.ttf b/app/assets/fonts/Roboto-Bold.ttf deleted file mode 100644 index aaf374d2cc000c058f434f43c3b53bcaf315e2a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135820 zcmdSCd3Y2>*Ed|%-P4nVER#JXkj!K!`yL2efDrZ&k^mtjBy0h~ju2J>0TGZ*L_kEs zCL)`Yh=|Iq2#6pEsECN55D^g+5fM?6p7&SP)5%QK=efV@yWT(E30*ziT~l@H>~-o? zLntA{9fd>;-E#Zp-&*v=dP3ieB&4rTxBUK{Tl)tsAc9LKA-bNu3-Y^XcMJZK5Dz1M z;MO-kKIxs`=mA6Ml1e)X*m;5eMRl{#xL<^Qdt%%Ts^f@){u#R|uUDIeO&K5r3E?t5BCcPaBOJ zE`Cm3ab1Ax(9z?k&RBQEH4fL02r)#Cn>c)^u3Om+^mm*P2fy({XH1e?i+|zy4AeJH z7&?Arx30SLgszhSf9a%&PfXo^Kjk?>H)0GS2PaJ#Imy^_C!V$3h2LBy3^zD#ojkpv z)UDm`q`3ob5OVyUJNhK#tk;>~$G_Kq;kd+M4(d4)f!)Oizi}8={{JfrR2!&NX^K4;zLS_&idSypa~KGa4kx&2#4{6=r-z-(PWT%7C$BBtQ)N>Laq_v zmt0~TjGIQ*c(;iYN8y``rCx=>VVDqYB($n8>oG%T#xo-ksKV-^U7Xn=#FE9rYLX-! zBMH)aQmp%tlOcn~rYO#&wKI)g^*n^`R zj!rn*;248rIF5EW2II&RvdL;8iA<3^Nt*OBSt13K>0&);sc%jabwR{g7fhDuT9Oi7 z2Rz$=V>7M?k>R@CWQj0{Y?PiO8M5qCXbo0mz zoiEYreTg5=K{{umlMa$TLI(OQB?8Va;(QV#t|3&|N%}~=NxHO%Op-!L2b{Y|?NIj$ z#>>7hB4dOQGEWGyY?gYEN$k7)6Y4G^W3A8G_b$RGxMw68!fE2jek1u1gYG-h5@$~w zIvl-(9V9`}lYKY`>*C26j{7XK68PvY9l;oul3eL~;v?wDJe{5lkvfx2ayA(tu0Y$A z43ox?xeWL0o+OdAVhb`?>O+deVp1*^l0m|kWSn%5JS(M<_QF_FC4`ZoLVJ=UzD6qX z`*PhE2=$|GcqXnk}qlNVl23byk78`Irg5z~vF>tHVfziU| zkTOZ8ZUOEwTG$?p7T=OZI#==x$2-G)lSBT1#Bo}H4vZGsAtYI9z(b30-izZU=_vTM zkq(SjjmK)z(Rw|G(}U4OrHf8lMrJaauyM1#|8{0$2QP3O{L>jcs`DpZ*!ZPw=#$}x z!TGiu7 znapD{B6POwOam=;lc$6Vk}qC{o*7402ph;|Lh63R@du7438`;M z$m8E}mW8*-U1=nFk@dx7RjRX8%C43w;XjsLx@RrF>Lyt_=%!k33a?pKu{umYO4Go1 z7l{w&GmMAJ9$;hok+?p!wlC(ui6xn4X?TI;zxOG06!aOx0e|iUd@{Lvn~dc37@y@pmYD8g^?Hy|tgbGR zY5~2v7PcXUB;$Ir?oX16I=;GxBul^}PqJF|PbsbrQ^WBEe*^`A_nK&VdZjuY$a(He;SR5O`p+uj-+((j4I8N#Z7Z zKwJ&kdS*ktogdQ9#%_gJdm&jOsM>1A^mAoKL$L}IZM|m!J8ox=_bRXpK zSKe17=*W1G*(B&dW|!nUq`7>H_tBE~&-!D1;H(oNznzJPGz<1{9@!_Clb!M-(BLYW z;MkXJbZ|vKEl}4HV`cmRns6HWSUz=JL5dwVf{s@Hm+B!0-C%njld9lS`o{ygcyaI5tzO@SQL0G4T%2jW1>XAIvAK3zAmNZNvPN6S&E#PW%zbM)VV z9y?JVc$a`Ds~j5|&Y%Tg^VBDjXx(ziC1}F%r<;QF9GqVSzs(_~@@mUn>6GO#mkZFB z(L?K_;cWdaqdlV)uiL~PX!5V=bzLpS-Uhyr^{l@~JmkxyIpZm*CCP>@C}2ke4m4b7 z`VzduXltcE^9gj?7?^A``Z6Bld~lBR63a+$#(!+g4QG+`27bFh-%gP)kRrJ+>7)xK zvCSzqW9E2(U!&>J zre{qj{{3v(CH1zn{`>uZv8_#Tto=^I@xPxfQ>Av6jDLI1^#N=l&PyR16PPSBJpKJ_ z`5dw|=a{yr;83%imD;1H&Xsf083Q2=+IRO5+2Yl2*`36~m z-*=IUNjKd!GD3Vn{2h+LUv(vA;I*}kC-vhFOc@qb>byiNPzx7IKCzUY>W;uWS~PTY+Z!q zH8Gn^5f_kBaR}tDHyJ7o1uw^f{{!H+zX)6N0`3(%z%X;^*+Up$o*rc(w{h5d4t{=&2}t{||kX0(+);++k@eS z9k%e}yTdn}x3eV1KN=5VT%3pSTvtZ|k=gQE%mt=fZt6qHQ?e78s#^e_T?AboLR{FP zUxGR_$vFM9jdkIBEP+2ZNqQ3J_V5|3_DA|jwLkJE!1WINp%U1%pJ7WzlA*d7z+j!v z$nL6L)P4tlagnqJxYPR9&KMK_LzF^K^?DlVL-7e?1$E(NL*W`EYu{bs*;ALGV1FZ} zj?|Y%$FWB(DK)ml9V3ot8eqf+ca8BhJ{~`yE%ZUItQuu^BXP8#{*-#KJCrt8PbhH@ zAN(X9J+KeDz$cpDW(B&jepnCagO}*VdbcHNu)jd98b6~N`*T6(tg8CQL5U8=SlAy1 z?1Bm|tjQq$$6#fD_8&)M;~&Nz9~~FZ{s4FqM;*SfpCk(QKcmek)v;T_I6^6nbKxMn z_y)NIqZ#%jKAOhz{^E_X)aZ6++aWT_Z+G0SNNbg{&7KD>Nh~Z z{uzU5BEwHhUtZl^0yfo0yqdEy*ci`%b>x?f@bU3U_#Fq7-(yeFJeqX}dT`;35d(cP z`yT9%`-~enVre3$fl5LCV^(l%8dWAhLx6x|pZ(mY6^+HofP;UbG{6_^xCB-~ns3Jf#{O1=0ECs!Jl zfNw7GEvX-8UJ=+n;L|)(*HEM32^Sa2e!!RmAD!qevNK0z2>XT)`ZYRWJoqr|^G|GW z6waDVsmxCB5v@lHLiyzx++p8Z5J@!SyqC-;GKnEBWGM4~;P3 zAl=t_2GYQeflmki8Pvzv%;;?l1ebT6pN+aVgb}H#7MRP+AZ{TK>L^A$Dus| zXfFX;(g5uuK)X`hE`ADViR3GVNUfzTsh3nHl}l5k`O*?;g|t_CPx?^0CH)pi0y_lG z58MK1iP6*O3vmkrv`NM`4bW}}w0rEJ9c+cx-3Hnb99jx!>ns+_@0RZ@M=fT{cFQ`; zKueA#&C*9HV%qgD<9G?jIvgwO zSD>7OqY}r&8w+oAyP^N?=kGSw-m1M`d#(1{+N-q}YCo?%Tl-1viQ4tGD{3ohN7s(5 zb*UxSmFvGu>v4MA$l1P$BGD#t+B#oq#)}#%|AZgpd&q8Ru6^WnvY(hqHF<-)Ne+;M>C| zDBhXEUxFe^WD!|T7LpZY8CgYEljq1v@&bWOleJ_Md6~RKexrG`kW8ipv_Bm{X3;@( zAk8bxf9-mc^Qd7&DDB#hS$!W42ig z%g!qd8Dv~$T-Ia6GGn%J^w1GzDU6@-VC1qv@kTSrFC2ripwMK_92C&-b>yHy8L?)G zHG^NE_Od}}pu*Y!&iqzy zlr+7OX?p`0=z56G&qY%>g_r`^jSy3a2@np-iZwgN^vW;n3J^^I(J98 zR<|Ts0dHgaeJcz1oukc=mm2CQM3c8@a#X0lfjC6JC3H--eiOT-#|C+@ds22A>o;AW zj)@`O?4I1CU3{6u%e>@l_#>|eGk@=2kup|0+&;3+&u6A_fUA@X(=mSXN83o zeZ5fS94o3=5#+_1Vnvk?p8mp$jy`x$%8GNWu&^S?2UYN3T1{V8Ok_o=A1cpd#VS_3 z&x#;FRPM_PH$POtC4R;V+`}kYfyw~QAC)_@Vje3dTEAfk{;W$BO!-EU>(Ds6p_A4^ zen&&TcjK3giEl?BA5HFfv&}_%U!Ry8Qluq*0>#VJMZ?u;A4n1 z3@}`AZ|Ab-4wb%^mypSu)wgnVXMQog&hbx5q3H3Uii`Q zv*Fjm??*@xei2a-?ILm_Mns&AxE66gQi}9}lieDN&1})G*9}^yv z6q6M*AZB#TteE97n`6u|M`JF<+>WV>b&Z`Hdo%V?oKswjxVX5?xV*R_aTRfM;x@$X zh%?6>jk^$cJD$Y%jvo>~DSmPMrudrplku10ZzUuoOh}lYuqI(w!g~ql6KWG4B^D&s zBpy$^n0PDkuOvfKXwu%~oaD0PDalKcHz%8uk0xJ8zM1?e#VN%nB{(G|B|D`!WlGAT zl(i`rQqxkqrxvA-OP!m#I(1v>q13afH&P#^Noj_(;Ix#q?6ktP32F1w)}-x7JD7Gd z?Q*(P`l9sO)~#DFXnnEutu~~MUz?~l?b_tDDQh#O&7w93+nj9kAR{ThsRAwzX}4Y8Toruid0}i`yM(_gTBk?S5*fv^TU5ZlBUVyZw;%R)^jl3OX$6u)M?C4wpOBcJ%1z-?6;ogpQRRYdhY~%*x!6`A+8f%-YNc zo#ak_o#Hxe>+IDzxAVa+#x8Ta9M6i%D$W{_bv)}#)`hO!yXJP?()CexLH4ff3*CIW z&F}W0dtUcL-OqNf?f#&L+{3TOoF3PD=JYJfdyVKdtJi{FcY7E09@l$r z@72A}_P*FByiZ)8v_2jB?C6w$4Qd6_m%sW^*x%~ zIyWzS9Aw;*p>-o<<=-#OnaKPP`p{$~Y&1(gMd`iJ&k z+y7?&M+2M(tQ@dqpwmE)f&K#%2DTo!rBEmwS2(wDb>X(c+CiCvRt~yYlvK2`sBZAE z!8eOX6xWsPDA`+bprmey$B@7wQA0MCI+PZaZZ5r0T341(*1fE3Xu;6qLoW}#H!Nq^ zjA6Tm-5VY^JY#tF@J++-jVKs#V8oFTXGZ#uTr_g^$W0@6jNCi&L3z9K?&SsLo6B#O z-!E52<&D}o>ei^b(G{a_j=nqkuQBqNvN7+BIWgw5G2e{2J?3GBP~lY3q9U#$tD>-? ztYUP}{dnrdskKw@P9xJiriD&Ro7R0=(X>g^7EfC85 zP5Y@*sPw6fsm!b#P+3tqzj9sW-pV7D7b|a1C)2&AM@{cAy#1g->r z3pMME>o%?1zwXw0uk{_)k6!=IhNunWHk^4e<;98@Z*J_paplI_FXg?o|E0T|CTx1| zWuKQbUtaR^?aiY%Z`^!l^M%cis#;VfRCTT@s4B0TQMJ5kTh%*NC#o)0-L9(JV%QSA zC1p$Ymf|fFw#?tMX3LH(2e*8@<;s@3Tgg_ht>If+Z|%8tz}C@QXKh`+b@Nv9)}vc5 zY`wYl{x)fw&$h^I8QXHV4cj(#+p=w&w(Z*X&bBk#YPUVu?zG*wJz;z2?S}D#JA@ssJB&Nhc68rSv}4?kxjWYG*s`N$$MGE(cii4l_loN){;$k` z<-*SJo$GeqdUe37D_=dcD{$AaT?b!_du`5Zw|0-%eSc5qJsbBt+&f_Jm3_1J-P~Wc zfA9XIuUDGm%zLY&suxvXsVS)0UGv}#@`m#pes6@nQTfKn1Ca;jylHrI%bR=OJoM)A zH_yLW`{sj#IR`f#+;MR4!J`K+9=vr>dCLpl!D7spcf)rOF=tD}yryfRS%?p)77QH* z@e2tTk`pfUW~b=FO95AKTlBmnENG3I_2<#9KEyp)E&R&o-=x_nbPj(C&dSdySld|Ll9mJR z0L&fd0it-b9M5}jL8C4j^aflQvbfOph}6@rTpjHJdt#L?ZOjoIH&Ez(Bt0kt!Oz1qv> zW{AOTJZ}y$R7W@7#5hvIBf`T|Q_|8?lf8X>^m%Bu#!^6|l zOeXo{PJLx`II0k-wiDoP%vov)h{j{s(SZQKZCN-aO>p3{AZXh8sG{^^+6 zR}ypUcyoqIRZcr?#NilmIHMi-#!2IwYImt|(4wK*&*m~5l+)^&!wuE3HqU|#)hUga z35lL5X~{`G-WYC3aCmAmA8Kl`TFqwbUWd-pum zXTk10PqpdSt7D%w{ra_e)JvMu3)0!%a!1z!_%R_O(graB&ct?n5Cp6QHD&Lb7D1dT zS{Tgk=gk;va3jHM64Yl226H&)ko3l991rQ785lM|dp%7{13F~Auig|P1396(q_lLZ zml=PEV3Bk@=V)rb;OVR`m)@-UXjuOe>J=J!IV=0Tpd9Yg|G=oribC(CRwODHJd?vF zxI{+}XdTg`ZKrIyq;gM5@rJ(p&V9Ii*tYhamG{~$&slb>=z(rfdiwXefB;(Tk}x=K z&=cZQ(Sy@lhxU$5${EOIBT2kR{V>l#cCx*O0XvIKi7@@4Yo>fJMDqG`ln%nHa&JVV z9En+sH@n1Rs0Nar>?;fI-Ubg}eMmTQpF_y74qjK6)2M*3llaJE& zLWc5G{pY!>h9P>G?@x2-+rwAp)_u3e_5@YI=VRUmHUB<@W zQTdE+C4ceApIHJz!=MjSO>}G3v25DHMfs3s-C*@5Q$=`1_!is@S^@WVh9uP_yi$Kg zNTJGgR(Cau127{ZqJ(_#1nf;1dpB5$ghUenqX)RzL3PW0%R(^}I1>?PG!qqPnlVdA z)S0M>x+*sWAKKzcITkjg)N)5^ZPht#)n1&?i<72j8Vm+3f_tNEK{p&PZ`oqzG(sM{@CU}DL)??&KnLh_8gv>$Y9t+DdS8mS)%z-PQp1El zlqgP)x(?SJJ++uMk+P9H;GG7eB0 zZyNjpz^{qAXE6LBZ4|=Zyl1mhI*-bFdaEoZt{Zafs`ATMKPcbOo`?HQ33_sL(fA3v z4}$_P`ucuk)+J{scfP!$)Y3N88;J~oG_O8BC3fh(cV3w`6CrwvH4P$l0zI6u?!mdd z8K7^b4W)q{n%N5{Ve}USQEy83@JKhMnxsy*_k_7BS6qXy9jo`k`p!A!t`e?PuU$(! z3C*uV%|cTS2JYGccfMGAiO1Rn?=Kep#cCqvjSFwBbIzCykFj=$t8oj6W%>eQCvsQ9 zWP?<11ESmwz8QdoZqVe4Ih$55LxTIMdYjC-wD~UiKQVIZV&(4DZo3ZIe(54 zMVT_Vc;cjz!IMlSeRGQj_v<@YiW|QxKJnnRkH7lrs6kyn>=VdV<&WayK%!3+j>;6d{82(%sUcNk;e>c z0HXjuG9ul_#}n?7Rl#`q2o6s?m-tN1=^v@r7vEAJ<=DzfHTI}L2J9kvhc@ZSU+BCP7$dQBN0`}3f zQXGd>I82EW67hTr?DGXYkH8Zuj-xVh!-gR|7w{bXmPWdYYhgw7%ootbS4)l5szD+m z2n(Wl>)dH7@;LH^PIcSFAwsx(TDeCjen%%L_n^m?(B6`Rcnut-2OKp-FJh6vPFt9P zI-8c!BzV-F@u@@Id~rTIgva04kNX~jqGUQ?`c{JprcGx96V+f!4RePGxeFiE9~4K| zZ4g4`v(!ad^PTb>bp=ewqZiL{8V6$K@9);GVGh``!R={qNou5jw1Dnh+e*w1VgO8~ zS&asq;&2!Z?kdA2_QbdlW$!n$TmPX&Jx5U(KO{7qzh-%1Qu}a0xs2S6&C3^*WGv1v z9$na9K62)}WAiTch%e1ohG91vU{6%q%Ae_$!SZ(@6NuR@-kcb3j#jy}K?s=z)SMK% z2~VP-ID{IcJJr%)-JI>%E%){MytN1)?rl9~Jt{)?{aRqGF8cU_n=?XMRXzE^jL9fli7N3D2?%rYd&$RKrbuD z3;X8f-94_*q?9zN{#a@Dl`dihm`ER^e^+Q*BUYU`N7@-$KlJFQ zDPGONGy55;-MH7wLliX*ZhlPHLb?o%LcvUPP~&AnVzRr*$lWki)lzqmjH#b6tDh6H zg#Lu=9pl*Yg$tFR>XqN9%hXw;Cn;Ayn>Kge+><)<$&W@>MYcFJ^V2VdMN09=;bSL% zTvj}?46<1Q-T5`-swHOW|FeDaY=p=x8LIsoFTrNMK8%@|hQz5M*r55%p9_-mmGYPJ zr*ep9QbJv6f+Q$6maSR1aoe(`3+XTN9pz^%VmpBVjmrz@1YgXbiK>8ZT8;5=;(>Npxq}V`yALA0R2ONZG0Ue*S}( zYieHBnUy`t@4qS!lzq~dxnBY_2Bh>t7K*s0$FktM4QX7UnBu*L3FV${L0b6_%+SA6DO=D-sQs zf0hI2iYBngO*>b+mt5;ND_6vy>RSuLgp&I0tlx=hzsx_o34SqZIQX|&77MgtuI16# z1Dk8vOg3tQL?_1kLGjgrjg??_WeKXt%1Q`Oa2@2WvQj#?F*iFYKYynDuI#5>!Awpx zKopdp9Tv@7ykqz3@;OFD5yC$ju$cA+FC`#vua8pyxjglmbK8}(JI_T0QP+=E{OL@b zmR4(Ghd(=7+KsS*&zOd3pfWIPLsoUZrbbiUk?qC2b~dpU@@R;P&ia+Y6cwKvLCp66 zhX@JeJf%%?`GwY-+9G|AwSvlkKLd1d!B>OkSMsVF`|-&o({_&M%{oK1i!FY^WA@V^ z;WiBcLNT$0uij!pNx#WDbDi$;ih#Gk0dj!XV=_@a<5LR3 z;(U5Q=8W1~MjZS*S{DdT2&Ce5h93d3>pQvt$Uckf{{M`zm>ML!NsL7ofRNm;%5RF9 z_C+$b8?3>V-7mbbW9Qm+yM+GG$lK@;>P%%Q>{4Z`^1HD6@>hG5NBb^c-p65NI{F7- z$_aL&12Cle1$MOKc7v14&NeXhWTUM>EryvS!h!~2R)cGzdzC9f)?;c^u02++QRA$+ zPtI1Z35NQ6In3wDH;sb zzKsF`Sa`5DjC*NT)%Z8W4aoiVedVvTsU7|edyB5;|FlW*^!|4YayzT@0RH?jhs^um z@CV-afS2Q8MW)T{yT*wGuyFvVHc@H~rHGq zkMx^9PPtt-d*;ka#Uf}#*Z8*N;dEd7nGM!hT==xtHcHsiU^bmMw=`6T*%1Y6ETN&PDJ;O$ z;PY4)SZo7L;>PJOD0PS%CjNYn#_0s*`)6iNo4<6|uaA_k?%!25Gqqc_a{634r=UEx z*V#AT_|EdKJo3rW{d$(BcDeG#yO(~yDleEhjE}7a_`4GH(QA6&&QvvMTPRpNQ_p5N zO!KfQTBR}qal~?|NILg8Q98$j8ySv}Z3ndLjv3_Nb)TI|*Q{O>v*PZ>e7{t5qDE5O zbq>m5IDLESaAAXJW-didezG3#1p)4Y#Y-V(09YiqMZ)6>zj|3 zu^VM0@=Z=>E<0>RrHAZJ+tU=qUAdrm&=k6`ZyzcCuUxcBk)KNB$N1)^>2*6BYo{}L zbWGEx+CVuzI2f#F%oq@0cjW;)2R4NSAjzH#j1UHjr!P&`ImqW}OJy$<+3zwOm0y)T zH1JcIx_?PO7H|HQD}GSd5!eWz;!TG8AdFuR_?jW(mG@=m+1kNp2a+C~tY@4o>$xWd z)y@M)07LsHEX6dxK*^=2lq%&1{OzId;wn$vD@gTm^}&Km{cplI0?WImu%Rj(j>yC1 zaMWcl*`_<%I*YrJgB$e79V?ht;k4I((|^xS`7hCP*qBE0E-;pF2lg#-0{B;RY- zHc08$t$y=##VoYK{%bw71B(<%@hp~MCo6XP0K~=06Z6M~Rx4I0IkZN1?9UG`>F)r3 z0c#WsK{vieA*dQ&bHflR1v3cvSEhWcGynNH>btKAj930GPO)X*KDtr^s${WaVmZI6JN~%d*RX0Uk`SsU~ANoj#g&w*SSdYs9 zxD4c)QbJ2=US~xRp_6Oov2Pt&;fBJ@!xSv9;GmlnB*jZ&2}2)EHwis{R(=&|s&tr2 zGI|wAI&`!f_NE$<=end}RjfHUy16TajJZ_}vd%6vPx!z*msKu8Nlm;9oqV9LOR0-6 zxyIrG0N!UsDJ$@(#N6C&nWx6fr8#3$s72doCL(@ejgxV>L*dp?2|}64$<_d0SVTBq zMTT1QMMy9`RSj$kcMQI|*yqc4ANu{y_PpF~eUzJ2U-!w;`@YTVKkYNadwWS)_prR^ zzN24XU-kNcoB>_iQ+eq}A0AXX^cmy&rOzu4P?XIQ+=-qu-C@59RymV&B zibS8kXh{6R{%0>KS4$>k4G9P+?K-&#YjMgqeS0sK{pw%ul&zdn>NmgLCRIsGOsTTU zR0qo)@jhsY6lRqlxeu%Xtifm}WKf(4E+fS3$x3@)hs9k@zCH-N5;z8kyf$Vpz+n*5 za)wYxQL_B!zVa8<-9Py|LJ1Fx`%Nt^Jw3R$yyGfOx)=BhO}X)oTrly#%E0HUIgYyk z#~$`L=GsQXF-NNga>E*lop=Ag;Mmi^!)w5B2#>c3scLRTy1P1q?Q->0zXe$5ee9R~ zY|%$oX-L_)jzaikPsK!IW=L4=>Mg6m6W zHmq0K(ZUld!L#Ww8H3wSAn#%Es^*9T(@6MsAl{*)19U_JyRn5mA`Wzl8LL@tHZp>Q zALRe|zJwE;U53v!KjiwP5!`f%kuwPbg$41VJiD_U$POCAn*DOE7Q?u9H`Ts`= z;=^WxV-mz?J?sKwakd=`g6=HL4w2zYMCw#@Me^FB*FI3L3@U6_9LQ#)Vs+2_>v!ts z3XA5BiH@lI0T2kt6C-pxzOglmbQ>$EaSAsc8fcnyK>wR{+WLSRQ(+!4-OjpUhm=7@ zm_Atc%}Ou22kpCIwAKilomR6OI`_&zSKCmd*#l`hT3>TFm8|U9PlLjeY(=aLH@#go=IXHeR%lQMOVHDfQIsPXB|3d(ieGJCWie(Oj zHe#-HHC$+(6eq@i8-s!S0x#}HE<;QA$23pbNmnV=^h2y=_|-j2*DF5t%(rf&gKhju z14Bc+ifa|m7yy2UvB+~EH(}T%#o^-MYY=mvSGx#1aV^K$2 zd19;9l&|>usAVI+dD-(Go#&kL@~F{k!;`j*+w!(@CAV*f!2yDDH8;2Ipq9#2DPvVm z|KgH?!>-oWPZn0sE=y1J3~;S)Bdne=JhoNc9qino1WS^VKgQJ{BX;AmQ)ZfB=w7wY=UJ!(*X{pFtW zD-9Vvb@G^sDU-(t5%+1Ta^^Sh2g)Zj`N7&Z4m|I@`run|H{t6jWgI3OU&qe9;f{|+ zY_3H#eaS&*82VrAu+`TAnoJyZ9)I(7zWJ#CqIl&hLSG5b6rK7;xl%r+b4frzNmj*h zYPqLe>Da#hPu=DDaOqB1$cyi#B`M)?2|HIZy#Re*#{E_XKZ}om@$7JFr|h*OIf&}Rghs$$EIz)fN?2WI*%^%Y9Y2+7!l(`#HE zTf%ui(9AW!6%P?>cW?AiYJzzb=YSOK6^w^0MAP^X0BdQmwqB$)L<0wtCBSlBEWBMZ z_sFq3AD;Ui;hCHHx!wBpUvTp1U!PohEDN-mIBsCS{xm8fJ0Rl4Maz#JT`PCW>zb03 z**x;4C2QXPdbvC>Clh0JwA>Na=(@m{>8FmB&*L?e^4tsUq9ICbpM}GGVVeaZ7)<6M zdoc}$Noa_55ri$)BA=CcE$;O6!GkF=z9ygMF$Ib1w{PC8>!SSeN&QzH({%FZZf-jd z2$7#qN7a6?+#o+_h6dea$E@5+Yw$G)8)I;;wV32Jwcjir$pEp2d=Nx-4-s`q8%ON< zfQIDeWREb?&_6fzFaG)mVMYDq%2BZ~qUU2Z=3{`K)B_g#n2*-I9b-1|q89Vv!4?z! z!&COEp^3_BTUbyi5h!Mi8k58ac&;t1ax}*4NAM?@Lx3e#H`iHA)HdZ$91`TZ+ z^U-4YEarn`aS>4;Po#-UE#(!|L;3l^Df!fISk3fUC4YR3E)?E+d_q`MKS#=_?V7Ot^^jc|ir-bs5Z@6dkA zTh-OdL7d;F-Gy3OSpQ@FRXR#}Q3w%yRXB9;UEKkPx8~2;X)>NNqrt&30Zmrp>EOk> z_JmqE-^8N^lln4HI8#`CoOBkTd+02m!}@uTxXqixI>rXO1Uh%m@eWqz(+ql|onU?( zIGBadK`OY zU{TS)SB|yrpFOCkXi#>4WkdSCJ*S6HI5i%rK)9Sdw+sf{zs8F!af?pG(YU<-Yu$T0a=@PPKtIFy8DFU+rrHuin>(!wVw_d(Bg` zFkfSIVQ?mU!+tZcgZpO}4;fON-M{tGodb%C2kbohF^6wUZ0y!C48E7sf7x?-Vp6(&yl-j#`re7XVv>3a54V2ZF*_!*yqo{FFS~S(jTqen_IIVSjMjiRnBR{G zo)uGEMKA_wh(MWn7L3(uu|OIQ#L=vNzOqbw`ys`on{>A{6BS)J-dA9aU2w-<<2B7$ zw&gWUkDyWit2Kwk%5rqRu>ejohhW-W?=y(7>Y^RccGjCT&0jcOEtOQ{wz)ih{_;uJJ*R07kc;4S>5K^HRqj$!>(Wa?B2I;$z_A5 zjk|aqw9K`9uj?%R%Ci;Yh}l~mk!E_TBO006jJ(6x#!HqYz${OMK0?hnOpi!c-DKZ% zU!IT1wl+{LqZ0u;DWT7y5hLI3_0)=I5|dk}u3oXSXZ6ssnqI3{u1#*89RKXfx|w(P z?*8SM-Fxqj?a--H`$eml_I_j7$aiv{U;SKqyY{WuKDR#Str0`3d#!j*nEke5IrNr- z_h^HEd_a@4kXv88`GG5GUra-MHG*go%%AXtM3|NuPlFg;LtK0zo;CA4K`CfcFKw#G z;^?^6pJyB9OPKV4QYhUTD)4+I7Gg(OTK!7}d$T{N|A{i*p_QpDc%U4nSy+F$qU@vj zIGQO7XeTijOXz7QC!D->3x)78XfO|Y=V`8Y^q7k=dBRd9RVl&Q2}7yD3xi4yxFO$4 zz$BI}TQe7M9+eS*la>2oK;8G^Nr5fM3uK6rENudhCga^5h*h!O2-@6?wdCsO6s=J_&0hiKv*WB_vb~~9PS=nUIld6TS*$oY8$<}>PEH(A- zD|KN!XRQ`mT5(CewQx&k}}`jJ7`%< z(u!ewKmF#UT=>MmF1`9BWWH-~@@eMNGa)xW#mS3(=~e{%ZIW(?8?E#}1}By$U}xce zG;Y}wm^TPw^Jx7>ww{LN6_nDAGiT0#1|k`NwY*y0ari*3@P-xeC0aqy(4f+SCj@H@ znhb7D22UPf0eghZ42Tjk1?SnoZRp#-;R1XJ>?dP2wBc5)!5pDo05Bf6Wed72vZL3B zsJXw);J{plsk7hxA`IdBzh<^UI!A9x3bT z807uvnYW|-N!wC0UXb*ma-6N+@Hwb(Ky(3*vb6`~V`8(RbyE&seqd}mPe#zNqm1z3 z>+GA+T1;U9ByyfDI85d%3_O^mX7bsrFf`s}ImKa(m%z_ItuRFV%L+rWgOg~Qm@|FB zYulE#ZPU5?D^%XSeDTZ9uF5mXPm5iUp(5?!`N`IOKY~o)!DD4eE-I}8?1b`3y4Cds9XTg5SOmj3hn4`~|vF)R+_JoB*8(9h8 zS*kW?G3t&nsA;@b=gd3A>bylTb_8#R3~0(#vut^e9$rtIuiu~1IwMu@^pd00rT6A% zx(&}6xxRCTzD)d0os~GB;yjP~iBUty^{SHhA}oO6!)jxLxb+EKamm=PXXt zRYO{Vdji}yrueGjEl#Wt6Ta3tzXCKvFU%Ep2rq$W8J-Io^eVTNjA4&B0%^n%!Tx#d z+a&hw9{ZNb3IhtJTiqI2kvWZ=RgmEjul(XHN!Sk>v~Vt}YPp@#q392%Kn4Zf)oB*h0)mD4)jz zX4Np+wGRiwoH5J7eKnNAtF)W)wuLBf&_3|hT$b4EEir9 zuIWBPzDi$iy_mJpwn5e0V=I$Jwor*sWl7C^R;at7svY_EICY;ecu?I6<==Rd6Cq5? z2=@-LiYP1$);)x4^=oKqyO8+A^wy^Yxq9vD&10V&FVG_4rI+fGy0nT&Z5JJQU?qe-A3U7Kb`>V3SC!U~QwcOaR+0_8Qtmbup5U|uA@CLDO^H|ZB z6~FjnG~cpsM)vI|lS5EK<31^sS`!m_DbR8W*K zrRLixT5^!x?-(UcHn-B`>7cpQkyhth@wHo3NH9~d89&QG=1h`q-B8QKD3xyL(5_8- za+{NaY+k&fx?B6~UT50U+@Z^{vdF1Tr6VeAa_bbhsH0R05 za#VamOj6p@3`gUz-dw@gn^U2Vm`bYYC;+P%b&|L<6 z?P0W$*od4pYYd%(q$y3C7`i(P!6F`uyums7KPvT9{ExWNNwxe#y=5K?f^7{Si#gv+fu)*%s`DI(J8 z;AWWv-rA*4ZkL%8B)4gnmpgX;)>cuiOuCh5J4bktZh^ki@mvy>-+3^DX)7ZW$@xqg zxrB1zwAuOC$iTpE2*O-pbj#=SXrAz*P+7%e7Xqmi-VmeFK8tN*&kx=iz=+hK4_|je z&^6=)(|2h0})qh?u?4MUSD8FE! zRJr!uch^pP;qA9y=s#*y|7rQ7N9V)dmXr13TJa$4tplb9c%K_Z;FgQIUt@M0V zqo=IlnD5oFsZ&XdHF`Fw!|2J|0X;`*^lVax(Ms*Bf^<@8e&8$8rR9w&@vMyd9cnNmt==aM0SZypB5i^b9Vw zuL=tS35+jz9Yki$x(2>Lh*7eDFPN?@Q*{idw#F283a5c7un%{}ig%=kbNOzmchc~#)=5V@YMn~F z-E}gPOJmbI1GPHfhvRe%ujA09odpeb3dtvUbp+Z8YFZ~)s{{GoLZ>j=m{=XNiA|!p ze8Wy=l5^r8(hB&^m{U+F)V<1i z>Y;iX7jM+U> z&uvn+%~5~@FGVo%^f4A~V^ek{%A_YVe*iHyUtdgWSxy{6oDmUJjp?ds{C!uq&s{Zr z^kkOGKLS}Cs}}U_UpFEsP^K56CS|>_Lzv;(OjbIY^5V7Req+$mGx_x!)cpR`gq7ds zUwcaVtLMBJyZ|IN>8m}l1wpi~-pBXyKJW(5S>|+aZKZoNmF}K;M~&`H>r~PsY8{`Z zb(p;Ic0l)2s=WC)G--#)o7z_ec}0~sUseYJEwiUeQ^3XZXgOTiDhPX1NtdgAx?1~$ zu3iM0tb$BB!z;zR0uU#&2Hm*)X;!zv>BLORCM$r=AN}`AM9+q|LEkYM=U25xze5Hm6k35zfkfF)&@_@VTh?)vt77S(DFDM zvJ)5=HSC{&CAU=o&Q=~OA7p04kP#mFPyqcg>Mhs9ZO?w ze$}rkB0XYCr``jU3*(D2dY4LlY9GFD9(OFOwetP){~QkV|JKLUyHhvnva;x8udJeH zrU885oadA3E`vT<7>-Q3jP+tt8SBuTbHYE=VRSL#9mc2?Z>^=ZBNMG1n%ByM)kqMV zwj)P3)G16#;;lF~t)n}w)gcwS0Hy&FSRHeM!5quDrJ=t*)_QupzxOouOQU8ggUOtV zK!?g#km)$f9eD-T(&O-^iO%F3f|M66a>ZX5q|Ipl`z+eN2xR?NnX@(ThromG8-nUV zA((uwV&5#dcc3(6A~vVV;k&LWu zTV|oeCb_sg)^DGXXp@;swcJGMo2O27X?ObBBcCe2y_wguUom^fhvh=~uD0#B55I7~ zzEY6p%qgCe)2GA5x|cHMhP^Rte7+c5Iz%tfivHgHdS?xK^X00&ZTk-H)!IW|eK;LE zqLoLro8?JQN47eY(Bo|TD05-Qwq1n-v&ZOK3_(64=-EL@VY#rNXEqp<`79l{&%$#! zb=PpeyUL&A{Ta`g9Q2L+XM%B zD%25m%%KS0s=Q}GFqH1+F#U#a@QW=Y)&6u1eg@N1!UE36td2}7{dBB9%@bi`w(Lcn zmAaqNA8!Z#N(dljwZsO0Mca5jAaz$OGD-loV5u5CtZbdd&lv= zlw-8{`C91PSSf!+`jW{NvZ00ZWzR10<0n5J^})Kzh?LDwO+xYwurU_;-kpfeARsm?Wj%f@>6GVKS|mG!_TTOM@$uas0iXze zeFC{;@7w!0+^x|xp_X}C-NeViw7;p3!}HuUw}!I~m?eZcJjkiF_i;qk$6?uTNhLAa zTSt|aBLyy@FtXd$Q6tA7V&NfE$+MO3F5A1y*j7H9wn*_=CQBRF4OeQNK zji8ZBV?03hOR7;v^-Crj@gGIQFR}F%csu&hT08JPPt!xJmQ7rNw+pW z6Pmm_D}}lYomp*%=;=T)jmvSmQYf|JHVH7W`$8DM&)@x^XLBOVuQ@%ps&k@XeKSqp z@Vy;eC&8ZaI-aV&33hPP>Zt9oc@u93{_}2i-W2R$-wxMFtR3)S3$BxbMYRy8_~|K|2>8n(Lbc;nt1>GYf{KtTAB|PW_uzRdtJPHsCby!gwz0Y8+@XDb{4Y zAr7JXZ%o!zA8&Fnmvs~KyEGYPJT;!nI&TNEzCn|9`*!3AtsPo0WIE$I?!Vc$lY}~I zJN*$E;2Ob&#idXS`bmZ7S8F?Z$ja}?2S7_2M5wa_x&iMrQQKjQQLX4p`8Nq4gG}o*0dd_JJogyMq72KjjyA&!*q`d zPk%a1)jd3BqmGNi!*$R9;qJZTt0=zy@jJVF_XZM3LP$a&5JEx%1Pl;D01-m(y+i1T zbO<7%fHYAMsUl4UMMM;k5COZ`#U6VDr72*+-bn7``#xuO_wI(^^Lf6{^Zott`}pF1 zvNx02Gc#w-oH^xvs2`foQYCvDSy~h3XS@t2d=$GMAbEZuZ^vnRsBv0u8tzH=r%@sZ z#4y^b@!e<970?HWroL@Ndy|kZhxvy6i)<6H?&F>PeP1fuM3n1{$C^|NbU>RPR+~uB z7UnCg7NaZ1(;$(2{_U_g#K3>N(y`ZbOtNhTWLJZ2dEhWO`@xBWrOnKS0SaSUgq)Vb zO!@%!(?~Lf`ijW99~TNEpvWGCZnBT0P%txle>t`#X%Qe82{mQz zT!oubvP$b8e9Snox448LR19OUK!GeFf@@yGWQtNCZ5hoWpK7314@DplrHsI2OD87V z)(ahP1~ucM(tvg#=%6sO21zISsV&7I09w*5onYf|8D4PVB}oO9APy=4B+}*iOqNX2 zwqEq6HLYGPQZE`W%AdWtO~#9dckTplls;Z z&qrvpg5{Q?XJF|RCAaLGAZUI8ZRVKKc0XcZ>0sYj>L<+U$5&qt6<@HtK|iQTHRKbu z7b@fXqh>YyZBO<6GwS;dSlpKaB9t?+-NrQtW+rnF}1U(}{*NMBkZ;|WU#{ai(DAR~6myO8~Rq;Zwp zDt)WykP=l`N`S^$vKr-lp>1!g?O?gFytbH!CD;QSF|>cl53?u5*qV#*-0;5P zG;auBQ?h!7tVa2Pc7J+0Q25lmRmiQ-w*s|AP>gEJ^!W=z{b~)2owg3gCRhkU655~v z`EJ@@%o|K6XgC_u_jpzb44qex#ho{Guv5pV% ziu6FOBR>++K=?!I?bf@W0KUTUTW`giS7pAO3GA`!GG5L=8Ec+*bqc+j2+ivA9%dqod5&)`&>wQ2nDBr zaAfGyZMRI~YPN$K<6|T*mT?3VsMYSk(%InbmPi_S``Zp%s37b zhpmqsBB2~(q)%pVAG_;GB;JDbxTZB)wdvO{cU*1CqukPO#D`~t?TGl3ra8F3_WYc& znGH%VLaZ_$DnDWX>(i8ZEZ_GGZ1#|4HC_59&WT+AL9|hJv;1~^52)$3t*L%UZ{>cV z)BUCN*4kzI;X6O~BL*(ylaK9h%mR=xs-H1VKf`?gC|_e5^@9Ql2o1B_(j9K5S;3}D z3|qwZyfo4_LoGGm*wXIgGrYp7yt7kY{UXuKs;8UeaU@!OFGD3fw5Y1&ZG7nAis7OM@B4br$-ouun9b_sv{{6tj=MUO?T#&}J6SLzCq z!B(3vHO`EXzghJ|_haq{_r4A4e%v6`hWp|BG4+G{aWvnL8|cbwt>}@B2n$X1!~Up) zrGI0tTggV0my7T5xBPuA{$9P8Y-j4d1ALDt+gZc1@1=QA?;TK&=b>Q**LxFjb^@mi zZE|RgSf{Dh+(+a_^o^jokFe*yf~-t=vuHa+we=OrJNV9=n43s<=0tAE<4MH%IG5Ln z`^7p7B7^U@Vt)}Y0?ZIs>K`e2F`lq3I>C`Y zOsFO*6@vkv5n;zRGrD?H9`Wn1yE2In9kOzX?>qdllT7@{;rl3?82qE+DyC!2I35CV zIUlI|X>3@Sy;s?RBYI}rE7_fzi2m+yN)-A`l6^uza4<)6sU<=biO zW&QB|RM9igSEBBxab^19`>CR5-~zs#R=d2Pwa&N(i>WH!u0{akqN_f8Pnj3h_*$SX z^+&$@?~!W(&q>Vyc}}o+DbCre=8Nt(ioRh!3BEhuWxqzC;`D2e!1Yp{rsJ!Y!{E-lh8K@ANakcas=J zZ6eF|bIIxl=S4%4TR8j%U3d=eRJ(wG6zM}YtD$6(tvwWGQlz_AFQ))Il{~9zS;R)q z0Y*`e#tGFM)a=sJC?tHMPyJ@UZpE+{K-Rnqd&GJ4Pc^G;y@i!ITh?%tul>MAGE%qe zK=8SA4w${XL7;Ruh%PE@Oxnx+q}D7V6(%#jEmWAopXrMi=vO|dIHaw39e63aS1~6W znP*I~S=!$B1mogF#y76fvhDr%e{hrr8J}6ROSkv*=_OO0+l79&8EKhBLMk#X z367gy>;WbkjefVjeW3#c2+kRzMt6q z&B?j;gA-gw=fAC_)9LO)4+4$IXbf1cCJ)pF)9#5m-wr@9yO!tCG0*yk^JHLm1r z8T5+#wLGGbF|hymlfv>KKiI#l=ZofI6XFFQ zufeh3IEy0L_-w`Vs2I3Fb+jj6b3o7cz2+N8?XM0{EZNmj1(`+k*^Z{P?s^Ir_DCBO++$L(O(AY;2kA#%nIxWqVWVAIWPFqAEpu%^E;eTv<7n<$>VJ!= zW;NZ^{=vFg{$B3dvj0K0uS72IRK(zh!Om+ZGZkpwblxM8fuulYKp$D)1}s3nRRC!( zS^CuTcdj}ksy|{B$1h)A{b#%i{fx45F%epRZuq*0 z`y&b>UWh1)@Q*BTvN?0ZcSIhDJR134dn63f?I8^!^Iza)!LJmRfiNX{=Y`fK(4 zpTHg&4{s!5Xbam?qN6jBhuZ3WbVdxKjRNB*saRLab6hfi_|Thg8a90XoEG)#XJ^-M zkmIj1AU}V=z-iM4X5{2#G;Gn5=o=u1Y6kS47^>qIQ&NXrGi_Dgxa{stYGg!&ZHr0BzqZ#Z zT*K(SHyZEi6a4?+y~tSBF;X2Pbz-R~O*uceLR+(sIoh0Q8u>I@*jSN|QORDr!Z8T; z%&l;LrGiQ?R4S@uV4`5+vww?U;OT{^q9|iz;g~4oHzUT5LYjd*o>GU61`7Lu4iJ69 zjUzfAY?j*i-W!LvcmdVK{cn%CeMq}T4MwdRk_#I@)@C($^k?wCANv=YjlDJw#YZB| zBs0?lW5RF^%x!~SMfrQ_dUCv;qJ1jjHF@ScZKH_Me*WHn5y^ah;rGj8^u1l)tW_+1 zk=Gq{Zjov1EP03*LlI@X^7c3zH;KPOqU-i4y?aiY)U(gz+386&>(;HAlzz6$s8L-y z=jC;-nVwdwb~*)tlw2_O%OU=6!Jn}>UtDi4jKqpy45$(-ha7zFoUva3%ckTnqfk!p z|Df7aMvhGgBj%!gmYx#4<=dl=`F}tlQfbLTG{45_Zmt#j@ zv`Er(c6UK2SI>!`BVT~CA<=(&^XBQ<&C^nHR3db2ut`++wtj#24uPj$8JuhUyi%`K z%S=gHK50a5*9tIH`n2LdjI*Uft+fLt1gPc|IVDek0+H#*vLUF?EGqDmHy3XS5Xvvc zo|7C5Y8T`gO~h$Ee)w4vF~$WyFn|f~MRqdzG%md?c~H8(O*0%=AHKAo@fI zpzHR`B05<_Y{{#Uwh1 zyseTrR!nRXXMA+s#xsO8p}g2@h5n(V`tdJ@>H|F^W$?>jaJHyku#r(0Q1bDDeO{YG zamMj^EykAK47%aNY70bSy2zl7m7l4Zz&j;9U@q(#@0-J6tEe}D?qp--3UIjRZ%TJS z4_JYI&F#={?!wXq#5nmUc5GE&Vbw@f z6N7UBC2aAjlGp6H!(G;-xx+Iw5~{C+=ep=y)w{uI0eR9;>2-Y8+H2`}FmYLO-CKw+ z$XjV#6P$^9HirrD9(|B}io-Zx#m~eaNHr$zU@f6+kM3OG0ywT1VH*i;b;0f0NYPMh zeW{{EYjn`aS!hOp5CO6>P_c%^m6K*cn!R zAv-}lWR$W^@J@IY?kuhW7nH$9M1-`{M}f~7|eZj%zXg%bRJsyYw7G*vV=jYVQhQG*ayzd zHd7vy?~044(RES2XUr;IN7L`jy@@(5cwb}Z{p9mA$v1}?9tYmavDQ8u8Zy)1$+>2N z?76m?%QMknGy9Ek1xb>wl1p)s~ujIY*$>Z9O&S^U1Pn2UaR zUj*zlm(PQ32rV>q0zV_sh~pYO=Z*~U3!Q%FodRIg*)<8cLINd&W(%mEvB^SjAvbEv zi~m9?f=>EHWP44~K9ZGAZP7Yutv8>Nal|v0jTUsm&WmTZ6*1kgIbjX21`j<6x}$OX zOo1Jm?6?-#kSEK{30;CU38X{Qz^R4wDR-GuSb5zZs9HdUjw+~4$66fHmV5zF4tGN{ zUk>z7#DeEUBks_TWVb*xuCMy)zeSdO8>M+K$+tzbOCmM+_S*TTIe)F5yZR>6ylJ&@ zE=qp&%_(^%^5vH+iNw?AL~7+Xg0&WIFg2~27Pe){lFbz~luHiVfN>^aT&M+sabtww z2UrXJYcS3P_!4cOJ6maNL1lwo@Zzz9*!~S4aI|+27vN$}B&?E-z!6Jy{RXE*`3Te# zB`5L815DQEnb*%l$o zFJh}!LFt(6tTceEDaaR;qYVHNOZz%+%I))RTt0QI4EufF2GO>(RJ6Zq?j;#Ghhj%R zjyihmjps-GB#V>Jof#o&-Jd6-MV{Oxf699Rm}O^(*Z%X|TAMF950`DBZW|`$1$u0l z-Qa&+V>ZB)vtC4$en5BNCV^`9J$ZEL55`qyeY9Dt+W5XJeV^J~6{v2vnJUKu zhnxCYZ?!qC`iT$4)2zh#yTYt$oxi3S`}VWcOH9BOZ=DZ%TADl11{wzZN8@V0L??80 zA5Lgsio}y&L7BTXAJYyWXd+^thN@L%X0weciHHPFv>zPKqa}872jR+f0cX&fq8MU> zkd+bp%>!`ijqc5{!g|x1Wm|q;!=I8`sY=C!l-vd*mn1h?G2+;XuihB4yvbFv{pe{| z53C^)`?s7r&S)8o$j#D?527M^_U_RKu(%xO+qe7j;A?9iYSb_g87|&z)Z{1*Ez%3t z$mzxk@NQMaflg54Y=EIPunz-|lE9M2j!xjn9Aag7aNWi^z`MJwiUkd#%48`y07c3G zfi2i9HAW?Hg3ql24UDm(UH@t6#9=or|LMK%8?HglWWupgLq`r8JS}~Chih+~HF1pp z)eoK;_h93UrM?%0yzT1hvJnzra&$do8Knz2{I?K&?W z`v@O6_Db>rfDsmII+bW6tsm|teDdAis`3(pIy~AZKw{klxVg=u$q@jv!esI(@U{*c zX~AI=CaAfk_=8-?vN-5?ICZPItlgK%EKH*NjKP}G>k&E-&sRtV+yjpCT9#3w061=T z))&wh+iG>Q;q1mYw&hd*P)^f+pSxArJ3o6QOkgHAV?>2 zqFOCs{&+C>+!JeKEyp&EMWEh1_NmbeTw>`D^}!|eZ7g=SecE%#S{xX|qcFf@=jMv~ z*a;!y0d@jtRwOGd3{;t71kbVvc3D}mTGufXuNygPib&A>^1_S97HZm+;?E}@WsigH+9|g(BtdP=DFRQ=Cpl|#?(U&(%;AW zBr}#$S&f+Gw$1Du_-`@0D?X!8B=I`Mc`zg}oLJy{(10i%7)T$ulrkg$VSH4{$w^Pn z){n_8)APnoY<}0HTH)Pe+x2PFt;vgT+`8%=Em-0&xL5XFa`cvo<2T&4@Qns9CU(xQ zmvMaOR#ENIU;QW5daz7{d~&djS%tHgz{B9I64(QAq!Sc6SB5o6<{*kP0P!3+^w1OX zOLx3b(K(dp%bqhHxa&W{>Ztp!1)sNp45M9^yCu*U5Vs1Q=MwL&h|*t;8)1J)hDXm% zaOM?ch67*P#hwebO3ZGEkZ~*Hh}o_hI#x(pQ4CaavOwl1qF;#nC><0~1@UoBa{xO- z8KFArC3TUnih0ee_06u-Al$6quI~07jl|R{SJ#h7h>WS-A$if=4cC~FM#{9D&W84W zc*OQOB@44V1~l;{Hd=)zmWdU(fM7fp-W0}jBR@xBe89TKGvbS}&#sfXMsw`5t9(G? zfc47KTRle$Cv;mI%q0j(b#?1Nrh<@xuhM`yM{%aVlHAWlOsI;N~DzCfsSNp zo|BTTe=N^WpE`B+=C$`dc*~5Nwmzmka$o$+xNDCg z=a($V%fEBw>KB^qtKO}3qpS->%b(1wb7TKb*Cn6FFfk7-?-65SQXCw{-5dMj6n02F z;vZQRWGQ0r(a`yc6?P!UAxYf#TO6jY!e4YDha-~l(Juo>$3dEc1k%@EbTQxO^28S7 zCVfKiM2H2GO77Jsd_reG)h1{I8A6C+77Bs~6uwK@L!pkN^wh+`*7X)!qQle?*Xg8dH}h#tkNrv| zmxc_OHD>Ah=k{xb8^^YTX7$hSB4G6X`lvZ*#*sT~t=Je_Yw>Nj9Bc4m&5q6MHL9E{ z!oI5Yqi9a^+zx!O5PT2?>?mMgkdo-}(z)(zp2f!v)4i{;_+&m3$?g*$;Aq}ZH)Elc zeJ9Ajzx@RvZjnD}ZA#8hnlpLa_$m35^`Y$#kB>bezouBW??nCJXMDup{^;J@m|t;2 zWL2MNN*>Zje9ir`-i`6c+I~~dy756_ zZwmW(Dp$Z}r)lZQNOF%taj#T}*^So@oIFNvc9n>0ntP`78(9j#xqH_v{BX-HLc4Xc z3~qtp=EdLt(Z*p7vSl6r6QH3Qq%1TTpuf>FcnI;ViIXvN`SrO>#3Js_wP*@z)7{yR zc}OL!j~vLM0N*Wv786i6=jDjKtcMuQ<2am7$UnQZ5|K??ikt2*wI-k1 zVEOm-xYJk1c zom1xU=B*iR%vUhTZBJHhRWCdtDmG6^?a6p-m@&8 z8W|y(126PFCfNvl*4;iS6ep|h?Xgy0)aK99=je8y5U}%*)I6Ki=0Vku7Ny!W zwAw%h+zfv}HR!2?5d{oIE2`OJjCB+|x8Q}U?9R-E+Um{BRlz*51QbODVe4AA`m|J3 zV<9aBnreKGR_D`wdymQI9WXmg!{ADPgPcCvP%VK5U&*M zX*w#LJwX~@G6s~cWHW6Y*k^eUnOhcBOFVXZ&i*D@`)8kdy+*=ZbGh80*Q{3ZeDy@F zL+?IgMAqouy*lanUGE$0-W`MQ>-t8pr04d2eYW@B@%GA1@4SP31pZ%vHJZ+`CiRFP zfx&ns%sz?-RBiqRYmfW8hWZmTxWBn#yoz11bIKrVX5fzgga0+0aF#!Xx!Gm~&mD}J zo(^-E6x^3C@OFZ09>MuugF}2A@wioyI}os|Jiy9rUB`^Gnjt?&8RUQDlfZEEiOL9H zKzW2aHZ0pF4$B@p?^wA^{A_-YiZT6h93~?bVW9l}Cv)A_j~_}pUFYGC?}CjFW8t`L z?A8C@)wBk0l<^n+x9qQ!lUa%F<&7{;8f9;XUClNoj;<~bRLzkABq|)e2Isr`Vg(Qq z*TsrV=x!GQZegw@6*@O@2d5xAXniF1;3;m}JUW`bWCz==0iRt8o|dZM`~@ly;jcz}{Z^&2kDzxCGndN=L5;4f0X^R6t>CIz?n3xZKH^^S?-SMs@tars-a zT!3$oV$j5JwU47iw(MKbCZ6~D3rco~IMt>S#bm2bDg52+2}nm-hbq2gfE z2;Y3U#a|V37*4uJm`iW6XV7!>vGT}QCa{SeE9k~EhYm<{V*NKC?veh0d+rad2+q#p z#zxVlzH*D0gyjQ|b1Wb8Dg4`5Pgn*F@;?*)UoS6Kt4)o=npg_=9T=FaZp9S5=&~B| zLWP#eSt6rhaDlx*AM1zlFn{^-`QW%y@)GeLmL*9>gWpywda*7c|GOo>;eXdmlDD=z z=ke6T9|(%MHBLi5HSmp6XRyb2?cqkJY9pN0ZnF(`pbI^&uxdTF?RX8P7@lJqPfkxu z&8lqxSdfvajpRD1DCeeBKxHq#XXULMR!v_gzkze3)i)5Y&6mzza)&%5|M*rGnnEOQ zoww$pyVkv`51cl3;LOSW&BLcYJ2qi=X2!mSZ=C()9dpo}8%A6|^-CHb^C0sM(2gC2 z+g>VGxa|kqU(C%yT*Q`h(~6fNrb*{56|etF&{k&fFiZd`97LeMB}$MtT+&>qwNU&I z-WD$?-UfeL_&^T-^FHGBz&--Kkb{WSp*TLbZNMhcfpDaeIM;0~fbKf%ybfK=JhOU~ zW=l6e3Qx*$rSh+gdMihf_nqa}aJl;A@1m2oSzOWlE@967#^Yu5Ks~oViC~j5;fpyN8E^~Y+-X6XbZ2q4aJ{6BVW+!sl6U}pE!H4WVq{}L6G3jYQu4QEn8KjP=$cCN9GMSIk z{Gui>MF>VWD1-7W)&IHa)+Kk!cH-!rOP0+8EW~-#+j&g>0qgniNG=r@%{8~b|47EE z_&p!3Tm!kj4LW==XtSqkC?lWx0jGc||0&&f|~XefO^28*M0FF-k-Pg1fLrt80mH zFk+3YL`>xWs!L0vtO3pSg}_>rBDej0DPs6CZ;VQw+R?bK#;Y zs1t?hTY@&rLErxyJP|>*Hq4gAt1zV@tSfdFQ9SX2$d^0B5;@-mC!z&k!JGkug6GV8 zuGw?u$Wof7e>vA&KnF_BCezJ0B|QhqMYNHC8+^$tKW6Gl6I#>U=|jJlFUSwS6}wI& zN1t(4{3|dok#;>1ULBhT4-A@fuk;cG>Ku0mpxP0bgt9Lc)j5L#CafJG(3DH`?mLuPBG-|Ml1(xwzZ<28uEyHIZy z&m$C{$Zf`9=94lyk-ZGe3-*J36uH-+Je>%TF=C=fy;q(n`5flp-TLs7-NC2DM7$E? zg=)mLW@E_XQ`x19*st*xTrGD1e}2`2Mc*}xi+?2FG@C|imSFIH{v% z)$NuBYKDXb-u?gw+rFv&fl@_+k7c?^@K52sZso{aK7(zFSRt|>?8}%tDuqH}OtzY{ z#Ao$btQBdZF8-xn>SE7=K3r8L=J(4jFyxZ#fKCRy|I5Vwl}WJ8f0vU$sUC15Lx5C7 zhPz-wh$Mxm79#0u1S#GbqN-$X@NqE-#3+5ye+EC6t1sGq=(De345W!B;e6w!ud1cIffY;i5tK+5%_bB4kUlZxZBfO-tT- z&TYrog3FY9BYR~`VH5)J3;WcB%w0r3<!N)7%roYonX6{{5BR4nr@gBAmP3bag>eyvucgC!Bm(bFJJiXuZ$sAxoN%`9lC(FM zg@R11|E8vktmdd1U=1%doz(-cOIJK{FQT&E|5-#Ki0d=?SHf04eV(v^O0>#f3aPo$!L~Ly84d#V9Ct-#G&}_kckS9nb=+YTGrIz?ip2^em%ftjVXnyck;<<7SK)zM~E1XWY>k7tbV|Mffo9!G`#c zaQV@8JMwDx0#nbVY!>XJ1lSm!#y+AbHz1j~ZSD3x`hR3=x8!w-(%R{^7qYb*)!+J} zxcCbheg31Lpu!IysyBXX_|T!)Yx2Q2ahQ-c|B8I?%nNUdcOcGB56o@d8^ghPpqrXU zFdnk8PjqbTEDFk%c8+j|_Z%5xi1kLfbKFhc*4Z*vbp#8QXH|F3AJ3V%mK17r4n->s zTU(({qpjirxsy&t@sxy`;S57S&jl7N_IeH9&Hqa{sE0CZw5@@?{@+1DO}-)$YO?mM zeBTR&+OsD%ai;N%{Id)e>NAJ;>>(cJd#L|S?A=enz2qZk1p$t|8y&*+<9h|~Z@SNt ze{r?i-<8T>k}&=Y^kTa6cHuj3^$Ip73F(K>jn$nT`eAudF&_QQIT`2xDOW}0YR!&9 z2LJI|Qj+B}xME`Kkd|Ehn%pKPg6)V0Ik%4d0>p#k*)L#)Ni(zAwmSP&g>3;8T9||n z3XOJ)V!%6sE0O8}Z-MJ{qWD2C0|FGtc3mlfo2A=Ikhc7UW5wIP9TkL5D5pXD4a$UP zv_JgRQ^C(Hw}A$leg3v=YmFrAe@h;)K4cT_Tx@8HR5b-~3k$;Rg2OXTr6i(!GCvE+IzM1=6mI}q8n z=uJ6IPYwIxJGn;;T{bazRBJbJ8U6h0=bE-ExETPs_@4$u0H1#*)+7Pa|2pT~@+fuo zg_=j?(bAo<8q7gpc9(oW5DeI#Mnt+?XeEI{L@|9JpJFfBd~Odc7VDQX@7G5fgyjo8n$` ztaA=a5xTrzVdb?+8EVKK_Zz={!a3Usjy@p1WFpuv8Xt3Mu?k0_{Y!XK@fSxNkThPEfgbFOfl6b%yhY`0IjVbsBlkb|T!GNU2g*bp+6;{LWN&d;V%1&!={e|pHa zAC5$3CuL`51M=W1l1|F~jJtNzkmostb~J+85GO_;8J70}MX`|vtngND&7Xe#Y*`|V zUq$>)Gj3ZWfBd%9)y)UC?!RM?cy3Sbl=*kwwpMfqfwJhMCJyO0^4ts0&E1`mv46pv zXR;c#?p}Rw>I-+SyKCy;8FS9-+ilbq&6g;9>s!qfp05MAxirMh#hNh>!!X96eY3m5 zj1{8PB1{ntacB97K915ylJzmWFbcmdph*q!MfsEZKbcSSO7j`x%;(0uVb@(t^ZBi) zFlzAhIl&K`bZFC~dH-d*#r|zAuAMtCe@Ag>HnrJZ+hpgyvw7pd`6TQq08Qu z&VIw82fLHY3<6d{@L-H5z>pQ2)6r&BUgJGWIHa&nrL=1z&dUpO7f$TEh7J{TcRm;v zenRM1X9UT7%y+o=q1)6obG0-rjC5ZyT0aiE2I5ewQC%ju)C#P6qZnJB>`{U88yR;P zT2Y=Kktp~cwJ5^w#+W$nl)g7^WqF)eI?rFjtPdY@CdG)-Xjw0@MX+OJgSrHL1jjfc zr(Djtf{djI9uS3D|@4{Fx)8~_OY&L&J!n|$3+}$?6`m`A}Zrld@ z*0!4xwAveoH;S7wH7;}bU9sy%WW)~}72jk8%v|8pJh{Qxi?vQDYaz84&lwy}19!9= z#^()hLvpy5O_^r3eNK=gMfGOs-Q|go{t{WG0-ka>KEAnW+0r}jT>7lsAjT$(jz8g? z2p9cj@JDm?iVyb46OVidx(3Vjh7Ml4j4pfE{P*a(+$RIN!sPLz?;&;b_20-HGosJT zv14XGC)bPdwME*8wJwTm_+tjlLZZsr$9b;k{G83m5^6Hn5eNOXZxI)# ziR0)F^EuHUua7ZfakFW}`2Y@FS3#&V>`kD;;xpPl*C>U7%d=v;k^8afW2hRLVtpoV@}4sI?4x4I7BzP%FYVJ2NpgrTJ`fE zU%g{G0s?TCM*DGgdpA}R+M^6(R_wF=S^+2|q2u%&h&l`N<;Yh8Mg9YjTuG2NZ4u2q z+BXwX1vmH#24)sa$SjzXS2=0p`V zKYz@a*@iZ`aaPl-`tcL}5>J`(1J7e{i04m(gYer>Pg3<{|LrxNevRME zKG$8>$INKeDnov6_MU{F8@9yH6+%A;{|Wsp&zgNFPV9>|EgSl)yZ-hH?P;C6$?<`e zi1Q&EPG#)31muCGAm$r5JiwYlxzF@WURO`ob7Dk%4E$|9!*3qbxm5%{v|5!!FS)yTP9^!c7_Q%| ziFO_9%F>eGH2Fd&k(Lp?vE6I>nCQFPzuLO8+%Lu&J1awe-7ljf7L4n1HGPQ3qPBL7 zKUlIRdTXa++F4C>?j%1hIityEx`+%uOK*{T&18y2rFcDGx)@0Dday}F8jDLmC%aWt z$R;&a?)9hGaTvZdio>9m`ckW9C?4bg$~IKSEL0e!L4W)I-ZljMI>^^90URIDQu&m1 zb}${ej=;zD)8!_^CbVu>MwcM2$J#ywlQD*qm__mh28kQ}H(*A~^P$_)o5BZNeHK6y z(@6tKq0#~LpMGO~3e^!8fL}IDP_&M?n&fKf@1U75rz*j3&NO?j9DL)lFC%=#v>%+& zz}oA!$w5VerRK7*O1?Q$^(#US*X}wek8j+F2;G_Iv@O9&+LpuG_)`)gpaK{lDjum4 z;g(xl!=vCkFGl)DnHK}i4{?nD_HKag=AV|ww{F$W$abg2>$0VI{jhlcG!7Z)hb!bg ze$-0RxMqqq@O<1cd@e!@?Ef8@WA0d_lE0G|!#= z;0%G-!m$Yg&D?!kWqfm}V~v|s(162*158~@v*7X068;>y3}GmD%8Sh(9zfUc0T0&` z2JY9BOU`L|-+aR{ZI1{PZ_|b_tz=)`3uW4&m0e)A$=~A_WLhs%Q#`c73Fd}}$BHAi zr;4IgchL&XHY>)s2Z5Z~a@9lCH(yPpUcEVC8!pF)brN^)+owt?9X%@UWqy1KbJ~mN zbfIILX1kj`tsegLsOg?*b&MkfZ|}MXFA6|7;Fe;9E_Zk&gNQ+{jlwFv$WX|ZWh{U5v@EPv~$a~^>V>o|56?@@b-V0x-@Aba4Zj`$bxQpe8m6ysa zWiJ{pjm`d^z2LFwIC}xgxqC0bx$a^&B{6Nu20P6@t-pSEaE&Uahop=)+U!%sO{jz( z2vRcC4|5D;+&0Hz&lK5n@8S4zDLS+WP7Q73Ap)A!@(b4rvK`RJXhD_Y=_83gj^evR zeZ**Lgr7&!@8MI%2VJP#V}kMD74&-9nBW)FZbT5P6?UfGDvq2gd00iB(fTA}9h}+| zv_2XlpzwWTe2+^rWEJIM<9oq)Pta#=%&pek&cesReIIHm=E(ZJFN*Lep!Yf_mc44_ z`etAQnTNGMKo01!@q40)p7J~yo)AP{O}6?(kxv8s67AaGI22Hek#P3wTIY~RrmRNn ziY$HnYx4Nv`SN`Q=~D=VpQ1Y}$id>#!}u`wa&yYLJKfr!5l=%`}&U}WfCQ+VXC-@BD=5hsZlB)wgSH7DQn@}t_ zQt#Bk&e2Z@oP1uihob-)y_BDG5h45c8tgUFv1zN_Rme}C+QNXmwf zaM5J%1J6Or6HMktFs@62()_Z#_t+pAAQhRG5S2ujA}j0*?d4YmT!9=frw==IDtNmS zF^4%_g*iP+bBc&lC1cw0oL+}HJ;po?-sQRO&U3m7JWM$UiGo|AEMTBcIdsD6 zg4k4w3QP|K9^N@_32K4IBt0A!sGA0E7!qcP4V$X;o~Ysj>ql1CiyvN4w2xsV;o*WKZY?%0vrGy`>$d=xsE>bvP7fF-H7q8|Nj^KNhV=nwE zuNJSao*q*(?W_}E7vCzorb7fUagVg6UJ_I1gZ zXzeIZa)(1LHapy#sM6|2pTY?bvEYV8gaYYG@y1oFwhyodfa;Hnui}eGP63Cfz|c*F zWOTcl6mWj`%asxLJp4-g_Q_(*ADHMCB?GkzMIX+2x@VJSU;n!Lu^3HTz9}BXbz4?D zeqivdSl|N;6mp|{X_NWCxA@0Rp9kPd`{U3 z(4IXjzYCkc?1}pI>y#Yz7Sg)UuAU`ooJf6bW7|N3k3u+tU zjALC8>v9LL3*GCJd0ki+#El+zf3zpL&NX{%xvstG$n|KqT&FlS)qh|C_m7BiT6h1K z+|LrccLTTo+~S8{`1`Va!+ED%7bz7SMR~Dr*|~#;ojc2UJX~jx%yx*2$>TbMjVqvP zgpFUJ`k~x>?g!aDb5yOKD2l;Rp$K+c?vLy6aDTojey%gf{S`EZpAB-G#s-&fpd0fz zG-Nz;tqG1*+oQ$~8T>!4l@1&K;L`8>LtqD|I5lV-?x<^XOrv` zzuoy*RV_GRkN;JfFAq16FUji!N=>!dWIlT?y~e4;oZ|R5AM__}dkXV18Zxk|(MKTX z#TaX}!Z`pNH7TJE)pQbq4bYayYJLJ=5Kb^ylBW1pi!|~DrBaRJg48Hi{VML){}$|S zR={5-gaQ``FI9&%gXj}y6dzR&tK>pL;jvJB;p>E%0)LijI|xnAN1oCPo|$hTa5Xy>fEw|r={=> z#JrDXoeK6Jm?ddOJi?OiMx+KJFxYhqEwm7k5nE6rbjTE%H5g#zvJgND+$J!(*s2C_ zoa}gR#z)N7e$s=x^g03X%N%(94a3$hI}D!X{AQ{FNA^C9Qt)F0^x z+!B3qelp_|G`0BZe#KW@r?sHA+qbIlO%Y=Z?<@0F8p}Pd*Xp$7J&HV6s%0kLv-+GQ zt|tymV_BN!t{cZW1{~K2dmHg;P}OW@I_;L|Q`K9e8t!@AE-C*Fx|blPCdR+}lm z@|bH-8>(!_Qp9T4lIzcLUt(A{ZdaSV$rv$3X_2hqI|t7z_n)++%@f3 z?`QlY+*@cIN!(`w)r=p-v4 z13*ttpD#`Ce4s7fJ{luXeAE-Q;tS9Z=z`Xc-xsV$Rie>81f5aU1fNM25iqVK=ws{n z99MVb(YhK}4EoNlMnULCn_Q*hOuhU3?j}ADo*V2`eXB z4f=i=d$5nAy};~Zt ztqac5Dg}Sj)*aTS21_&}h{YhtL{KYR z0oeLW6zd3@V2WcXZZJz9I}d^JPaHfbkBC|`uLb;R*PZ5W(Ov#IL%a`6vg_nl@%~|P zh{EV3R+M4@@PEc?tZ_w9PW9rHr1#wRSnNa6dyEgz6}*W=qy{5N5IKS|9OMTNxjq?y z@TZF9=OVqhxOo1uW%Km{&4>8Pun&ra8Ehf29N)Pz)U^rK?k<*}iF(Dw zBBj%a@rFpMC2A(80=($_n{rF>f@QbPS0rn`;wED9sGhrfkKfego#Q8+0cgJAxQE^j zyKWt1*jOGD)=+Glu19J2grzxXr%2&;l?zJ9~!x5ln{@T!a| z=_rH(T+8$Ri&(FQHUxs47edI)I9_k1~e*N*DC&R=o z<8L}MY5LG{XFq;x&h92DyBBn9+(wQ4w#SFl*!2ew(w-5%My03yvDo7c38^eW?U*_k zR2}KJt<&B0m1Ef8U8Cf(@I96*u?X)o0>{E}x#$ zXD{v1w8h7*TeR+a`q8a@@>3J$4pL)lFN?T7NF93}*_2|(nX>=c-hZ}SD1gDlwQwjP z;f9whtQk>>))DONLS=)=75?iKFz021vqKAGvy7Y_FSom{Ui^*Ik<|Cw{CPLsAd5`V z{BKcx?(D_+yTXB3+_?6}PLrnHeCoQ16Xu>e^H%=OrfCP4O~o3`kk1VWR1$ zazNja10JdX;yXrG&%I~x5FPNdfBHFbWJ56yK zi^kI*9Q~l8@wRLxXUjEbf}*xoQ2dIL7H?g5^K;0<#EyBM6cb*20q97{Udz zHIV@dW68ss&>hJc3-1SeO*{sF<}ce4Dmjhshg73vzmk}?Hz2(tC&bst~?ob39M>1#X^Ps8LNMrd0*GAH<50&=DbZ#i&LN-%Cz8xl8{2@JVs=^uCXc+C8<$*FVsH z=nQ%R7Y%wXTn10rtdr{Q-plX-xaw*^dP0#w6&@%uz^D#^GuV`q`DH?<9KB)%kyxp+ z@$FM3sAE&@mr-jnugbisQ~sQV?~1FhX*Rt{y9tf<9uzIlHaIO>r6e7%k@U>M28*92 z8f)V`9}iwnAj|?pE@jI`Z~hoU1G+W@3H+20uD@aGbJc&z%Q*vmVrjdNh$VC0q+%hhXEX|nJboFzXUaO!_SIVej(4UpSpV8(mP&#b^V52>*n4g zY9Q^V@GM}R4vQ@d_Ge`7o^b55Q-{s|lV=VbJMGJ<*N?bi&LH!hPtLNgZq@&Qj~KDG z(A^uz9%cu=x3Ya+A8l;m?;~;VyN2(rY@gRh>rnR5J_6}!z-Pm~FBOMf0H}u@`1>5W z!iaN|u02;c>@YUiCwEW&18ZQ{CTV*@h5{fK|t4qv#_0g`#VU?_+gukF9`r7I@l5$nBo_ z9b>5bc8=WVncp!+GoIfFj5#UrI{LAAPWIljuRVohsB1U06spQ#V7SAkkKrQRriqJ^@vP;E!h zcG~H4h;IwH1udhvPXzT+VOx-b9PJj^cai4(PM<^S5oXfkjk!vZzzfZ>bdc=Ih>2qkxxhwY>W;%Ti^W7_AJbik`4mw|R`W%-0p{Gx4?ARw*$3T14 zr!QUf_ub9$l)Roa_w0XA_9$Lk)2I4`MW%oKDp*NgVQSe}zs#TUvqS4}*c?ZBXr-DV zJf{lh%zV_Lb$IV;9$MRa<}}nN`C7QoSY9XaCzZl0zt4fAxzB7~r|c+YttL4^Yah12 zp>u@qjWTp5dixACcjz3^$4h5VH=SX~7g4;f=lR|#(`VVSUvm1)8|v-T89T2NVqRIE zA?B6*Og#J8cjc~An(7nl1b>rfo!ow>6>^U;o#kXb^h2xpxUVASrI*}pXuwiSV=OiL z9>ymnC*d=qeT??#b(Ded4|;z@m}$#N#$hvWQ-8~CZpCRz91<3=+d$r;pXp9NLwz&E z9BLC;wx5PpKc*PkEQ?yCR8YOx^!U57JYaet4<^|10Q7j}0qF8q=6%)`v_l>=s7QR4 zN>q{OhCLYA<8zock_W2KA?VYR2h^uW9uPjVWY2bKru(?{~)T1y^)FKG6oT)mOJKg=!rv=@#BtT0c-LQ33?Uj4Lua$9 zAwcI8{+9XsK{evUFx?&t_49C`)b0m-`LY;8GhUm{Z}L`94io;2XhGXXd`?k+;LC1& zPSvK~oR;9r57Dkh;4i1oA?R}`^;wJitQA#I*Y2})82B=m&neaCkZycV)#5(wmUuVO z*)brUK8O0A7p=?hlkKN(^8QhM4(-V2RJncD2&>`rIn4L0sORa^Gj`BP=alMmSbILF zoIbfF(MjtV7^3=QzI;VYCT^qkr1h!gS|3_lKBv$p@nv^)PGN<)rLI92(z9s2FOuFTST8}F_O{;Vthef?j?+&E8$&z&%KZ?A2J4UMA-+-l zJZJX<{%a&!5IxOZ<0E=Z@SmawGI*EbzvgB88SnHn)OSKm;c=DiC&TIo@^wH{ZsD09 zx!tU8_EY`PKJkYup2ZwrG~QEx%ll_5@1J>CCyu|MEKhD9&)-jmtfBa{1? z2mT9Vxq$Y(-|8s2P=)+UO7EDA@m6EGfWPJawo}Q4s-Zj&^kXh&|8ys79p6#zJv=RU^zx z4~=btc&uAl0R1YL^}-TS%?pd z4ZYVd_i(-4H01IsIeUiXvOo9>;T2kcOMEr3bO3G}sFK3|JoSD$ulW6;`$EMKU-0{x zFX;WGi%eI15ob|=^;G?ko}u~~>f5g7&*l48{b2soIKtY9UXT{J%}< zU3z2rp6@ds;ssMP5A{hMor=gel?04;ZqbGrAL-ZlI_tH*@D0eyB^kd>8|E)k-xc^K zPQ2oGnoQT%VW!f3?GeeZ!4KMA_+WD?ETHJ_`$d7!X6IJ$i6~K9G#19lBkBizw*5nX zZul&*SgaG&)(__>I)nDrRR2qihwq4U3(3~P?l*XjaKlG}S8PhtooieFVLTzm%KKkL z`B#p?QhYIzXvVav;6%( z{QWWjiZxoOQbTR8gYPiK8|#U z;jlf9*87({ruRQD=E^(h{o_y%kMMkAe7C6gd+hI?S6(6F9P8+q9%)f+hl3|R8a^*q zv_H9bQPU5=BPONI6vSZ40Qiajh+;)G3~9+mTTuR`d{_*le}LQsKsEl25%-_e=AEV? zoDQx~^LV@XUYlT4M2-XY1JM2|hLSvCJtFi+f`3FU(%Y9#ow0Pu^yy3WvyGdJG0ykt>U;V<{Qoes_=c7K5SR`dSORuSHY8L( zpdxMX74*-fbXJ-U24t{pVvfCzeq(#js1kW7i5F9Y;Dl70{DT<={itf;0x7bo>k;bBx_`=^rlHQMWI#I=j|w`kI&#r{RT7Vpbx+B9e1Vtw(V$M!GowP@eIMXmbu zY1OM$zkaPs7PsuzqiwI2{ra}ThxOCnJ&f5sc+dVUfQN=S+KOrq8-W&r6sr+h(?DTp~m16$EKEKq zA>{;N{$zTfbQ2`YC8r}!B062yewZ=igv>C+N2gDiXY^Yiee}@<+RWflQD2iEW2}R< z)wifIhyak45y6L?1`#w?9+6+W3iL zPQcA@DY{U;AnGkH1oo2^ET0lxT01qr`=S*e=eBLqA^H>lWAk&nY`PDa*w0=&v_V?% zQ$3mIvI=D79L#YvqUL#SJhIAm4;Dt55i~1NnVtYRO?``5b#m@0TOJdMxr0a175j`y zD|8Ih)Bw<=}SMj*I2-xpVa&f-SUh+Q_Gmefi}vqtYoklh#lG?bl~4#u_#N z@+8ye0i1H^ORJCC>+mGG@Q#U+`cVZ9ob?3^1)d=z5&i`+iO;&u@2WEPRPB%xt*~a@ z+88m&CZ{Y&&ql;VHqoA*lAc9qH7+=7LY>4vtzO+!?SYcSijA+@yUVy=Y}0>v^V1)x zYE@pB&V6+;K|W|eHO@037ub(i-jJRRwR6JqKnr}69-WFIB zLZ(^dL}k-HCR^_J%?3;yLVSTbR~s1SVOwy`6Z z@c!>0A2xQ9et^7PXij=(ah=v0I%|91#?qz8eJ|Wmhagq!w5_9I7vbl^MfCAAKA;{6 zUl-t#{s`X5zHI z!gP;P1n(mHDG5JOz-~R~Z^2V|jxQnvNKXKOU2~dpK-m8Vt|HD-fEceTg<&(?2`k$mNDb+1-^+SChPvv}X$CB2qDx_60n^7U)UCm-*>>ZL#G2QXJPpnpIrTJ;@0 zdBKi$7Ej56o*)qThF$Jfg7tBUl>+$cT-y!7AOSNqI~#nEjo9~STdUFnG#$F7GEi|* z?Sj8l2AfRCYJP2_Hx6t%`sL9vb8_p~s$0+O)UC3nU;Ic93wx$Q1+n@4i_hHGV4XZR zzS;bn^nMMSv>q}LuqrKg;XGZ0(8}xmFCng_2{h#t-vWP1X%MGql>gn*ILMtb`dtS3 zZ6lFM0)%@yDOtH9O)JJ(UIY^&6AJnj}374Il0>mbIFby&3W6F$cV-3ZV_vY{Q|Y78VLERR#R>gQ-Ws@XxLj6PR4S8u8pW~ zvlc$@SnPR3Wm^$Be2CksyAw}T#i0UccbxrDI4chOv?vZS^_76tW`B)Kh1!8sodC$$ z$*Q(=4$#6WyEHA$s50c)(O<}SMTa-u6SafBoYlQXKRraQ>%O{`me_pNsGO@sxAUh( zANl6FO!;JX%hql52JKqP??tU<*MM})`S8*|%rX8#NUzzx2<5*&3~#rUt|(LafYz2Eu)fL|=dTUqBx-p$l!~zBpV~w0lEz61U6lsV9rM9s}c3psi>e)R6#$xuil_* zG52*N#;E#gZjEtjs4tIZ;lzS8Eh?xURnUg}!dfG4+nDA55jpP3@N7~{sT<3LUJe-y z$%=psR|E!yk$EHi3?!JKt{{bPa?m4U8Pkzol8qw0q=i?F6W<|N_geYd_vhvD(o+NO z%G9f0*!|+v4Jo${yMFFs|BtQZ6#3clKja%Cq3Dc=YMNo*^Gd_wqUYDlZ;-Qn$*iq7 zUv`y-89!ma1mI5~?UFVOYb3OgNd3q03zfuEg2T_r!nlR~^lfnIIittl{r(b?G5rk;xz6JDLQm)Ew;W{N7VjI zj{5Gouf#24+kpc{97=V?;WeOSOzHOl!Wvh1L&Qltw?11Gu*k9>9J%1A{X_yTd9Ex? znoXBXrd@~IVpDLWAP!QYv33a)R{u_3Y5sR7q_13-t*MvpCHz1 z{J8a0&+ezU{U8$M@f&6?-W648&%#-AFYTK%d%>Pckq<4JHAfTQ$&U)|Sam=&{I2;0 zan-)tZrdk6xNyh5^8;!P`u&mBs~`DeV6FZa_QAS+9@<52x}X_4_w6I$ke@O<4KjT5RjsM)1wy`zAJKVb%j z_cy*c@@ja+PyJ>;m~TifU+eqM$TD=SMHVpb3gc=*2glU9YvJLpf&&7_1P+L(BIFd% z)TZ!f8hsvY98xw58Wa^|Vb)`Cqi!BY#lcmYEG+?QpF<`GuK1gonG4!=9yz#sUWeQT zjVm@@klP`z`{0qC+bzhfdd1)9(>wMSwHu@*_3HF-r(Q{E4Qh+t9X~JUJL2yZzTJq; z{|v z%K;PLxz4H`(-{V$F=jFR#W(lho2%lRaO^4Y{>EQ?gZb`svC~4-C-zPVy%|4?yNhgD zUei{0V-lS|Dwgl|k$WD(89X^N?g4>3fMb{D>l@&FaRdGM&8C)SZ|ueotOp|-y3nu5 zC+X>WAH8pSI_G7rzjGDoMfmyOhHlZ?5l#(BuN8~?zgP0}pO1piu<68<1AcD-j(^B? z8liy3Xy>BKG;T!SV%)e!YFq-i3@Fj$JvW|RX#~Q(--wUpakVSD(ZEKSQpE5F+xaW4 z5k?LWuO1Uxt|15kUxNY|-tfUYAI`c4?|jz8)o*V;_0+Z6k(+b74p}%NFYm+&x|W+O zvU!Jx9y-&$-TCG%r%W7rxc(urC$)I zHiSRt-w@{mh9b=WyQLcoh*hEY(VbbkL=DhYkexRJ?Z5*>}@c#m%i`Z4O z;PL{{uw((5zkB+Ek_F2bu&E9w?i>LNu-9?vK(s_m)O_8}hL?d&65 z35N&TXII;2R@SLsJJ1WqYU089lksLbDU&qLQvv&95>?eOmI* zJYuUdUm}Sm^;4F`+2W(k)uegDWD?Rag*2m$-Pil3_UYHV|J3@c^Tj`FhZ6CRd^z*> z+h>-}SORz0duZoj!y*R+G|B8SJc|rY&&oeRa^hok#~)}^U;+n zE%6BhZE+*oCQX_!`Q?V;rpD_`upM{_9q}sjPVC9WYy!HG`OXl)h*d(fvcG`*EHjnR z1DMb9^^|r}u6vE^4U=bZSJU_q*0FO^JRF0N2WKBYKUP2caM9@3P4|=DA^Hc8?LBl4 zu*Tehg|P0B#~rZ;8oNb%NI@Z7BOBX2#Pke}?GcIn$BY?}G_2Kt?r~}9aozjVQGF)2X*+9R>C&a81822uGr3Pe zMY(S4)~i>yZt?MCS?6wDBO;=)cuH|r^Plt&;N2Q}fw8WAWnP-l@6a-W_0V zZ;i&5Og?Gx#1@m54(?=_jPm)3)Ug?g0FEhl4S}gklF|lX>aww4cG&2y4?Mkl!$VaE zAGMXob?lZsqQ`*1;k|4FlQ)d$-?Lr2hnJRZdE>t0E1wMx+#KXj{Mxn*&73+oE-?dm z>Jg~1{xe*f`CHzAQnQ!2M*_PKv5Ue?QDmP$S?ycGK=mAv=;Cr)e@Y&xK z<2R+_Nr<3x$E;3?PMnuE`>xp4S$huPT#V24KS<=;sX47m#ta=l%Jf95mM5AuU0RgU zE#~8wcAjy5PTC&3*07{oL}2ckse`hh78YmLn_8RJfvW@g*%VMiD+fMeiOoR8SUZDS z+OyB+T53x*@5M1X_2Ehk@D~~=mw%Cvec0j>X=NMNu7wM*!@)FzbZq#Lw6O$`SI!M z?27I>uq#?fNmn$P8vb-S|JlZG_v6RjHE?Ga_kJTsvo2l5_x`PUFZo}d_-%-z|FB)Y z$*@7gGcvOEbJX(Zo@2kw$exj}UqAMi{x7!8x1K&?$fPl257Av2skV^=6D^x}zq)WB{a&U)%C`%9L@VPpG@&Qxo~BQQzZEqH6Nlr&-ki$MruFy>&`F9DD-LGhRf@?IP2 zQm~xIS-pG}(?$%*st$1zJEd^g6Wd+?5_u^lt$*s!G1y>e`Tg*xC)Yju6eTCWBNgd$ zWBQJnI@t33H}Ac&bnnVXx!MK$K{Xl(_{^BI2u>H8mz&@-nZ+UMrfAREj95_ZXzNS^ z_0v1Z7wnPqd<{jmr=G~O3C5>Z$*6@>~6P;`{9>(nLR9IB8Nr!IX&wWJ}dgKUIhlO{9?5L6y&Z-ZuJGEAAOAc(crJ=k!NWgFOSbza)b=vr_+G)qGvOT@TvxvAmGUaDR}n; z$Ksq5EnKg{J3zjbo9~TA!2=GE(fSi)uD*fuu)kp!xkq0}htm`e z11u`dR{=u+RyhR>UO0Qf;3XEk01~9($_a=g%q20z6-Q*MLtVIsd#*?|^|GvlJGo!= zAKtXs^&j+KN$d*Cn^(vO^w9Nk`clJq)4GN@ik)*Dt^m+xqo|7>5-w4oK^w2SFc#9F zodFT}EDi;N1R0G$A1g|ninG6_Ku6OnA{<9Al_OVzvBoc^Rk#Y$5@r5gU5Hoy2C6sg z?Fv#Hug+<=1({aqKV14n|ABN`P+D36WC9QUcj3UM{M&82kfOAcYc0S-5$Kn>4 z|3IbhrSkA@YBLd+fV`y2ItiL})&!K7HxABiD|f{>x1D^JAw? z96f2>*I(#=oxZ65W`R(q^JnEwC#i{p+jigf)I%SB@}gz%$kg~g>Fv5dy=CjWpS)_x z&P;)9!b+NH1ZdS7V>O&?ruOIyiDV!pS`6nrj;^75cC6RX^OR`ld7S(wK;vuC{HjL1 znCcjaD=w`)Mg)$=n(%%C(dIoc;D#u!sS3scEkeT823})xa!2wUrp8CUcIMA2%kvA+ zkNaAtPI}|zaZ{#^eVIJ1PcyB1@0scMcMIK6IJQ%MQ~#y~aid3Ne?KZCX}MW`h#`nIqNa}K5X(+q*E1~I16 zeo5=!c|4{d>AZf1gkLz%PYz#NShVQ&qB%>*;c43kY`Fiiz#!s#;`c9!kN($jGH=8B z;y+3se6W@$pc_WyOC5eOBf*nEf;j2lj@H;vZ+Ja?Y=8RyTT&p0zD zFRyUU?A$_{q}S*tNH?_b6cR>y=*RW%Lw9W7zC&Ma-@e_BhCsE+Xa`0AD}5S=4~u*E^x-Y|Xw$KrlBqaX zz%_jV+n{e`eH(J$;}D=_jF)DSDrT=qa%dn)9xNG3)cST^Jc@?H?VQPW~x zJLCU>dhrn)|9UTZPfsn=We{Mb8>Q%O7^f0f2nK^PHn$Tj_7fwbu~^^*O(Xb zx`t;sj10VhI#TUo*zu1n3nDwQ{OE8QOJk4I2I1Yh$uUk9*Cu?wM_4S9WN%e&#bTkjwhzfhmKB>>b!I zgBv6eZK-J#S#M#G`+?FT(oj4b_To#+w{^U1a>60OZ_j~u=9u=e_LhyXAZo^aDWO%l z4#KfFGrqOE4WPJaliT)L>6iUe z1`aTvc*_Dik=3gUEnE-B$0K|$a}4!lMQg(NPK{%4*}6sjxh6Cqv!{vy%ksjQ94m2h ziUTv1F?zqD`a$v$=}$h?59ukS(+11Yqo#G&%gO6}n>sIllIcg&kCtulP3FgKP)yN| zfhJU~U{H?k?f}C5xI@Y3Hibl4&@kcGeb|o6gnD;Cenc{gZO`S$b6x}vVOgVys2Lmus8!vKeEkkSTGV9h>?iBkx?DH0~)n& z6x|50xa$C8226nP>tm#{`x;lf1AN>2M*9j_BqW{V%^g`d+YCT9Zw4Tw%N0H4&#T5cU{zZr|o)r1QV0nhda+Oappbw>~$-28bVf%+j!=g0*aA32jp{ene7# zE36d&|9I2SY`x`oz~5GzcnkQGeI+3WHp*&bzL}U9jJYc|fG_!SyLR9ug_#B$8YG|s(tC`=VZop z2+f$6p4bsE8|^Uw?Xg7g;d1byBY^)*=RbliU2r+P5& zO`ow2)=;$LFn)Rk+RuLk`6xj40CG8iRPcovkh?j>F_2qDyEw#y_OO(0Z=}Bk>^JdG z8)A89+f)0jZZ`n*tA)!5X*wg0TdwCfXS|>^|DArrqUs z42MLtLu*F@7daf4!%)FT!)n4Vhq3w6#NuX@o8F55ni0$1C!c%=g12At!2T~z&**hu zWV?vlrw;12scV}^j`*E-=32VhY~4uU(7EYxox+FAON;G<_CvHu`WCWGyNF&CYxk5J z^kXPOmho|=zJ+FqG~xPm9Je+Q^YU1i)E2TCwkpX1-Y1q>r+Qnpcjh_~V+BO6Kt__N z$rCrs8#uXB#}+->+d9X@4NSOiSl;|rO&@RM*R4(Tpm^BFJgE;OuV{axKH6*c0FU_y zw~z4}(R9AS`8Ih44y;o<`!|nk-Dkkx`dRL``g^nWwlUcKM4Vfl-?Qdy6Y>p_t3T16 z1_3d#EF2Eynp5t{7!GzihUb!=*cz2g-+yz-tbDTdKK%=}>H4KL`qke1y06Yzwu;jb zI~wRr*iCusqYW*9F*0-fXMJ=y^wBdhoWD$MrX5ETc%CECR}P16p*8k|i_TE!;BU(F zf1-oOY+m?UBQ3&B!|OxI*RyY%H94;kI(Rc_^5a=T9(+M>pfqYJ*7+ZUs zQ45|_OV<#);gJzSvo5`?-Rw1(tbcZHe*VlcrF!C3{}!jB;-92$_J}o;W)vKR2}PhaR4zkT2ApEK{l%4M7T!+4a_ki(xN_&AdLANO3RG%)xduT!=V z27N%lP@{RTQ@%Ck-pu&a{EXF4Sy=2N(?0r6zkKRE{9z4!XLMQnr3I7b6`Mb9ANo~` z7N6S9@qP54zdo(klHS#`&{MikMMShF)TZb`tZZ5xm){TpyFZ& z%!52ftYTS$Qf3WL3J&I0W9;yWtziNBY5%Z8I~yjm_e@8z9?)5LJp3?8p{>rI1??F0 zcR$0H`(w36pC`)`2E0bI607w_;f8KhEXaE_D%Pe48kHlUhtTTs<$3o@J71o6-=e8` zG%P5%x%*JDl%>p4Zd#rv;re0tgnLo{Td!^(dc0K&axt;z z>g~@zyI|>N$^R=LLuO&l!~N@G?)6{m?!D&fTn*!)l|j{TT?H4}ChT6qxDzc@>f8VR z4w~WLzdL?>>fE_gp`+FxGOauNy8Zj_XAd4S2RzHywl4#Q_S`1fQ-&DR_x~V69P7Cf z%3EXzx#FG(D+yxd5=3_NaN_PIK}rVEt9o#&h`fQjk6yTRK)=F;aNgMQ6Q+*J7!ySP zp_{(@Eu<}>2X;BWc;RVFVBgG~v7@GUX$wBchmA^*vekh0#Zz_|7AgiG@R_*PZHM6q z^p}vg5i>bqnBv&b2BR}>?ch!aqTX!nAS_eB`(9Fn)F#b}>kv6QW@t|5+(^@tQ8Z^0IoDJLCx$MXR zKEBwqcatnPu<@z~Hc#Z`Pe{RYm#knA*rm9JaB+L2K~Na zBeC`C7#*9`>vL+^`S6A(=PsQ`$)qjyacNy5ZT+Gxa~@f_V9e6|sj$Z2{nQ3iHvQ1@ z3C6!c&<{eh5)i#RAfSCfbO6jn_w)JbHa`DzZQ1eAU$~VUZuJu;v95hcAa!^PGxP=0 zm`cnfl03MYyiYW$U)xC+Ro<3eUY>nh<^1@_&attbBjYWfSPq+i9XV&t$WgQNvm#?- zBO~MEMLWdUnrsI>y~pb}(bHqR?nSzeFt_YXwjWYz{3v>mFYGWOg3=v${p!B1xTh)`>KKgLmlOG=+k(N4QczW7!62I}) zS2yl`aL0}Z$*>6%hP^X#+&G|zebbQnhoGl#|%-hb7ncsCz?~l(C%aIQV(SQ4V*z-eU`Y*^&%5FV-#GrBG50~AR(V^op`}1d= z+GqL)dw*%&@>tVgvbIzEA=8)588kW{d^H^F7(T$^mNtq87RIPY+9pUEZW_cl448B%oIEd`v{hcKHGboX&~(q zx3?N+S}1nGVat>lXXd`LK|lTN9SvWy1h(T_y|(`Cx37^^i(n~%aRC_RG01iAG7OIO zD#Oj9SiA(6!Xg$jT$Vu}TVD9Z*715N9Zy$pet*aE<*yOnkz0WV_Aksa-OEDZ6AULS z@p~r42dBrr&a1k(Bh8r-E+eip@;lnSP%P(Ua)TgW~k=EMENXzD9 zPsdp3N#1B9d^qBi6lh5C8_vG~zSDJ^32Q<~KN=ZWwZ#Nx9C(f~FFPSS^F$p>Z;d}?rvuvENp_G>d zOwz_W%{fEXpV{j2akm`pVX2wJ#M4-`1x-cmHBu=!Zq65w<{mSLN#sMuI789vp>~W^ zNP~$YeOT0uENhPbFXS+2F4AB$XXi#tlIDDVuu0T)2B!mj#;t>vP1LrF4#JK@zz%Cb z!Fx|h*xR}Nm&r6ZM~KNZ3s4u`c|O9YovbgB#uBX3fcK_%@=PJ>PNwPaN;9D#ou_H9 zJd?T8n9mq#v^jlyaO_;(^Mtb{)Ss{|6L7;~Q^37P!rj!0lZGTrGEFV=l4%x@dC=se z#O61ou~3x;a4%@)nL@xM^Eqs!(dNL<7GM&&a20G*#k0b;QPi>Yxx0XLk$mUxE-wIe za!lCc%eFOtjTA$Nq_G63G{8AK+%ttoKAaatK4csTg#sWD6M^Dm>q{vXUFyE8n9a+u8i~iY7O-wz;A`%(EKWD*fn9P%z$x<|J5azW+Pcx6gzbZ%+X#Wnm_k9f z&Z?!j=vHB|A%C8Rp9{EETg_oGQgPYFZ74)Lmube4cuCt1?lw1F_v3aJMm{VO2WPJZ z*X@ewoZK0`*Y?it{)5watH=*NFj3|h%w@c!8RW*3kQ?_2Ss-Q01ZSj_1y;8oPR{3B zEWRjHv==f_dj(@|aC%$Lzi|Cwcl$$zrzTn=>ORz4B>V~fEWAW(BDUr zO#MMYqu}IVPNQHqjlg|ut(mvs!Msdu!H-s6D~(kTD|tX~&S3MT((wFz^^GWXcZ_ec z?8Q{DQI?8Xu zRsMisa1Z`%50$(4HU>Dk$AO%$Yzn6)$xTKz;W#xh>Q0Oq1x{kjNXFU(PKE>%`HB9> z(gS7kb_&0b%M*B+A<8SJJB`_4q|xTj6P}ox-jv1?rPA>FeMwuybGoU2ggft9?q%p(C zH{)p_y9w0KRJ&{(;akbWw##8|A(mC(JPk83k26o~INQq85DGgY_{o7-_~Bcs zpu^QVM@C{lm|SJyid~q^J)n2WxV_guq=WvCe!)y0n?qJsrY-CTPk#^M4D6%&y1?MN z)1T^2Mh~wjn0uF>Z^Kg4(X&7WxOB$;g}uO~1^ny@Tm<-ry4-cByi4+N#9;L9g-ftF zbHW^b!!apv)nP#Hb(XgTdYRs(@4^^yqW75<>tYu70=UnZCIZ}deS9zeruQRN>xzAS z8pd%@sn!N(&3_L#{V}hAUcw|-cD>w+xQt6-bpuBe&?tHmwrMptoW<6B?^Boo42<~V z6N9m$1-F(KYQ?>|O8=++F8%iwr6VgFN3l0vtKaH#TPE$Tuht(Yv-QVmW*QdbTGH(6 zG4zfz`hh}rnbQ)!Q>=A>F+{sd(o%qDthtDe!yv5KIB48>Ez!D-m%vyq?GLBFShV5v z2NIqq01-H@^D}YHF6>V*)51J~k6MNKtU8`hoM8u$Nw|67%lere`dg!L7ER$Bl4?`eURSjf|WRvq-1Uz$T0?2(pd?c`=Vzu3aaLIdn=b*zP)+RPfIpIE z(GIOyV@@C~+Tqu@nIKg(X9p|TNLcO!M|-Ys^39r_i(PH2`B|`-4YaR@T`b^@$C*EY zS~%Y@*il}_W7i-wZcs4_T1!1IJI!$J;{^Q${R-1hTd-935>Ar~f`PgI)#G;izk*X#-r2X0q@zs)l9BuM(feP2c{e@M5cl>=ufNObzZ(423H0|hY$=5b z*Py@PFR+KFEj7muZYi+Q(Jc1Gi``Y6l_;(Zv;pOR1 zTX}s4@bYjTF0XR0A_W)oB0bkEp|_{P$Q}iImlw}?x$ZI#G}EtMgYYrRy&i*YmfVpH z+IwrrrC)IAhnmC+HZR(1`P#tNfz9H)KC#G-g=`N4j~m-R^rs%DIAPTT&0Q{v0VwQ_ zmo?U!?*6v{Hm%=WZ>ZIaakFIgDjX%=aPIFT$DF344d?Xk_Y~$X*3D_L{(PHd>=}%#&_w* z!wS`E!4{vy#1?KHIhHi&+#dX4?CG>FTDYq=ypc7ZjAwFPy`4 z{X$L1d3aR|JO3aYBd_cpXzOSBa9PKu_bxHV4mi7YNyzG_o?0EUWGnb19A^n$!dX+i z&l==vL1G_*;i1G}V^8yPNN*@hxiE)i9>xP+9TqT1;;bv0QaFRqM2FRJd2WW;%tE)K zK{c$l2cM&stc@17ifOe{0{Mc>p*nS>+JTl7+5&m~;N0Wq=L!*u6z{mims*yS-z z-$hDK&LJJ=o+72Vo{DFi^#UH~Fqk-tE8GPM$5q_62`h@?Z19~S6PENEu_{Ou34!ON!*zzfxcf9(v zrPt7ry)#qx@_sK}pJCnvf0^wuL+fjdON9V3T9+707}Y48;lLzLkVp()`M?5ee%OHu zT>v-`3rxK{DAbWZ-x=%iq$|c4?o(y?@H7~1*I)}25s7-_ojJA1JzrMoTF<6jWx=-| zmmlfJ_IFMRB^^W4Blmyt#k-N2q57H7^iJAy;4t(?p*{p7m>j!(~Gr-)~|Ka~XU7f%VT(MjvHt|Kn(f z9nhDw2CsYcB|-`s#PE>QzEbY+QF&tzTwx{PIhKUv_L7c}+`@!+|k3aMFYcljz^aUVZTkod4EvM*nPlTKXg|7m2n6e$C8~-(iN$o|iqGAtLOi zYPfX^-~gg8^PD7L>VvKGFbc&u1wJXm_~1{iukmVt3kKI7Ti1ovtY0}*va5HWH;YeU zmtd#-DKqAhh&j`y7Mkt#L1+IQl{IqopJ&o=8Y~YSyP$N#|jM$4nrd zM~xaX!qlhX_S2U#@$b@UdUwO^3(CqC@Oa^T9&6MIEvhNQ(hB4BHbx5(n?#KkV!-DJ z3Kacy5Ii2c*EBKG2;{^UBMrAu2w$?~=N6X<-^ z{Gtn}+r{YRMZaR)MBq&XZ_-=@ib}wZBREVPjm(c1=RJ$PvFKksIU7fadtwvj<)wh1 zThm4`8b6bU#M>|g4%1p#v71+{HuJ4WVvRj1yoH6o3bKhUeB`-3B$;T$hlDnTLu9`d z>+gCTI~s;PeeasZexwa;qMz4w{hGdK4>uoX69bVlTfh3J<>5^yo(n!3^TLVsn=F^n zD~}a>gWX)icfon=F2=3Bbu~Z2s)Hb5B8+L98~d4HL;(+RV*X^|z z-Hed$KKm2?r2m>SdRC5=lD_)K)SNSWLOwM;}biLUcPCmNm7%~62*OFbbW{!E6 zxp>Xw;g)C55c8LMKQvkVW3VUs*&GHtIX+%&kNt9Yz|Cz-!6~8z7(8T5J{=l-x;c*W zA3OHEJCfDLcaMEdytnY=8?*usBU12+;1qF8D!9U|*u>Tu%gusy%whU#`c?gR-A=M_ z4r&0Z|8&FJ=O2FL#fG(X(aW1QJxj-7dh|4z28Zz$OptJJf&S;W-CjF&>b06KFP}R3 z3dalQd6))(CnR3WfLE}>%d77*nmGsBLySAVhf3M8od0A61K0M!*!6x{UCrNhXYht# zTILAk@2}t$7s8$ui9M%2cQ+e)lD*|!Wk!3aGPqD2S>Gtx`CM{fnbZi>@XI|;!EiwCZ~izksuk?|qsCKl|b z(tkfyWbf10K8JU|ekUwb@W2*-I;{RDQh%Y|L{F|bC}Q(w#H&MWUveke9>KDdNR#Y6WtSGO1 z>7~l@ips+k735Dh!Dl4RTV0NErx@2+t2UMkACap_&rT?i8z z!Jt-y743rMg;UQ8oh)&bsNFk0n^coRc|Dl`l(fHNQ8@yV1I9G z%BhdUp7mchb#vd*h4-LsmExQwob`xxi!R&?As^<7vAn@W!bs7$5qe5vw(Bzd^Yh`F zU`J3hp$GFmDV;08JT?J1B0KO+5J1RDh&;Q`@wen%=)_MZuKj#Cc_-iIq;7A2YCj!!`4%WtqeEPn_Cg z?4mdn`6ALw!a31r+zW|IL zIkI`r-iD`m-w#;l>b2||2Ad&Th6`4&p2gL~(Vuv(B++2ePta&jrUKEy)~?-kT)Ydw z*a$r(9xySCo74iBRTFWN9&$rqA*7w~WtFX;Z$E;9{M}qY&ji&H3M%fpD5e^wG z--+j~^et9@er6pzEuWh=i09+=NK-Aw$Pr|}d`|9m-j8ujrXI!hOGtl4J@4w|{;;r) zX5sbY&;3vE`tTZhd5x=G>r_0M(aGZMA)(G}O@5yy0-R;=Gls{f1E3n*d!4D@ipD8Mori2&HR`Co-m z`c<1ys-Mv->5lw5DDt+E75W`ylRg*95IvV{)oDW&=*jtfXQL3%v89&l+QH*>?2l^| zj8o5GB!?C({VHHp=Y}0r-kuiVj=^J|0z%%3<+;!@ci8OB^qVmw0pptLce!=tmbVYlTE09k+%oPPs{-=W^)zvq`kF; zl4FIMz>xP|3zTl9Z?%J2_}NI@z}wRyHk^}q><>gYva_puSnlWl9Q_^2>V%^(on1r^PpHnmEpqJUDywkdeV1J9g?!?j{kRVIDHYOlyxnci^+@l;z+k zgwKB_ee~UW!&~eAnbEir^-D>{W@q!wy4 z6hSBB#+y#Ux!8Y8rzrRNIQG!Moju$Ha@azpBP2y9;YuqQbmB(T&6+3iJ$7PZ5zJ4U z6I23utQ{l7YfdiHAGxm$>9=-pgZ|Mk?^t@L+*@jnjeGa;ZJ%VObR5}L|J>Ha(lsHv zhowh+%hs)1wjzD6Og#)g5A>{cW&ZSab|03wed?xNzv%ydvOd?IZnct%2PZ8wnTp0f zHfT||jtlraZ>rwY^sP9HIRf;8TqQ3%AHwqiIAr2C6F-ZY+okj8{rPj}uX>E75%?~G z_L9%(N6t-nzEAIED&grVY(zx*ADmAhpJ3e7S#d@>m)oenY}%jf;T9&X8#OU(#l%{M zB}mF}o`&p&mvf%RN2Wo$T&3^iXV{`$!rO!LQzg1ggW5Q_k(pyxJvJ zlZ6`gCXYPL`Cd|&fd(2T{ve@QH)v;g?@1mhK=;WHJtLiFlX6nXdWY#Jum8hk$zgP% z?=(Dvg}v7)%rdzwT%mt$%0qi?&Mh7k%tGQB{N~lE3MDLuxoJQ!hqI4F4pIo`fy>* z>s{%PsD+&q{iV{q;9lCQiubTTjNtEK4>m`8SDtI#iCdxBJ1J{$_qXN?NQ-Z|T~D(l zt|{mQ#g;oI$`tko7H;o#T;w@lTSHQKJ-2Ao%-{u)#@fV{W{x(OOy#+?;c2)PdJ8Dt zKwcw1>o6lN?Axkj+Au3m3vDO2z2SACX>G_*)QJ2C6IOLiVCe_%0OB##Oc({oYbM5} z^4f&;`egOojJh1At}S?;qpq!57*17`>3xvr{p#8mYs(wewI5cQx2o$Vn8UxWuKgjy zEQQ5MsP$pB)X z#P;Pms02Ou2P$o0d00+ZMOjX6-n^W$xnU)fNLt3ou^By(5<;;APT(p~?YUrr3WP8W980uP7~qxRc!qqfK)fA< zXC=5R((;fZPK$wIZybgeCE84c3WQXIBIM$kvX57aFjtyBDu?+0@cuTGQU(_-g~+oQ z<#Clp-9CbWB6$)R`@OQfo$-_nr0J>=L57rXn=zu zA(~;<)g02NC06)bW1Xul=JTPDQDN|n+5tXlIzdK7VAUiF^X9JDKh+&T^aNm%vEot9 zHhA<+!f2;AQ0$AdQ~PTJ;KL;uR(u)ifB0423Kk4(|*jp?e;MlX}MhschI0 z-iA5q1oX3$w8=Pqd#W}~o370OiC)#7fz8Zn?Op8=?I)Z&@&L|Qe*$)?&l0BHOH5eR zdI(nizhfuMquN?x*1prOYENn}Ykz8gXn$!>Yp-daYoBU6!1}XrzHqK~5Y_mZc0fC- z9nubKN3=RH)N!p^I|kX9uU*j|)V|Wb)J~wve%5}`?m-_^2*#U-YAM#Xqmt&M(m1!bV>VF+lz$)PRHp@`jEb)AKa4-AOp2p?FX!+rI1vT z2HkxI$s~iwU^0XZCBw*YGJ!j1{52SQuO;`8 zd&zy|ezFcn1mTQd@*vqr9wHBuP2>^sC=AdZBaf3UFh+ZVJW00Uob#v1)8rZQEF6wL zPhKD|!f5Pe`1RR_<1Sw#JK&nlPIeLpd4udCZ<5{QEwYEaP4<#^$UgEed5`SJ{@xF? zE#yNucB>*ElTXN}87 zlIx_NG!Pxfyla$DxbC1PYNjwNrH!Z$ZA^WsA8kVYX#fqRLGabmls2OwFq3LQThdmv zHEl!N(sneIwx?kT9G&Z49qVs4mEup1!J}sl=w1QUB z1#}@@L~o~y=@NPeT}qeH<@8Rvg07@@(N%OcT|@7tYw11oUV0zBpRS`1(Dif!eUNUX z57CF|Ci)0{ly0Vv(Z}f)x|KdbpM(?L?er=7G<}9XOP{09(--KA^d*Jo}gdRujx1RBt1pHrKjl``W>uFzo%zuE&YN1NYByp^aA~f z*3pafXL^bLLVu-~=@ojF{ziYNf6zbaU-WPK54}eJrPpaaZJ;`JGK~>N8Dl1#7hz#m z)`C4+HUPFt%|kNc45Eh z$2g_wL+x%Biak4@u=XrWdr#Ys{kQvA2i8&hn{{HHSpW! zDJ+$xv2>QfGT9(Dm>Byg=`VKoh@cd*d1&s zTgH~NJJ|}hlHJ8tvDIu1yPK_L_pp1}ee8a=jy=HEvkmM)wvj!=9%h@^BkWPO89o3X zXIt1-_5^#9ZDZTnQ|xK>411P6$DU^|uou}&>}B=}dzHP$cCgo(o$X`}_6FO<-ekMk zTWk+|o9$)quzl=Z_8!~M-e(`M57|eoihayJVV|^!@`eqwd(BKw(LV!yCo*=2Tx zU1h(q-`OARPxcr4oBhMCv47chR?ixk&YUI3J$zrnN{5c;}W0Nn=ZfRoj zHwBmiO+lt$)5vkdhg&O)3u9tZ(k=6HW|fr``wCcU6i-Tcb5BFlo1<~qT*Cb`m7w3WyzIM zIttFIz#WgQ8LC8#w>dzT3|V5Hh#F_)mQ>`-;@~yTb6r|96dZXnwq(eR^F-u3$PI~a zzWZ826Bnc6SieCS#m~!;x%=gN-1rW5f8|@?zBUb>nNwyez>j4}MPX5Ho~2Mk)*%Xq zLWRQ+i9?~J+7Jb8p^O_3aUnv745fv0e22P=@SWqn_8aB_liysgoBXo8yyBvq;@rYn zmf<VPNcnxS{C=dzCw|2qH%9~Yk_624j zQju4bSD53MQCeOIw8i5_85QdN5J(O2$S-SNAr~w1W}HXj##!_7@@1l+LL~Pp%Ph(= zrRG)Sm+7*$^A$MZ4Z2v7-(`^Gsg^!@TY@Mr`8 zBvCjP;;LDtd~bXz9-77XrkO}?&KD@<3Y1h{rp0){_)DlQfD+HlJXfGpBv6udl$u71 zE9s&_Yl*~*l@*j&$~jW8W)ZOp;HJuFrNCCksaB}9D-YS-TS3->B;)IxV z^*lqxnKF)5<;AMWAv%H^Ah*SB-sr=$pe(?(Kc=dg}f;V2}6R+TmS8&EFIOA1*@e0m( zm2bR}uYxl{<)5J7Oi<+{sB#iiISC5h1O;z`DmOuuo1n@|P~|14@)A^e393AsD$l0M zv#IiIsyv&jf14`TrpmRca&4+yn=03)@U^M(ZK`~mD&MBcx2f_IRe6aj-$a#fqRKZ> z<(sJTO;q_Ns(cewzKJT|M3rxn!YfJPm89TLQu!yT{F7AvNh<#&m47eweJ}NWF9l~W zMVDTRF1=K~y%hYtRKC4bzP(hwy^MSn+`U!)y;c6bRsOwI{=L^3zrM>8kv6ReriEKV6lduF6kW<)^Fi(^dKDs{9O9eukoFhAKZp zm7k%?&rs!OsPZ#Z`57wz43&R|$~RNxm#Ol}RQY78d@@x&nJS-5g-52sBU9m#sqn~D zL&Aqx&?PoQ%2ULdmhocvWLYSq@nQ&N zStuf(@kUqbv(UKWaz8dBMbsN&m7i=^xEJ(BEbv7v@I@@}MJ(_|Ea;6`;EPz$8?nF_ zv7k3%L2twYU&I36*bLbY5v%fLJH)*zU$#TstMX+##JwtCwnN;j@?|^3y((X}L)@$K zQ&st?s(jflV>8lJ`DvoQaj(ixQ~1kvi{}b|*=}*K@R#it_X>a6ZgH>hm+cn!s(jgQ zV>4vCMXbt~?H2c{eA#Ysuke@c7WWE&*=}*K@R#it_X>a6ZgH>hm+cn!3V+#dV>4vC zMXd0b?H2b6f7xzvuke@c7WWGO3{`%H!aqZmFWWWJsq!-v{<3|?W@IY<%Z#;5l#F}3 zh$MH)){ayPd)eA?udtV`9rv>IOxf$l#mH8ISWp$QzzVUTDq?{ZVv#RmffZtrFJgfe zVv#RmffZtb71jf7O~lF_W;M`-%q(g$zY^07t^g^+svd_uE+)=qnO9iM=iB9&(-i0W zU}41ReoB4OvwYsHQlH$M^1_^wMTI#&BI}+&rcrTWah|v+FI*&3%`T}d6IYD| zc;d2A#ljMK0pMk_#d&4&k!6y2V3{bR2{IZlquXROPDa@>8Y`nQG8!!+ACX^CapgQq zmV7=^M2#@TD=+6W_Yv~(a2XAg(NGx;kSw2*LoU`!05w9suPf>ULLe(d~^bwUTufTRP9p?a% zPH>;Rl#C)03QplymQjKzKAd62l~wQ#m`Oh27lMZ>OMMgzRhC)>2jPiZEg@J5i6tlD zmE=WmYGcKp{89oV_*Y$4mNqf)7L@aqT1Np2^aKSGI4{ZouySKLa)int7L>sZ8nleAfRxu~HWap#-iQJ7S_i06SBHx%Zd;Z=a|5RdPM zcmO%%#_xuBe>c(%vu~D19$6lFWZjU5Zj1ZEStXQ; zIhD|zTcC$NS-u=3I7)scV2FzmH$k2nW$`4?Lz67Om5O6=9qgqpRIfdogO*HWD;uKkoU zSG{mkyRp#YipK#Ekn^BgpIKBclTC7$6yR38s&{S%^`Gd)?SUSeT#+`=L**+T_$i&R zxZz`hm;^O3Nl+7ugjmsQ$0Wpxp$rr{qBlpZp2vwH4erH|2C*2@AXXEiI5`1Hh!;bq zn1p!sUA)RqscRDw)bj-OeWIH9C93ZdRk?{OU7{Fb#Uv!jiBv+8dY`1;C#n3C6dXxn zposKhpomz()k{6^rJnav&wHzUdaH7JtNeP4p*yJ?AjvwyBm*BoJ>}b+8nw~j4TSLcOQ4AX#6F2BV3jW@GjW6fsl@)9L@)z&; zdx8|)7Kmz%ZyNvW zPiQCv=Q3prtg4p*u zp62w4nAvF>?iNHIi9Q6_jzk{mv=&g#?7TJh8~(>(;}~JmfqIaX6I8;t{28YRrz-#B z-$l%Hr7Vize;(BSzq!7t25zhok6JKl!-zo}UJC+V4zmiEI4^qqHH+#RH7aUmR8iE* zsI^f$qTY}CBI>6u!Cg9a>Dncs%cL$dx*qAS0gJso`*0dZ{}wYmHX?3g?C{w4IHiCu z|9g+)3HnFy7#y~j|7iriGR?xu&C_a4+N;IE`zyCqyU|iD9rkJ5Hf^M^MjPj{LYoE~ zio1mM*&29Iy$5Ht-3Ke%b+C(g7#0zaz~XE(JZWx)J=&AnHrSdyqdg0&iRWQ6@iMF~ zUWM%$x5VI98GE$-+WXoEu*mpGtAcIDC$LH5R%nM{fmW@3AuP_m(!Pc@)Jg4>vWNN$ z_FvawGv*|OTa3A^#ah5htPSZzB47*F6?R}fNet}25@7pfSbp^<1BHdxXjp0G3HvNz zo24wX%7r}^x5e_Z#Ddk;eZtae18l4|Df_A|!nSI=vaEVuSyCAmRC~Ovr#^(mlwmLB zX({zJ?4!=OY@^O8t0-<0#Vw+^CDb);0VQmm0+cmVC@h&ezGt%vT0-Ozpi>o!CGm95YbSOy)xg#{3|@DcVs!lK99UWQxCqzfyV zk+6*!2U{1njmWL+Lu!>($Yo&#@)xTY79Yya12&w!VZ+%6y+=RTac4mrt zLLtI(gwV2sOAri|_-&Ijt3T;J08uA-{uKfc}magwPJ5lXEIs zPctpuxes2G4rzlB1|tkb7~?#EoiB&9an4$8g7X4SQu$Gvg0K?b+=Z|TVKu@Ugu4-* zMjp=~Jd5xg!t)3(AiRV;UPgEY;Z=m!5OyK&HxYItyoIm_;T@E*58+*e_Yn4@tPc=A zMBX1EpDM&3BmM;Or-(mCJ_ivFBOFCIhHwJmYlM>s-y)nrs6jZ3@B_j*=OGf{JV1gF znj(bYzLVCBL?Co?ULZXXq7h;d;t^~Jy`4Xjbfn9~^_5$L)_~ro0Jchi!#QSgY{5!8VKl;2=K(qc>2eTe zB9!9Ue1tNDI}lKhbQQi?hxh@+>k)52{2=0uh#x}yFyc*!A3^*m;?0O3L;N`6Er_=w zegg56h_@l$j`%6W;0O8)V(s4?VQzr!d3Lm210 zn;q4fv1$a+oSk6bph5PG>8=QwsW&|sEvb~n%JgN1@i4lFAby`2?+uAng+oY58 zB#A&sbk>nxxbK5dh_D=CHNpYsNg9RF)%iB}jOJjtpNE;wu0PY8dZ+*T<4EK0wKl0QYspQ2` z)K5|BrzrI-O8OKfeTtGkMM2+x7 zb!h2zXz6um>2+x7b!h2zXz6um>2+x7b!h2zXz6um-F0ZWb!eS+Xqk0rjdf^^b!c&Q zXl-?9X?196b!cgIXjye=S#@YVb!a_xXgzgkEp=!ub!aVhXf1W%;yQ3~9k{p-TwDh( zt^*g>fs5wMI@CoS>Y@&HQHQ#yLtWINF6yuw zV3Kn)>*IWx^>bFU{?1p}0O!wapmQfnbzWiV2qSR1&uHgWa9wlkB^ZKT0^_kqU=l(j ze0!GM>HLs94Gv5N)Sw>H|Ah1xkv;&uQH1lV))gTRApzkYgohC}Av}WcD8goh#}Ph5 zIDl{n;RwQa2;U>rBK+vQO8gN55rPq#A*3M;M<_rjM_7!2(^kprh(AI2+a)&kR7U|I`IYk_GkFs%iqwZOC%nAQT* zT3}iWOlyH@EikPGrnSJd7MRuo(^_C!3%b7rY?}hxT3}lXY-@pSEwHTxwza^v7TDGT z+ge~-3v6qFZ7r~^1-7-owiejd0^3?(TMKM!fo(0Ytp&EVz_u3H)&kpFU|S1pYk_So zu&u=ypc7HEV z)<7B^M6XzbUaQ|NQv*qN5R&d7B;7$s zx`XTsNcG>G2TU4pib9)Pi8i+qZEhtntpbKsz_1D!Rsq8*U|0nVtAJe*aUL;SU726>jzk+Q13bOI5|I^;R$H`HY zdjs$8nO(xNY%*CwxGE|jM?9b+A{P-6Q9LLF@F*ak1A-`uq9W))f|Az@UWkYa2ngX4 z1QAd`53+JexF^68E}LYt$+A0}-O0|3dtv2H`h2T)6B0pD-+$ge-s#WN{Y*`FPgOln zKhLkKy6RyYJCcL*mB|crNZy_t>Ufy6PvncCvM#8si{0#CH#^wP4tBGH-Rwwia^B6( z|2_Hx`X6))YIEJ6&~4~;bcgHbp$A;E5Iuz2(IWH&T8x&WWoS9-Mm?yER^}aPW4`C~E^mFq{`qR80vg%4N$m`HmdwOABX45;^^bR$*0?JyP&dKj#y&g=j$e&2(`hJ!3 ze&zU>dpz#ECmcJ_Vzd->qGitMa$Js9IOj?K(TndxE71U2g{pq5p+Dn?9RK3@40;wl zmv?28(1vKEyn`?4$TrJYX0J!vp*N!){kFH`K4?Gm5$7C)W}w4;KN204w?k}Q5L*|- z)|DME?X&1}=u6J~GWrTS9er2YRgPC9vgeaJ_@oX#se@1I;FCHat9Hn$9kOcA?nLv^ z-RNF)zuy<22hqd6KjQdkz8JDvoOPfjs1tRe6-d26R$Y))7i85{P*;Wiyq%Bh;Nv>@ zxQ=22+JKIonl$8(CrxPoyiSwrG`UWb>om7cb89rWgXVV7+&ayz)7(1Et<&5(4Xx48 z8V#+{&>9WxprIW!v`$0oG_+1b>ol}ZL+doOPDAT7v`$0oG_+1b>ol}ZL+iA#P77DEcNPP%o{t-}Bf`D~J% zog845qfc0Q`tZDsB-==Bh}4EiZHUx{NUe?3+SL4znjcd0Lu!6V%@3*hAvNEo)`!&k zY&AZlw%gQpHG0AG@fWK3OY$4l@(`=|xLO`k%R_3nO^vpx(Ka>OrY76eUYpu$Q+sVn zKcw_SN1QkbY`sX6wU|q2 zYqWn}rpIM^T&BlmdR(TvWx89YyJfmtrn_Z2TBf6AI$EZqWjb1>qh&f;rlVy#TBf6A zI$EZqWjb1>qh&f;riW$vSEhUAsB;%P{t`WoR-h`Xp`pA?kIM9@Ooz&Js7!~-^rlR2 z%Jim8Z_4zhOmE8crc7_j^rlR2%Jim8Z_4zhOmE8crc7_j+4ITtY_*<(44J=9{$=tn zlYg1~%j93?t1f}_&w%+`VEz{M(x+bf)Jq>U*`jXxc&P#P)2HXH+3e3|_0*@H`qWdO zdg@b8eLT|u&osa@4e(3@Jd-xRbLXK4{Js!9gxb*}^aNUrmZD{7IqF6|sEk%>D^K=( zmQX92=KJpEyzl2YBWY2ued@I@JzLsre)fFFUpVhV$BU)^5?$iFtE4@SU*@>N@kzf| z9cyR^J!j7QBoyYpZ=`)W8SRMwh~q(M20BVR^k`|vpiiMMN&7PT3OXHKg|0^Ggk1W_ zrH@?t$fb{5`dIA&R(pWe9$>WxSnUB;dw|s*AhSL)>m##1R(pWl`Z9UUdQl(hN6#iL z+FdQ$T`k&OE!tfz+FdQ$T`l6FOfI|!y;rMqpL}cr=MTd9s|qu;6+V{VMDBeo`vBSZ zk$oT8_mO=c%RZpBccd2SQEG56v^UxZUB+kjb^bKRxNEC;jxKpPuy7j|%;$(2olJ zsL+oJ{ix873jL_ij|%;$(2olJsL+oJ{ix87e)`c*KlF>nMl;>0(2dFj;uxkE z{dA&2Co1ea>%;zE!M?>s5 zOxDe0-AvZaWZg{G&1Bt7jumq3C&vmoR>-kJjumpGCFD3vj>F_QOpe3kI827aWH?NQ z!(=#2hQnkyOoqdHLk`bJ<5iz@JW4C+4##=uhl(kz~ zyOp&^Syw1)Pqvre4srZE`Wl+)clXO?N$U#r*#Z28}pQo zCG+UP?r4T*;B3e9QFnYo$2^^5p3X5(=a{E+43--6RE~Kn$LRN%r*h0wIp(Px^Hh#y z&(e+O&pe)<;P z2i=DraPC6%5Nb#Ig?ZyDZ(QY#tGscQH?H!=Ro=Lol+j8yd4052oj_|8CJCQa3_U z&n`i8koq?w5?XXsD4?3Db10w+1yrGcDilzK0;;cp0IS&o=RAnU5n%OI5a48}U@}xN z87i0z6-J+6&Lnh7Yf&haV>E!_ceg*T1Sa)5vu{v_?PH=tR_oWQwP` zD(5TYe1)fa9bHJo4^wAB_Pg*0yQ00M?d!O%?2q&POU_v%?;z(hq|I{fYsu|?=dO{> zBkFWnGA-71sOM+$AFf-^$u<*ss?JJ}u7{=8;HM=#_&A2D)8vs?!BJ$PNBdARSRYG~ ziS)n5Q_DhR9CqX>ZTXa}n)r%#zM`F9XlK{k+4XjIy`5ceXV=@=^>%jMInG?^%$3eu z>CBbRT=QmJdk`r%-EUvp*;V4lB@GyCb#D2q~FS~g#w1s zALqxXKh2NT#{YhLQGQH%Nq%KIN7`li-1PGN)6n*D>7)7ux~2E~Udcb34m$7o{L`M_ zuV-84-^t#9-!(rj+YP-tKP%fkpOJkOCOauVIQwdTMs{j`Np@O(Y&J6~k>AYhoBY$B z+9Z3yEbm48KJpU}e_L)LWkH}E| zIdYs^&}RUheavc2N8~?FzOZ_JGIRBPRxX{Rr0-YKos=}-okzs=9Z=FwDCxV!bX~5b zUrgsnyDUE>y?ph`^orHJO1h(x9-Q|3URgbu4m$67;ea+?y;@1P%-(?Cb#-sH8+v!X zjVOfkmGqCdqw1O0&K>sxTwto#8z7CS55?LlVn^I>E&OKyKfE{o-M7{0tBJ0+h7a~&p^-zw~p zf1NBA8>PD2C{>WjZT@Y{zl{|ZC7a6O*~td(R#(OmWgKzU5J?Ov!-!uOc~kBPHVpoC zpF#Jj>z(L^K2kZYSm$a(%C{*E{XPx7n}&X!+nxlra$^IOR9cG`NTQih)9TgmWI+8TPBuPUVZ`LwGhCnHKS zqVBF$nroHjT6K559GztJk6(@`IP^MP#E0o|Q2#^f{|4i4XXSUL|Lr-S$>#nXBAuCc zy62c{2g&m;?*<;BJPqz$ckjA;*WJ5rY_28QP|LoxuowIO9>@36-!zh=LIyYE4l_LAfGM0pO!lpZNVQYz}D-@oiZW_#*w z7(XZUIE*AsQm=B}!%}}u8&)~@hKX|4l(RZf&P~=UK}1L~hYOTr{C}$4!hTIyy{`AlQrb?*tL1^`vR@32Paxt3)$x0+)Zm_A^Y45Mfbw@ z3*h?&arA3<-@^#ljC`Kf$-;De#4EJG7DCy*P_?BMcUe3?ZimkOnr629QW6-D2vC=~e?nLP) zdq3iaXmau#O&j?a23pF=O87tu@kJobDZ zdp=M5V}bU^f{7O2U}1@OB=jYF4#Rr{4;Ct@rj-<0e@{t&+PTl7EqRI7t(v!WJnREtZkkGHKA{kGS?`4*&S zBGEIU7CY%`r^ zopU$37wJ!EIySmNPZFV;LG5QJmDKbu;e z!s#@_x>7tMnH2PMd+s_tcb$b*czx5frL*w7Q&@j-xpxniBfVdcDsug|_t4 zmJ)3#(UuZzDbbb^Z7I=+UK&xN5hWT?BH=ZCYQe(wl5UA)OQhOMswGk_k!XoDd($&v z?(aC>?05^mcB}Ne@UhR$@gex2o%MsMJd0&g?IYC^sg_7G^uYy-*PHDGUyt{{^}y$$ z53Ywa`$%#MNtQ^mha~$*vP6=l>=5b4N;^*4=kea8Ajw{moI;ABZ>~&=Q%JEyiX~Dk zkz$DyOQcvL#S$r&NU=nUB~ldd80qaL#S*Cmiy5qCu#~+dGTyHju*sv)(PMg8L*HJ& z_~9*!3L2F@-mh2oqW_elkpk=RHWx$B_l8P;uTqs+kEL?^fZVQ<)7f(RfIHpdiN6Ob z*$sAqBFJQf94el)iYIM^97fdth&mrp-y`Zb^deQ%--!AfQFj%29+Bq}c^;AH5qYlA zqF_%d*7Q7>g`I);55BF=>IQ3DV{L1!ZH=`J7B*Pd8mn4kRcowjja99&sx?-%#;Vp> z)ta(Y`LH^xT4PmftZI!_t+A@!1V(>B&!A^nxy{h)(RS#~XlIyiZ^wPmekinGcmftQ zSj`%%Sz|S8{8?yU)>zFNgjD5s>MZ0a3po_pFzTzu$JArZ4$`YZdNW982I<_tz{u!!P>uoUPLeXj|QYZtd88BUmx%DRXI47H8=y3=*b`R&rkT* z*%2#GhbcFKCzl5-312)0lRXBjJO*DpRtRl_Mo2Lr{XX}rxW_7`xYzZo*xV!XKfs!8 z&bZ32*Fk{`{Ns1or$=~;@A=nny5elMsOH{laConK_rdg!$jy~i^!Yg=YlT|CO_o^$?r_iJp;P9$QKK z!uspt{zb`F{Y=Y-%)vD>#c3Z05wm`eB({=Y` zTk7q61AbRlcsEvecO%Xx<-gNTTdMW436y)OR?9T?bcuFXyY|*%t(49r+hEf$b7sTy zCO>Z+Vr#Q$p2!c$Z^*CASLN5_*O)K!4}Vsd|KU^r?uogP$NUVa{Ga~l=l&-?p4_z` z|2dF9tn^nq_U8|+{o!vi`BTmw^z$a`pOV*D{J;6p1N49K33t|y|B8#^Z_Nx(+{HyMH59-T*_;UI<=bm~;{D#(iR?o_B%9rNH`(9d; z=8Vf;<^z{soO?d<>vAnP&t%w=eAoEPeAi!^8+*u)^SzWGpV#xb-T-b^B!eZQ|OWvbCQG4#>uTY| zFZ3!%`PIuAwDj+N*pR>R(cAQQKicizODrX2P^_pJObzXvS{&q;h%c8tHwi~FP5vHr;25ccbT zVhyRKzyHy9wa#blv$js!y6m{siB>!&uYCg2bZ;X-Vf?4WC$3r5{pHzl>(7h}^Wye5 zGwwguuGAjp#vK{gXa8qr!(Fp>KHN>Om=SlE*>GVl+yiFAEu2`Bz5Q>_i5sw{`^&T9 z8m+9}B(Up0H#=@(U36=rA7I7v@%eF9E|060hq-ZKUR+q8{7f_A&N3tJC+5Qa!aC!x zoc%VwZuq+M-WJ8R!NYvF6>%-_0V{xy&vcuZ=N4zVjj!1K$~kVkS#kS-?6qgOeLJp= z9cH-Awj%bqR>M9oyTCfw7h3~+j`go!d-dyobtc=|wW{MP)nSe5u%2;P$=KVSRxp0W z47I{b>&;Qi(kXN=%zG}`QaZS`{dTs@`^?*$Ul1k_7rlYK13mqBTcbz=JLv}vffFVP zeee#y?qb`}JLtR7i1GW-<-e1gv z57}Dj^?&eRAqv4JW_}*xxjocY5{)3tbvWEMowgro#=|FV(?umX${d^T+r%C)546Ed z&~xSIXXb$x%>=zfPA;{zm<#$V|9FjUD&4=%f8Au;g!bR!U+%C?PwuppyuCILf0u2F zC*dCZ`)pG@5%>F-2W(S484K_WZBsoV58@xPO*MD)VSKx7swd_Vd3e-TG@JBsd3(av zDw=_QS~E)*B?WSf-a zwn^rrruL0#qt?QtbdtTN(7q*Yu>|#G(G8}VtvUr?N=x{u=~R4c+KQi^P8SRSw@tTAn#^Y1-hPL42m80AZ_yHZYx-9Eozk7`-?)db&2`8R;2v z`%UvITUd)TlZ{!7@8Hi$&r%y_8;73Gdi(@`zPAUbvm(Dx0~e+G4p@_`@V`l~^Doz@ z*Zaqt(wmg)=JfaC2K^!Zga5ik@5ol76Z}c8ZcA@-&h6>#&Yz#o_v^jsy>fDYdcT}J z5TfmfRIosP7N!g3WKp_E86Qg@OSTrR;Bl?1WvPA#mT9?vUy-gzrm|2^%2iL=qZK%i z4kWK*ttx(Hv7GLpKIhCA(if5~g9Y=}=N8!(W{qx{ZJBH>`oLEB*JZCu zHZX5@8~ZnAZ?xaRyu&7Qc;BL>xTDeY>EaN)6~B|7n~lxs-8tDz3vkzt;)bDaY zMlS5%fk}f|z8}#qc2IVZ{fume{UO;Qt~xY3)K#C%KA9BF{yi$0W(M$o>3ccady~^e z9r(1I9G@L8SD(v1Xa9LUJsXQZaH6ZeoqgN=zngv6KYlO!o)P))oB!I(j{eYob~f9u z=Va&DpPQX)|Fi68_UC2i*{0Y zmc*|#Q@BN(gMR!#HsEg0dm}g%$zZk75^)UdAJy}PO3|NfA<|B02ZWGOQ^mG9 z6F*B2Z;0-D7Cv~pR^BdP=-}sC#fJC={z6-8^m)^w&udENB$r7Kp0AKxZA*B+>*VTs z@hOt%{~DtIYfS!_+$yClxn16ZFDyl0m_%P#(yKh*zXy+4(7Sv$KKR9gUgmr8!8;bB zcWjN`u^7E$YxIuA=p9?5cPvKl*c!cKF?z>DjGr(999COMqIWDt@0djISd88=iQcgo zy<-x+V=;QiBzni9=t3)$y4zM1ujWa7kF6-iPA}fO`FJBB_?5Pz7&w3NU%{JhnLLv= zSga*@%?2@nHoynp*&sF$EsY+uAw&nl2S3^x{b*zKqpi`8Hby_ni}It5Vg_yEoN4Ja zK7c26)mG_N?D*E{)_lY3(%0c%FNV+t={D&$_&20)z`rqlBmPb4oAAN!PD-~+w{vaq zzLU~7r}R8}-)SNY?Z|%wA3RN@p?}8*PdqK%Io%l_{PDE(?djX`!7EQocS(1_2j4s` z-8J16A3XG?>2B$6?iu`aQ}olN=%<^apKghMdW-0%TcV%dBKql;=%=>`F^gRL{`CDy zx?j4Vl71llfRz2y{oVhA=?C#2GSZMmk6s87jiely9_aj!q#wb5RCJ@w#5Ouec@Itx zmNLVeVyQSspTZw&gd!8i=rj0$16m^vXbRDcq?~BnB8xGN5-Vq%gb$b?iI|`z{Yv^3 zd_V@RA;J;5Yn^KVm6Ys4a3!Xh_AKfh1^ zM@qmV8;O^sKg+5gw<>8H6q1OQbeD7PPVd17MA90fCgB4jX^n_v(gY%TFxC4dj?zOg z&BN&<_<&Ig;we3f4@jjUB9)@pN{jJJ(j_p*(iBdO*rhQr#9`r3JCDF2e_GS`ZWK3VcAQg@{m-h)|0Wp(YWb79&DUB0?=jgqlQzT8s!ai3qhA z5o!_Z8!_%QQM?|!JC6^*fZi*P;A_myg$y71Gp21rs z2yPDO*}NR@-i~AF<}5Fy34uY<&0>N9ykQj~sCt9K!+5I&d0%gl5&vWzoV}6wQgRz{ z_U0l>$!$d2#fY{OQKsM)k*4~juPm&@2jtxtk@tooP8n+yb!yOiQ`JHhUn`6_^JOf) zd5AwHB_Q%iqEJ1Df4=a%GhZmY;HrSpTO&p<>2J;BF@po+tz(LCib=yU$DAlU>iGV|6FzfH zvVB;DHhF7U5*A7yzi-%Qk(U#ESU;~RJEC|_@wfPpVs$<~sb3_sV+x=8t9WD|6TxhT z)tU|x(d;84oBf9fX9rlr>4RdP?Pmq2eZ@fAM=Z3x#YEdnY_vVZNc&f=SvRKHDtc$gtW`VNDEQY zLY%Y^DQ&JuX(3ixh?aIuVQ1U5F=pC$)U*&cEksTWvC~5Iv=BcnL{JMc)It=s5JxRU zQVX%vLNv7yPc1}L3o+F~RJ9OSEkstkQ*5;mU2VR2Z{HAOEks!han?elwR=Tr`?Uyb z4~w(*kZ5ZUin+GH_JHkv+pNMY5)Wf_p{=*A_EwWt)={|7(%D-J=K|j^(vCSy8|GJ9 zOV{Y9J6a3n4lSa2+7_p1P4pz+g6s#hf(DaOS3I3O=j<2KESZ}&q)o|naJzm!XnddK zk74~aXTPjZw3&6-u?p$B)Ir4m9{c-%`B+ TYqd&VnqJLHIX9iq_T+y7#;O#c diff --git a/app/assets/fonts/Roboto-BoldItalic.ttf b/app/assets/fonts/Roboto-BoldItalic.ttf deleted file mode 100644 index dcd0f800730ba1a562ce450a8079f77e7500eb3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144700 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 diff --git a/app/assets/fonts/Roboto-Italic.ttf b/app/assets/fonts/Roboto-Italic.ttf deleted file mode 100644 index f382c6874359c1e98bdc2a2ecd1d141e8f1cc15e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148540 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 B*%JT& diff --git a/app/assets/fonts/Roboto-Light.ttf b/app/assets/fonts/Roboto-Light.ttf deleted file mode 100644 index 664e1b2f9dbafbf6280305123d2df7fa0c66cee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140276 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 diff --git a/app/assets/fonts/Roboto-LightItalic.ttf b/app/assets/fonts/Roboto-LightItalic.ttf deleted file mode 100644 index b8f52963716da01c0ddfaa564aecc1bd2cce9d00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145932 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%0ASr-(6zF~G?n0X5UOlg@nL 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 DtJNnc diff --git a/app/assets/fonts/Roboto-Medium.ttf b/app/assets/fonts/Roboto-Medium.ttf deleted file mode 100644 index aa00de0ef929483ea17fbe5f3fef66de45ed724b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137308 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 diff --git a/app/assets/fonts/Roboto-MediumItalic.ttf b/app/assets/fonts/Roboto-MediumItalic.ttf deleted file mode 100644 index 67e25f0197465f051496ad1e7ccd175402228527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147876 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

)N~QJd5S4s&flYMzzDupd-> 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 z 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 diff --git a/app/assets/fonts/Roboto-ThinItalic.ttf b/app/assets/fonts/Roboto-ThinItalic.ttf deleted file mode 100644 index 63e9f97186f8ba7703e019dd0bd29f3c875d60fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132376 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 E3RVjh_3^^}%MI`#wIF{g*4XL3;$vk;omBxMFH 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�wMpd(vy)n5 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

lxY7sTs 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 p60_h=B@Zs z5~Ic#HHk6Cn8cW7l)d{uGs}ftljnKg_xpW|bMKv7=ALurv^i(yiZDXR2{r;!w#n?= z_05j$0>Td-BGmQMHeI{7h@E3U29anTLbB|R-MY3-`E2Ydgq)kf18$wWYU57dKtmD2 zMbOH?A!7#RZYUqw5FxiLgsdhEnVhHg7)B=}q^W`H4Tt3pACvT4c?coDoA6A<@Ie!E zkrh(G`>Nr(-SE-Vh6zjb{SgY!LU_r-oS}oV|Hxf82=4WP>xnsV!sc(qA5iZG^`M+F zc~g5jRAoT@4MNJcqsI*yRMx3OTZ95);Qb+E22IVCr_nBOeJb3q9y@5vP{+eh<|AAN z_{nT?$4$(;C9au_aQSnD0-xnh7@AwNY2R+RH6NbILyR_1(l(6_9N^gG59DbDClI>& z$|;)dZ@DM^{m$L+xmBRma72(b6w?o$u^Mdn93jQxckbd6#Vp=Z?M1c|oY@)JZa{8m zAd=NycR5VAVDZP$Y!4Z-b%i;kHf770Rf`+lzNUuWZ2_nW!r0xSJ)lg8IapQ)w z_KXG-3|50lgc{-Po!J{xWIDJ@jR-!@?uB+?&kAXQP6z@@rXQjdnF`$!Mk8O`7@Z&; zQAg6*xQ#lXee_F|gY%6CNn11o|A69137r2BwWJ^7XxRHf34)@9(jH1Clv_|DpiIU0 zP#pfmSWO3`cJw-$PV?ZtG;~(3L0D*SydgA32|@zO5PF~l`Z<()P@juh3Z*Ck|B0H@ zGss?`r~%!G5@ah;jBu1+&k$O{ekIBj`orD^HKL!P&xJmyy^xG9$Zn(CLagy8AsGEY zPa|ji3lhjj=mq}8xRpFY6Dc-sA?fHfEe6;xB40WUV7iFn=>n8M2B1N3>@6FPx{$8#TnYP&n{h z7##;Rc!?Sdn@|+s=Pl1fZDl{9M))EMCIgMbg|(;&^qW@L54871E%AM0D9{o57)MbR zZcgnm!f&yb^vC}Ajqx;%LvM&4yO4&!{a#`=l%dGma0d2^ke8txN)WNb!{`#6fPX~{ z-UQ*i@ne9wlaOKj40uS%cz|9v{wh2}J%z(4PZ$O8pGUFuH%4=`7vPMeyMQN0pgs&{ z`UUDl8lxU`zwuK#9oh>(BY6MKg!`^TnSu7eeeH#hp^a_EBSIzc+BTFXWTNiCe-~sQ zpti!#=$_CCb&%NTjXxme+#@hc%5Et9oGJ%k^D zXIG)?@+PREybv{%S)tpqQz%ggfxhp6I>~KNs^D(C1Mg`J@)AyNAvN&9L0KQ;M|2o+ zqaPtPEd~Dn82aUR=o40FB@-12H-XL~9PdSWvTUT5okU(BPX)3}xbFazdB|VZ2jsBS zcn|v4i_VAl7aOZ(``{T?hjwHl`aqU~lHmRZvd1V1ct#^cgS_rGUX;B^P%0b#sjpy@i_EJD!mLeNJ7tn?)#yh3GK$n{zlzoTGUi#gti+)n+d23 zEkw-(HA;v6y$a=P=xPa4?KR~_?Z5I)Z~WoEwmE}Z8nkZM2$fIz7(3HnZR460RJ|5PvcLr ziN+t~OHr(B9C88u(gt)#qHqv+qY>IC33pm?&7UvpUkn!j&nTpPnVa5w|D_TKsBWE%R9iZI+ ze;rDYw?$`&E1F5{fL7ROp!R4!xefP$UXc|5U#|oHdw@QnO;MU63dIRw*b8W!D_e^` zm)oO#@&vS7b_{gNPtfNZQK+CWo&Xq6g1#RpzmA&YJH~X-3mxcsG!O7^MOUL1bTk@@ z_Zh#WPf#X!Z1pT^GgPvcFH#|HEUY6|T)pv$042EGtb6Cn;Yz*SHm4tSQs z-UrVA1*Hib{|WjD?x7FhxD;e&1}YOY0PokRToBP!kpED?;V4~a{0;ash4?_9c1H@( zZLV}T=dFdz z1oju~7ub*n+$J)+_;1AtWpEqG>|||WHqyLs``8EU=|4+*ZXcPAWQEyAX8-Zy@vl`^<1=F#QjE=0DI2 z$nih!!M6bTyg1z$PK<^Yd*gO|9rzZ`gWuGgt^u6~eh9N|pbr`_e}MTT%qKAIje52R zd(7)(7YeV_Gt5>oeN(&V$Iv&hk70deu?Js<`4h~iAvwk}(;n)c;NO6c@jvZ>hfV_z zrPuP(7`|VQ#<2c|_q6=q?z#U2J`Cp()^ChgK0?mSmwA8Bdy=AdZi-|*|;PjmTz{*ruX#D4d}qcRtY4X*%=n!5 zG4r9A-vs>1{Uz{;xDUu=oB5gG+t!^o$$NX|C-L_&KMnYl%M!H5;{GT2 zi;@qd@JBIODx(}|Kiahd{tlAj_yQ`augkI{wE zk?$p4BKc&}9(+vZ2Qq(@>)`kI;G1&)5qwhSH*&hOu?viCm>(21*o&n14T zeFv987+2KwwTVx&>iB@^gL}pr=A$xyj}?3efj28Sg@F@*ttQQQ8<#FfrtIE zLgncKw*>RHqX6x7B61s}P4?n^wgBkYF zA*P=v{PVueLQWfZOyZ zXCRrbnYI!2kJK^*G5u;Eg&nW6YAhVppEf&k^noALP1n8PCtZ}q#=5uw#o?#L(070b zhcud>GHvQ0;1mK}*dBN>#_T3eC1};p3rD!KzuMKgF^Y`FljGyW3m28RH4 zaH8(j!0ezOV3=E5d{{IRMu<6Zh8_7JK@Ou~^c2lSa+D26EOu&-G-x&|L5I;1bOBvM zx6w273lgy-ut+daAqIEF1MqM>8_&UO@D8lQudtDLlO)oMRFLbWihM-hZ`TgzRNo}ikRr{#})FJ8^b-X%7-9(+P&Qs4(?^f?qAJ)h;Dvg^aKog>g*7Oe` z0rCLH0OtU&0Kb5UfVKex1BM3Q`18s;K{Of-MkC-TVW~y|faMOrvJ_oJ*HJb49=$?F ztOR)t0XdJw-S9x1!?7&EM*+*X#G@9=Yk=i_z!HMPwOB3$EDPycx{H?4GxQ?8K|cX3 zkq{!p2(5)oVTh0`Oc(Nn+roX}8{tnGkvaJxzf`}uekFdd{eA~5ky@p8SF6>*fMuMz zQ5}}M0Lw!bSoW#K(#Z_VY>p)cENcKuEZ9Tr0OIq;Z*X(tMVw${5sxq^fl&OR_(Ji9 zqJrXTR2i}OyZAls$;cxP5}TprhC7BmhO367hFyl8hOLGo!y;&HxN#V}!yto#jje0m z*8GJ~O*xcOD7&C+h3D5nSp~;!5c;meceYQ@KK|XMEl9>z3a- zeckw5>#yU!rceHc*!gErraT$>BvgrNCo0ii@7G9o7mVuco>MMOnhh%0d;?!*Hv zMoWk%@d8=(A-*Ude@nkZOYwK8fOI6CNCxRlGRX&M8RZ=Od^xX6f%{}AT#kZ{5}4eSd(>RJ=s7u zl8GdbOe53L0d$c3f)0^aI&HnH*}l2QxED%y+D#bL7!3|`T@j(KBIo< z4)v#M@Z2=$F1m;A(*Wv?z5vY>M1yGv4W(hU0eXPGq~SCIblvypIgAV<(F^deUeYM^ z6Z#qS-zyr8ex+I(16hh#h%Cj?E;JsAv>`Im1e!>bXfni+z*x~nv@1;k|3kns`i^#^ z-9aI{fc08h9`gBjs8v- zL&U!|ZbS3wQo%;B#cgSUU`LnHSPnr6_>NKR}R*MeZy%VsSb z3(DF9QoH}}JK%cAg37=qDIhCpjckxDvID#1fEP~J(+Ccu?XS_Xb2h(dTJ6{fX1K^cn+EfIlmQX4oG|fWULDDO33%-;YD}}UW_i` zWoRUthE9OYFF~`>AT$~;MQibLux_K!bUXon4SM89T*D-l^&cLEM}rN|L5uM!;zw5C z$^j_7Eu8z1{*pSZ9!Yn zHZ%pS>2|akAsveBptH`*D#N(2*C}jVq)YcLv!(<3N9k~+THR_yx(*MF(ve6V4%bBK zXr#Kejs~~xk`>rXU7#*#mtCN4tM*R0dcKyrqhvO@XYvQ8rp`aHLnw=NKXRp*~l0^MrQF)ZyP zbD@jh+=Cs_x+7ss zuT~+>?3}DilUUP{ymb?85I?7YbEYG!w$fGW#xWskb`|Mu6bg8giNN|8J3LW8kZp3= zW-i-QvyIvg=jqcN;AjBb%wZd?1Dxy3Hsjc4CEFZj8zbBJJK#y|iAn5jp<@Y%`8+j0r@-%c6uwi z1S-;19Ee*FZm7aY)H+Vks{L?GdYrfZR zZ!7N!-p_qH`i%8;^KIyR)33c>55LL&A^s`;v;8mo-|>H@wo(sPFIR6<-%>x(L~4>X zT{NRLi#3k|G6EI{$^&}@-UwPA>=)cN_-aU8$j*@Sp*Epep+%v8hV>5nrorq6`tX48 zg7B9S%_4S2+>K0$92>bN@=WB-C=?YPl@nDI^(g9fv^-iFof17PdS-M{^u_3#(SK@# zw2QUJwQpj=W2VOZ9NRv&BCbhXdEC$O!{T2w?AWj*Z4`3%qB0IwrIMr>HXBm)D3CMw2ZV3X^)zgvBA3T2Y_=^+d6ACAW zOsveCkoPRFW>V&)ib;1Ty_#$@IcW0y$%iNZJVibwWy-~=Hd8lDeKgH#THLhJ)AFai zp7wgih8aK4OrDuLbKA^6XNAwonl*pcy4k|)zOzf_Sk37+r*KZ?T&uYOa|h48H7{sh z&b-6(UeE6_zi9sP`7akFF6g^p|AMCr8!lYF@b^VIi`FgrbTL_+xwvw%xFmVW;w8uP z9r73E-&h*Abj#8=1$hNemN_iTS@vjo$nwJFZ&pOFI9TXbm|Zxtu(I&?l}%ReUFEW> z<7&Ir`K$k2(`3!THTpGY)?8kzUORj3%XJOcm8?6pu6o_`^=Q4<`iAQ>*Y{nYw|@Eh z-RsYZh zezWmSk+LYHD7C0t(a56tMO%vWMU_QQivHYWw<%~-lTF<=jodVUQ}HJKrW>1{Yn+vy#_4Y<8%3B=5-BF>J@o9qV=+ z-f?ZmlO1n&y6jZ%jNF;Nv+vHlodr90@2uE)XXndZ!Y-d(al6{@8oX=zt~I-^?)r1L ze7E23#N8ctXYZc5d);o`?uy-??tZZc?eW+Xy(fK7-#vMImhaiUr((~idtU4%d%gC? z?QOev;NGcw3-|8btKWNL?~}c6_Bree+Ly8~b6?KBynO}xO7@-FSH17yzSsM0_6O`w z-k-j|_x=g{XYXIPzhr;;{%iXm?SFBA9Pl_0bD-^kfd@t(n17)7fbKxWflm)SI`I2J zyMqA-Qx0}HIP&1+gM|loAFMcd=itjj;QzB{wCwHGbfAa3hSEsB_1)NGb)#Fs|shOwp zPnDcHb*lQ*v(xCb$LYA!?N4W)o_Tu1>C)3TPCq?ebH?S2`b^}Rd|cIVkMXFomrqJmU-Rm4;@sc2i#tzuxs)QVLV`ztP1 z+^=|b&gz`{T=Kb$bG^?EJ2&Cn>~kB=m7cqH?&10D^SS3|p3gtO?tIDl!{<+(zk0s< z{KNCl&;Nb_U9h|0aUtkJ%!MWw+Fr=KpugyHvB$-ti*GOWzBKvLnoHX*9lTV2>GGvp zmmXXWx}10U)|HSe(N_wttmA)|!BHSEpHM?~gWn*7aa0sI=dH4Ig4VlCa7*pQD>hKE zVHH8CBRZRitoz;%d+DsIV`8x)Fi92f4%?)7JZaE?u<#9!2la2zV7<&=`~#D}#hQ1} zelp}9*nCEB7=NuXwQmni+AC|@S3*T8RR~mwP3;wLsCYv~FSnr)dPh0#r#HezCs&rq zD1$_E-~0DoI$W)Hv|-m^qq9-MP@?{tjZ)`Ot#hu{Su1t^)jHQ|cv$CCt#hl^VWrNK zArVLeRe?$Iyu{OZ6%<7vFM%pJOQQ5E^H-krx;3xT>mev-J(L4p=jNXD`lxWJjeedU z7mLGi@qC=S5SNGpSy?EqnlBE6p&A5|FiJ5-(}(i);5CmjVQ&p+SxX29KqY|TNCT{$ zoEtGX?W*-k>i|=wOoi)_p~^B(vuXfCNgrZ*E>LssL16C=rp(-FL#TNOC)QREe4e=^YOmADqvpV{ONvGZcRIN8l_Y=8&;C< z?R$Nr|6KoqtpSx@S>3z9XmQB2q}EpsAGqm!=bqQk7gy|DI5c}wO1n#kj(+HL>9Xp} zPj}Cs57S}ME#r^Ehq4c0WbO^4>?9aP=OSIQR+pmXY()WaDp4T>Dj|#tHZ+7GZlf)8 z;=E?+VL;rYzN+^Rq3kAqtu91a7FB;i=dUblSYM5aRV60I$GIs0-@pI~*`y>BCGdZ_ zCJV*xe|aC8o;%*t(dWSQ@e{mOC>u0R=&p2h3`c1I6fCH?w>w>qF13ZqES*; zrK2)DC84K-sP02Gy@aCtJ-S()@^_Wa>YP2YU8l~&Mz^c^c*&llvoeiV3F^MvklDnyZz1U?=;S`rO`Eel*-q+X9UFqVK(`W4G@{lBloo)jil zb9hxoMW69Z)=miixR~oQulF<=XA7peKr}$$ znZg>}KRk4uEK&Rc+x!C0b`%rIeR)raAX!6{QLD4p0`|@*$=zK}sDe0yo(mzWKw!vc(rYaj5vX8?>K;*3i#|ayY)dbv3rf%j0-56GiJKiq?ot~ z0y4(Lx(DL;##^a;>nwQ`gN2}$#vke5T&MYhKC3s6k{;tqjlBxYkW)RJKrD034PX-# z7(i6OUh#3xG&C_p5gH;_P`O)@yBkQ;yryE!iG4egn>WGo^1a)WE{8YjE&re}v{OV% zA9-eBD2W$86TgFKuPbf`V|!omBk`s0XJ=(txOrKe{pkfcmfgAn_~B@yNVT#upmT}| zS{cwnCP6C^MlZ+^lYPOWll255t-8b?o^_-mZNMAy?sZ^zH--T6JhP?nU^Xp%rv*XnE#8LrSl z*M+~sJn{H#_ddO!)2u-Q z+B<8EWm~VRD_y$u=sC~Ttz-5QY89S8VaELYF>>9PUtAuli;6gz_wj=VSEepoKBsU7 z!<9f(8_^rU<2Dc;0U_605rzwMm~6Qt<-lZ}IY~^` zfeSUNPzAMFjf%Z=T9zTip z7|4w!o^gPR1Ct=2r%(@u-pYZ)V5KedHajb`@@9}ZD9c>U&iZ+~GTJ-4`f=K;R7@{1 zCURED38QurcYA8P69j{Ut!Ar06k zW`@921kv#1Yw_J@9}08lmu=d3xMMq@ZzkZQ<1!Em(SI%lT(BgJTmT~%h7qu~!VF3W z7cLDB78vPVEUYrnInK>p5yE{p1!H~_3S4!lz@G!7Yho;Nujz#F)ZlI@V^90bk_$Q% ztqKT!cjU;q$oMGSFsyZ6sH>)H|I9@mo^50w2KcV`_W9|Gx?yAS=g*#sKS9dK0n$O9 zxP@U%`?Mt=efII{V#wNpoIpNRVDUve$cb>wYylZt39~xRL4qyo23rfkW?BvmXJ8W8 zP|(u!-S3b41zy)=VV4_*4W2Yg<|6(m+KBU)EyIII{2!1+r6>Yu`3KO_9da~U$eQqX zy23kMrFU}HWwNO;BW09^b+|6df|Ppd9mUwdF^cnus}iE%bruYO10_-?e!v`(lLL;k z$x#Nns?3gQwP(SQ-aXtS-W}U}I?Q{^_{_HMVL$HMcu?H$nbAG7(A~RZ@6OBTxu>>k zJ;lwVX~*;_Lc(G?^TW?;w$EL;Y4V~)tEgAr;-%xK&dFyo zIu-E#td@tmny|JQBS}1DZv6D#$ev;Ct<`J2aX)k3(%HYqMZutal9;zfk`lSeq09h< zgeJMUsn{h6PdsDDUVodoS?MKPgM+bR_fdU#(@62@rABk(;>>2F)XP;dZj%H;Lkt;cdJpcVAG!qr`-z)49kX(pn1W4tHS zu-Daw{1QTv9OMqKF5;;yzntF+D&lfh!e|57dJb7;$_qXfe`HN0gAes^g{O zbLFe#aFz{A>(9cw7}vA1)X+*z&gStg4J$F6FJZE!1^BxF{I(2!0`L)&1Sd@AL_~c8O4!GPFa@w4@T(L_U*CHgt<&`-L)^g??>Z~pNaTX%7;R68*uCpo- zYiKC>L(C}shnSs5a@0V#HW(I>P`N1*$k%lM)Fh z=YY@NCWJQ@Z#<6r?vwdf!o$N0*2{F_8u5?Y;yv+_%;nu;!zZ8K#R8)pgJm?pVk>DX z&Sw$_N`8j9UkVyg&UzXmMP{m)>0mS8oatZ+&L1C`YUn}{=a3KlYo0;O&&A(xqCd=2 z*lqZ;Sf<+|M({pla7^Sh8Sq~u0UTo9hgMo{ZA_MD{PAC`jLZOOnE~2vg~yv4Yu3SL z_J{)p;sJiChRzo8yea_6+uu-{4InKsOk)r^09|0bDXapXQo~FVE*Cr)E73*Lfe`-W z0WlbKn)8(9pi}Sf?8yk`uPyU4@4jHpVM%-_3Zb&vIAJY|K~PjfKW_fpzK_3&?~#C` z?_a;HCKucW%$RgOuxHqWrM>3{wfNo_>u&d4fxT;BvZn)jyGo&t=3m3s1zv zYG7o-R1k$o1if{AuHmn_K;f!|#CqX%GT$&;rZbEo02za=IT)QtfDIyWCfK9^0Ea*V zhqVbq9qURQSP3`7bN0|T6b>C>)=>SeQs3}_HdmB_xP*owR5-3W$$VLe0c%hWd}2h>Ioyg%L<$*E2(0kuDJ?g zP}p#-qgU8)##LBoZD2+i$^lHECD}an$D`&mV$I3JWmqs&W1nZF&@cf=mQSV{A`L+R z56B5k0(fKq*+1ctKrk18nAl(@i1FB$c=;QAq5WczJBC{f1dH#%p%cuT`X?PN!o(6$ z`E8tQ05@K71QIy13IzNK4@lX;P?eb?l{;V+s8WS8Bq`uYx_6e7a7@LouIJ8{8y+nj zA@7xY9R~u<`(t4j7$z<8CGYe?2g6gtCngw~UNG@*OB0O$NB(752NPHtTyJv zhB>w4N1#~ zI0Q6PK{UOVW)=~iI#&{6IqvmDVt$~7a%6)8+eA=r3xeulH9phzKv%O6 zzZqTm(3d5HAf{~^{)N_hM1gq5EJo*Jr%#7^E*jY{)x*<~ddY5kSt&g|JM{VH$*7ec z-Wg+FkcoyBvZD{K&e#_fS~hD=>s*byW?_dJ^OkJRpR#ZPlj}yHA6q~lguuK<4zoqn zNs6)QsSnRv*jr2K2c=nm00M6HRlSDatMgHo1=XJgw4_`YOZL2%=;Gm?+BDbi?pce^ z?+yugbL8B|4XV7d$8?&f^yt3+^yc88zmJ`L6Gtv-mQC!m40oC|zh%cyDvq3bRlRuI zq%KpZx9RlhS-t+=H?rMxCxT33^f~bROyG9~jN&+M7WzQaf6N;(i&pCd?ivGeVNfXa z6Ss>sl~@pW_|tru%iEVS7hqjz8{%WaX|4|wO>J95lPq+7onvHgK@KVx7}}s*Opc;T zIDI2VeDd+>+fg^J-Ovn~Fy??7B7!xJzkd72WBO~2!f3j{*i6#p)l`{SE;3{x(Ze~w#p#+`+6Z!?(|Ww?Q|kT-*hqr~AB zw${QA;DJEt%@U%V)*KA>W*BYYY6$*8jFJT>?HC~O91N!H<3aPs3qEq(`>Kdfx0H){ zry{Sq$Z^4TtP{}NOj?6$z<$?Y=7K^l;3vR+3&3WNGEH>1fXxmB&Q1cy!VXEgL~mkDPhSm#2!Cs}X2z=~rAlfi2FTC=k;!a>pC9?AsEEngYvC-(0NqQ$mO#ovpN3&-1gS1}BrM8A`{@y8 zedG!FdH|1ru#k+s<A1Y0~Ul3{umdp;0>jy8+ovXEu4xfaueG~^LWo_mh3jZlWx zCV;?wcIPooQ>d1N5uwrQPSa=jYQ8_S+|8v?r?im{7l_-BJ6G)t7;0}N6UQ{26B=2V zIa8^O4olax?X4@^vv1sp5kuQ!`J%HI4~sS}a#NOcOMNuGYesj#A9C@u9P-FcFlS|m z34bo;(wrEsoFrmMeZq;sg@zesIdx#fuyx=Lk7b5}8D<}IWHEtZen_YScmfg?EXps9 z!`w_m{W%Rk+0!mBFuW8eSB;O&Yf+pZUl|%VJY{HDj$>wv{xbsc3(+Wk&~~BR!%!X9 zP&_JLf6=R*;jbpmPagn&&;mXSpg(=22oLv{B?KgeYR*)8YQ@55dX*#BCJ+%bGsNJ` zgI5-B3Qj=u*xAhRf>(hLrcYKLBkn)0KXX9i5%|}YqP;$6om+RzndRo;(Rk6M!Sd}l zvFj)6zr^;B%5oQ+FI-;)pIBjh7Z0{C%98G!pc36VsU@)MQbmjjrP09ujqWOE20En2 zaUf?lQadB2He{z5o^*dt%dtU|D#gm9Rt;yi-mp?z6`YctG&pReQ>P|<7X^_Z$iccc zZ$jGq{d{0bW1RBh#HShQ#JOpkdncGr2Xvngba#VnSM3O%<0GL^CpzAUYf^CI%wj7{ z_bBVxM6XivGz+L(GoKZtAENrEsH8%nsdea~Ygl?n19F3R=+6Xr!V2mG2RCcn3=b3@ z-9~qs-8dpe=bkag8xK&Znz~|#+uI&uJMoj{5o^j4<7TI{r`He9Z!o10cxMo(pB9h+ zcZYQ>oW(i2{A-V>Ku4(F$Bi+&d5FeJX&$j-hT9bkH|WA7kaFPt`g|8lF%CMr$aj%X z@P)NrDFLyLq3(^dR6b?CWoPMu)yq!l?5x+zVfEd_W{q&JN~#^@ zvn&hquK%6G62IKrJ})5T$en28rKYRn+J%ov9aP|B8#|%d#x>fipvFTR4GJCQ)TwFT ze8y}p*sXo~^mku8c^(m1-KPe^#H~!)HXC2asN0V0fxg24(>YpA4IdXw@NxaW^ z&q#g7y(x(#lJN7}c!GdY0Si1K08uMT*V3K$5R6`HQ)7G>yHnP%pws-RkqfI9sgt@S zj*Qq*1!{_(7ut0C@+-qgQdBaveOk>I01xY&p9;jVePcg%s?=rZGYsJ3#C}qM=rmddy80&1O+Fz1cl^OaoTfsWVE-nV=7m#u;rTfKgMd}-7!SiH)Rf~#L1QA z894S^D$acP1AZkcDzZv7B=2guL)Mhju6DkNazj9tcY{%rmVI|k^pQQSZnS%%Q z8}|KE!z{8;KYdJ3A8$uPZ?f?4+>R}39zn_xe(((#CO3euN|GB3gJYrIBty?pr=BDYuFKSlR+>3R1H!yvMC$Ar%5 zHQ#c;2#NtaauncVF`(ps=?TgDmAyCV$RYrw;;CN<`M?~AIzw0MSd9q8==?E#fLoBU z;>5AQO3&6g0~dR^d9)ffWU)IL^aR_B&p$8t8m9HS-7P+KaZSO-GZ$BzHlW4Atu9oC8l{4jI96gm1f0%x~olY@USWzaojp?M(d)b zaaEy>vJ(e|j&$FOpKu?P2;U9`LEG#b@BZ z(AvU=a1oI3ksK0Be9Wh&{KN69GZhe`GzH>oL&BzU5}TV^>wqNm z3mNa+F{RD{NlzR1HU$3yc`k53K5v~y8YZTGal*vYu$G_P0(_LPf|WBX7fz`|EcB5y zh6HC^hpLY+hn1U<(6F&L<(_dUcod9t6(%d-PS*5E>=#sAb^oNJENXJPbEq9%Da&YW zfcf65Xy+^in{0)V2k>q`cz-CGZhF6k+VBN^;L9Y3`tmrCgS9VH3qB4I*SBSx2C!jq zx%W8R%mdN~m>vxYfV=<=PzAt{!}q<>ghhx*a;~Mx(B?6s1e?_C^$S(5_cm|Z>qRcv zrM77~$jUZ(#HNKR_Xj)n9QGy^4&6Jn9)um6cS~rtZqmF%7naL1M`tBBYt^{v=4s1z z-C8Ug(XR{OJ;wMWStDx$epBtNARYvj=*}m#NR_(iHKf|i@)$bsy3Mj#z&tutwa$f` zDCQfPqC1e*PhG^!31C=OiBmTD9Ftc}axqP{U z)21C{;c9Ge;tw{b@iWjfbvn<2CAdc*!D$hO;o6Y(92RN=4wk-xhWk6_VW@aY+B!B` z(RIO8Ev%{vitf;2EVv5y7j?{d_JYhY%+b$j*OG?3gINHKZ3sM1x87yKCes zF{B77hDL-`K|JCK;9Uf;S;nCx*tnMtX5evkqd!F==thH3n!_U%@BGGXvsG*$!ieUh;p1%p7kn3ljsdu=CAcgUv*cP?jA{S3@v2|&eSgCT zUSxpS)}O5NEH0i)eYegAzG){eBUj{2AuhuFD3}VW)mtNO@nPMDqFV2%U`h;7gxO@w zvL+=lzaQopz$9{(Y^jU8;|c2q_yjm7b#|6@7~&k@vwyc-)wQ2%fb;O~trC?1?t$&a zWl66N+{v4s=QnHIy|VA)@u;8^i|>sqX%M+{*qvoZg1L-@iLWt)vP`iqfQRt`#~i|T zFb)9|d2|VOSt7ocpJ(?&UoHb5xfXs$EhK~WZjNmEfX+>+^QhJ@u|;>r zmxMOhG4fu4E_g!HFNf|;ni4!_?$|p=pT}bW2k4oL*9gHh5Wdn7hxBer8Ub)vXh6u% zn9UVt8W8e&%G#AXCKfVHjtn(8s55bSYyRQj02z|@eap7u-J_l;>jF+tNbG^(cq z`C;wVR_)?q#&>mDd%j(I!{|xfVC?WjEWkH`m)MxZ)U%9|T&*zP7OM5|p%G3QRqX)e zK-J}{q^j^Lv4GydPMH5tT-caU8w7|g;6`SizoPa_}@PWN25o&TgF~iUR8bf zQ!u7w>#MNb_2Kscw^o_OU@&|K0|{XeJJi6)pEDE}aVZWgsalH|sa3UJE#nfe)>;Pj zsMsM345@R%UXZZ(^}3v$9lf`y6MJe(wE!Ay>_6#ddD@MU+Gj6~AizverCd4mi$ zkNJMHqawfCv9&m`$}6o^+IX)>+|ZAVTrqfW!Vh0#)>Z=eW_b8x@eL3_h!at z1i2f(ler7O@>!*AkPPl4qnOPo)j>~rfHvhb zCm?7SYMMKm1nVqJOqk?unpp~|LoA0-0Af>OV2;@EPKUETC`?${cbnS5)wNgJfMvbf z@9EZQY2x-i2h~a!x2}!)6&R*PY}}BK9YY&zShrMsHKJ*=R?U`8F6w+bJNI(ujZ+H~ zQ(83MGHp-hxnZNuc3M4!%=k=vgFUW%f)(O(lS~bS{yPdf!5xh@^`ASqSng8)N!p>_ z6J#bs=>n4*9bNogz;$xrn8Oxg)zDw&3(z3X0;gQB@=H8-Mt$8fhb$uc@-;6|E$H@-}XWK0*iJ z!t-&*o!D&s)?X=3WII~B5;O78&!8mE;X9#jw-w=BEt!gp1()=%v{ykAO-vaU8R zw(bMdMh!@{aj|wAm^OGAd`8M!_=|3>?Gspy!&mMw_eTL~4d!2f1k0e%IXC=nh;3mb z{B`>DX~vfnbu<1b8z#F7G3YRu+d0X^n~}hqkrHplK_!mqNOk?>OI@V0ETq1w7t|q4 z1O=_$Hbl*iY_)pRl)5tK`r81eGSB+zd-Lg-ZDxT+X&g`+GYuw8R#nbiR#~neW_7~6 zPegAKw}Xr3&-YRJTv$4Lp8FhSYDTAtDwS)qF6{>>4eO$xe|jC~L_|LSq*B~e*br|u z{DK2w6U0I9UWt!LH~E&LdxxhStKPM7WZ$C6Q|GQ4kh4hqUfh7EU^~dp4HuV*f8jPT zU$c`~DV`F0V?J&p=oC3lgMoKh4rYvrT0D}%7*`%?N}*`=YPKp?O1$v=3oKmY85cA3 z>oP7nH7I1BW7E`M=BbzZD)U|vYkhYh)Bluu(GpC9ho$!F>FT~^@n}0ob#z=u+d0H( z`^2F+UTL;gRQx`8n7ilbMm?3c-2L9w7yMd&tiC2yAQ#o(|u(@&GIC%JPL4Mu>6-G^rli z3@2<)5aB!UC1fegDR*4Scu+uHYkANXv|}913|VQSD>noZ7fOC~nPWXo*tp%bzN+_h zbY;BfsXearRC~faG#^(!+1N*WJk6)G51a^qRhFO;;sf}!hIp;{0#@iAT|~7mLd#|{ zG_G%!MULy)PG!c9EQ8A!)}%;a_b(GS7B|G(%sB6>jnU6PyN-uPM1KECmADC~C(X=% zIb*KMwoQ}xKwE2tAduODwZh6Svc=>Xjr-WxCwI#wUsy6CZuB0b>c#!E%fcDW`}z5d zYL^_5=Bjk-8k*R-WnSyl%rsbUW+#iJ3%GuOb$zf@iYo;$1az!nn=2VCi(JV10Y2zS zFOctnw^=_VSoVS5(St_>9kpfF^`v>P1As?O5^U0`wKJ_lARCC?-Aej(8v)GNx5wzE z_F8R&&UW@uQ4w8)i{saA&6!xZab#MD&W)RO>caejH25C{_Cc7!7Dj^UNM{H3!D0;@ zO9Pl0I=$e?U^{LjcnM%B!5amO2qV6KUjoT&AX$KeJjI7Cj<*m$^Tbgtj(Zyh_>&!U z#8z=I-nJEQeCN6u_F|i115JKhNk%ASz!quv=|XmQhEQBP1MMy(d|6?R^kX4BNtwu(XkEH zyt~#ZHdd_>8_JlkfMK;XqI-bvY~ago+_T|eN)j!_xAhn?=Ncy9srX8m#CVwRcsi%$ z(fth~j29sN^%b$gRyQBMd7BAsmcjplvm3tPM`47?)&rwj1Ba(oMpTmicNwj~$Uzu| zKwqd$@0DJ~fv5|1vWbXECZ8}glnn`C!ctO&Yg|L6>y}wEWmH=mo5&XNB*msnX3l6r zN5;n`1Su9npZ`uak$BmM(C0Vc8;YBxKIh|pQ=b!b4eUf~kR=uyu3hCR=`+2J50@ny zuoLicg#WUp9#oG>pg^~XY-P&h%U164Scr5S6=2YytYAUT$M8RW)UEcZ#}VjI1<(A%pP7tq!dL&;vwBhl&wNBi)IY;jH>V3c zvkPK8$+GLLefS?-*fSrKW6)^|ke~c|84CobBe0g1#>e7hasznZ3-Yy~51dT?B3~)P z267fFW&XozR?|uu(`r^=aOTA^M~)=`O$l>0p@IE_IBFmn9BR<_*`-9()6^cVQXug2d{lY#aAV%MI;(J*|B3^d^gaidJPRgBtf z_!Cbh%ZXtEbSlVTQ}i{h7AAmxjzM}`3SR-Sv1J?$dW@yQ_1H9@85FS$f)|1foMRC$ zCT}WClT_ee!J>EE6!-aT?G4;vh`9IjwKv7%I16{dA50O?;}%n3szm7&+)_Npd{nJ* zukf|(Im9D^Va!lF*Vmu zn-inN+)k5&30;$%Sal{a)s@t2_jIp12YL*axeLy~Pj=v6bu?)-9&nUcNK)&1V#jGs zw0bKWKI;t@=9+N`OmZ?$doV@M-4`K{O@cG66M^s;@l3gT@>Ea*@m=NBRG4*|JLYQk zS~rglV_>1kqu);7{9617j#?VN+A(fgG2@3|h*dw4v)N)fNGCH%r^Lxz<<=#zkIKL= z*2?gBJsgc^M-%kFu%mHo14sSX5x=EhnOT}lCwp&lDP)`_S3@C()wewPlw|6eL|9JA zlsTJ)^i$=7s9z7xEAsbTZ0~f#JNV|FrVBh<`((wZ4|P)A@=>i&Iw!}c&+-wPJ^T9T zwi%Tzx{E(9E8iaGSL_opG;;t}E*t!D$3EFR3K<_F@KZ}5XA%Y3zUJtZsVDg7Kcsll z|9(1Fs+g`l;TkNa9tt8d^c=EM>sY>&O?`#r^*}_?UcxWJ#GMK$( zE&+i`U0gN$q)4NBv0yV(*f5sa6CmMx0||FVRcDy7V$zKeA2plMg@K^%Z1M`-lf5=H z_0qJZi~Tg;p5LW(k8Ry*ykiCS{C02V%)qn_-AdMndm8Qsww>C3W=nO#2}8@cB@r<@ zyUbQPCD0a~=Lb@pCHIPR?bp5IF#X#7do%JTjLT5U*OxYH+O(PY_KTUN7n5QZYBSbl z#{V{@OZO}qe_)Z!Z^0Un1uvM3lpy;FEPD)mGZmKE*4uOzGO<_iDc1H{y{kPxa@97o zc69Z3)w-s+3jOr{uKX-SSpEFjU_tL<+95v{DAOzLnF`gryRbFtYy@UTV>Y4EEbIi* z;|7G{)AwsvA2J6*!QxIVH0z$^&K6{v6o-kLbYiQZ22P3Moim3oHi*S`r&332WHSGN zSCNmsQv>^@WQTtmA)XWnQ4a0We~+Kf2gCd8f@F46#S=Gs!cyK(u;-0Gu&i;MFnnjz zb^VumMX0uVwvL|Hzoy2`!KP7%TkDrs{0zBnG#p)`XN7}s#8wY_qhs)iV-IlE?gjjTs!BG>t1P=hD9c>&b9o1tbGSu zQ&-=A&b=Az1OfyI5CUPNpa{58>sC)v~`YSr2psdcql>i}yj+GVY+ zwbd@|?%Sc{^8cQ5bHcrjXT1OSc|KBZ2;_|49^W4|wz*D1?2_SZ1O+pz4?Vm}!G;4; z^+b9yFz_t%%!s1N?8pPJvV0Tg@>F_9Q)$1_aWy73;mP!VDPw{Q^A*W-vZJH;E&0Oz zL00x7DRuBtE!bl5&?{#6dkbV~#{HHmbDeTkD62Xwc7|p~l(Y}+7Ya{$PACNSicrYv ze)NkelzG}FYLHXKt4IVp#c~=;2k9YhseoE=S{NB3bP3UCG&w`4CGWwn!1h6r*grbO zSY3X}80+ZwZmH~T((!~xDo@FIN+dKBe5_&c#1AiB!7JpZgGAU16SE@(O>!biTt6{=^ zMA{P<2;Azb59C$=&jFyTp6Px#`nU_^u9dhUxC`hAh41HtmF7c*0ri*xB*Gen^9%-R zC7KO+u!qUkTd}uBv;MG|gJK6QDigaDtS@kXwn>cMfZ2R`u!?lxN+ zGfFs@a3dF4X=b53b#3J|Xes;dtVEx#B*C+ek~y(+R+m0EEq2<*QgKT5`daRI;rXof zS;7N+el@9$_IsR71n+BM*UQgFl`LV4;r=mi*5i1Or7)C8|u;Ic$jbQ1xeHv-~=y)70Gu~e4mMQV$#N zsshIq8q6$4Yb?_=i4+d(aE9WfvZx0}gPAma@ra#A-5+*Pk3<=$(MN5*vDqZxt)9=P zG<~Jl%WGiW-H2;Bvd!EEiSkR9&K3<y7Io|{{r%Cb{pVOMbGM?7T}bYaZ(O^*&-(g@cU~ro56p|6y&C+0EIOd; zs=)F$SlfoNxGKTLK zU#SQzd4tK6G5y8gS1vvBI;*`N-ft<5qt*xgeW~xu__38jDsvX}S}1|6Q{5FRGT{s{ zqDTi*8d8{W5F@h5>!l;m3koRo2H>SpkING~)P_>`_`>_y%rPFhFRRD==zXcDmig!c zE~X4#0I#?xwf|hNKTMJ&*%$8FIsD+FOW!Bdn%r2tbiC|@H2S^caDwqaU}nMg-=n?C z_Vd)L7nx_6H6IvC`QTq}#$$8BP-nZK1r<-I!yHEIFuN^EZ`>zrTimMgMxFoDD>7R( ziF{%B=9Bi?Gn+nMnaTPH^>%$dSmlUhQF*|kwfsg{Op8Bw3m1hT>a@80tW^3b1tKoP z08VBhEFAn}{e{W8j?-dx2x%X_w%`e!hG#_6p%uEXeh6_7eWc|OJV-GPKF3_f7;XbG z-N-qBF$#a+;Rm)IUi^fHHw#^~!H*e+peaSl+7)H=6feTTgo2lY%&;}QfoHZY?Po&l z`UU%rJYJm^uCLX~tUajP^-5^Pu}3P^MhQU^`ca#tGFfUvu0uB&c|SZ89eml`3{Yx% z9OxsgNv^XJ^BR$9LFrVdBL***moq)CMdpOk<$ZCfwjH7~-qTWj5_1bET?QDKD^C*| z>d;+C06Qgkn2LTLn&wa-%VKTRGuLa9X=jOD<~9`Ah>#$(!9=L>>Z{fKvZY`4?^%@| zDL8B`N3@<-FS)^y{HF6$q?dG2x!QKpmAjd4=@yzRKbiT;h1yxO>a?xM+rPm298ec9 z0#AEK?56t~QQ3SA;&zDZ_0=L%flRVc?&@oRnV)Zf)qmRar8hilgUyg>$Tz^V#*Zer zL>9KBWSKx+x5RAxy`7y`Z37146zzlX_3JI);d2_}b7tu7;&Wm&E*~B0i*&TQ;i%Dv zqD6_lsk^{x2H^_o5`e@hG+uZ_EB!fdpVp~sw=VdXpV1YGzoXIa5VK(O87T%OU=jnW zGE-OrNQ=fexH=Q73&#DkX3UNd*7>J5sNKR}=hV+wv2L=iSyAW4_;dJsnc926oHzo_ zt;mzX4-vE!;Vdtk~rQtIL9UH_r0K%4- zOz%z_quDGH7;Gu(lff?gH)SmF4;|p#5<0kOsSz(`YV(50x>v zsXQnKtUXUoP#dHLp^a-BeCy{#EuCQw?35d*{d}=5E-fu(Xz!lQ+W0iq2=1fWJDL#O z5se$+ju6S!gDLekeWso!DRs11j3p_lV+oc;n>VrxG{a9fMvH3i9yswaS-5k>W$hi} zC;dri-zsrCq$5&#<+J#^!K^w(1hko)0>v`HUy^t$<(6~={6)wRty_3i-yiP#hfp7+0D62Md@_3WHjd+@a>TfHQue;OglOhz zq3c?)4eFgK5IyOx^6VC74n7%%Lrj#m+em-uU&ENZu<6>r0x}_$XbBhJ!})kS)0pah z^mLerAng*(qagNH*aOv64Tt2=mJ&6VoWtarN!Jw^y0!%RmM3^OZvv5g5 zhe4sO;%p@Ou_988v$@~DFMR60pxZP{7%H@#z1e*W_kd1OoiElF48Bj$43f`)S6Z<3 zaXNJwgIS&vh0<6bz!7~7tSb^_gisoQE5NE0REp4|Dm)NN>qk*>1?olo9^>k0&W{3c z!cqV@Amjo-pLM`~Hi$rd7Uv$jQaxKLD|1|QoG8z%Nov2Fc+ve*QlA<6b^6iAg?)*= zr|8$~M;z1sqm|0Ob4#C#M~(<2=La`Q6yI<=PQ9bY$Wigb{U^?e#2qARKfqm2!d}y{ z*GP`7#Ix#bpQ=r>m;k4AFK(2^pW*4Dv^>0A6%Sz1JL(a@lm?hNqB__bGpj9-cfxty z;N9_K%EshKcP=%(*z`zAjWMNT659^YzjYDgC_}F96O!GZO8-dTgh{WGj*%q&H~PZS zQlp3tR@T3&oeNo#%yFezn-E_eM?+*r_ca_{eHKG2#j z1tn$=&K-z&i!dNCzjm)x4sD%^|LF(YXPGgeO<|itlJr9u`jyk#w_e~rd-P0UbAzvr z{Lr$)k8*t@YVId%gK@{9&~HEpq5*w~9F;oaVQytU(iN7#T$`{=<-iMr|CsUVkZ>y*iQwHZ*J0#W_-W!oUYgS%Bgnz#caXRP5SEZ$wt&#+H zvc?bA&q;8&AT(WEe_=%*7Sdb#RxO?34zdFj*ZoJtx7)(D@zfWqn8=$qRFt;3(tKD% zJ55#p;_?@0rPxuOf0%!wKTOhaA&t_N8hOfPPjk?B`PrlFX?782H@s0$lWff^s(o0c zH!XnR6~}l-HpGiTm}l5lG%h5#P1m-wOlL^!Ut4#ci3y$1vvC8X?aph<;7z=3YTK${ zRA6v^hiyJYZx9SgUAuPZH>N;;VB4Y9gJ#D%X0+V4(YaXPuE&68?TeD45z)js^pyIG z-{Icvyoy70>ny;+L;K;7pW!rQKs2=X=h3nsb;=O^3~YO>n1gv{)bM9MVMrcHw&#i8 zg-g#D&x(w!+c9B6u_fZbxaxU51N|}^r@l}e7y0sf5-Uhno6b2#%Gz*!*3`+*O&otP zXwH zraCS~4O~UUg@!%>qsd1afskZdmxVq1$|attNdLY0{_oWb9ks%_ey@M)#w8Ur*;W4$TIW?ju{zV<+CT#d+4!~BOQ z#QO#Xr-Y^l59$_BO>fa!7ZnW9k`+F_dxlnYZqWlHdd2k^Hz97AgDEU^a7H;&2k|C& zD~r!_Qt=kU5#gk02XEQgmQ>=^X;;T6fxt_J3$Tg>lqO? zei{>cVC>OJCEm3C(s`OGtZ?*HU!%{&xkqEIody?70!!|hl$_He&_AVa-m525Z2O;Y z-zM19w%$H40L-3JZIXqB>c!@L*gPMNefxj4FWqq?=fE#2~VO7g-^MN<;Dfdy~| z!{O^S1wUB0pU0#KS6y6fvzzp$J<(;Ow9k;OfLD*eqZ%`vcQtcrLMb7V7ItmYxaU+< zHCu8YFFigkR-7d6LSHi{FJWdyA8{8juz+g~U3(PrBN!Dt?PT4@yivZ&r8*PC<$KsU*Oa=6%UNE}vjdgA!0cd7 zYn)@KDpz=lF0EXr1da((2^eT2Pq7CiibWm@hDaOJ(F{*W=)HQo}tntQQqElx&fx;Fh&5 z)k9zlZP4xd)gpA6(x1njFK6j%5Wmyp-HHm>6g}43_3^a__FW$ML z`ZtMmfB43=ul8E^U%HM657EGo5Km*h26Tup3RanA+($<|O0`-o;#72blwN7W!w%^# zW&=t;*o24T_KN=Ec4#%0lM(mgZ--;Lc$LuO6v^Z(f8c!cxUgk2f^tKWv%@hroYEoc zT;H6Y)UZh3b!B{nKJbE>#O3|??*831r=wzi`QH!OVI&6^xW%b+)iR}De(6=#yL?x5`@rUJHyvn=e`d1&gh@YRZ?vuBcs+_# zPTcuMx)mwaBv_6vpVOB7bDn4)fQ6Ca2sWKGs^O6)})#zAt?zh zQs}prEnn=OWDFnTAAxmVmO3}m#n}Ul0S zxCDl|J4;G$*-;d>==It)3vLoAT=XYvTldilYxTZNC)L!xiF=Hpy~j#VitkcYN~99j z?0#{j%HRuF5k*q8jE}LL$S$cC2re8|i1IDck}=$1wpna)O!w@oHjC+Oq%Jl``uVr+ zW!+D`nm6FmfHb)K$D#a(im^X!D*k8g(7!fHZmBF%YC_K1NOfWaW?ksjE5RZStP)K= za>%o=hcsSuq>^>2JRmPwU@YW-l6BAxC=3Lbzk_)${g9+McJCw}wBNEN%JpQVq-jhZlmG=6aC z4^+1cn$D1m6xTTlQI5_sl`;Xqtw^r`PzXg=YzTvZi&b?gxh(Rl2nQ%8R>>fJC=2D? zj)>FHeVM5{2B`_|<3?r0*f&#zO$QQbGS9$2t1(&`MM-;Eq5i)Z800^9s!|0t- zJlO@h(}=S@Bkz!z#(am&IpYtU4ymqHgf?kUyxmA$G~Ar3>Vo;fUZ!H^p2dSrvW4P$ zH4Wn0fPk^{q~VPSaul@2Natd*x;pQKSAn+hC?O+4FW?nA#sQ+r4S8g;fY;)TDhDGu zk#kM25{gbcW_KD`(|i&F{?Kdi?wD2KB|q3b*m5$eia5a{O-TcX;kmlClaPPQD}SZi z#E^Ph2W%No)6yhuNQ_pJRt4*Q-7~V9hb9}J(Knp#s8L=cIlHC4&RB6zr?t?{xouXZpSUg@G9M9sc8wGaC(h0O8WR`=s)J81`(mW`ulqs*(Zj z3$WcY=A>!?R)&&Vbrx0wjr0ykQvoE0l#Vh<4|Rc2tT-hc10B>QdzZXZimG+QYoJuM zBc$=YnvBahbvh%x;+igc@{*{SPGhsi*I#@IILa4nfL{oeYKKMseDm6OT5-wF`D-?X zhq&7@U}d7|PZpE#ex70&SUi=E+g{y;cdsg!kKh+He2H&@)h z9Nxh?35Jp9Qfn>57FGsffc6UTVuY|fSEcvOClq|q1fN5YYH@!XWkBk|f- z)UV=P<{~V4M|(7(tCjo)D@+NsgsM(OT^!~DQLV@3=JJjX;Neoqf;?Bv5Hq@NXrdOz znD)o3tIq%eDc+4vvz?Gkq6V?#{NQ(Yr8B{A~V9c;7~=eRb=Vitj0(qqQwX< zM!5PR@96@4k1uJj>8BCKmz>d*<3FxA4Vh4~LbF37OepDxQMJMZ*DrV%ed`3*9Qs`r z{jvhTUXrD01Yj)rHz&BX{uE1>rU7x3N-76kC`wT%4=4;;O6$-+jMlXYa?ccynmwmS zb_l-Dl}`Qb=v#?t>;&hz|C&b&JcW9re;c^b647B4$_(bZU;XXG<-5XaH#%nAA?`1B zPME$93)b9$-2E13X5px#Oy%ER=7D_sN6UrIHZdQ^P$f4@&T5Dj5k(<=rDvs`j_+ z-mAv4_%&;z++TM4^%%S4Qm_fqweHqqejU6aBC=>K4y*N#Z(T+8uG{SXW5k0-|ku=4=e51;jNHR07Q= zYQvAVsQ9ZzNm1X{`LrBUmG(+oF*SAzk(!Zyq`r{z;0NKhBrTty zok8^nohzlkg>{B$X3AX44v^m=Q<(fg#lqgj(`~7)n&*97=1|Jd0A*!~4zw;R?!yUB z47gJ;*iAGMPdA2b$;j(wTIf#^;>`)#y0hn(&YvfBdLYDo{oB@=vrA_elXbsIA$R@} z*1AX1f1*j)!DgP&xhMTA=!{@1Y_`U**)q5eVIqcagS+5LE6k-yU#PKimmJX`EN0rhvt-a>OGM{! z9XFwuG@b-Ik6lQ%EE?3KFd|L5dujKLYU0_*K7&WR91-1h@)Cnd%w9NQ>hsG+>EF6` z_f{qTcN-_;ebUOQ#wG?uc!o@;OA88%(z^CX>2o@UVbPH8f4*D87B}vNmJ8@Ym_lkHy}U_4O*fF&qq1jJwf}rQ(6rRZQ+7vU5oj`c90EEJR@MU%;ssX|HaPomJ^+@%f0*xGoDRhA|nX(S8+@`u6nQQ7gprAV&xoc1O zk!dfc>%|iR=Wo@_lU&#RQ%X|;FWdqGU*YwD)Kcl|*&igOjanLbp!7iCtZVpou`XUZ zTp|4=T`Vmn1r;QO)Vn0D|LM%tPsMH(`|h79ze)91mb6oQALr~((M~<6J?yqQrFo^k z5-t&;QZPS?$!OIY75(^!`X-38j-?R)7=#8b@Z#h*npf=fNdNnij`YRnp`BWbz6sK= z3=EI>{629>g-4!^2p53MPkW{G&#}FGDyda8uOc|+g772Z`bn9{Lrh9O3|SSjGZEsX z3NnIdaU^62(})i~rqhp@I%FylA5PaH?PTjP(wG7q>Brdb=}Y0>(Bn%%4pVOY@h(Wd zpvM+fu@d+6FhI4iA0z|mi^U0aj)?XLd`ES)r%PLPO8hKbf}FvmC2uM@@Tg9FR9!a9&j24BN zfitE!aI{WFG1E!4a=uu_`V@keu1}H8P_0k&u5FiUZR;Lglwv^y^=0?9)0zL~IY*UE z=shhC232)7u80s;LxfS0N>}D7UYnVz*$~kaEnz?y0NaE6=?O9ah~Z(;@1J@r2ji13 zzklXJ^|FL+(?_39F-m=7$u2{ByJ=%zvWcJTzpcQ8pZ}36U~wKN+OH1mB>K{VO|~0< z9@@_A&4%bMU@i+QY>Ow4}bR4d(ePa&Ol!z@ZK3pX17&0sK#8}iKEzx5O6gH?VATIvs43WS&1 zMcymZk9>QKdHMFZY?380b5eFIg7*lKOe5O zHW}J~ag;WqnfSN#!^hU2rSD0?*ZxaLCo(ZLyh&62!O^kiohx)T>TN!|-1_pxD_gA_ zJlJfs-?Id}mrE-Y%lys&krmQ-KGVGp&j2X(zH zU%%Hh1=}mU1+W8i5XDGo(ecvjLL+f&#X$TK_*wgOXDE_|xW_ouf_bquvm@K5%(5*qd#mD@$=f8yD(#~QgmZgi|b z2&g`*kPO@K@uqIK?vnWx{V+AEk#vUK5TZ{>e{~i9fsOnwbj$&)Q|)K*B{EgaADExT zAG{~>ANX0UO8IO=%DqK+qxPajfcZuzVZT126+y_^`!q39oTrNy&UZW`(~(`Z5YQ9s`( z-!xR?s~oP-R9e~NvZYeYmJ*#U%qGx69+@U(x62cdWNsHy167?K%WX0~oH z3L}RiZ?E03D<*hAt7qzj#NFAu=naQ(Cb&sKi(y7{?RJY}gmInP6!hrVO277{msb_d zu*c8ozGLUXZMsfF2N(1$SPA(f(=qKO^5-#g#(MnLnAqeGPq{*twDS5}ATRh^FxD-i z2~#tc>!lR5f3H9`4bao?3+^l=32O-WXnZ#2jEWLII}o9<$I1QapUpG=p1LW_u3#G1 zfYJ15=K1$c>2|WeH)~4oP8y>reZXDm;bUFtSYIXVKJfj-y7K$*vt>XHn#Xy%> z)Jwml^m@euA~wbq(&UTqhPxG(!tO8*XY>gk{JEx8<*%8@;)~=$z3Qs5NFZ9vRZG6W zU>N5+#}{w{j}(71nZ+OzgvzpB(ve;usNSTYcNt}8WNE9DYgKEZv~18QYt8@V$J506 zlRnNaYRZmDu484_g)coqnrJ9k&OY|{|9^7zi=U9I2NsmnPkRnH12)v>*3(Rr`GF~a zZV51>jBkeBB!6HD5nh?WGR*w;c_%%sd{HFpXm(jqs_U##?o2Q_Yl9Fx6C%LBG%-SP zV0h_?oF_{31YhO46T56Oc)HC8=6$g(rk17urT)K=5>}~^ehCT$ zMClH6r6=ACJO8;}SMiNjTfXP$8LdvVYIXOI$}}jQ7G)Whua4*P1A4L=RouI*MzMW) zhBH%?f0rF6h3M3sJ_hP>thR1NKXC_CB8Hn&*)<8YK=XB8AD($D`~#T@#~(P|yL56{ zt2)R{+Z!Hp;j@JsrG+U)Nw2(=)}XXOZ2ev-?NUaTlIH^hE|rs-()(*h1_cV?9{H`K zxb!TR?RA>@N2_RtQ4{|O_gNoznyHYYxdQngdHXmCJdUFXg2D1|DUMk_2XO}*Zotkz zN;<6@iZwjuyYmlw`ZE3l-`%?yb}MFbvT8vmHo;h%Q>6sG%~ws&mfG-B*t)$lm{lCW7y4iM>uhb_ zb0o@jJ#vVO)ewyhKGd_QTZ`39P61uBS5YQOS-J#%>A=wxbL2ZR+E3Z&vkJ^!50Pfc z$+$I1(n-%0r;;P~O}#-m->FAAjk!Vee3Vn@M^Xl^ZL4yilTi5y=;$!$Na3riEKrq| zan>HrIPF7X?Fk`=i>F^;p?Rxc1z!ulUi*XhuXf} zd&`vD@_6gREk;msCtIa~2Url*)Cq z%J^Y~$JKHI-j+b^os5K3kdHGX(=|H-4!n_mIgKw$+H?sCY=D89M5(Q!DF1RIJDOMy z#Byf}4L~PQKc31X!=r-$t1_kxkOQp%!tVF8b@CLwG%`Ht4TkL#lo^}>Y#-vCs`p!Q zba7f)+WXo!E7@$l58S_>I7~q~e8=@`&ByF%-+b}?_i-+@z=MlGr*WEf^0~0xa~|YY zsA`i|hQ5X3YgeX~n(fvrR;0Nzt@&0Y$hTXO{;tI9E+f7x>1!QJe|W`ui~bO=kEgFs zQ1;zmwl^aR^`W`UR?4n&d6L{DK}$J7+f@~*Xy*$+XQi{-KP+O(Y;U4FSd zwo$v5Go#Cq1pf8w4~p7%EWCSFYkc_YnnkM@SN&JsOCEGF-I#hWT*j$0SgDdzk^cr+n?{N@fhpDc^hKfku{i3{-{1ouu3)$Ot${b^${J{S~PDP~HnV zkW?{93ZqbEEz6}5UW@s)yU(25yfw~o8#eRx#nFqKmNmUAZS8up<;akbnuXdr(xIz6 zoENlpUL+l)L+*uA;jA8gpJnuwS9xErMV=-_GgqcBRnKt>v~CI~DF!&lJ>x|DB#}M< zMOJAY1zRYB55wX{jlC+X84n;`DyE0JqCzMjkTZeOp(no~_c{o4Kr$bZ>`^^t zIT1o$-l(rjVlSV&9(^%nVDYFUDF(90CQS>HtMJZvD)o#TpQrf{v9S$_j>gijcV0SD zsVTK@ZcU5vJcW9#-95lw>@4i47x)7@I0=&!85bvElS!ODRc0eMN7&oEQxT0ZG>}$| zx;?~VjB|{D??sph!da1ObNLvlI4|+@iSohEp=}k3LD~eZsPjR{p7zO>=pw=*@LrV2 z#IsXUso%%W2&0*pgda3nHO!mjMoU*nM7=QzHBDypfvgvX-tf%!e(^=$4JCZyx382$ zr4ZB2A{ZP#vUdU>Q^%Yzo)XwZ{Jn|`zKoQQT`F}*xf|&V*C9@nCihn3<#aDy7 zmUQiT<%)3r?HO03*NHt*PhJOZ6aKMGe4&7ne5~yZ^bhS<@ki&7a^f|=wf|;quGa$9 zddIUs<0A`1A|N^0AT(>Z&Y0~kIf za?SLJ<%5D}>+vwp7nry@e zXgtph!~$S0(>1bvsm`81{I~nkpk54O0r|SuP{gUy`|{@G;zn%F!g%7*&B4TB*F?I! zN1Eb-te)H2zOw-}Z~W!^dPkTFU&V84Bu4@)ta~xPHyiG4FYYZG8p|`COI20PE8N)5 zc_fBCa9h9?DWgqCA|1tWyp_D}SMG|He~dzGMP``FL9a2BK#dx?sG7nUBCG_Ie7pFC z;q>bntx8+PwVBk(FspRVkP!=GTa~rS`uzjz+v3merF!7q_7!8Ud?~FWV_q8T=Uyy4 zSG=A+{C)}rs9On6Ji{t zj%x26cu~xi{Pf2qN$3`I`BF*A&M{I0^3JnsN=m*u=|gTytq4h>`nfTNSj@!T#Y39E zAk!wZ$vB%a&f*WMy2W@1eLC}+T_i6OWDoqlUH(?4$S_esu_Y=jFwG!{B3aPsj1Kut zh#V(XW&IJY#5E$=MN8^1a^Zda|PpjbCNz%b?J(&yv8<1l+gc`lqyRe^EUxy0dI;`q5RE1y4b8gcpQ zStXmFdeoC2I~3qTMFa8@{UMR;@Ng~;)w$5iXRZl5m&d7tk_CCs5uEFge(eDk?kA*E zVmSObp^y?vASK-w)sQf$RkD*?QmmR-FzAPp3G~M+=smk{7=^4suIfBEY4C=7MgXjn ziAE$)eXS@CaFIm0`IlkLDBubpfR#-oE>k+8G7aTR*@~`{>gCRClQS2PTDi8|%v|8y zWipB8NwlL0J*{F&G zI-;u4!*FD((!lz73ew=LrUt0RW46AkPv8yhnVm+Of?9O@Du#6S9+ZMn)7f~gkC{iD(wH*|mU0C# zxYeiO5GY$&P*J2P1%*sy#X|C&k`M#KAz+b4ZbWO@Y!VK>TKYjvw_dPB%do5Dmizn2 zCql1EpSTw+VwkJFkwz;vv||bU!h);(}^_l|RgFKczl!MKMI#VrNulgv#5& zP841Q5=nBOwg+{U=J#`GjL8h@M^KpIu6iP;uOCSuy#e1ZjgD;o{eXoLWVNN4(Em#k z$m6ErA4`YMtRiI7F|pcP%h$aj+xp)@@7>hB1FNyVyml6F=Xaqhac7Pxm31i3MFvBi zk46(4ZFIwgH!O|%XymS-Pap$Zt{dt|FeNsMcmMhJ*pEqJ5h)T2w=N~Sn|68lEc6nM zh3ubiYkpwEVdno0W<=xs8Kjh_hD_SCF|AA%wo zz{x11sSxgPbd)V~EUb#|O{&wA=U(>#!+$*ze_{p>21HEt@wye=%)jYCSBn2MbE5HM>O$0~1+r-xJe^If&JjK4r z+uJPT8h1|!Pna`yd-&Ff!S%bxhdbsBUvn}tA;b~7Ej&B*nTYU+grG>%*04sI&sb(n zvJPJQ@sckWPBD(0X6y69M@w!m9AhTmZR(X}88XUJx8JHI>w70!I*tl$+HWOtW0>Ko zHyIkBHnb6@Zm*GVm5~*{RWE6WQCK`w=+I6KG({?Sk(TW!G8?Egrvn-wf$_H53N3~l zc&+lo4XU74oi$8{8&y5J8iz4Izj3CkY3*86#y6#nlzF)b+p)M)vM2hKn`^Pq$<-bh zB4koMS#p?)X0TZjs(|Wlx8hwtCxpZ`htOHuJ|Fx|pWL zF=Op@XsD{o*)Fk7J2oqh9c!!8=71%-&)oz^zP~uq5I(h6&6~ZXhP9hVuZ_~}CAwd4 zxIg;oi^8_;TmSl*kpANrdST^`Rql^=tXjR89F#h(S+s49kiLC2**0$RGkGEL<3}!) z#^p_1_8fRx)HFbhD_Zw0xTrDwKBs)!_p88y1yuHX}N_ajgN??C5IwzlKNm z`35)QryXSopVq79=RKw7S^0s>LbMHu?$%|g@{21inzd~D<$HvD{=QyVv3$N%x$-%* zF3&H%apU#{ugYf|xQ5zG}1othWCwD0{!*c2+b%t)rJiV*hvyP&Lo^T2`A zr{DY6ky$~*;8nQiMMEFY(C_fh@z5>MJSg2|GUPu$ z&wm@)7Q)TKdZYAP)XFHK=-&l~b%g^5&Y2_K|Cixm^e#)wv{Pa0MQEDgH04TEmGjAi zQm#OOISz0LOjW)R0yatk3?V7QHPQhMAv`q7(y)S1+G5MY;2FJGHD2go#sKY(4- z6t-Eut|8(|W)0A|m@&fb51fX@kPP=ZInQFI|FY>b`SU{ivJYM$x{K}J{qbT^>5V1Q zUu7LHlH&)*@0U)HWe3I`Akz*^I6%5c0}qVb5A5M{+C!SQx_?0PJ{n+;(dpy_GrH`U z1}}|@TwaYF3tN_|OP@);7)9R0`)}(knnC(7*o&z^_Xe&q(#NWq!%&Vi!xh9kn4gqOI=c{8ba{Q5#aai}&8*@Ab?*6`4-_CZ~DyhA3TJy@{*l(>wQh zXpzp5#=6%~Hy(rhdp+2B-7%SODn;LGm+9=2=^UNuY@|4DY9;tnuj{(?W_M>hX7%A~ z7w=0zO6Wsl()8g8)qO{(P+F9eP$Y}Llp1CNee zA8D@;IJ&T9TT^!*ygkRq{jv}=s<1VF-PfAt$nlYG(LdLU{kinSTE5b8A!tlN>o&pN z{jBMZ9N!%J>#Yldd&+Ou{;uydU}RDCyn1QUy{d10@$HBX^i}si`i=uVZ@8oH+^Mv zNJj`AO{@c?y4joz%Zq>=5_RAU9mz|yz`-%-k`v9zY*r^mb-F8bdkW{A_Ssu7o3s!7 zBUJjUqHW;sp~N8O>q%@{{I3-^w9*%;By45Z^LiauFk$%m!Rm|&M2sTj2qvO! z{50-?|3ePy6O!#U^B@*kki$;KPeiXSxqS3^QrdhXv>(>3-?TfxU(RYXtVOmts_kgW zEi`nW)j9uu`@@NZJl|zq>XyhkU8c9_Gj9uGV-%CE1Ue!dG~}6ar%KYQg8j@$-~k_Q z*20pdQGE1%v*Iw6%_^a%P*7&CQhV48?0U8d2G)j|Z&U<$G#>l`S~Dx}O`MrMTvvNU z?dDxuj7uC+M$$`sYd+hY54-E1JSMoHQJu_|!}3xh$hVcV^+UQ0O{ia6BDx!WYS&fF zyGvZyc}RyTpe@V^!@Vpr1cP%jSdMISmGgQdFX9{Jl`(f-T74MwDOq-o)-;f1`|q)gl{(4H59q!RtxInu}I zai@49UA?`xDi@CzT2OC7k$ZCqW@i3_DPVml@{^P=6zN%P5sfc3L(pL7g?K^0UdF8N zv;3nE^J+;C-qTsftxilG{NnP3pf?I)FQrQ#V4kg8`b;M-{_60xYwiIw=s|HpzZbI+ zaR{Tfk*8Of#R~axaQmAgM61>t!n&dX+@JtF@vIK?FVMjgJeyz_L#0J^8Xvnvd&@ z&?2&sDxPfg7oPf*^WBAYia1{*N9kef z^g719c9h;<;D&+Z`0F4l1gw>lL+@m8osWhN`7X>=Lk8=*B zGooqKk*%8_t%{ES?Yc|GY32aw=RaF0m8_JKNguSrkUKVXmGI^mVHml#xuU<^9z)Mo z`c(fS792qk^@s?j=lkrCGaqC`eYmxHzv&UtLnjUC?`;Ya7X1C?0_kUn;g`m2+%8#pCnvS@ zx>bIsYppwr8u_}sW}C4;r)HLk9n>{)71r^ zeN!*FHVJ=KZ)?BZky2ygx|sSgUGnXjHGbc;dU;l6{ELGVyVjJZ#U?b+6;6q&k(AOx zU$596;c&z!kX0n%EKs7->cM$c@#%t`FbI47|);}8GMnPsWZ47984e8S1mwkO5O z<%ZzokgoIu36ZBnVwchfeGw-o@*|^ZOdO%Orf6YK&X}BYujLq1ewn3@t<@{WENL$Am916Uiin8dM14}Lh)8o}vOYQA6lINxA+?C1po|#x!aCvQ zmF-@;FN&?opPPE@kH4-?8hfsFP$1bdZTd^VLVsb_vpqLvk@V$M?%a}g>fQiP8!38} z2h&<5GF25$T&h#iqCnoKfE@^rEBp7^qzz~s1556+u0T7fl)kiyI-B(MT{Wyp*yha- z7Xa2u1~y^xaFujgTcoXrbrpEmrAn)LmjYKnC5|6k3ho9$34|xvn$Tf`xkl8OWPL!S z!x@`U&*s{s=+P2)Y~Eb)psGuYp3@1)XNsW{MX|o9d}dXSocUO9FMr^A&}9}Fh!V!J zDspA?tbp_sPE*@Z5-jnPkmoHo#k%rx^UNs7rPwPib-J4Kv(9?(SEe_b-%wZJgC4Z-aP%ME9_wm@Q* zz7q|ezO!RE*LQHP-u^eXB7T%A2KB0Fy@r(!=vB}n08$5)$t(taMk7t|m5xE%&Uj{d ztFxyv0b!HSe!2`{WP>t0jnYO{g@+EqcJm+)(B5P5;8=LeI{~EtJB=8DqJyvHv8q zAF(0Sxl#IX`k>E#$xU9F+*Iu2`0#7#uQT#KW znsZ{G@qC|8Pmobz2yNlnr$_Yh1U$CMQrOt3;OjaO@87G?y2NOTt^ViM{hRIK?i+@P zPNNED)l0AIv=q*^lD-CWgD?_wrA4fBZu7no?|d&^eIb3-VKygMym)YK>eOZ6(dtr} z_8hZMx@o|lRb~_?C#DwpgLju&4M#!*_5m(S;a544%2iw?1M6p4Y!*5kN$CpyNj;WX zy~!8%1^16f_t#|JVDz}vj%tIKe+-}H1!0oTJugD~6azt|8#-~x?ZdY&V9hDgPokUI zBapus&O}9vsux0)CiC_}XpGcrb(u8`OU?|d+I$6VWXc)?$QO#Z#;uWLkG}$oS{Sro zW`gy~_Kd#M!ehG(UEvw5-uX8{=$7>PkwsEv`clW1;p-Orct@;*aH##)MoVXKS-5S@ zj*y?HDtyDV29JVpv(QBlH>P#LgyNABxLNIi!G}Jae)!%shrqUm~1<+ z{3<(tkKN7o#KogZ*r)hL4covs+HDn!thb;vAQPxCr*Ea8w^p1NPvt$6z<{pH!J6cS5icDu~}Y~ToNb0sq) zudhheftC>ZprC40c0oX)n_EvK4Pwm@=u-?=z5d7db?y1mo@?K{TR&0^^UIugwEN!r z{;6l$O#Lv+{km^@f8BZM1?lF?fF#&V29avBvVS7J5Kc)g9-JrU_fkLnn#tgD;3dUq z+dZ})ek1>f`++5f{lG5c7)fkDD88fnISi>3nIKiZLgkT=q?Sk0PRJuni~a4&wwux) z3RzT9hs&ZA+)E~SC0g^O2}a(ypgfdPN%Jnj$lA{k;89k<2QY?*-Q~e=SHur-IR?h+ z3|!IEGzt|$u@y1gMw=NSb=kfyDNXw0&5fmLmm=GC@4Y@EzQ?oUeL~4pK{8>6#vI8O z`u&*?Ke%y)q9`6*nmUM_)X}*DmA9nH;vG<0G^H+&eaIqp^g=M-M8TdeL#PKo!&B|A zXpF~TJch;sDpRc76&xA`fq)Irh1#F83&@DEqGYiNUqwj0H?L+J*>Ew%yOHAYR`NO4 zyY)FKHvGG{u6}g$^7PefC%(F55$06JL1xXvJtS!kHqmI3$cJy|XbfbtMxv^)va<34 z`2Sh#FG=&=Ga5}Y`LJ?Lx>>VV4oD@_bHwj&0<14t1J{IA()3KGNS}uE(}s- z91-lMh7^MYvxDpa`ebGm&8Q*}8&9AZug%{$m7GcfO8ZXyb;t%wRKZwrl2HFa`-->A zzjY@G`6xi#N$r&Sh{@13(fJ3S2^%Ua-K*J<)T16Bb#qnqTCQOE2Y|0uUkJ)_<&_~M zN3v-kF&7B)uu-)M$$YKE`No@AWnk&ASo6aM?Iu`*eSI*-&y-%N+4v1szR?m@IF_y% zYyX}snbGb*(eRC}N{ z(BWzdUo3#t4n&r_LLzCRz!hy{`2t*ms@%8=kOIdoZ!C{umunLANvz^V$U|c^~iDkc9l5%^lNDVb=-yuHc+R~l9gJ+oQF6*>zex@)yxM_CpRSsQZ zt-*N%Q*}DvPhfmp!#YCahpmQ8CRdLSyfm21Io4D9Q@SH`=-#0#Cd`p%avI!wJ?!XQr)B3{+Vf@!WwOELYoee>u1NMD zXJn?*LW5Ax2|n{kLLPx9V>U&TIE!S}2*)QOiA7_cvNJupy3NO?ju{?lFh)kU>~$e#?}+7*Q3Ydui2m{T zvE<14BYNdWMC!yq1^2P3<0l0B_=N=5FSrzQs_jryaQzNHSbyB{O00QMhgR9afr~`! z!x7%MR`(v=R(5aKt=Gmw>$*=%h@0ON+JNe}A1lApH^-gWHGO2hQ-z3CBRhCdje_7j z61`SNK4MiKgv%036Cq$b;LQu{Rwz_8En9g+3gw9v(!t@K|GtrKiyyM9(PH77o0i1d zJy)cJnkaLHP_eV7I8JAF|0wm4_H0HgAIb_J9v(BATsuaEO!3KHRLF=W=drKv5j$*$ z`%&+U-_QT$zLYRjkL(MW58yN5-n;dizV~{LBcau#%w9sTmEkFMT1`wa2kOp=hLG&a zwd-cbiCd&=(jn>29`f0Ja@m~>$@%(@o@WM-nFl-nB2|j7p99U+z+Iv14Swsh@?EJc zUDk@hoe>_mWunwu$BKNoB2?t^3udV*tA)ylVgLvLXP+Vnw72%7=m2vlI=~9Npp2s8 zBA;}3%nPAdH`?!Sh9~9pUe1(-;A^gfTU%WmSI1r9>0r^$M~m=brWyKQ8cODuFwKAs zk~sHlxGJNBHI%KA5+EafH|jB z7-k=j8OAaJEI6j3PtQFrmk#v0bp29q(z$opN=qs((Sb{R2bWk&qL=8w(aI!OpLl^x z&$WPE?0~;w=UIPM?FF}7s9B$+wq2 zu9Z`V6x{5zEUSIyn5HvsB;}+HT`=f{*x;adbXrrU^lca!2m@M=5e@|zDKFX+q~G6? z{=ViWTb6V<((i27wl}`RedHo$(g-mVy9U@$^q^JATAr0t$_1A`kY#F-zg2lsiHz?N z{lWV5STpnx3feq7VDVydym1S7W#T)cpP%E}vZIHp`DBscH(N}IZ4%e3cJD2*KJkqg zlJ1=wjL&U3qUP?sB>#)FUr0tm>>6v#4{Ou*eunja0()XTcqNistxP0y_V9M|JRUrS zo>AmzT*h!}PEqj%`}`61_816Fq_sA2r%hUQ%95DZdqr}nNqbiG4W;sGb+KJ%-nzA- zkO`>)mxhq3r+YIY1%_tyu($F%7XR?BlMyf{ZSOh}Z&r$2#3&zICk^5}zD{PnGIdY( zOKzL+nN9k2LU?NJR^wuWeW2Y1W7a?Gr~ul&d9(X0*mBE~!hJ;}SGT(H9Thrkjjchm zdqJ}q+)`B)F{Z&_NrP>sYTt>7X9bM_?^WDA5P?_=APNl>F(y|~1e*(xXr*QiZTXPr zA$n@&Xe0OILQ%S_92R=;}&RRwcp1LWW;cS5q`5CF)^(6yyQmp5guYfeN*XO}#pxt#8dsKA>WE&` zm}ua&H}b^*Q!!4=5>WuWLv#ZAD60nO@ub#-7KjMc@}ZWI@(=T(sDZCVB;1TxvLWHt zg#nWsCE5$9hjp94guXkEz59B}@WENHrvPHs_h-Bp`)HyK)-2OUpcP~oDbQ%n2#quvle|Ly zX<0RJ23Wrsg0&=(q4-4u8A|-=?`z)D28&Vb^*`a3M-K?^aR3EE~BQsX!K|rr)r1vbGCen>al2j~x8cCAb9wMb{#ROo8WXC2^+)B5ywZe_P zydwAuMdFvpv*VUgC+b&aaf0zY`8gUDx)d_KOHt=wqj_rAqAnp~WbYB$^cudTx*)gc%J(Ht$jrJy^(UFr~WQ^=7+Pjm%3-{E|&Z+AxE?o3d zT`2t5W{S@}zsEVV;Q5zcE3UX)IAnO6!uEqkv@R?hGOR88PWYzXpy90x+6@`i>fxvP z+6no%9?(azW~)$7JdA2+A5A2R)+2BnC|1g+;}MglE!srzzgmlgBxx#n4q}m) z1!x*Hp5)=Ay3s9-=W7x)bA>E16*NP!{g5S~48%2%OJ`(?MwjW*=-79f%n~CyD*qxGQ!ID+$nD9#CTAecLS`FiIg>pPI|Syg@Y>MGp^hC6=>-${{Uzy} zRyyeqaqz4+-smsPbnhUeLsb-3H+N^ziC9hFha$caz6D?f$wcBZK2+0e4s6cb7# zT=@?814f6GcW?xWv4Z}Z~MzWB^JZ`6hbi}65XYnWZD+X;D{0E=a-E3H~}DlO7XXgZgV zM>WBa>0z!y?676*{DCK%7{Pg+45VZfm7h+8o|Hlx@d&g;hL*b$?bM}kCaR+|m_)DW z7Q`8eAUiDc-{TUHzxH z%XQA#LspVN_o4$+p4(1o8S}%%2cVyH%~AP)ROl8=+0ocrdNLY)GSiW&nvE|dx6*%3 zN4rj6`u%I^r|I`|@I4K?DHSe)1xkVgS_f1bgmDP^+>>p|naLu4J^6Gp81`23&-jn4 zZ!-M|d~qh54yPzWonhs81=)ByurR*rbsQtlt8$OROKmF8f>E2Ol~xM&P9rn=rw7#- zQnLgLpAtJIW^(KlT_%Y=m(j0gjg&6c2fPxiBV%Kw6|rO-x#zp{RB-TCqlv_Q;=B39 z&6b}@aB$ELlli^1k(*(lfc-RAVIwcc8AhY>rZytft2NF#na+B$PGeoAoF9`xW6AV9 zwf@PJL|_^r*%VSG5vYKOta?PV6ZOxJrW)%QTN%aPKuV+Vj7O8AbEBI_<2f#w;ljnC zoZob~detw|N~fHvM=EHj!{sf+;Y=u#pIZBSvM5}&QT2652;M$uY_DizUKx^qvSUe$}tO)6ktvlJeRK$W~` zDW_q7h5tcYmE)@D#t8+G1O=co&|oNzh9QY_txs#d!n4gd0eM0=gtVa5pL(I1nBFnf zhJSq>=ckPyZu7DI^pZI`r^_awFh=O@c@fR@t%e2?-R;{!{{EZ&{mJKVe7bjA+Is2S z;Jz>H5Z}%y=mckb_*7}X*x+rD4s52HFrbE`&MjV(<<>xIP1hz=x{0VUYI{_6qJ2qm z;463$kZmMNT&txe)J9~X+sNGNjiQ>lEeE{@(}-rFP})XY9Pns@-HRfn|3}?>z*ki? zf8%F&&%HMxm4p;XLINQPgpxo4p$dfFyC^+CAP6KtD2j@WA}A;#3WN?KO$Y&0#D*2H z5PL(hE0#xn#0oiizdL)*o_h)YpWpMo@Bjb#{GaDzxcA&Sv$M0aGqba^v+%ylz4Sar zL)Vs8P^Pn>ayinH@n5u5OR{!e1Ci@}YWj?8uk!9_)!5s0^o-e0m5iD&YG!TL(QLxl zomIGwn_DMY4`w~V6Gq5f)DeVf=*Q?Ba0d&ttZOWNkK!|fVQ9GBOD4fygG zBon>#MV9q=>vo+wiOl@A*7vM_YwS8 z&x*(}x;F)ZDZfaR+yM=&JQ3?`ldIaGahN|DLORK6a|t`kv)(?@zFDsI&J%l{Y|`@5 zV?F03o5?HhzHZdvhVkJ=SC73vIdOpJ$G+A)>!Y*QMMSUbo%)mUu5HbCzvy(a(>Hr> z>OSi9`jyAgEhD2k#@vUwAkXtkH7XgeQ(Umn#EKK{j^8dU=DJEtZXh;3@_W_SzaL-` zV&3;&_E)tRo&#`JAGLlpmjP#(jC0vI9cNQ2WisVaU>+%`a@w(!MZJY|dcIsVx#WmUb22IDclTr5DmLCBRe z_QCzkskC*Nl-E>^Pv+bBa!E8ZCcps68b=|}Bq+5;d~iHamnkqgk|S6T`^C59#7E@{ z6tWhW?8t=oHfKNWsT#AX%f@7+$`6~%=9y!0)y|kQP}3D_w?{Ci)!NO@wjhn{%xY3a z&KGBj6A8pax#IOZwj}kjUuIZ&Q!1I%N@^p@OrS-Vjt@%3jAACzTH$7=T*|;e4G^~+=P?@Js1#VxxZZWf-!!XKNrHe<|}x9)nl>EDM_I~I)pAl)~n=$Z%X zoAVoX7+>%zZjZiZ>a}ZA*xx@}pS`m7fzzzj$K8Hr4Nl*G|7q)$v)vB7%$khNn8cFa z-?ZQ5o{Qf)bm`Exb@ufwJaMf{b6fVv$#35-dwvU#nAm+F zOKP5(IIycI>oFiDEh~`?>LRQ^>2cGs8 zzTDmDVzk@9P`9#rRn;AG21{wuPIp9*bhU$j!jX}R&cSeuw*GXL^c7o>X?CQ9-GW@LBj?yp_^0Ba%s`8f=kc-9w|xzx5V5yg zp;tWcHkv590#>>11g8vR2pN@d#F7Qv5g8di77gXXGb?sl?GNqb{rZ^Rc~smrP{5t;hf!3~S>HOd7%>oV0^Zc%<4cp4#$|l6zwP|aotlnsKeV_`+`goJ$Jwta zU?%pgE_vzcl*G-k3A3*&S$%0Fwk`3$*y?g?j<1vF0Bn(5RkSx`^_KoPw=o79e==tH z3|x3U7x(nuW-Kw5BT~BBSj&(-(NkG~L0D%Dk}-%?-LP)EeKr29Sb{%8SK^PTg+CFs zu*RZM!|D2p8^girKKKI@fu+CvA*1rhhZ)~x@Y!8Lf-~x7G|6a}(I>+*wtRSH#k}E^ zh%qngNXfig=Hd2j`e$rK^*qQ{#JprYsu(nnjeYdYymRw@nulU$!zwG@9flvj8ur^T zKKoJ6u$WP03roRkP(s66u?)_t}GuOS)Nx}k(<|4!t{(RpN-?> zmF3ea%R5w-cdRV$7Fm83K17yJuPiUAEHAAr?@=jFs1L5J=rd5l@$ujvbp+vL{5hBhZGflmzLd9?7!T~N1(y>V!I`a@Y&dZeF?!_;bppOGr7w;^6a{~<80KdV$EgaG6TWRw@mNwfb24*Jd?iM?_7z~Oab z>)bSaz=-IO;s*u{jtFkis8LdI!+~4g+HT=7NyFcSLH)OvwEKJV}@+GAOvB7bl##Nn* zJE#8i4*15d9oi%>C@3SRuLvELGwSa!{PBD+s@15!!|~@7{`0KDANF=p>5UU+O`Utw zcC|jo=YYFrXM0c1 zwZ7Q1hb7J3Q#F21vy8?~h3Gq%{`Xhg+4Mj00&9|C&Y|fB*gWrI^3|`U~^O zW86{oj`yyhiSS_RV~v%LxfEwqgrRmrMM4bzB%Aod8_LoT!NQ|E+np%8QDUwo-I{_KCc-lWFY^p0zTP`6}`257vv;kH?N7Z9kYrVU+`) z_T_4eSD+S+2YQd%b5>OJ#Zl80riYS6&AdHcS+GhBWS6Wpwdy1OH6 z1?pj$35Y9%A(Ntm!cLnwPJ~9=HTcSY88;})X1@BI zwdk#_In$a+$QLk|; zU#+Bud99ZBn>e9f)ZCEBoa8oxu=@mhpR_g_-y54Sud#msdO7wFqG4^9oSJgV+Q^xV zm!z3*i?QA}(5F;mrh&plnCl1OPIL*0h)9meis&3MD8d8(2bX|KyAv$K^U_zwXE&S@ zt3xF?xrC%q>@+30fi-yxSc>0QlzpWl=1#QDj-{!~sqDOQXcejSMSC8x{f1dL$BQ+g z>Frwe2ss)#u6>j74dPn_4UQPsA!SNxOm>i`+&g*B!ZF@NJ*dS$a z@7`_O``Qt`Z;O2I63|-*QPTg-@raa$_;NC3?M2arN9QhnmFe5D|k9d8VP%Jt;^WZ+t61E?Y7~ML3 zOiD}(U*GW2t&^st)M*}Me!Xj#_vi0>PZ-#tQB3c`{&{KCAH)38T;_cS{fUF0h`rH@ zbGUFxF8JZcQ8_qSyvM&h8M;#uB~ zx7Tiy?epa}kDE6wBD8n&Q1i=!2fcsXu)wUF+Ni#W_O+FC8Dq^a#ckd@Kv&5B z7F{8gk0ys?g`h$oRwWMCJgFHu;i{sFk$m?F4$B2-FrQsRiRC`-t#-!j5l|RKHlAs>u6}X3Nr$F<|pWxN7YE53Y&flY`Pqqp2`lAA$P30lS@Y? zS8pQ*dsVnAATA}fraJP9jVr8#knNel@3Zc`<1Ies%$;vq&#^kqz07C*Wv;wf%C@l+ z3|d>>Tly5*SN9j&=Z`3&=}@5Ud^{a_ys11MH!4hspM_fx)IYQRm+rVyf%1z2%^~Kj z|NbP-u>GeijhmcjzgB4`^!e`NNk!kY^=G``uX)YKdlnKUV7;Gins1RNIa8t z90naB#y};BByWx!IR2%7Fc-JhlJY|Jb-w_qjQIL(0)cVJk?~PU3ekZ7%bL-TeNew@ z{CSRqy^MUehDTa=t}|C|uJ z$b@tyJh`tTl|L8TZ^D>|AYNBb?>#dq`{^XMbaRjESlAnou$Q)ac**2r%P*|o-=hA{ zlq&(Anq6pY?bA8|V;j&ZXTp=paYnr&$dn^}6CyhC{sDL-L{T_jCUN1vk*6nGlP8`$ zf3k>eEIQ48w4%+GRey1xBVX)8&>-OR6Y_vHmD8*|;2NFt3vd8bzE@p^F<68zkw&(9 zk3gL@SF*Np9=eCwNgtf9K#y=^Or6%vF2haKhLXT_>ZhA%B9Qfh0pr_?*CFop?9Qzi1daa zSn>v`sC@@UN9Tdr<4#o@-p$~1wRg)Y5yvilhhaa@1n!;XMhAP2hrti^UyC|SaAvuj z*_W+F12z+w%!jqjLljP?VqZkp-VmEwSU(@%|5Rqn<}CX7zT-_^P99V^ZhcbA1_O)6 zuCLEt`|2+i^470k{B2!$gKgPyaLt7sJIWuBV~?|T)yu?R&_U7IAGGPC9Uq52C*~ld z=>EG2SfTn=i-zFI0E#a|y1V~G<(8NsZ6~dp)M8SOP3n^lsT)A*ps8awfYhRgJKT5O zy>;qbnP6qlUd1@p!+P&(C1J!uhh8#njvP5P#wrq2k-dZfQ&LgONRUxSDAB-d6O63? zp)oI9L;KKChLfwq28}y;p3U9zaB@uXsKM>)#0CfX#Ot2OS~1Zb`)}Oe|GKE?jzjme z_pQd}%EvZOUYwqM@8s!OBV%gET-RdS#0eWFUpqnRgILJNQ{aDwF-`S`81D2&-#8_b zXczteafhekp*Tc%!)wdZxfKt|Kra#>{W7{L8j3Xhgt5XR9CZs+?8~XkiDC`TS{<=> zig5B9Bf8Jrzbv`_myc|JxRE#!-D$+&>EV%AE!?>@slks&c0bnymSWV%tFLF-{fB3^ zeqil}J}SzSaz`#DDgjLynx{5 zHTa@$;|j280e1C&pjhF-D_!a%H5N(>651JtIz{iLYMtq2QEyo}&xCocS5J7}PVus~ zkFa|fuZBkbhE>Ib4F*T#N$$;mZwkcNnmTpqXn)j+usL$;zx`Vw8c{I^r1fH_)GvHk z5n5a2`$qbg9IA-RB)6wQl6(td0I5VoMJc{i9A)>5%wK*moUI5CUN&Z7Tzvl6K1*Ys z;SK(NXxEYSn59$3^@_{1etUHNGa0Aq_8)o8y>*lNO<%^J>zTQH_RY60pW!|F?nloS z9cwvKc7;Eh`m>zN>iSg)w49!B6QKJqO z!`ppq)gON9>LVZVg^bs!inGSB1N!ymkH^}=-+d~gM3qACIZl`Gf#LhOe z?UX&U#E7Q99oV)%qeqiJ4sO|>ezIQv@Bz2S_ekhEqW>LrS=rm~pMRc>eB;CKpJj{h zeqf=sd)eI&VihBEmJOZ_+5%(64nG{0CI!OAHhirfIKS78=dY(K&E#WmoYs;;Zg zwvHSW8rAr!uG4Ej!xKK;e$UF3y7#RAh_eURv9;qDb{JK3{YdYY7an`)#z&U?;gK}Q zV65hYWPv&f;@xytHLsv9z{V5zj7$55^^AhcXji>V(X4>j=vk7*(g`&Xnikp>c? z`;RkEZI;;)P|Qu-x6}K9Zlh~Q=Jsq?81XExcXsu<9m!GC2lna|-SFFommW$J&qj6W z*}bH8O#49(#PIbKh7X-Qv7dMS?gM4lE=^6nt6=Zm13Nq;ii(F$A2}6rnS}AV4s$`~ zhTE&{01K%nn@$h+UqK)ht|G|J8@E#=C@k%t6W$;?gP*x0`HrlUSytGb!?{&a;8Ba-ebY8$pnp7~U_`ocppl~Xj5R~PgNmbzqN(5_V zFwy^V_2fi(G`b=>R;5_uAT1V=Qh4krdS|X|l+uE?JjuJKSjE?-jca+|qDJZO9bf%e zBmR7JkA4G6Vq@F(?RsrIyU6d`VjWM+VB*w~Cr>`K(Gxmm>@6j;=XH{~VKR;}nPfl1 z$-57*o^GkYK$!`zLz^<;0f)b29oIlN%J0mdqpf9jYIK`MvNn>viHZVAE8EX%epSZR z?T4+e8%2UlU(v=dGifW}n)3 z6Zld z&Gpl3$9EbuZbiKlJe8SGZQ0oz_`kbLZq<-J_B}-?)62^=ee# zo;`1ij2=9&%k>i?uWH|6W<>4oU2~_3@#B{^Y<%ySeS06%p|$~xCZ^6Wy|0QrGY7r#p$&pg8|mgS4S0F3GB7$qwXSQF+dK} z;5Dc)yzTM2rHP{DPfoAdH9hZ)i^`mod;k3nQ-9rY&(`$r8JD)_Ey}$rbM(%f2`Q2F zI`;0eASx#B&IgJ|rKP>G=g_;CPFRmTcQzsJzPLJUTj%Wli_7jGGh-3y3UrQb7tJoS zS#|6Mu9ic;{Y`fhp~BhUv~8BLX~~qj%*Qu~MR8IO$%W-&;0~1W8n|o9xL*^Y>TI~5 z&2oQ~2hsl7W-%)!o;B~16&#Y-ta*=Gh_LNkFl~Bl?ZO4C1WUbvg>)R)yzN!J+jytn zdF!0vbEe$ml{6<*|HkhF&4D({q1m-rE)^AqvRT;plQzrmhgvFW6^6En-_w{TWQ9|j zq(b)pOPj?fW_Jy#mENjJe$Z+jxphX#jWMAE+U7J5i+^b0w8aV7ZEBj6)juSxS-Xjm ztg=&^oDOZ9d5dP>Ful|0`1lF=^Gg@Z^5k{w+`48-O6!ESosktS?R);P?51r(QQMK4H^cGnUum4}|9Aw&@oh-Z(p}b0izhUb^X2bUnsb-E_x_+1Gh$ zwQJkIN1uUd$x>&uLVs=``46;PPLCX&foM&D-1ylomv*vS?pFxTKiDm3j{v*HK5jBB zB`c|O;||jzLmQ23SvWqf-oYDYE=tHudNH%JBO;~@YgfO) zUGs0g>%h|2*KD^&HA=2Ga`K=~y?T(okUs7Lj8S0zh0`NfVnS$hM&@4x&@m4+!svD-Gv`??I^_3i)4o$aTc6Xq zZ8p;U(Ql4(P`~lDw%qvJ8mHHe+#E98E}-a_ZEKE1_>yri)S(3TN0}bq(EW<|_YlCPFN7!^6cb~vlsykUcplSa4iIY^GDyyxyW{w(@+`P$9tS3r!>C07Q% z{I;%Xu>6h>1;!Zp!um&VoqtbLQ3^gib~*MH2!p8ZFT?U|9)GObC= zT-gt9{A!knWcZcxynCwB>E!)8o+T~O()C?g9 ztZ#gx_L}51-A{J6LTmG6bEVFS~k<`1Vp)zK++Y@shP5qCk(f6#>1} zM9B^wERwsRCt1EjRWibAJ;f>(pW^%HK6jW7A4Op$LyIe_^bw2o9oT= z!gjlsHf!|e!*P4sA65& z?g7}al|JV8;tN_61lkLS$IiSbd*L#-!p~l~PygdO2fd&&l1Lj1uooh%C*7dy|s8cwTInv^F8}rxW#a+gU%n z@tyT6%VVLeBTj6zubMfa>+Ns6_WHe>4$Jw4okSt;SqQWnPS3RT{8Qc@S9yDev>W2p ze|pi}=eAbe??qU;o?r$5>RP{2eFZR9%VvW)nzRfB%6Ph9w zxv7(UOw40BcZ?awXR@Bd?NK2z2dKqVr+qpkt zKj=_5zpqUr5A}7wLZ75!U1O_USVV{sX#olkItv}S+))dGxCRVI85Ep~EZT7@dr2T( zyd^d?#FO%`9Z7BK#?<$QG|#zb^?gYR)>kL@JsB4>dtjaLpzyw}yS9z;H285>O2VWfDh*|heto1YH~uG2C(x8Z}U zmc98<>BKu4#dXf;HMU{P^`l}RekLUN;vYi9j_=Ta)D1oQ_2Sz`&b@JP?5MdnN`)$n zTsyb1rtNmd+_l{~Y@-c1kULj&woo9#4Z|T%?gU!xg%b{@M|!ev>|XX@vlc9L*WUfD z`?s?`e!lH(S#6sYywq)BW@1K{34I<+OzF6!^64RF=PoSlgKt=b^$}_UEw;Y0en?JQ zTfZ*5IHu>FryhOfp0XokTVzhc*A(N5cB)2QaZjrvL~UbTmJtCn?w1pQag&;#lKGHd zqy#&aPAl% z&OqJC7+IQf_S6@uKCk+cU3~P}%5CZKn?E+0`TbFxp<#x(Rb+e0xz~Uy!=`pPXA!FOvMldRcNY=eNs?IO z284#0U39pCJX(Tcsdi=!M|pr8{?1!}x6bTfojzwxSbBZp^|x7XPJQF{=QA@iSFF8v z;+vjw>pttZGuC_73BGwHUvlYRRhO#Xc=KJ{dV?4N$L{<8UukDJac79rs5z8q+@S0W zmA-RM`p{OIBY`BF&UUYJ1y)63v^-Id3-Br;60s%v4E_Y@1@4u%mC4OU|AS%J+lL>S zC@T<4QzGD#Nb`Z&q&yLPz%aq1%i%A+*4C4|V!-X!H(PvaNlM<(HrF-XcIuCt6K_sC zmG+wXj&#dZt$S(;>g$88ihZG}Nas-W0a(DN(liPMA?&xK0OBQz~TU&bV7HOA0 z5@{>h#Ely%1qt*tss5hd=jjE1Z#&#h@tiLXdu6Ivz%kiqa{f@W)jww)Nz;C1 zfy;feJO?-~)2rdZldCQdThI|I`z?uEGM6MR zX+!ld-dJgUs4HNw^p$U*^abi(p}Lg#2q~TE@YZp9+sJ3F*f``QyZf}@`JpiLf;wL( z;ms+&6b)a>USp#ic;{@wp@;zZPQI%&{08GIHo69UxW^xVv2TEe-^#++#2WAsLH_Uy ze6=)uk?|quiMx#c$e;@}_z*3-&li1*^gEkb0ejeaNB1Gdyg=;N@0e?Xa-DbBJFJ+k z!^|T-Iq#GwoR#VeHyJm;)F53s(CTJh4||-BI~HVps0D0j^+o7VWbWf;XUX>r#dqU3 zm+v%n1Nd&kOTH`kQg*M)cV|)M^4*4)d{^)rjNLBZHU3D4?>4;Tqk=CoHo1J%@U{K< zXmo`F?M8jTg_I1kQ|;FWnxe7~9!C}=yvQKgQShb4Dz^`0BPF~q0Nx(b>vgSC+R*Y_|_V}l)c1CYQQI720u*0Z!kV#vuePn=sqj_6E*x+=4A_Nz$ZKN z#il=5!xtHEfgXFlX!=vYqa@8Exz;^Kf!ltSa~-G{n2Z|5EMj`1XN%xqogv{K&TY!r%298y$RUWo^v*= z&nPwiL>&g3&lIAb4tS&dFncx(3n%fyA+#unV|N( z=T*S3P;{619NZ*Pl5USpH(>c|gj>Ou<_ZUvG@pd^`N8h;d}HJF85^nxqOy|RM~yj1 zQcX5S;{McgSi=`pcY~*H&uJGPl)HK_0lM-{k|~@R2hX?8)-t8(iL+%Y8+Cq$|Cr2no)2-m8tSIchCZ;v~t|XvK4* z%B4m3wyr~q4KL+I!h4OPS{lD|%g~{Ez#nJhKMmbE-}@)vm5*3#{K|SeeRX`FL!pxM zB#%-*yx@5h@KSerjpD9e2inmNhnlHzB7bs>Z?ML_5hp;mI?x)o>!(QEd%fWr_r`_V zTh+L;6(4b5^Ca;R*0Dr4Mso|t+Cu6)JYPY22=vM4s4XO)OIv!qPugnuY9zZyTwCo_ z3p$jd?N%0Oxr1~*^qGV=&bzYi1OSxg^20A}yTZT0c-6J-8h^63a|*wl8xlWchUvMX zu_xOyqiAogac^R!Y@x$PjXO#E0SfoKHf|qIkM73k+VZQhC+RU&_^;9U%ZyK5zenS5 z5J3AqUZ!a;i_tnmW7m2Y^0nC44X~&J1wNJ;M_m8HiK`!~t8wR`u3=-Wd(&}R3-D~U z*~61(L@Hmr5n`;3um-kek^F3uUFFvn8;`oOtNq$A-A`!)a1$bEQMRbKzSaWT20(8p zTLijiknAel8;ze_+10pR*_F7L;r2WS_r{Uq9gb_XXBRR`55k(xZExh~?qFY5WcKI4RoS)%Z6VpS$x;<8Q9zu^Teu@AbT>@T0EuYSzFyjPW2m-q{Ww zwhMeKs6l5--L4$JUuZ1_Z-IDhxjr^YpY-8fS*-{E;DE0a+U;w@UkxAIK2u2>K{C!% z_pF>|Qf}nht0k?Y)Y@xnb)~zGqJGiZPSYcOmiIir1OE!bzqNWkb__4)vrqFu;%`Uu zSm7_O_M68Vzp3FR{&Suk8h>&17~~6Ij^Bls_>*ZaEBqU){pPa9@2)i^{ue!e+4vDD zUE8MycJj~=Z`fi@;>~ET0XJ$tZ~2;dhCQN5Jku-Zct7o&y}} zDdkFzm0oXEXQ0N{ZqEmRU#H-!2Uq_d055%=D5<#!e-p^;Gel2w*)C*Okj&P%8jIJc zzXQ~B<0*O$*%Wyc7idBFOO5N@^`iCxg0L!fI^uA9&>R>i0A~s3QmbL=RidH<*=A7A?7EnWYF_!Q`)f=}iz)NkOYaqC0;NC5x#lT82~;$Nl1C+HMu6BIpV zEY`INnjTlDNP6BQpFq;%HOj_npFmUN_`ni&KdL0A8xmHIS%s&KGX}JE>he{^K*AvZ zkU#XZ*!Y2sb>vgik*IZpTt_@k{^<~+qqw#9Pc-S7udiq6rqz;E{U27@mO|F$^^&KsI`_=M^W z+iu@Xa|;O?Bm?VRnV~o2T+h&ROXiXHAekAi;EnyR%+Riml$kotS_1w;W7J$c2zr2@ zWaCeoTZb^WUMHCW9-3S4YMHs2WJb|bX1wUi3~j?pdKzncEa@3eG9&4M%zUV2MpF}G z^RpdzlTZFTW(xInv+KX>I8~e(_em7)yKv4tmb3|Hkun z;JY6@=Ep_iZ#?FzA3UBPrRS3N?mp?iE85G9)2{!nX>S%l`(4C$MSEFo&38?EbDQ>K zpau63LI#kfLo)CQwb>mqfISmDzuJC2jh??_4fKacUz-|U^l7Hm+aDgc%c}L-JMdj@ z@^w-8F|K9C{ww${p_=xY;QKA!Cg>~LmAZp(^z?Cb2NgYcb%%;2%Ke5sk^vMabo~|` zON`OBR<6z8BELng&9@e7uf<*UOHG6R5N`5W6z*cAc%y`ql>pCY6#T+G+QQzW_PZe#@Rr$L;iBhn)AKWM z)Vh$r+>ZFQfsJ=%j#jXet|-ml12}`&iDGuwDtO}qH)f|-ysnR=;?c6*4mSJ=Hqsdn z?c;?yy2p;$$oSD{z(beB==hP=`;P5YxV;*85%kp64uAAq4@Z1FMDsKXb1c%Af;rQX z=qY6jTsuL2jO?$Dk5{9joLEIMr!flN_|1(u>D6qQaC}0E-|)#byTZSTwQ+q~jlY&N z&j|la&k6KF;ooE&!O13DUN!z&dhSU4Nxp6xf0?nvwJUmk6XA>(;V<+2VB?2fX;5>W zAEESH^&!Z@YO1RZVjDirjZxDbrcyq8IAd#MRqrxC z^Nj;7x7ob^7JG|!U!6+thgv(d1Ad-(#d8+$%WU{MIO}lv+6FOu+eZz&Jpt$6?thml`=A4Qx z0INure-7dR^%418m0gwd`2UMGFb?u;H2QH2{qVB4>whMz!W$?JEA_3a<0JV3O(n-E zAA1>b&bokn3wc^5%vl!@{1={&HGC=S>%!BzL&8S{z(3*n+lI#+oLCckq=dF<`Cj^I zHZ5DR&aLmz@(;K#cwW}Hi$=y_Ox@jOML7ynsWDZ3^>)zsHyfXz7OMS*?rY3hQk#k% zGt&Eu1CKqM?{VXhy=SB0YwllnvUCFW!5w$?7sb0=u;`Kf`7DoO}nin)9 zG^aJJyS8?&onm!_-x~rd{($OWYxrN^O;~z5Z@GRQ6tSaO-Jps_U6B$g?&eK zxQm8r&S=~z zXKmvS-cW4=>gyABU!QVmCwnJ(6Rl}i@UpK8zLZ_#!jqpO;bSg?mwlD+=<6)qSB*W^ z?yJHrX;-jCg_?FhSX_={>t>9;8A>wtG|?{ijWu>Hk%2nvSI<%4mpTr6E3GSPD1tmL%r=e*kNuQ_sRro?Ux2xc#FT}4QUx?~>5slCRG=JN>G*awe z@+(F2OTkNiNqF!J<7c<3p=q=+b_(_#8&<|d{z69O<R@yz-_*4z6Pb5XC8uUe1Td{z31_^Mzx&evSku>Sh#ut)Y! z!pi==>-JAW>+v<3U<^?IOTm*rT0&zW`|=d^MYUPhP4`7(scrY0>Sd8GdPMPmf`--e zC)FR8`XXVaj6Cehh=xwnW2{wVlOct?+yhNlrAx;tV$irQTYp4Nun&>9f^F}o0r z@SLTL6l)r_MeySxf1mV+(v@4Q7r6RE>q}P+91Url6^>26Yp&>7Y}*xCOUvv=eJ>}T zZ-6b|uVOP80A0o_Mg= z;emLScp&jWcjajgXe^EGv8CEb)aK)Mo2hP_+UhjbZ7O)FpCvrzUI&d^LuWd;k+Xxk zO9~eHXaNhRoE?ed6w#+}lntthqnVB4HuO>Z?bOFz)JO8?2?zP}Mp-M3L+gN08wc4{ z(gDh5Z^d4O_96b!W=kEQ>~QfSEfX3#Dgd{X359zj_D;11(9mSzNvA1Vr0=cZHyb~= zzPE;lFD*kOkO>LDnq)}9Z!?a&GNj?PuWs}}tOB)~6n?S+cn^49kadnoZ#+rkyutX= z9cPL$NIOiuB6w&b_!e@UrEh_8&e8nUI?3U$f|Y)Yf-P#SrCh^?oTZB`ByLrEhh**< zTjpxJw9tB9(xUB}4KMA6g5P9Rx^_du*ODXRhhORd2@m=2q-odC;r94J7JbuE8-e5* z^7XiYO#zLkVKYDS7GRx>ycOuFJs%Tp;|}np(mTn(UiM_nIb%3L0eXJa zhMz#saql4i-a8L;Dj#rfbyoFpXKhCI0P%uytYYfm9$a}ljlBk>{voF2mHh)ft%3hq z`rb%?mwWtPBZIzE48~IqP9O$j!^{01FKz;m-_cvzr}WBwM|_w1T<+s}QMXHe$1acO zJ%Z1=?0x)#-)XM|F>J5ghrxGA&l-YnMc?1ScNr)4$~ZB8KacP4(|5$cFkV06`$qcS zo_?2mvj1&9FX6=bNGGoLKZ$+eERQ(p?TL2~Z-zg!$N01QD<_^pdrdN4lda<~jc^~| z9&Zo8tNFagI8*(l15fc~3ExV?Cs+l@S(5nGyxn8G?cyg7L&CeUS}6}(ymEh5&BZ&eZUZQ!jH(5&#`Px!);$;+|JYHp`;~f-CM~$xb7>B!v&$MTS zJqEAbQ^GiWh(;{5sbQ2ljC4;UUUrPEq5;9; zu#SI)Ih@+@uWV@7P`*-O!wYfOEPZ-sdc!{-dFr($r|M0fIpDU)_z`Q5m8CWM>+tbE zTk#VO?kXK{7aK6|_HO;(c=D0Qf394*dEU_L7xo(P=JAS(_dfURytUMs%K^IOe`jvX zyahq}0eK6Mk<0ZHeWw^U^cBXal-=OQX?2V_QpaiU0=}1M59LFG-^hZP-b0~GNI5?B z92rpdgxddSecP3O$9RK2k{SB0^e?oc`6IRWzTI9gw>|Q_WP9#@`9JGhrLV7~Z~sm0 z9n$Ul>t6{k&!Tu`{vqhQOdr?KzcSZS=1F>G9;fUNzRTP&ugs0Z_Y~-b_bCVF2h|_r zes@oa`XlF1q>Q2y{N;M)H1y07!Z#F#nIW!?d`g_DOf-5b`FC^)$v+Jsh&}%1q?wg5mPyq*KKcXP(*K?(-uL^SJNVKC!1keCi+1uiKS)JgR5^ zqMKvm<2x*wH_^N0RTlHc+K*V+Cx>R;@${;->#!U_ztvt0=|k+r;QOcG!#estiux(} z^q=y`W$v-O9mC<{Algg$miSl-JEU`oX(cE57_8&@w69Ej8$sno8vY56AsKJVNw1xtTN3d_(+aErJ;~C)plsI_ow9kqS~L@I7aU-Y71A- z-Y-5wduyqHZAZBC*?xDghQ?gZgW7tY!kfe1n#{Am)`m}q*Jkf`(COv?S`39>=E*4h zrM#D`2Q+^7yo$mvbGa4%Qg*`SzaxW(qMg3l_~rQ%g};am2Y!G1NAzQVt&X;TstuWQ zt=cFuUPl}L?@%8g74AFAmr2Gu@Q*MC`7GS+ht?M%4xj8XkbF{OkUvp#N#}J_Mml8V zsF}<*c;kf^RapaXYjyX=kD3kmPJ%H3W7i9(H7{UjPLgn{7l0F9o`64Tq?@$??=x$& zw@H=?p!b&JPP%jhWhO9k1NnIQobt*(q5O+=)W5Ro$=H{($5nd;b+rC?#;nalBt5Li zrJ3xgOEc+Avbpe4rQGsSF3(63<=D7qkLp9V%7}(RHhgC{2SiJ56KCv^Q@%1Fr+hn$ zM0IqTQ@+|Sr`&67pX;H%CqU=!@vcPQp#u?LdAGW;aZ=vX(c`wH`V*_ ze4y3G|NJN5dsjb#=UG-C|Fckd?xE*2=ZP0E@+sb> zK5yi8U7x}^h41IXyaK-OBb)u5f@gDGo2@gdNK^k)d*(l$*U&z#>%;t4=QS|q|K(X; zIve+&&bwt}#G5NytM>AVzqe5TXs@1Z>0=G0(4r~Yr|^j`&CaMTBV&hm-(MaDk& z>?O?+DbuO28+5{q=&8j0;YrdCGx%T(XLZ`>b4+?x`JG9#UU75@O!hX?2CbU06klTd<%V!RNGkOpO?4LHZT_J z=ELMuV2;SX#Ol6iD~@xF<;`rri1ZcZPbqy>4Ev|g9l82S=YXVO{(nOGQ&IZ;sddmtxWJI)Mf%VOq&%}a^qqbunZxfiPQSV1M7CVYTqBH=o5v+_yiGC( z9CDoU^f+mY*bx0pw);5%GI|5a!WVWMr` z&{~aTL9Nw_apqUcg0}0ijx5-|&<>2R@`Z|1wJhj95H!X~tplYjDBLn;q-8^459JU7+GHq@!od2V{GDRX`6Iy{nXm~AM}P4!{h1fAuk zt(naAr8m&V%g~>1QH%nCP8#dq-G1mZTJh)yog5_jfE^acNv3~O<4|AAG)af_O5@QF z`>dgi+W}gMkM#Zr_WKXg`)Ba}5A^=O?Dw&H0N&Hq;Q&8xw^@tu*0&z>^YeVhZc%KQ5+1y7 z=zA7)AT|Kr?=pw7p^h)B=YY=VQ|HUQGQU#lb-;_Q*mbjgUwx9XgU*Koe$P(dTMmA< z)A*R_+)8r8I2(> zGk!7)gx=77kZrhY6lvcNdY9@pcC^qVsoQ9dHgerIJQI9>=r*<+AF#InxefDxSDwj} zyz;W`8Gkx&{8Jm|h@ep2#x~t zLuF}=( zhJb#M_0nw|@qVG(*gP`oiv7^M!q{sc7-LUomMTMyALth4|v96e;OIR|L`TMfT+ej2}9FGb>C@0D{=;zylk->P+- zZX-~~$v)ieU8dXE5n^7kjSRO9Pb%p+)y8&6h}Loc+=h9V_i^3EcJr?qZOE!Der=dD zNXMx*w&4_?)^P!CxH?Xa^=rC~ZT!b8wvp-dL&_fIz@rWDi)si#Mo0#oQPgd@Yd(@q zr{;##agp`tEl8;ImL41D47gm^enIxLsV#@muH0%L%#Fdpm*C62)6tg|3Z5UUu5z$z z4-7S6q#}WRzF-~mJA;Wn@Je~+r1}%Hjdzhh@9#6od5tn$y#^n7El>Ty#bw~`tY%CV+U-r z_JegFP}``yk$)Su{a0=5XsGSKZUa>Z)ElY|&$U6Jx{d9|n>c%Vc|U5jVQwe;uiDt2 zpzZ%ZwPEfFYM|TL1|8M)ifzzra(IP)Nc*qa*j88D|A01}`A72Mv+Fd`+(4ZsDdkd5 zYK*(PPf7A4b6#XSpb+&=Xl_7?oVRp)PTiA^82e9sad_u`l9f{S5gXz_>v3t~#DV2L zin)tonrm(NT%%?U79G>X-F6axJ&iw~bzviF;CIgmD*UoGlER;l%n5xuOjDnsV|@z0 z^xqWyyUYnp?+$4C(=|NdC*N4%-zAP+VQ!@BxuNiP*Z8-x1a@r=`kQEYg+IimA2w-F ziUX~wZ(`e|j@Dt%r{3`jH{yW1%?Og0ENh>+%X~xOkk7?o(gS_1g8}D^cAKL566C%c z?6vOCFfh|;`KXRM^&8>!&YuGV`5FYR?5-B;lEHlTR; z16p=;y*|25!qyu~Pg1>vk7+Lo>mx{JDa&&ALiE0P15J;@FJsCIzmy$);#K2!>!HcB zTOZS2j>4Z0nb5lwdauQ;52Wx*{wVxXcJ#W6DlJO-6E!`ApX`Fdze^l(`J?gIzl=Z9 zpHcXw?C5%fntr!_nxbFUEs*#jJ0<%3pUWLvcKTY6cpJzw8WK0jPCYui30W{dHuozW zBs()n7S6-o%6u5w@1f^ENLz$BK$JL1YgEJm2v1z~c*vC6A9_;3W2|79c1%R_M#U?(cGA4j z*y~b+hSU1|9-MWrYh)OAtCd+SvMyqsoh2tANNYCo7M$v()UeEhsKe!EZ+V@pif8Je zdT9jy9E$c!gkno8H;;CfC~Y}ct~ zs_O0LMW?6B>wnDBrGFj_%Dt)Q1NUTk^4@=_TXCb@7ZP7cJK1RIrHyIrC+AIUd|mAU z9mgzbWWIYbb3*$LtUc=P;{RPcGSAARM=$L^`sTpyJgQT#_l{zWtE{h0@Pns|uV{?B z8U@vhFvd-+jRCb3Hi=#&D|jv}k_qh3%6$lq9Y(;n2E01M4-ZK`7t85+3gF)(_@8a~ zC+PV*fcHPUyNMm9=c@p}o8bSg;1SW2e$p_1Fcn(>@^BVA2ojU!MITz_Tr%w2dWAt41w=LnvPLgcb zp!h!GIvc&`2>xC5+%rZs(ZAU0;c4r69`SeN%n_fvRqp{kDb^72 zo%91)C-t1&T8(kUT|=^Nf!s&$i|1TckT8R>CmMy?$di?vJJE3xZJMT1n!_XLjvHJS z=69bsuEDI}!F2N+&q6_NBvh5-`Wb&INB&QpK>78_JO^CXN!5~N8D2*9l2M$O-+8p< zFONT+hPxe4TD?AgAn}3BlbJ`YbH%?Du8Xfbq{JNl`;Sk*@wqvC<(V_64gKEE1vlOI zKj;IQaM_2j2&%>#mK9LaR`#Km(}%Dt^#Nsi|KIHcqjf9f1m_g{sZnrZ{4@$$r-ae1 z(dFnt;Pt8~NiFLMqprT++=Bujan0Kx$D_d!m z^XsdcRW-t#Vw7j_8Ei+4Vb@}&J~(`&8ReJ}XJDxh6f~D|8Xcqh5H0^H|EE5H;zOo8 zwP;(XMh9}@Sad3T1owwuK)L0{CmW*-^PGXKFjy-vlVH+wDQFlS602q4tlKQ zs{POrEv?txJTTb5jSP8Uu*c!z!Rn74`>O4?yRJ^LUU&1Ys8 zm4c>g)IK|6U!(l=gCkP`-Utzhi#v!w+Jpsx^o3%6_~K7oMW{)addQQz9=rCq$cgsF z~2&sce@1kM<3S}Dq_Li(}({I^SkkzoQWFYPW)F-=tT z(M9*pR1KKK0WweF8IpNU!X8~ivl;TL_VQ@DJ05={XquwNekx`rrYdM9o{9nUzyEoo z*V_9dd$J_4;QjB`dRhM;tWl+Wd(}AJqv|-{zLMWob&Bz}RoGewPpdzLzJpJ28O;t) z119bN8O`Ai%^8wvMRT;|?(sSMzMSa&@=Mm^=ET`szqrtHyl&8c2|OiV{420tGdMETE44{v)}vXGog)WD zioja>Lj5eV0(1&EFNpJ@k%z)viH4?ZKo#HZQuVMd4a6dgWqp$TNzSR*heF2Qu|J2w=la(E9ByPH7f8_~WBS*i|F|Fu)Lq58*q?FlA6sO9=0+&n zY=0Ku-(LH(X|!NJ+n+r~Gu#2C@ObgLul?C)4CnLh&%s70KW%@;8i>DZe@5Jke`kLV zGscKW`*XN4T+HZMQam?ha>3k!lu0GCZkRJ|YSG-3UL_?{XB4Ki%5K?eXvxHqxg{yx zN{S~J7MB)I?lZSw#fa)Ic$DFW5upZ3;iLBug)c%@lq`=cIz`q6fGzrgU;eL!c#x!FpvQ*@+z3{9A z-)0zv_|^*NT3X`oP&}K6|K{Sq6zl>@T$2G&3{R;LpZXBS8Nf3s07Lu#_-0DLyY1~3 zbNTz<=39eJ(zA(0vKST(c+51L*lr{Z2uPrNAw@ITsWZ5Lag6 z-#Nx~JS#D#;IBVVTLgRy{6&t(OmMe|Mx+!NrvXzjFeo}?ALpVy$^HJsYj*@vjCuB$ z%pqEeX#BcjdRaGD%>Z{f-&%oh*(3>b@n(DIr7TpMlK*c3JT9&lpkWTABnxsP z$K0W#6i@ntgWZfCs6RLif16`OB~Gbljp_^d?>g}43jZ^spcXlx1kNLSp^1Z#30ezv zFGH~=2*+(Yk+3zm4h=qF3^ZUIqPBIhqD(+^H3_F3lhK<7I5n4w%C2dM9cSPqPZMaz zrl{lC928`cEVMFmP>ZcKGBxs${n!pY?11xLos6q+6ImCW@yZ9~-9dFvj8bp(qc2uO z{c%UxKw}X6u^||TVYtO-1o$=*`tn-%L!(iHXDq6qjyEQNLp!jNUSd3jnAW$(Qrv8I z7tR6i!717mOyFeQ8sp!_uc$5cpm8TNQIq5s)T!8u+CUeK-;M3Yy~fX|)%2sW+}Mg- zv&W5X#=n>cyYpUDLHz>Ru|cp*hgh(&i`8Nw$dCy`##aO~v_3OFGR_(w8=s=8(m58% zYO^R7jZ2JTP;oGh#k0Ds9^!V1EQ!@;$t(rSiiW80l*$^Rnp8T=V2x2(FOxMzZRzGl z8Ee6^ST@52rtrXWS!+}x%42O=JJz0cz}<13*j21EqL^J-KI_K1vmUG`{PW(d59`a| zk0EDvAZqarW<%IeHVm2HBTyM@B)f)P%SPck)-h}>8;4p^6L6={W`%4Do63sV zG**-EyG-GkddR^v3$8g@Th%N~F;vyQE28(10Jh)mMWYzx*C+t_xt zgY9Gwp*HNpY&Y&Z*vs}I)BX{5fE{GzSY%bO!|Vt<${uBpvB%jl_5?f5o@7t4r`a>? zS#|=qHayQ>U@zjvikI0*c8Z;5udr8f-^=Ul465!NW|cUn@R;!edjqwZj>0bAj(T6q z*qg>aoJD)ucm@@M-(qj$rj&Qtd+dGo0sGLn8#@__%5_7nS={lfmueq|TfZ|rx5 zd*|6->~D6FU1C+tf=6U<#&KaEH@Sy_kLMDw(J72D~9p<&8M<2zUl>%$x8`-jp}Ptye9K{XC0j8|QgT-iqfK zj~J(rcXa@kV-nBBtbYZ1;-qmJX9Qj~UPF%m6yq(NbbSMrh^8VV^KE!3MaU4o4jN@T z^xzDmn74+WnGL-ob^AQ%zWLBZ*Bc9Avu-qQHf}O*F%}uOqB7JE#uK~^&*N=*JKmmm zK#g~ccjTS;RlKu-JG*!n-j(O`ZoE71!F%#vyf^Q|`|^IgKOcZQ68_=?`5-=+58*@k zFg~1*;8*jJ{2G2OAH_%WF?=i^$H(&tyns*SllWv_$fxkByogWZ*YW9m2A|1`c?qAz zXY)C{l+We!_y6`l125wn`6lCQ;~T!2Z{b_{Hol$j z;5+$4d>4P1@8)~>UcQg-=a29M{2(vqhj;})%#ZM+{89cGe;jv`J;9IjC;3zSY5oj< zmY?9y@#pyq{6+o}f0>`;r}%093V)Tq#$V@WcqM;>zscX?Z}WHfyZk-=KL3D!$Uov| z`N#YdevW_2KjWYCFZh@IEB-bAhJVY?^Y8fg{0IIc{}=y>|IB~k|K`8)3;Z|!JO6|K z$^YVi^Naivui_T37KUJg3n5J55nkaFK_Xbx5+Nc~go$w6*BU8mizpE->WCN-E8;}F zs4MD;1d%9`M17GgQsDGA6se+-NE7KILo^mmM5bsenu+G3g~$@wqNQks8?16gYtcsJ ziMFDhXfHa5j-r#eN^}-oL|2h7x{2mD7$$~` z5#nkwQd}dh6{EyxF-D9P@+$YwE`^8%EfOt@>6YIqWQ6@HuO=7dyBDRWcV!PNOc8Z6@F7dF~E%u1LVxQPA z9uWt`K~XLai3)L891%ywqvA2~xHu-B5XZ%n;wka8ct$)cPKf8k^Wp{ZqIgNXEKZ73 z;}p)ABnT#WATYNCq5OQiO6c!fGC@7vhZIb9wJXI7HPxZ_wDV|#D z8B|mYdGfDsUh%Z-Rylc|(n&=N3e>lrIl)us6wEJ#lRh!HVA8y~>eJk5 zGbYm~v#6wGI)Ub7_Y9g`GIwI(jFJVOxh2IVrD2n&ft*r!_VQbBL2=34!Wo6r3Ov0E zX3i||bT6DSx4<*JsBmt9w|~LRiIWTXHPiUuX`W%zrp_!7gNvq#!KKqY1v6$96_^tN z<(W$FO_uNZ3TKs0LvPH5_(8}Yu|k+zU`{ImwiycB_0z z+?Fy_P_Rft#Z`&RyKSq8@`nd-^zw>Ww+bPZnu^5emDF5?)JYu?0;=~ za%_5X?0)3f?d90*<=E}z*zM)m?d90*8u@=u!-on;s%}22?2F98>@h_3a$~tBCG7neQ)I=hnT)jl{0mGz1ty;YlTU$3Ul`Ez7aF0); zF!>KK`3*4n4KVc^VD2wA>5EPJVw1kuq%St*7n}AhHuWer^(ZmvOHBF_bG;;S-Ly}M zDYwLwTWaVnHTRdA{7cRKWr@(_Q*P>6Zt6M6IF`0bM?!svn{1S3*?} zLPaN`st2K}2cfD5p{fU=st2K}2VqH;vY9NHJeSGfrde6HEJE^YV1H^70DPDzVkfu2@((C2j7U z%1UX1nx46EI@67gFUXiWV{sy$xqyP_BrY(G%&w@IEN3d2`=Ihcs!;|F8l)PHu*`dP zp9Qlg&r4VLsi==q`plZMXm;B2%K39uEPGbP{Ao;jvS=ot%*j~7W?}A;2RX?Hvnr=9 z%t)MAIAe15O|l`5On z!6+SErGwEr7^8!+IvA&e@j95Gf^^lps^z^C^@T|)&^;piOLdZpEL<`-`6hWTZR*@b z^YsmqHB`*EV8&7%kvGWhO;=o^lg*hypUYcQW#_}9sVdt=^U`!xIOEfq%81I7G%8Ed z7~UafvLuntk%(dd*Os6KEvGU(S{-qZm zt5kZ$v1n?sR`^mYbm%QsS$QjTj>U7Q(ONT8D|DDq+Rm&QliTB}~^U zjhem)&Yr($_N3K3gPtTKig<5aPGkRElo}M@J^Gdv9b><6oFiv;sBHgLu426pfh2u1Zi&T&@ zPL7R~Me={vxMcdW79}60jx(LVNQW5{+H0G!Bq=^IDZZ>d?wzFRUao@lNyk_xefhCy zYH_)`np#n*TW8dQSrrSW>-gNHxE}CY_LVQ3uBC(=`6`xCtfmMPS9hy;PH}s6%th5e zDxO`OSZk?6Ej?7!-!4ehaaQT%$|=m173wIXJgG2UeRV#k{Di`?%a1D{V`$QSLz5~w z^u+sy9)I7+_Bv;bO3GtYQXZpD$RlG^`%T%Sj?ZsgQXb=y@)&nQ9@*oLzi(oD+Ds!< zb%SV$s^XbOp6Uyw?RVrP309p_D*8xNlTxv>lrsxvuBB2?e2Wv9N^NKSJhDN`df)dhdM#8k&QNdi-y z=#VTabzWLR>Z{4}(Ohk(Elo;AeO60FeNVDXG*{d2$u!bWU(ljY#XBA+`1EBh?^L`) zva~Z-+jGs(GESY(Ns@5tMAn$&hR>Mx+d7O*lA1bGE!K2g3pEwbG$PGhXm9OwCC$|7 zj>iczb6XNyV43)~OjL{u4U;-jp-I$Cok>w8cuH7y zq?!^ulQ?iF!6P$I8D24OUWGkkkv(z|6P_x=89jZjGZtfxDaI+CJ|j~mPGs#j7ZS(m zN)6LhGqxjj;G-lJNs|>*vChUol(-$eg@6*GiavIV8ASs%`!8nmzRNHo-q^X zbsNWKxoxK7V4k@z&n&O=j9DPhm<5bp7R)!x=X{f&UOEPX{mk;ZpUJnMS$6j``2@}N zpt(P2mhVB6zQCL>Fy{*r=Z*QGz%1_z%(A|~)VHAAJ3$G3?-CtMP=eXJLZG^}x*HjUz*2yc^ zi+4grMcyE7wBmk64WTho7$ZZ_7z2U@rd0||tM@m@{Y`81H`Mnx)b}^7+TXOofJA7{ z7aOBSu`wnUo7OKjy;y4UFE#m>nqDk5*UQXxWAqFfqi3+p^h%kbqs;V9nWAEkSTwVDSwbDZ;&ZZ+a&_QK|22eGfE50=qk{oE3aG|#RxS& zlozXVI9BBls&WWbIfRN%LPaN`Dwj}|OQ`51RCE$5Itf)h2o;@#iq5?964j4{ru-69 zeu*hx8{N2W$}chHmzeUk5svGo{1Q`si77uZ4zw|jbf)|gQ@-Z2ymHNFgr1rKbE+Q+}x_ztqrQYUnRD6&F35&`Zb?( zZ0Of~&at6i^Et5JEfCb~MyQG-RK*2?x*G}2aMjgeSefesO!@)lShE-R zn_;ZkFc2&<_nWn3aDZxN>S^jVKs5`;=Ds3BN0FgJvlsO+=QTTVZ0^(S$#J6oMm*|a zMSV>=ZMF;)=x01^iBrvtNmthgn=Bi9c-+q39r?{@zuH}x&hDHGg;h4_im{yc$gMwI zvt-JdmGkFtPTnKok$Z$ddci(nIoHax*6#wl0=vAgrTX%g2JT>6!CCpf)a-&Y3eL!% z7yKeXNbIb@gXu%kx8y&WKQB-lSl4f5L0RDXj9^|vUg!K?8H+R5F*<1Xt=e*G2j*h+Z7k50XW1r6PE?c_3p4YkC+HSA+ zSlgqn=i;6(o_bEdXus%bMFnS^w)ON){Z^iFRF<6ANB%$a6M60I>(4p;oVDj>o*U}7 zy!Whrp*}D7UVYx*^EzL+{KD7!JlN;Kyv`SW-RDLbBfd0$SfDn4ai5p-ItM%UTORx( z_(guNe#<4T`qyVypGe>AzTNuv>Ko`gsqehLclCX;?>l`r_1)EXU%(saNjsdC|770M z<9>F&Pyb}C^iQReY0t`^r+)=yv`f-2znA$9%TN3k=PxGThGSqmhy0O;kF+NsQIZUG zp9Id3zhmVO<35GJmGVa~$)Bl>3K9fJ%#;5W+i<;8s`M$vQ@;LZ~J{x#2 z|H**p1zR?`E7&oSOW;9j{$#(Ec@5MZKFD7T2hi5}iv#QA zPnNCQoc@GrO{MIeJX_W4jD9Qoh4eLbUDDr6o>O#@V_qN98p!j<+AX;ae;|Hhi=KF_ z>DFzSXv^cmVX_r<8_IUfUo6{7(%dg3xl4xqqQQ>31q;fAg?|{2+FjS-xczb`-z|6I zUOBl#PVSByq4vX#WiMP}C){=7es(Rr%)Xzs?CDu2_d&7y=?(U>z0Fts<*uhq?1I|N zZm5sh2lOdBfwrpsKik;{BzOPp;(KXdvWsmu``Nx0d)d);Kpd2NW#q0GcGT6gFRqat za&i~l5%CQ>cm67O)W{t^mc={#X=c}3FSDoZBKESCvOi7kFw^_XRX)CKIDV$YNuUUok_Xcw4$OvUV0DrcwC zPXqh;(hx|MxKciMNev*Im$j3 zkH^QZ)FSq#4q%V!#iEOq%g%ONbg>^09qoq*9|1>17l*GfJM7?hE*2e~OTlHJnB(!H zvvWP+Ua%h=6kW(u?$7Vwp3XSQcDsliaHd-&E%Fs8NZ6l{cfKvkwRjiZ8VhE)U98#Q7BC;Y=x(wiLM-$KbFE#GW&1`?Kl;iS8QG^05;f#a(QuLCy_pTf0Du1zJJ zMmUr6(&z6IunepKx0CKpa5s36<3~vQ6Vg6P_!!|T!p8}pAbgVWDZgb0iT1dU>n#@dwl_RfiJ;sPz$~W`=IFnr~{4g@#&(_-6@LjK{3FM;^AnI*vj#C zcc+!>*71GXomPMFBJcOv?jC!IyVG6JybFmwBE(Mo? zV$O|s>zwNe_k#W4AZT=VdVG}EgBq-(28Stq8>O$K^mUYen9|o#`Z`M9M#<|ac^xIM zqttDbx{Xq|QR+5I-A1YFC}|rd9j2shl(dbKwo%eHN?J!r+t?w0q1z<-yG_cSOEKkS`JBOGFF>W55mU z!e2%B6nF!C2sVRO;3_#0K~6-F5fS7=1o;p_K17fY5o?;r;S1F{*3Dohm?d%;=Mlzv zgmE5WoJSbv5yohQF&bfvMi`?J#%P2w8exn^7^4x!XoN8uVT?u?qY=hvgfSXnj71nb z5yp)iGZCj$L^r4p*jlHQK*hWbrh6edI6DewN8#)!oE?R;qi}W< z&W^&_Q8+saXGh`eD4ZQ-4eD`QL>jmne@oYZw?K>AW_58}t!ZwHH67dxW`bF63$sWo zvq&ovycKEPiWF`|0=FW8Tb)w3#VG?rzyywO0JnoX!QEgVH~{J>W1u*j|K|a6;M*Rp zf>h!$@FZ9ZHu8qcAE|{0bOK#LcW?@z7FGcm17hGW;IH6s;P2o&YDoU}xqve43%~$y zF}M_51}ea0PzhFpR%#{y_c^`62rv;`3l@W=U^#djybIm~8^QbFLr?`i2A_h@KsBKL z=sjnnb({zCKtFINcnmxV)`H)=A3$vm)P|ro1hpZk4MA-PYC}*Pg4z(&hM+bCwIQet zL2U?XLr@!n+7Q%+pf&`xA*c;OZ3t>ZP#c2U5Y&dCHUzaHs0~4F2x>!68-m&p)P|ro z1hpZk4MA-PYC}*Pg4z(&hM+bCwIQetL2U?XLr@!n+7Q%+c!TInW|e{NcI5gFbgDXZ zsyeaJJs@_u+tHiqtO%$F4WJQ3!C}zk)*0;#fxb|O z?BC&d-0jH!9q0yi&iTZPi4Rw^%?_u6<0-_af;q(R2agbc6s!VIfTzII;HTi{;92k- zcpm%;>?Obb;2=26{cY}c=8_$}Kb7tFVl4K8%4(>qhPrC;0b?W0t!8}oVtn>ueD-2| z_JY!CD6NLlYACIS(rPHJhSF-NtcJ>JsH}#%YACCQnrf)1ruNm;zM5KBQ|oGKT}`d4 zsdY8AuBO)2)Vi8lS5xb1YF$mOtI>)#@=lm7s+d)gQSzN#w-#w!i!`o98rO zDtDI{O*n>g6PS&!cK0*-_amumk<_*5!+Vg{wMc{g;%#QYcj(#mq<;_ncY|9mHo0-} zz8glG*CNepDe<8Ah+A&YmR6YoJM-h)oO2c38i(riD{jPH_hPj7HOxDfOK0gw-ZfbyAD zYME7PnN@0;Rce`4YVB(%=Q@C-vu^}9QN|Q772HPtd<6mBcaOai+zajp54-!BjcT1V z%j)F348!HgO9)`T;Bpd2U|JbMz|eXz5u(xmtZ%j1z&@GlzRZw z0eHn}0Puwe9^eaTt)3KkVlng6Zsw=maB>_@j>E}uI5`gI#^Kx;oLdX$*21}QI5!UG z#^BsIoLdXGMi~))IJE&zjl-#NIJFi|jlrp5I57^_#o@MExGfI1#o@F#To#AJ;&50T z4vRAn?q(j`%{;i9d2l!L;BL4s4%fxux;R`HhwI{SR}Aio!Cf)9D+YJf!dD-L(X;jTE`6^Faxa914eio;!TxGN5K#o?|v92A3tVsKCl4vN7+F*qm&2i3ws zakwW2=hVVEF}NlM*TmtJIGj=or^MlqS~#TEDRp-!KY!x3>fA`VBy;fOdK5r-qDe{(>>4oyc{0ImrYEcD$trrVncl0S_nOqK z_&&W@d z@K_ig3&Ue!cq|N$h2gO!thZTz6rxOVR$ACe}v(UFuW0lFT(Ie7`_O@3t@O6 z3@?P?g)qDjh8M!{LKt2M!wX?}Aq+2s;e{}~5N1BAV#RbDtEWs>Pnons`>JUO$8zO# z6=PGbo~|b4H6VEf^%lo(Gnc(jm{?6!abIFZ)!A*Zx`+(g>W5ZVnXIfbSy^SWvdUy- zm1(``ZnR!vEr?!ky}^p}O~SX)dEXJ))_ReJ|IjSj`1`9b%40@pU`A5Ek z;xbvqWzugEX9DLEE4dqpCsuPyxL>a5RuJCK`8&bg;GbFHy~920!3MAid;m5BtYY+c z`|58i$E*OIedK!p)X`^IViLV~te zB?EqGx8e=qSX=Vy;g?4EL|g8pwN7g&E%1o8*nKP|1!HOpaz0_P>+IIUC)!dct#l_^ z=%&F()4|PPCYVK^ren?ezNM`m9;k;0>fwQUc%YuX|Mx6sH*xP2Fx9Q6-y7-odiuPc zK9^RmdiuPP{%)k7GwA0G`ZNlN0y~}`m~-tt*1}x z>C<}pw4Oe#r%#hDOZD_=BO`7SE5vI-11rEs!7A_stGs-06PODg08QY}q&p31enj1M z4IwKiB>E9~H`4nElKBXd`3MsD2)VVATPwNA_2dyG@DY{kK*AC*0o(u*rQA;ZPH;Dn zCGI0U0O~-Z^p(slTbNt6h(gvOMd+jCrq&~)+!}Eu7!9sQr=0|cTtoPl(r;_TR?=?= zyGXwqUfhHJdw}~Rq;DW?l<+W!fjDReE$*l2vo+|mHR!W7=(9EGvo+|lHCBpy2%FXy zP#v;*x(BgsZMOpMW^~#bY+T!|0qD8K#0P`nq`LwsGy*9F5PDdQM zc1m+=Xz`G9D&y`v);Qsk?=FaSQX}7Ie=V z^v)V*y!!<`6>_d8%?*SV#b}KfEfIs-7?j4KQtCf3sEI*I3<@^z zjg3P1j#(N0Y=J++@MAMI3sJKWJlFycHo=1tY8it6nyKkF_$f>cL)369H4MQ+5qKvI z-yDW-Lez8{JQAjsA!-?-mLd2c3=f3ifiOG}X8qg(4}|IaCTbp{@8wu-rjNt)Wte^p z(}!|wH`9l5d^gi~P4rt6ebz*OMd&Lz=9}rOF#Qy!kHSzDqF=JtTrXB!WF8f;}WcE9|2c_R#`+1r~U0BN1#P5uTXlU>}L_)HH`y*(d%; zT-tND6W@s?_ABCggzn=hXeZIcahto3Z4)_`hgQL2i!CKWi|w_Tcfyt3~9!3JOSAi;kX_&fJP7nhXLhUP>WqAf?Xzp zT_%EECSrYuPGGxx?bER4{s=%jcAAKNE`Waf0zmI!r-@*viD0LR*cD(hs02&kxn*Dl zc!+!+0joJ5BcE2nBOHH&1y|6@j=Ps0-RoeTa45q;7olhO(W85v;hY=6F+A){B)k?} z&-p2wp9&Upyc8@4awOhEx`#ObFn9z!3RZz9z*FF9@Kf+}@GN)^JP&>a-X@QC!FymM zcpspG>n{bThr&Os}@kt1Z?jM)Nr4 zFPjzC64n9BzzXmX$B%#`tYRGCL6&$4Pi1C04}O;Nv6$oWgx3>F87Jl2ZCt+t+y$ik zddO{qsyI}|p(+kl%}Q1wn>=2(4NBsC@#9SN6FvGvtc9}S{Sf@_hu8f|0&L@)lma{9 z>s`dZ0=vTm$ZCV%gz&@jey9!^2@y6D;*iA?0a_qL3xwe7 zY$GYc@U$PE_QTVDc-jw7`{8LnJng52Lh!C1-u1(~{u3mMoK-^bqMsHE!H0fYE#!Fk zmZO&ty%=8fYw5zdV$Kcccs$|tpn`K#IGzgT5WkJ|cYwRVO7{>vh=k$%L*QZ3JOUmC ztH2ZBDeyG-Dfl^f7CZ-@2fqS)DPuo42$WPJpBVYZ$+wxXg|Ln9RAOC+zx?z{h;Jbk zV#gXt3tx=Qax3v|#J3afRQAh5;wz4KvtDgt{=Jftx6!ZKzY?L-w;vR&j4#HCh z;i)=WN!l)@-LejzIz;Q#!Bh3L%t3hS5G^C0lGVXahv26}@KZhfR1ZJZ!%v6cr$f%e zXxDp5vmYD;jof>f^KI@Sc zK_e8%x$XcI9Do8@^8?iU05v~AO%t^|KrLnMq&2nfgxb|nyEfJLVGJEH9~7E&-zC(k6#H!gGr34^@I^n&#c+Nag_LB5Cd`03|hE$gb*zOZ7qhj z7DHQ$Sr$k^T3|U~W{sht#n8-RXl5~H)R>KZ1x+i4rWHfeilJ%6(4b;yOffX37_(;_ zZ7GJf6hkYDp%ulLJ>$+?uz>g?a36SpW9o<&6JwT)qqW4C9pfI#_c$Ph`uqs}HStuY z4UMG@jirs6AEAcw$xItHlp0AJ`r*l*(6phYw4s@_p_#Oym9(Liw4s%>p}QqNp=m=y zX+uM4LqlmpLuo@pX+uM4LqlofD`WM{u`Ou9ZQxsYB!Gr75Xh&k_kcK%*C(=4JKj2{ z_gln8!YU^%atRAu!s^DJ1&e(O)(=_Ucs6dWWkzO|$11(iPDehUXmvZ;-iLqJ;+C|J zffZTYk$Vz40%=+6Lny6l(y}J4XbB5i!g{9n62w`B;RBuP|HyLo!_W8It!n!Deq21q zx;Tq>fM(Z|F5z( zZo<~ogdBKPTisdrcB7wp_HFgVPST685R?M)$Nto0T|t_WU@Y-z*h;2@o54&l3;Z*- z6=qj@KHs&l%t>a1LpEgYyB;{IP*G zVFPQz2G)cPtjUHJY+y~;z?!guHDLp5!Uoo4CtK~c4W@~n$12ZUBrWn6(3|832ke3a znv5N$Daj6##riyp^?4RMP$YLW8Cy&fcC;o(+F~j>KMl;}cs9_M_$IgoOFY-xZ8A;B z(^uJf5@***+<6>4308w=z|X)hz%RiX@B;WX_$_(92(W88FN3vU9e54A4u05j--O++ z3A7?c+hVkXV zOuikM$^J-eeqan(1)c(LfDgfDP>&|m#1{-(m~mSkMt370?ORQ5>ycs>a%a2B=eYSoq?1DKW9mR& zaq?;+uNZm7$?IK{*PG<^x=101R?aq&U$ezt49+%?<7$rHVFqF+7H1BrGgykLjZC+Z zveW(A=t=!#R9xU36w@XSqGpC#Q&hHg5sMY!t6Hl2fQI!ERLw`+>pbCGSZ z6DdE@{WY~-MVd~eX@%-$(}I$ci=lcqbstOJFXOACLs&nIhw~=#9Z?_m9%47bXFS8L z`@G4~?h3x4X|_eQgsP*>m{;_wICGWOmtN4PkV?=zgTExPEp_ zWs0$AfH$!2c+vfgTaNj7$0b1tk@5;Kc}w7y{%+V%db@k9^N}ijI1Yk=)b3K+Xo&lsHJX+GIBL{W{K)-Kpa;@Id&O#c{r6D& zI+nhTT&;3HQR_6G_%JHAQ2uk+6s{tt71)oqklP;Y3N5U^7P0=?Li>%Peh<@2d!Vfi z+9XGPOwTmaGu8CWX1?@_{A7GJGrn5Mv6->e%Gj#s&K-OUb_jKt$O>dNBWFD+H^N62 z_b}qW@c}3s2VNxo29-*;S_AF!7WXw!R@`X6jmF{?Rb1OhU8IH~ z`&mAT;RyiGb&%HXC$wKPdwa*af1oZOi>#*J zY;dRXEcQNfsHDw)$uroS>9^m(Z40o~Ur#-MLvQ&-i1kUBCxi9wLVD~DYWEtwcB}Xs z@$cMa^xUn~_I65th8pjt2k)c@pP>hDrKNsPFRr2O|AV&w8Erp{whz&pGok8nTJRNm zbp^fZrzKY@yN(>=FQNmzRI-VK_*fTlQ4 zC=Z+d->04@e+o}9kHQNbp`o67|2OsdZ|bsxy6mDZRn#SH4QFJHQ1jI;RsQkgp`KQk z?V3iPeMlaEB#*7|Q`sKInvKbzL?MC+&0`q{L82kLkUt^YEupG)gsLhEN!)0=7ip-`MjZ7;JfJ=zS# zo2(&6W3+xAt$zcppHAziQ2PMXOZ&z|_kC(wMXg?^^#7*Bw<+N@O4v>bpOCBUPuX^L zQP6l9i-I`&}wz!Ea5}GNLiEV z{!#7b90Es=b-!eMH%Pf7X2P?}*-vvjJh+m&-REwie%r*GT-VQE{lPr3KITiq%*>VC-1*ni>A9se&RJ}#+yf8r3?D%>^~%Qb$B-gRFfzLoLb zfl=HMUiycBi~=l@;M3!iB9Z>VA9~+E{l|Qg^ryP{;+tMKlf*D1O0NsA0t;t z@YgwU33@|``2P^{HSYGmL~Y?I{nvq52U!#Ta1oOH2j~1h{JBUIMd2~3sC_*gYyR9{ z9gA%`7F!G_ANzAR9zE=Caj$Z3aXYwQxGRobIBCRPOrO(RC+RUiXX#gFV*ZY_7N_j=aO|=H|F@7yn_z|KM&% zt_t+H7Yh)@p_e z<*_VJB8lHz?0N0?eLsd&{vZFCEq>rH!KWunLO-i}u{WLYC(j?>@+Tzt!Nc$8*Pi?& zT-AP2Ft7fbe`tLF)yV&(v&Ti5(fD)m zR`>lsS>8#?{C>jkospD$pPKI_JK==;WA{S0%JE43yZ5?}lc(R! zWMnUwHy*u-;~KOy!3=oZ-%-XSTCYH-R)6r38b6AwkM*FQ0o>oXtK9dH!|yS|>M7eRQ_G;67lko8X6As9gpo-{me#J~}?mE>-iVWmw{flH1VomM{}D7o&Zp zp-*S?vyouZ><z{`KHHA)hOSJiG0v{5f>Tsxg@L!7zTO;tydod+NvXI|D1+)!Z`) zPY7p;`}v*AJD{(M-dN(^;?3{%{4V0X&kyjzAiwtBm$yB4;FDt)zkJ^J+>K9$T7HGR z^Z7Nqs`v3LLO(lzz8&E=kheY?*jvtiTI%vGzf0A7pFfsweTvI@@6#(vc=t0+l=A*( z7g5IBpXZCg)MMrx7HFxsf;T}2ixIpHI$MmC9tOlX`M#%^z<2aRVxq-+ zCt?y`zV9aPDWskMT@*Vu~_IU9M?`vKy*7DBgRPid`i=Qsm^RDL2;yvEioFz8! z&gK%ak@q&2iA}t_xk9|p`cV@Qqphy; z-A$_-Z*NYsddM%GTj%h;=3J|{!~2@n1-!Aj!n%mJHt)9j$Zwfj1-!5M2dh6{9)Hui zk@qY=vMTtl_*QE!Z&lV<^LVpzhjj~YSJqkc`FeQRTFSeX_0}@puWYoI%XciT6?{GX z&(^JcH~cTwo$|}!)?Iu#{HV2(_bqMf9^Se1SoiYXaG!M_tMw6zgQZ`k9Ju*Rem2~A z7TkO`KMx*3&SCVQ%g?L4f~3Nk7h(svh+i6<*#|3*^bsOGK;@A#pI-(%iNy?_>`%%f zep&G307@Fj&ks*tOlg%a&pWt^1p>x31s99>I}mRvPjx+w1If^Q#QW8du%bxay+DRVOvB zPF3S7RgEj@7vw8w+0Cz)8eOSsbfv1%b*dU&r>fC)ni^d_)adG@M%U?#uD@a@`5V7Z zYK)z(#@Ojzh3*)Ujmg`%X{1f#0#;w=Hi#4Kk*`@NiNc)Sft{MqJ-L(B3V+E zWJy($B~?k5R3%wbm1OZL$&zME$&zkM$&#)lOS+OQ=}4AIl1<%|Y|2!!DO1U& zOeLFqN;dhFZ1O4D%6MHJ~XYnw-@Ca`{=it}kC!zzsEglu8;NRjg z;;Zac#2>dGC;kMo>=a}f>qGoT#Az#hM^Jy>RHBAQka0P9kobnH-`d{_2Tu}zAvrbO1a~u-igO%q~h| zc2yFyyONk)k(jx{i`R)RqNnsbLHZs}58;#ECqx?lC-66f4~kyG#t+45!f{S_PA4U9 z=(vlw<4J!uayA7ydoFe8?erENyi=SAcTEVZyb@Cl_-a^m8 zzr_ulztOpo+$x+3>U@)P6ZM(wOy&mY zZ2r%2=5X&^XD;_Hb{12ICC(D)Wwzk|tdf^e{c1pa%xr6wfJR|CkcZ|D; z-_8Er?#w9nlg|Ur1LX4vJ0xs;Wc-8@A7!V6jjxQyh_7PDgpJRP$B94TJVE?P=SkvE zv4g_KhsJ8+PqUN4#+Sx3#DB_;3LBpqKO_Egc2?N<*7ybSXW3z4<74BO#GhlQg^jNb z);##zc%JwR&I`nU#m);G-y6Rs{u}2vQ2kq;hvedi<3EYN$a9fg{Bit__)9z=$;B_n ze-VF~=OnrK=XizqTAr8W;-}+P;_G;Bl8e8N|3myWo}c96x8wK3U*|bWF8(|IK$|m< z^8an;ZQAf1=N($_UFTim>z(z)-*et0zQNf*e513G_$Fr)@%NqgiGSdHK>S1JL*kpA z&BUvmD&ikG9}#C(=0CGC9L}uF|Gmy$cwnEikCxxh*9da(^l^arLB2|mgU63L;>_8M z1?FsO#heXqA9mPHgYS^|}11LV(~XD){`|K|KnoXVFI{!SWZ zbde@!bdf4&bpA7=GppLn1yVn?nDuRR_`w)JD=YT_r4-+GakHU*siqZqTN)Jfk3E>#7 zNjg<`ZxIrrEU1t z7hHtWIa2U%_5tTV` zrK5CJUwaYgDPNIBYAU(PlbOJm*&cMMuleSSP&!HqR!(WxlIwt;d;tb~f{5}Rm=vC& zHlZi6--UP!KcVy(4_}8l!kIRHo$;;q4RO3YaaC$IDN3^ud^hIr#PJlxd6%CDT}PnD z@Q1cxTTCMsPHKeDO0nQTqy3~?tmg2q)`{~{6Y?reC_`yNe*CR<<$O1*8)>>*-HG?G zdXV!e)+xk$T0J>`s&y*yUOeOV;E$~jXXF|s%?em~#Ph9uO2_va@dB%Wl!ZJ6_TYuB zKWU1r%Q;_c6_cjKg6oua<-rr%AmVa;lY%!kxK4Ux;? zb1YAhJ$PrE%o)6}p~FqJrV{5%IcR25OY6cHb7mP`t&26sn#WbSX6k}pHY`y1AVVUc zz0pTWdYccu?OV=Bjm@VtwsfVjWib(_F>|M*t9kG;MjI-PEk$W;UVM!8W^Z}TVV zZBCNj<|OHDj?&wFN^kQhz0IfeHjmQVd`fTgD80?6^fr&u+l1YR=iwfuy$Pkgd6f1h zl=kLP+M7_?n@4GHLTPUvrM(HIy?O91HUJ%TAkWV|_Qm)a^WkOe65^NImlFRm&(l5j zW%wNP;c@J8;>Gp|D3xo(9`-17HKBC16s4;PrK_bVT}>!mEk)^SKBcR9m9FMfx|&z% zYCff_dF^TTEb^Ic&qimOW6weRnQPA_KF^*<{1*Eb;`8nK#245Lh%dAk5?^F5BEHyO zOkA!z)9_EWlzimsGYvmwSV5GYmxjMGtd>gKOUG~7ZS;#=kEY|l><;2`Rho_uv%84P zwP`wj%vKVYE7WxSncYiVu2a+TYsRidr4eT0-|Rv1lzL&7(hL1cFU(SUVK=20<|w_e zo6-w&lwR0P>4iDc4;uHbwpY`tPuoqz6PhC9UFnEEr6XoZPh*@(Xo`$?r6YDjM|APF zEcHSkdZA5RYJ^!zBkZa)LZLLmEc}qAq6zsN#=FuEQ}9WaPCUcOK-0=}uoo$P(Tk6= zY~pgAEq#^c5buDq>};h$dhuJ5gY{Mrw*a>A{S+)D(S6 zQ%qBuVppXpI!aUY;Ma_`hte0lN?%M-`l3hai+-gq_Eh?!N9l_x_&qCNZZ34NSmXO_ z0QX7_(yuhgO#Gl-!g;AjX5tU+$Hb*JnTcOCB#hE2vy@Khmp;^*c8@H*!_#pj{oQgZ5N9s7TU59j9Ffb)4zwphD@O9%q)rNKu-oM`@y6 z9jS@-bmlqpIlsVJK;0HP3yCjs77>>ks?U)csuzE4ONlRI*Newl?kp!Rbylx~|2EP~ zoi$hKtbV1l<|>`luXNU2rL+3+?6wl^@E+$LwCa1Ed%5dA=RQi2x@=da%l5?M8_&b= z`u33MfakY|(T3Z#TPI1ob&|AOCrP_?lC)bVNxOBDv|A@hyLFPZTPI1ob&|AOCrP_? zly)nWcI#2vtx(#nM`^c0X}2Dw-3q1MdX#o6ly>V;+O1I9tw(9MLTR@irQHgp-Fnb& z-=bxtUh7kOtyk%_KBd=sm0s&pdaYOKwLYcSdX--5Q+lme>9szk*Lsy+>r;BI7oTG;9>g7{7c?FD~$>{G`l9@cLB;(bZ{E9WcXyPe&{|K#w*20wYV#P>MZVDXptHF2p` zXDO}Pue9ncrB(ZtR-L7^YCpd8m{0Mg7lBWtZY}Vs*Faoq*lGCIi*iQl*M-4j21 zF?cNQ#Nn}Kr=f^SN4`|iN$KKQc;-Xv#w%Yo`Zkk0NJp<;_`Pp>dev1MLF+-Y@>bydMVvEh#crl3(qH> zT2%+EL97zCixA#jpTP_3dkIgf%8TlM{-9UauTSvnx?1^lO}=OC34UNtdIz2^e`@WO z9y;;QX*_iP%icMaU(bK}t_Hk%zJXs)>Dg2I_LSZ|-@&`5^zSJ>d`cgm(#z*2{CvKT zr%&nYQ+oT{jJMB^@b~#K9zUhePwDkj`u)_NKdbTmxfSo9(*LLQ04jZeN-v;0@B{h< zoOU8S?88iEyf7%QIh@t}M+Ypr|u{aCF~ zE>qUS%dHSLyAt%hOT;~BU&F=I@X8J1*JxAo#T#foOR<-)z{d1B4}D+rB|r}Dj-S`dvCE~2W+T-fT*abV8cqV3wG?-`?6wHQduKf0J#a`|{P`S` zMF`!3w`5G1Jg#8=jm6&+;+;x}UFw8cg&}OEPaYwm>u|k!cEQBS(cktzN=T3a&s>~1 zZbkvIBOYi^#&xHO`Ni2E#!n9*r0F9<=LP0ujm!M)y$xeI>%E1YT4t5fbhvK+# z&g8WL&w4K<;xL$<&L#B+Iob^l>|2v@v z(4NM-VCsy*j~psy5qcEw5C5)UdRD>Y`Mp=;)_gqEm~h;n#5sIH$GW!v4+*ft2}0g} z;?|tk*L;#+Jpa>lOSjc-JPz#%<7e^1Gj`)mw+PXVdj6;KhW3GYllhw1%I^FOwwsAJ z8A~*l>n;SZpm&LcV@Z0C#$b_i!jl8(|5WgW_5lvhwjp$wwy z$V$4AWJraim-GQCm6nkiQYh)6ok+&Zy-B#-n(UJ!$rO1C*(d#g@(9O=$XxjyvX4F_ zr=|0xyPSgaTgX1mUb0huAJ;QUu6S+@>S?4(_9VllS`rP|m&-{cT=RmomSagfIfR5u z-;m+-Dqubj*sl^Nc8hdpwZxG%A|s?DWW4k~DU-?o|NCT|w3MW>KBSY_$9cMkY@mj^ zb5aIb&i6Gxk!9lk_t74I4$rVO)Z@qymO`50c$t(+nrpmCThuL48cS`-Al8d?2B&O8 z?I~|1^RT~2GLT8q*Q5*XohUn#X0#lz`;(DUCfTCd4p?MTD20%T(rHql*-geujW8zF z!0o$a1pA2Ovd>5s^C#2M=4z=6=|wM*a*SsNy+VdcZg@6`%3064Z{(w-K)Ozb%ew);Cs{`K*PZ2fl(e{hpUjnXWFcr~6`Mdd()Y+f z$r*IKj^wjeWH)g)l@WJELp)4fu>Uo2uSGH4p>L8y(jc;y_er{h@jXMDahT-^q=R&g zOp@OPJzOK5@&Ccy8Gx}P<@Ne7LF#LM%^Y+Vvb(6u8~ zn#rWC{1#yAK(@-ikdB(?q>(IGb_XbkOP&^!WlQK|MzkLJ}pVu2#HbJ6X-gjE}u+0B>%7=QXWa5Co!JKNi>IF`xzOcy-$WoZ<01r0A%Y5(2j}BVHI_+(LHtN=y{Sv zGjP8rnIlm$O_ERt0QdPQzI8h!N3@S?bQ@VN{Ro+P9`wa^%h#yapcImIvJCwYLe>eH zG@kU74&ZzM&i@Cc8;S$2`{9{yaQ+CpvxIJ9wYko4DaXi5PFyEQh60*7z*ew zl)j}v|7 z@bJF>4>h+R(Ehl;tzlbm*nzLx=!XIIRn!Mi|Bm`PaM=O+Edccq%?{WggUAMqUw5wC zge?Ml0QSf>+_Re7C8($JnkC~tUe6~R_&D%3UaqD0>z?s(!L{N4Rl}Cy_5`l8sX#0?PMW0_!x5=irYY-TZ_F^Dr`VAZ?ERI720_p*GoD5@|xR8f*-k^ z20I))bDF=8^9yfR6xc%bu;D&_Kj#Yp6L^vH0k`R7z%FC}hYfIXSt0nG+dJm=%(l8& zp0woG7`KV7cDlBgD#W|*Ih(^U<-2ltzM>a`~rU*KipQ-z`o=A^=(*W zqsmVLr|6%sQ#QelvpiG(UM^pN7a?DGt;!T`+jE;ttzlzwJCNI>LI%HF!!{N6BWzM` zHwwJ-xeJ${uw#YY`FC<#oUi-o&Pc3sFbq@5mwV4LY@>G?poR+@_-=PTI0@~$#E9`vmfw1#A zFJMggJc5svTJyOPr+<|;R9hE)ER&<5XHalYFz&HKpJmumntFP%v>|v9^NRYhw$N!k z9dLQ@h=g(*mD_u~(ES8{9od~)ele6f_*2?gJ?6D{OC4OF(I?hsih$fm)8cb<84WMxmc8szB8jt5`m@n=M zq!hro(`M!;aI5(F(GUM_7wf|kD%U-!o2ti_2=r0H_$LjJ)5Ixw1Icp(Pr4e zuc@OQbr5?NgoaT+>KEhhi0-?gftKPL#~^<8ym#hbi~yhSt1Vf2?Lf8BKm>kxEyo>y zlHcrNX@|DpJrbz*qA~VpCkWus04LnTe@!Wk#5vrdgP@PheowpAHnk|LT7n+#qz!F%W-(QtB^ZCrWS(N+Ud|3}ma6f;*dY zBIAGNANuXD;wc`)=+7xx{BTDD3dQa5{5=u)12Ku8-oh^dW^DiW)^eY9rNXM7Q_+a= zv>GJ!DzE)`NA;X@IMkpO{__DWey9WZfxr-#518g!N+6;9P@91>d@qp5+U}^oCJTv{ zjE5`Jo;Z_GvViO+$H;Nah_8^3$am!5M4_%A{RkR`fgD1|(us5dEuj^34>iyyw2lR^ zWR}J*vUl10>B-3t6eF zGu73hujW36kTCRd5Bhk5Tqf_5>*Ra#gwz3_?%=d0VDX_egXV}n?xrWv$LGw~(#I?4 z;~n%7j$un5m!gkrr1jEXsam=qU6wwOK1Lsj94WVud&(*D1i3(-BbUh^$#>+h<=-_- z;}%4MItDEa+8y*X=r{C{gm{GbgoK1dppWq(ZR-2D7kxZx)5npPKDt@;F;n!BqK~z8 zb+WUptNRZjm=SiVyG)bn;Mbr{P{L7yQ5vDZvrj!xyy`sasPdcgJsknu5M`XwnXEG1 zH0?LNZ8~Y%YpOEsFl{j{!`mj-W%D~s8WdXBv-WxIAB5DNK{Xtks#jpc5ZE$=IiVoZz&fJ5hjItyv3i$U zvoF;>>zZB1y(s^eA3J8bOOoB_Bl-jVk^V#<)1OHReMq0tKk0M&g4R+K_;nFgz;_5A zFh&-WB}`&6(=aX5F*~x9EMp$blX)?3=EHnRDS4IoF@JDrAiV5l^c(40_|Ly3D_B3) zpABFGSqd9ORxmSe8N7khN?a8_y=NOqRv6 zVRe+VnQRuD&5GDuHjjQszo-9V_G|;&$TqRfYz8Z2#cU2Nl_Tumeqm3!Y+--0 z=j;VJ!D^X_oMZ~Tiw20PYIvlK5`$0b6#VTqnCWXIt)!Fez-bPWqvS;1kX+zdyDT|N zDe%x;lf21Cl8@vo`APoZ;*ZGWP%6(5BksqWO@+0|)JeFd~&*Wc_d{5x3`$dYAT9BtwOY*A} zFAbIwh$1DDIw?tNB_&I(DS^0UQX6TA)E3fMrW)ymG*lV}JH``MmA5op8X=`gsZib# zkP1|K4jB^#Dbtj~Ga#90G>wt|BmFL=OCzQ4rAIJEnoEjQ2PNA=`a${;(kPxL&_tR< zTS=p&(b7-SV`+>uR<@JvrJtpL(PY|M`nU9iwxMllJLyl_o_3J_ke*2y(l}{6?MOSx zT3JUs(=IZTCFvLGsVvJH+Ld;b@}CVrv{ow zN9^#t192oy&_6E3mFS5Z>{<`vNxTr3^C7;(kNA@SXskvghy;@mXsIv~P8yR45=o*+ z6VjA4ga0#z#FFMDjLeMvvkp9~-aNeUT629qIVC>chElMy79q>*$ol8hpw$r!{5Gawhhm-OHC z7x1MCTquJBHQ+uivttg-i8(T7=EC&MmANr@aHALa(HlC%2Yl$qIgw5wQ=xMwkcp5= zGszM%ndH(E_~UcvYElCJUO@`z8oCxy-9oyIzDi5UKj=!5M~ca5aQLfa0U1Z~>2k83 zu7Vz$1dr`>`W2+cPqdcvB_Az1iRMFB=a5pmjs>yRbQZ>~kj~^|N2iimG?z}MGazN2 zLe~5WE%zV#JN<+H#^nrp_$QYzR3R%!CA8%fvYqT8JIQS5&0S=hfyDGR*r%jcQ@SSY z9IabsSlX!CUK%?l)<9!ILVDzOH_(h&1B)@xW}&eLDJG<+L5k=(I5j*iWJSn|S29y}NfY8v89)`;)sfNql147f%Vh!4Q7y;}2TwgP^ zx)_7DS**d%{DvW^hRy*7lD1+6f8UVQ@KD3T6)OT(pa<&lW!vL(l)QYRv-JsJpvO77 zFa@td6&@PEPlShthXTU1?y&~@n7%_&djP~xfanlo@ahq3aEvi{qjHL=j-q8DD~6<= z?+m_~aL$gD4NW~yyrf43X#s|C02@+vP7l0U&hcJ4#~3=7oeLr9sny=3d%$_(Ej{Xv z^G?wQaEp;@Su{CIr;hB^vJtV1KFb#84QVI#q(NO18awlIa<}B@V6mr}oYo`WgP+qT zHVgIV=ZI0K)8Soa6dGID(;3DBz6r6Xg~o+^uahG-WBI0pZ{i$rVIbd3<(sv9bCPfB z_$Jtq&g4(biA}$2d;jE4dh8SIDZv6LUM$y;iY5{FGTY^ z5xw=&`eJ`I(L=X5{+G0if%hYj9$|f04qM00u^*)%=#4&*$3@Z=NZ;P_Ik{FdUUOZm z)y~sC)IQhgbuqf3x&qx*yE%3j?E~$n+t=9t=Fr|@r-S0?@0jAa&+$DcU#Fo?RZibI zw|Cy@;^5NCrNCvU%Tw1x*KF6Fu5Y`3t|$5?`tJJi`p?}uyRCEk-F>M0A&)SRJdX;G z8=k(NiJtpBAA2QwZSi{U-P-$z_j8}FJ_SB+`ZC`>zKeZ7@cq)SiC>=II={#M!~Jgu zbPO01NCE=`4UHN%YSE})qo+X*L4AT&1Z@vG5p*NCad5xjF~MtscLzTVeiGsk(m14J z$fgh_v~_4r7zxV=_YU73e!KC2#x)T^5p5&NB5p+LBl9D#Mx{i3*TlEU(k73Z_G!AM z>2J*@((G!pr_pkBVsu7yW%PT|wK487O=99>#>cFSsfxJ}^JUEASkKt*vHN0g zH1}-Yy?I&lr*VDaj{ik3es`DdZM)y-;nZV5k5xTx z_l)ehpy!*t8u!}X>v`|Ry}y2?-z&%Z`1eWgbD^()-+6tX_bcjmrN4Loh5a87NEvWp zVAp|HQii5{IjHNP1A~4X96xyX5SJnE4P7{l4O=?w#_*uwDZ}%J?;d_;_|*|_r^csl zNc}x+LE4eDo9Ru`3(~KRY%+53$UCEYj@miu`RIP5e;l)5%-dsK#%7MaFt#=$KjY@O zm~r#Q{XTxw_)8OlCM=k6d%|~_EVFm!p{)3ex_dxFN zdD(yaSCBU+Z(ZJrysLQ+^PWx8Piiu0z@#;kp5(ja`{y^ye>|B@_MhB*@~p|{rld@{ zJ$2O7-wVbUOfPtETC-{0r;V9bG_7LV*{x^i&)z=!$D+WZ-bDpPrA3d6yB9Ag{(Mf8Iiu#RoAbe(@8&j{TRQj7 zJl}b#^Qz{P`JLyFn!jfL&H2w3bYHM=!3QOQB@0R(E%aPCVBvy=Hy3qZG;7g`Mb8$8 zEuORZ$0hMgHZ6I+G-c`A%bG14y6jkKU}9TU^%Ezl(tg2j9wd%+!<7%hX*{iRu@m#ZD&89Uc)?8V0f6cSC?rWQ`ZM$~x z+Pt-k*KS{1v-axRhijE}-s_sL>$z^sx>@Vitvj^t^13_go|Ze5hm^N2A5flIKCgUJ zxv~6G`OWgj6|BO)BEF(`MMlM(iggu-DlS*tu6Vp&ULUwVaebflz%?JZyRJG~CrW>1n+{`xnZ;s#GadV%|<2O&)JZE#o<|CWW zY<_d|z0FTID_b14gluWGrRSF6Tc&I&-BPh-=aw^Du5S5y%k!=JtxdLe+?u*|`qmX& ztG1rldSUC0t&b{6rEg`6%AS>jE5}skRnDqhQ@O9wP-FkGHXH{@Yq?>%DEv zwprU&Z9A~-^0s^1e%nsAJ8f^gz5Vu~+w-cTC^$ z-p-(%<9E*4S+Vob&PzLQ?|ib$X_xP==DT|C8nvr%*Q#AryDsdyx$E(6d3WIM_}#sC zXY4N8y>9oR-IsUY+5N9Q@*e%3CVM*W8NMff&*D8>_MF&rWzUU0kM<~4o>ehbt*Zu9 zWmhez+Ei6lb*}1q)#p`DtCYQ-dmHan=uG)KG@1?yT?EP}@vwbf6{P(rk z*M8sNeR=y9@2lKbv+vrzd;6a5x7#1GzxDo<{n`7c?_aQg#r{qEtM;GRe_{WX{a^3@ zasSi(&kwKz4hP&1_#X&6(Ck3`fwl*_9_Vvm@PYgTr3ZE%ICJ3IfrkglLA!(cgT4nt z4z@iw_+Z|_#Rn@7)*QTgsP&=Fhtdy?Ka_W9@uA8?RfmooG9J2c=*FRYhrT}a`^%^6<#>qfSQ~A8m28{n4REvyUz~y6I@u(Gy26AH90?^P|5Vb2=7wtnIO`$NC)0 zJhtH2iesCORUJEV?831t$F3c_eeC|R-;cW-_deeIc=zLDj?X&2;CSiroyTjAUpxNj z1UnIUqSc83C$dk>JF)4+i4*Ug`0~V~6HiV$oD4hJ{^Zb;`6m~j+YLU7GHQ(>#@5Ec z#ysOv<96dY;|=3|HO2Br+1#daQf!y$7kd-foBrW^gEMzX5N{KGds^5 zIdkUBn`iEwd3x62Y}nbhX9u6nJG=O7R^{ocBH-cE0)fwEAAEky`MmS9&M!W{=6vP(1Lsd%aJew$!ifw2dTsb? zXI{JU+T+)rU6e2CF9u$0axwAZf{WK)Z}R%W*UMhN^ZM8P?-KF~;enbax26|hL1JPQd4B2D|G9jo#pJy+un8DLgqT!AA=BNJ_ZdxI4@K zif=R>lo!g^pD8aW(z?WZyAUGXhjkKw8PYcMd!6xKXJ@>ZH^OkhbRE--S_dh*##I}v zWut4>YImVJ(@8r}J60==HfZ(L8UaM;oq*o}&vm1#107w{$zh-a8*N;ReS?F(+TQ9G z2fe}Ny1`j*&|f#W=nd}I4fc9N@O6XNb-c_Fc-`QA-9YsQzv~93Hw2(RG#p(CPf8Fa zK}zsI@d_6OTaR#-^;?&5T|Tn@+Xr+=(D>LY+ z33RuT!OH}te+JGyr>Ec>npoFD8m(Oo>vpUe1NP{&y^4V_9E1S_)lD1VH%d+I-Q3%7 zpq;K8BmtxR?G>IF86Kwf^7Qt> zfu~mI6`q9437*~w@vYc*)7Kt5uy<9~+MPvnr%azUdGpb|N7iR<_{Z$+QwmqmiBnc~ z?t02;S+ZdGsF25Omz$lj-#cQ8i|zN`jo(Tnx#EpI6~aiXMu$+6=LM$Da)+JD6S`6FsSTyWyVf&nGR zkC&v*otru!y?9RA&n@NY$U25UdoXa*0=Nmo{J$M$#{wf-AVI5QBoGIIz=*iwg99Iq zo+g1>pvM@m4dfMR63;8=_$It^F`sld-{NPky!~8o%@C-s4!5F^NEbhT7R=M8;VfuG z5D3Q@2tr4bTeSi~Xmvi}QCfjO5RXTEt7ICb({jp@Ks@{&floU8m7cp+F4{I^z*3r~ zjf|Prwc~;HAb4nf|&8G`%hemsXlUB zI+NQ%Ci$CjCj&z=mq=pxxkM6z2qNfqR1a;oW{C1L${Mb>wm>B3UCPND)37 z51k}M(YDH?5b7)E*ip}5<=fYX8;=c>zR$~QZ@2o z9pP~@*n=Ut6s*=Z5Q9My;!soHBIJ#OdVsb=y+Yl>-9nQ>-4a+ETBMZCRaVm(bJ=%= zN(lY3kO~(vB|Q{{{7x=G8UWXF9OQG0mdQdh{GQprb+L!?6ZJiWJ~wBr>FaDaIK!Pl z@WV?}&-}cxq)__0GL5cft#bfA?ytbclN`YP9%dX-j6dbhq2 zTL^rb?==e_p<95`7A<|kX+l{ZeU>+08_VC#$dtODqzM+e)z18O2fW=u* zO)RT}1t+x?E;Zq9nxqKUrAWC&_i8nXO@|}YLE$GP(iHUB4?YAzb8hIdoBCdY1H#1* zBW_&MAVHjq4>uddYIG83jXvTY1JPIeSvMRS3V*OgR(OR+MGCI(2& zRagUX5CB+hTDefy1xH8GLrO5VDE=S|JZW4kwQDd+TusExE0^y&c5a!+#)ZL9(z4)|ygSy%$- zmDBZ?c-IJLJMS^L)`g1-7%YNa;g}C~i_)=&r%%r|eas>jnZBk6wPEyjj#5FV^palG zMoJMBBmq3H6MSHRb!Ne{$}|G$F2J)3=K`j;rZA(O3*!yj#Z?DdVN?@n$IrUxtG%tx z1_yfMtkJ_e7!`!D2c(MBs#S6;cP~%yjty$Vw7RP9EJg8-iOCtV^U`bQH@_#d$%`h< zFIhBw@)SR|UTQSMRM#R|LKgqsFO+8=yrZe8eCu4*TO-ne)5Yk^9MFtEyzdrEOAxh6 zHJ<2=C+`g?!J0l?JOzEY#2IBBSENQq7f)2x0S&z{crA(2PwbYxug7m;JTJhQfMdBmZ|9ruRndb@Az##POpGoazHOmh$M)iaYSbv)t;%; zVsNzKR!Dq6%9x}JPj+|rfP|HDKDZR_INKromeG_h1#5aLPfhPDbLP&aGuRNS!D=i> z&{4qSMBvc}Gl4k77esqrXwOS+Pmn6-zt9Gp7-K`dfHgyGoHgQ%Qa~(6scUQizv!ih z$Jk0zQ3wZ>$GF+5+9r}&kP0l??Dv|HF=g4EV<+z{nL2LjJ3F_3kXl(dYtx1~GdG95 znw7J7NpAL1xy|hAsAg}JymRBmI}6`v+QcyX;`NVf*DODJborV+d!!x<_U&A{XsZaQ zGBOB#?Q5Z#VdkFN%uiIBsU{6z8v}?l?@U0P4H?PKI)2vqB}$2aTuI`l6-!DKO2SQ$ zeN?iyH@CAaGRG4vvt&o~s$qxzd3*b*TMy56T-wH~ReoxASqGU3|Ev#!Hsf40_iskGj@J-=jqWyUm}}eC5XitIg*h?|0kh3qObcCt19&7 zp6M`#I!CS$5k0RX8Hz&P;60AQUA58%swFN6!dvbYa=>yg=&u(kW>2M$q2cX_pMl2t zg0OU6K8PhIp-5xL(tn$Vv7@YOfHqM1eKDOofzDY3o-C#N5rsSss?q@_BW##xu0yS` zY0&AbO9%>Y_gD7GsrCXtv|BBVaMU{;1DFy>F z24JL=5~Va#S+l1!?I;` z!{XfGGs~whSXDMdbKuek$4ajjC5;@X>`M4OEpl?6pt z>aCTQ`s$#DxslP;K8OSE8fVnn3*~4#$1+6gs~b1mZt&F`lCN{^*`?tmI;Q1f+B`de z)W*!gN0%UJxqwS{C!rxkVk8v%J|OZC;vr5^^X0_EWDg-EHP7uXp6x!ywfWK!1+(>@ zS1X22?8u}TyUs0Uue8@I50np-AC;YmfF#q9{yUNb+ngGzoK`mLUFjy;iw>q~wL`gw zdqy;C7SK6j#yUpsDsPWZ9XiP8m6E#V4nfYc#%OZOJ_4H5xc=;o7p_HHOQVr|b{)`JnXe zkJ;;{qdV3tJup#PxwveF;74vpzX`r-q+;+d^^#HV$dSg?la&v{AnU9B8vr#nk{!($ zIxtRH+*@KTH8HKXYq*J%og1I7i6W(%-e%>se@K#PCTkC&co?Qbp6M$~ z`+yEO82>*|ywQ${@v@6EjFY5GTzaHa2y238C`?L9;RjP z4c+G|#cCqLT|_|*S6j4<-~@#!3s=DZMNnMV$l4~K9{5c8PwgkyzSgh;?d~1B&Rsb) zcS9rP20eIX@N(qi%Cs8Ec%NR@uHXIXRi*#U`>CDioLp|3ak>f>V_NFGkpc?V6KzZ*Uw7e1By3z>ZDh_?~X8u$!>fO z4-w#&AcxL2O)n~9Yi6?@rU@DYSJ)i>)7Ufz{F3U6u$cp>Ad7b;(B{R(xK)f@ckq57 z4)n-v5goFzw#B5C3rq(MH?OOmtp|iAxCwV%{k)3pE4s4lD6IYIi;E|gY78$PzxTtf ztC}5qjGIMU9LFuumJ>2mL|ZmAALe+63{J=D0E5Zfj!!qZq(9E+h#jym8=vcTkA9n zgP@ULKvk7sYVaaf{+J^FauHxsX`bs&N7yBzVH>~Z|4#GV4bKEf9G*}>!Ldw}L8TEz zrditJVzxqCB)>&pbOan7sQf0Hh0e|e&AouU;Qr?S-~2W&{`mBhU!HvO>9g6!1AC4g zt2$849F;#XIrBko{T38IcyXRdckbQ0qhx({@7`x-*tl$e2%I=TzjQTY#b%&X&yCTM zN}LuQZ6!Knn3YJwAORz0#T_1D(b%Chu!x>~A?nil?v-kN4>tGjlz^qiF z(Se9LCh%xGRj~ zr!RdkNz?YMUcP0$;m!AdzHnCg1n`5wrusK+^oETrS5@Ro+QY0ok|37Neik?B?!Vr6?a{1*rK=BX47HjE zKmGIoZZ6HyvnNkUFL+#oC;GPrUq`uHS! zBzOP_4?d-c3fEzqKoy~l#uGr+Zc|1mWwtlo>kES73(V9 zS`)2NX2N#^SAyvT+pY}}{l33MGdi|HFiqw)!j)q4LKn5R33cQr>GV;f)>aSUdj>Z|Ml zR|kloc_ICCrpE9m)+pe9C$!y0wA~o^>CW!56#{3L=zqhws16aZHIJ6-K$afiAj)tF!I@ z4#v_PX|$10J}L1-H@WvITuM%$+o#=>w%`$bc?G@_$dzPy0Ok_Wq|n@|AB3+TyjTK+ zddB9H`w(0S5n@@(!=y$hQNdm`#yKIMz|TfJ8$F%WSgMuB)8M49j(4*xR?Kr30C-ohw>_ui|aPkdr!<>Ck0h1njZ<0i4$?`_sX zIyZ0O@s@JW?isr>#%W?vOxeh)bHyd|N6!ukoilR&e0u4YGCZYR>uXw@GD7+F!O>gO zN1Buo*>A&aGRJ$`V(c2J(GX#~s(`DoS~HbVvg0l-qo=EgI>2jXr9fd+!^e@}<1PHI z!tvUmFku4F`(xJRNz(OIuf6~NYn$JZ*rZppRxMmO~`7E(pUvp}s1ZhhE<<5{(~{@?J7ST&!j0?X#OJhNnNB)f5E2=f|u zW?$N}*rGg#SfKgroVg29XNQN*N-LSi_)5a$q5avUKOe0cFocFaee2td;mm!+rXk6k_zybFU4TcsBUgz~61g zyO&p}IUK@0gc5=yq2LVq?aBKOb{x5A+PG<9+M?zyTW(u0tz4qNF7Tqdt2G}|*Iz%J zowog>j%|i@>MQ+uZFBR|Y9SvG*=7R}#Pz{S0|BfcjlUcP4{*4LIwWeJ3?6#xSstH* z*y*jEXk5f0OUN5i4!BPO7q=2V152!j$Jjous93!quuUUZ&!&C@2YvXVbSrE7zEh6& zSz6tkY1^}EqdC1OeWk8~o}!`A^zj#L z>aVwsy>K>d(l90v&}L6ZvSpghgAF_$Wsy$iSf-hjv|i&b>>If})+zf%~fPxX21JoINJoaF*`h*rz(Oypz z81jZ32rWh)UK26+)VUZxxh+jRf^X)XQ~E;u`66QLfwemVbQ>upj3x}D4Y#=J4Q}-s z)Sa7jX5&>I5;qYX@GL9#ZRY3b9P83;Kv7YV-1f!fgQp$rbF~h0X36V$^T6+N;CBex zcfuMV(Yk0*#jlVvYS&b4D{d1mS&m-^CT1Wy2N5>b+034VQNp`zadb?dK6`d9ZCS4D zqf6H@XVb4*-`cVCEydkb!(nN_ttEd&w5YrA==OCQma1dItjiC{@T6_c{nYRt()UXE% z`?o{%nvC(K!A;iZtl3eVpP4($xoGNyu`~QICWq3;&zPA%@B4q7%GjKDt7^&u;a)9% z>%ff6+W#PoCi=&Dpd0#E&jVtN)Lz(hNmXj17a|xXdf_HKuW+T>ILs`t+rav(L-g8= z@@>WW6GzPp27IT+=6w1MT&(NQZz|5Jtp!L-%uQzi9_}w`ZN|8b91<8uyVWmEMs1Q@ zgfwx-)S2hHSQL?(VK@BFnKO6qoH=`^cwOm|ii)Mn*0KB>RImK<$*x<&*@u$F@}A0QwizVS(8ktQioRF0_bVb$f^IHzS&SL{BMrRdLsn4W#-B(X9+;^r- zo4Po=d+!llyKJ4gXy@yTwS~E2Svn=n>V9H=ngOs?2ATUP=G!VtMM8yoQ17Wl=*cRT zi^pQEqCCKZ!Q;BYQ)m%xi3sn92)ts>!L1cH+UDZL_APyzH`4p|kII<5X_IDv@;J-X zH8)kO9p&V@Zace_g`_$mtCnF5x4?J1f#e&V9QqWr@nCw%`KD>SWm=kQc~+V8~`P7}=`J6ixATOW-If(=L2 zPvv;7AywTY33Q{c*8kC5<>VOU_&n;Cn=3VaaRqOrSZPb}J%_e0`DoO4+ejVZqfxK? zpL{gjJEQt&_@r3kKANG8w2d!jUWm|!Zl9yP$h;J#jkuVp)E3imhYz#6rl{&_cK5{< z_Tcz&Qz!rfjL6E68e`YiKchlo1LNQMXLwZDsD(3KFeTgtm?i@nfOGik)yM`+UiI_O zt7&WH<|?+Bo-;i*-J>5Utym=UMEi|lvnB}~b@&U3W`h#41OY(PopS`7iwPw>!uanP&RXwQ`K0 z&p{BhT#MPOb3z;XR81V4IpN>C((eBhmlPN+FBa zCJX<8L61DvIHNs2@xz_9amHYKI@+2Sjed6Aib8LZ1}2nY5;w4s!{mc$4$nqcz0J%| zyJhjnF=Iw9-lFx*N*|b#GB7rCl`CqMl zs~M+k^ct=#?t^hlP$o=Jo@y`QUQfWTQ(;HWygtt86D(l&0qj12 z-Abbyb-q3Vb`K-~SkkUACyPqPG=V$F6TGl!fcGHEGi%hKVZ#QE%<|Q4UXq@Xk-lWJ zR=M2l?KNLbt%_*8XWBRG-fhyCCj5N#n>nR2uOF#IIjox}> z{dn6-HpCvR7i>VXAvUGwD;JM#Od;I%-*N?|How zhQ+lX&K@p)z1P5`R>c$aOV9M}(nNH@L&%-(%KHV$#uh#oPAp-&VZjz;xANp?UR9 zk8i*ArPAw%E>hX=i_bl-?Na>~6yFpe(kjFz!mvtT5Ri=rS{0+#K0{-O%(EZiAhYfb zcSxff_9A5GeBBVj{nI=v(#ktz^a~6zvxE<5hx1wj=qn1?l*Aa;M=X#6isb`Q;cRy8 zPrAfJ?XK;1r#9`}FR|%U#*D*S?R>WAZfjCEB(+P9U!7W8`SZa8j~^d6`169E{rdLYoVq*Zoyi6N z9CRdoU+12^Iv*H$eDHfy^WRF@o5tqe;vV8#pU@cPrde-8I7pvCF8Gi+<}p=;f*4?L z%!j;HXSb@pjP@ES+K4Zk0}Gw)T{Xd)I87&wJldeKN!c)Vf|TRtm38_H7E%F8SV#qo zVj&gM&V>QO=ZP3&{s+Skeq8>Cb9GwUccrqDHc?K}LCVQurH1xHiBwjt#5YxpCXbxs zIm!jv6BSQ^!gwxMo>D60oDN^ru;Ekm!>FNBG#C?B1UE33V|uJSmE_u5={@$lcz&ef zCK*8E35aVHn^!tOQicN$;rw|Y`*2RrKKkko4P$DQd^&K7a4}!Bjm8;Un$IGeF45|d zMu{!?BTd4^^f_E#9o=wI2(9{5)=tbEmr~8m`n=Y977$CaA|iQO9k|=a+ZzN05iA+9 zM)n_YyTF(X7OV&$lJ&xU z%!X<<@4R(l_OVZQZPZMiynkWQ(!G;rEJOBU30;INAy2wMS%hUs?U0C=qP(NLtqj1I zoEa%(HSAT;D347*W^q+6ViTM|wK3-4LY!3)Lee^MJp5f4!VtpQ(Z&V%axenxyv#Y9 z94-G_Fv3@7#~MxOK7MlP!j&D{_vkl)$;+qZ&UbK9ZnVnQujn(V9edNSRijqj=jP@X zb{IOUZ%+s9_{D3NDOVCwn+@q3x2|7um!3SQcp_QK-o|0MW{w1I>;o8^aLz6s_5FhpNB z1n8^VHM|VM$cm1zUr%2=I>}v?4aQ%6szH=_JwSN)*q2FaFm3zbb1dw7_lqx;cj?;k z-z{3xseSuaI=gH;sdL{Qo4ceB$XLqm+L9D)Ur%x#v_x5~R4Y5B!6kFLjSu$A>)X0% z7cafnpk}RxyfP-G*U&y3msn4y>Bo4STCBgKan?zO;BX#^d);)L4bk+=eVYLxsUuo z_Qs9bIqTNtbQ>|ETeoz+o?`_5mxh`0uV~*Db_}wZVUb${ZItl^Kro3`tmTDif)%}v zDqMW(Z0kj?S5$Cu^3FD){gqP%$}T#tfHo0n=AClk;XR#8YhJX=0WIgUZLE*xU3@lxS~gm91@~OVJ(cP`!pQ^rM5a9@)8&iwjOGfcxd~s3Xmpi$ zz8N+!P|mm_a2H1q-NZ+G(HTE52aj&@rPVZaJ^Ny!=88r^3IpD=8a}5EVt$rxhUCB9 ziK;;=VjrrkyEi(CFdAC6I2HJ$-7G(%K-5&8GB&%=uQ<;>s(46` zyvDQTwx+U=cIReF{x7bq956V!qe3+I03*J#$Bux;9Pk}1A?3tOQRP(CFN`&2JZJ~^ zup9R%B3O~&###<~^V3h?{D9d}>En;6=6MS5b2%%ZjidL^Uw_{`@k`;PsW7HfNq?lRc7lYPqI zQIk{Jw`(11SAsDf%C^!Z%{v(5574`<>KLmTh!|tDeBT0I;eOVac*W=tC}a;`?%ZH7 za9**RlGXEynOR4;zv)e8ixX;qt5vuf4XRaO3&&8}pVd$t%n* zEzRcgH*YN*fMADh~(54RG)x!4`aUTA9`4h;|DDc;5@bAyX{~dz&(`DkB57|Quk`Dag z-oQg)FbcxV{J}_;GK>9;Z%_Lp9@&=|+|2g8Sdqc$`L9-FNMg~&f33(6>ogD|v#iL_ zYIVZA;-c3a3l?kRVQKM&{qzqOF(AF)r15Dpr!#hD&DNunvs-vOmX@;pOLB+JURzMV zAYDb6*?nXPd~) zqpL0rRAO{+QIo%|gc(AX@B@N-LM6V~0D_G#s`CitOAeB?%+$k0343ilyT=}x{^3C% zDS=+B=ZkV$6`-Ybi87yOUq8$-9iVF^FD>{djr>bWlhYw*TM(loR_H($@p-Dz!BNbb zs4P;hF-6y0M|efVCorqE2Lv7zD>jhghw-IpG*P*g!oMS!qTHmdQk0LB>$Eep-Ppm( zL7FyLsZur#rkM&pU@0Mw^Qi2j`5OL#2>87$@hqDxMRh(`-Mj%Ea1dDM_8EhkhjBQA z!tbK!nMl8_9N_N5b6c)D+>?59u5en{)qL$GPAv!6B-(}>Y|_V?~|o)k%I{el{aBvFQMU=V3LXvYb5&_F9GuF{Swo{f|Uq;nsX zgIJ!31>A5BTLp#qJk5$!xac<99^pJ=8S^C}+QO-aa^d5TFDRHcm91D&hLs5)e}C@6 zw+bu)CC9Y>Ov$3Npn)au1@G4U2tP?bf-ipv(p6(p;y{(DMtJ;zY|eUC;>*~`O}J1n zoow7NToAK}*^1z;C#E^XEZfw`XCi@R3gOE~;rZ<9^5R`NH2PFo&y68L;j@w_Ojd5@ zkM59BD7U@(a98={+x>?r56dg}#)VD{ZaFJsJoPUdeRt64=|?zIN~9a?L>^acj>v2m zd_h;hY?J*H43QJ8>PNLV;x^R_VwC>xsX)d+KhBuOj)X63HFS)#UW&|_*eV=vjBX-k zpmEoE_{3^P2_zcYf{Qfj@~Xcu)y<9un;Z(BMFhRcCyvyTP9cX(Kav=8Zpo_3*Nq=f z7@JdsrO6kzXO>4KRE|7y!Bn}XeE7n|m}XmRANSiFdVTi73G88hsWbg)mRH{RVY3fc z>^Pmeq0|)FSjOk6=3MggxyXXY_LBd!6l_yaK&qyxM!oqigcL=6S*94i4Zx8l$Hd z$DT1LSR4^gzFN(w7wagEK0#s;uC-eRIVLu48R}ghl(ghKV9q0)G@QnKl6|mr6dyb> zql&WwJ2z(h_a{z%`T40qtD6^n@_x0q?IZ2`Oni7^!voVhpug_;%4>Su(yAONq>vIvVQN=o@tPwkb048w^!D^)xsbc4-8r**ugZmDIi?wNnl+!;dX0 zdRA52X)o755@NcA(hT{Mt?U%yQYCLSqrygZ!r-vVi+)LVHnWwT^$|z26WdCVBJ%i` zvJ-LO7U@x)Mht#s(48}}gBo`nK5)>8;@B81?a-)uB%;F6O(L|)+x{KGmsE%dvA1XC z`<*|W$D_pV`mJwu{A5}B=2$AZczE62HE4BnTKmk^_3j?7Z&$(Yos0wmp3iQ{aT5+# zHQT@@Ql*-Eg0oc}0-qrFg&Upq!V-Ha?;VJFIq#h-4hT`q=Kea%ZL&FPOp9Y*P5aBJ zG2M+sw@v+r*anUnc!tR9Apbour&?^5QtDhmKrGzKsxnY*2XRFh(wx7jEd0teuErJr z$pIT}GbQqJ7wXw7&Uz&l&uMZH(@$42( z$C%H6m>1x{$!0B@`kYO?PYw16OsL*=PmEMnzj2H zJvEP}CA%d*ySR89%~-F@pw(OH&x(iKRtcpKOuw71n_&wDY-2D^&iHDEXjFJo)q$zk z7}V^hL82<*n6(}XgZQ|L^&E>!gL)sj<8=%Pz)JSgi6wHnB*aOn`yYSsRX{~W#Zuzf zsbfuhbJ*tQQ=79R9A9DB7{LdQ+)A#W%c)$T5)0_VVmbT`OxF!?>Olfw!YtMTaR|cQ z%&(3uz=)#`xwkwssGGFWEtLEK_VO8;A6I2j@sB=#>RxIGH zpNPVdXO&TC)O&J@HhQ~rLkBpq&5%l}UmGL`E}!EU?dRl_=+@;Gb&(KKq5t5yQrQ}Z zh11iJ3;d!NRt$Bc@5|d-!Tx-sWc`!p&kgbQsJ)8K%k8*_OA8f9PWv< zT5kwD*rKLwA#cc6`_(>X^_cQ)%ZmeA_&GVZaqsd5TX*-2ZCH4cunAJ$W~K=j-au({mqe3tD}F(|kFUrYmw}UGeR4fdD}ls+_2& z3tJ}S>8`?5_pyA|#I1bwf`E37^q!G^1BS}Cd4lVBjc$Iy3xuC&-8V{K)*Wqx;~U|k z4e|9dwGEr#sF>@kOeP!*oXNs$S4d#uU_HTwc!H90yUwFFwz?TfFCaa5Y|K-(ze>@i zrb}hT{?Xo!P6=*ZdY6~4o*&q@k&9Ne)``2IGe!zPXGA+v@S7!T zM@-377OS@?{y*y81U{zg{U4um@61Gm>??vKk_kZ&Ni40cb|KVGBDRp&x5Nw~_FbY{ zYAsq+DaKe@w3aTPZc0k~sqTAGy6Q^i;HQFwMpjAcF*#hXMf&L z&FX?MfcBw3H^@5FqsACjE^sy-T9kj<&+s=L+nKr+hz8q2H{h5Q!@9O7aI4y!>i!%`_<^eB+-n2wu_wVN6C4A7gC(q&D zse!{cr1tJTb!uMi=s%|j_UIH;Qn2nsbn9h3?vW}8I!2wCrIj@eexdFfjTw|90ne+oQuG!Ulv%3&ySqi`UaFUpSaZY6lLtc6 zvUhLT$KWNvAjJ3Ni0?ry6C$cm5fM>k^es@_lUaL)Z_!k+lrTWXz^grJ>6BLo{bRBv zd0)`yp9kSP7MKqzbD?(y5N00YW;!N`yNmjkN(3#XKvh>16s|C$K( z&Dwj!$X+y_H5MzYjqeh^bf~N{u*+(fmRhV(F|l_W%*)sX%N6LD5p+j5olpz`O%@pd zRFC*q0i6w59Xkvg)}hnzp3UN7nl_DzYi3F6I(l^1?%CPh6I-@SOiWA1*JBKsyb!%5 z5@7!z4j7W`w3g}l4r~PJu$5VjNT^~dZQI8-j7kg(uhlWB^Wb5F+Ky~hFDuh6 z{kpGgN#8rp{GGB95yue9H$s0FVR}Qut-{y9koCF{0AfRE7llY6H-VOHBwPg>M|8b^ zK~h4?p4r`6u1tzgwY)Z@U~<>g;K7Acy3=G7(}%AHd(c;x|nDA&dSTtYf9616w^+=jcu&hBlZE*6N$>c zvJ;43tMyd?;s#(t#P@|^^byj-2C=9QvhD2AvPHLUEn4>I7#9^08ygW7_j&6+eOkBb z*|Sxx1`TS}iH|oi_X_j#e451#n(zmYrMrmm6h;ZyTRv@AiQW7>>mc@yTg+$qHx{nF zmueI7UK69VTFiwP6g>Q(h4b@xFB)5QG=Enyog%=do#h|U$8oRE&6oKn)?uJ!tyWR! zn*vw3(lerWhTtsIsZQ4ds$uSO*6qF_ovj6n`rL26Jm1==X|pDoBl`B}RjnO;zXF~4 z%ZfUc`+*U{(4pE6MA<~f3s$aLnak=!=3*3}AR;jZjNV6-64HEosFQzFOWD4>i>u8y zEX-`>zq0CL>{k)VA73#=J3G2K6dzw&%3q?h!%X`uK5VA-LA(cemD>7D#rk*_35ddR zUzM!vWPOlR*b46|wS+0Bt=sX4d`7hek3jXW%(_5Hl@nH?U=T3QDg6TO>p10fNeLfQ zS~_prxWSgNty{N#`w`+Uo;aCm1xggc6LfzOdwd)>g2Nv)s@DajHsdv`p$qEjRk0=_ zr$?RV-fmYu5S80b8nXgCMw5Ag;2}N|iB9l#`Hd3ez+m@6o1>~4#$xFIIAtUI=I(x0 z!FQ@ryx2-`NcefyybdcN@f{Ehh0W%{zA$)5ywXDvV0}fHX{0_U-C3oA5kf?lqefFp zjS11|VShsHOynKe*(;g~riXxdBCo>qFHj&Ddij{l^{_rZvc6e}RJl6d^(O1x>qIaK zupNvnP84^?Db1|Bw1}OW!cNUKe{?sF7KrF&B7RNqti2aM$PizZ->=_Hms!MGNqFc$ z52@-+m*l18#tLXg7;+Pp3ODPm*_>axc!yL4UB}BlF$ovDTR$IuAok(k8Kq3~mmo zcR zsKULEusHtH;yB7~Z)Y-xlsC zLOAhZpVVZrJxMv)b7urRKFW zN^|$6+x*iYzK0DDX7zuf>*uc5RMbzwYmjpbTDSw>N1VjUk{MHCh+bzBoh4yok}&|a zT2JNheduHE$eN-hk0;D#k*FC)P|zTZ6bv?1!|;Vh>4V~YWyb9F#~$6}+Th@`f1S4Y z_t#%7Upo1BZZAwGh|a?ASv~&Q_l5iq{&v&CykV^KTeHyPGKcTtU(G7xr-xCVD%A|1 zfzP5&C5o+BSE+3qlw!Ham3u+c0lnyxH2j08w#`*LQtSg}6Nx;!O1BM&$xssF@j-}* zAsm9RCum7JXw>@?8~D};3=B_-YTvtNlNDKyKXYRD@D+_~axodl&HzzFO+*4P)kmuCF)cBByTrtpkRb@YXzf%n*%DK$EWE* zuAnjz<@j8F+RjfG-9)tt?5A72EqlZ4U;b`B-N;k3hjSW}UyOzH zI$E(n@rNn^!kOSqFe>#-2hk4$Y5@z22{(};MX5N*#eu#RfsnZ^HAKtU!jjswAevf> z5BZjbk}3b%f$9;})U=($t5ezE)UM&_p-b0Uoa2x4DgUhhBTTDiKi2<<#rvbHUx#(w zMwVwiUk*prx=&j9RIfORwalsbPVHju1xnGQ7RcpGM65Ou^nav&C2_kV>x~lifi@I6*t*W=GK4VbCHZ+&*-Z%^3)(!r*%qLVo0re9TIZKnp>A&&Fk-5ZFq3N z+8ru|g-mG`zo^?``@|5o5Bd{$X^x}_U3dX*;S$qf>{IDeKp~R<~BZap)?U96WAn3`+`c*RXnM0P~IY8I+m}SHtmUL_pNK< zSi74EPFFP;-RD-52Lyo+&93#V&cnWzep41{t}&bihPd50861lv>(gYE?@? zNxzN*gz{d8j%@f6djT4{zUA)VB_8Eed9wPJIQv>{b}r67SzeypB!gG;uR`mh`A8M3 z>rY3F#EXcjr`RZJ5*!pq3Yaxa;>P42-#K(;Q#)f9w;wt0m^(Ubf%r@O|B|^};7m30>DZx`>G*u5HC8ubZ`plg{Bi}#v%+;$W*cErAEYw#ob@{v` z=5r+LL0Er{9O%nJNIP%eCS#1D`>aWAjxieX-{c6Ttx4vceuQR}2oXsN6AvWVoWJDY z7nN)3TN6K`{4eO;FgH-0I|!hE01UXzwbNA zs#(wk*VL5{R9Bn3ATsRHp$tTC&_@mV;KGa|<$_h|D&cm(F;F1cwkn znR5yY5s^2qBp|1SD)d7V6&prPw&h#Dp2y!l9N!|LMp#W&J=Sl)m}bRR&KIy=kH&UP z^=(i?t=Y`n<&lZNR;=qz=RsqJs>%e5&)l^v&%IssX9sd}EDVwYbIj$P&4@9ez6cyi zZ&Apd5(hfpaL68tS`3Q?Oh^$wrzd_0}>%MJD+ZGFx zTfKk7{>I0ST`R2+yEYcUg3m83FPeFC3krhH1oOdce<-?R$FOgB=&he?GWA_?b|{WW zG?plHTMc_-sQs7RNl>9QWc4x{z?PKeicure)niT&QIR$04GL+8!P8U2WB8FuIO+bb z%9QE3vmJ%wrcG75wq4k|)4r!BtdEUbKjEn-JGC*lS(flJlU*_c=k_h=VzuDEAE@yxLoR}M!FBAwRaYx{t!u!gb46&+ z!o1aWtkOWcs6&}n$rTnP^s>~TbnFR?5p0Xb&y=V~_doN=`dM?={P60T8}=s-Z(L;U z(XC_eK|g>kY<-b_XxMe#HF||Ak*-?YQ#1;_i5btH(;8Qx&#m>B<$$5C=o$p?cJE z8oq@Gw3!HtO)4H@OXP*u(EypIbD2>+Z%hEm6P$TXN75qaJ}OA5@;CQy?tN%;pVz;2 zb<3z4{`qtH;H)g{!Tq4Cx}d9YXiY=3ksFA~8x=(ft6or`(iPz+#5)j{NT@AR8>-h# zAgY2ssK>NR66%EHs*;e>pb*7iPBtw*lO7T7p}h3;@H9)^n&#treY zcJpV?DoOF~xP+u(S=Ql`9h0)G!-lJ6qpmLggG{is^!ZcUwqEW)~?=K+ICe( z2j5QErtVwOw(HkU{c2W*pMJ!3xIwhLHG!RqdCW#U^bOSi#K^8RhEpR9EV6ZVhMp_3 zt|%0bL>XkHc!c5W#|yuY-UyB{Qw1UD@ZQMzRHLg^L#C^*{uw=={m26}1pR&YLeMYG zf6N1+5Bh`lV!etzA#2Q2Q7$-}+!e3h;?-z`om-9A7Rt9ss_4&975^L@rg}RK>Cvdu z7Ki{62^on-s-nQF0~InPgvnM0=Gv^unah{Y@ZtP^zv{a$#n)e5SiPp=WKGtrEm;kW z?wvQEKl2T?>7P84Z^&bbY>o1WyOn#v$(2hG^HofUlUP5&yn+#jd00DFLcx*qGI&P~ zq$k;f%M>6iUlS04{=I;WGPC3ATs^8?yHi^)YNP_FH#+g*qkM zIK*KMK#y=Jc~GHQEv3|s`Cqw$`MakB4b6w^Wnf^^LlpFex@D-Tk6efKu!l7)vM zSCN8g{wL-eA-Ra5Y}~8y&@M{0?ljsYE{m43U`f_jA&^EYjglCVI~yK`!3w@DPthm5 zRnL-v|F~dZwJvi*4+q~S4$$?8s4KVlD7NF|_NWMVTXA}r>2bcp9D{NCQC)&pO_RG~ z2(HL@ig=r>qtHhl5Zr`g0FhHDGa}PftYggMb}S!XIn94SRLXly1`L&krGoy z2B?;dikg0a3K_F5(@VOdIm`$zr-A3W1cwZCY3exq1nMmIvePa}F{@P&tJzVLbt2@w**mvRZ&C*D3oB(fRN8|=HME0%BezxesgaWn0=Upnvy&;|A_eRSXUt!vfVk1SpC#NI_#=Z9Bbm~=SF z=34sFNAF&+u0FB1bn`mlzt|04p<(^QzW&o06dYe}<~_FzW;ZcCS9PmLc}0Cg5IPS) z*N#vR+U-_%0e(@G(|nrU?TqZ*u8i!@Cb%!o5O>xK z5OZxi5B2lebUMDiV_dbGGzK9g`tgT7LIUIH0RIi)Q-mS9EAD2{6%9c_IgbAX7wPww zR`$Re-ae(!5!$kv)i*i#fnIS9dH0pd=B4VkyWNXRe9U81b@Yflb1DcSmhT^2W-wY25!Y*c)D1b%X`^HD7okWcER-sA zDHJIHPLx-}-$f6EYww2JBd+pqSoqZld+Fg3W**Tb)k(~>cwZoyT zwcGtBl`r(L^HX3=Idnhd#j0Q7ejz3g-kpJ-3{GW9T&@5nlIa5s^%Phs(2<73Ck#dr zR#U&S4|+7~6^ONm20Y%MNJ)7(y3XbA*hW6#)b={j$}x;#7kJ?gF=tQ5DZ>~HgeBZ< z@?c3>qYwB{PLar~0H2of42?xE*x752yC_f+>q|gcUdFxFhE*w|K`1=P4VY@ zQx*~mOJG*iAoB5!Lz5kHEDpcPcX58a!+DmsW;rw@$gt`-}t9&) zqS_)VS#Jjb3WngyNJZA$NHJ0LUg&bR1mRE)BX5Bef9T2ugG~hatznxL^AE4Qe)sO{ zuYHFGL;D_m^aS^3Kb?5=(S7Q5%ezeBJNV7-fv2(SkB=XAqw*53vG{YxNWLqk zW3ahbLB5AoX1fcWSe{KoX^=R=7`zOUxITf0vvm!!SxIzFr6KT48bbCL@h9t zO6m%@uO~ynm@RHu^&7Iq-*7nI_=}D;tKCQ%a`)Numwju7fnK(NbZWw?^Prm4^qq@kwSkVFr3L1%wJAni70d3bC2-7- zL{|orky~dhRQBW&ix4>4gu_!y@n9c>SmCvefDhe+CIqdDl|Oy)z2hgYesHp2T()A~ z@Q~wRusQj$?n@qeXekhI)t~r}@5Fq;KV$X2*v4A3;sz1DyIWVyhzNb>xTV{mypMLo z9KLz;aLmpRiMNnUngoB&pZotwpQc=Wed4OF|DVoYc2$e`&-(w7|B$rAhgiS;X9o5j zI`Pn?7Sa|L)TnvmLYFGq-tYUH|!YLQAtB-V8rM!T3?b^2g_l$jQd}M*W`h z9L8?UEtKQ-s)F~!0%_HtsU_Jn1)T>}4^SG6^PA$HKCwE>^6l52eaK(Q8~x*N zY(;rfJ`4`T7ua5<=N10NFcn$^@wGaT2Ncf>lNDLwn9ETLX(=y+JtHr?EAsE#GskiQ zrv{P(;lH$K?wf9(!LMv$dHlKcEMSIxCJR`P){gm`*iXa)xxbRCSayO%BPWbPN*Obi z;LLTy{&{g$#SxRcBv_xkxaXF+%+);h3?&|7_&R$=xd^Ot-VXK*5_|rkKFG=sB8Tdr zuxIGLRQy^4C|N>07^wTN?<*zcpX*(SmxScv!Q3Og|XvbV^MAD5oqA}uIL zg}Z0_f~_{C{xC#Gut1miT7I5?F@?R)LKu}zU>x9y<}qR%L$!4hyCBD5AV#r*QZ!W# z3Zhqr)m^4)WKO$$v|8cn{@R|!li@F{P_4RDnPX+WH)88v9KfHm+P5E4*I;z*mGZOd zKrnoaMo%}M{WFBv1b32yluWyFn=wdFpT{D!UWq(bzgjbD?DzvU(gY6A^kdFy=g{?0 zznb1mS)tsk-5k7?-OgThu-$+@R!L)BDyK5 zz#C3O&V(+w1P9QOMmhzcd6_dV(AkQ7f!;briHU3VRP? zgXQD7r$N>UHCS$mqcGJpkv~!Hq+DW>`Zvn zb04r!erw+{78R}pYv<1Vp_sScW|p@#(1@TO`HIxO^*r&OHnWw@a^|F8s z$GunZvlfjfdLo{NHUH~-|JOFNNgK<|>XYxDs2q;ABUl5nN8+(3xAC~D&0KZf|BKB` zsZnqzLPa7}A)zM5v$el&JA8N>U(avi;e@>Wd~hNA*-cx{tC#s~UT@|2F(l#y|1QS( z{%kMH5gOw3QhgV^@;|kgz2k(v>=`FH7MZVSsCF?raey{bH>KZ*^&}m< zr)RwPqH;OFf7f2V*O;n|r^;Ap98B~tYlS?fdNNLEPzhw5iDazap>ND>bk&I<0q3lf z>{9E{BYpM*dSy{K6k-_$jpjP`0O&}w8I_Z%=wilB3|}@$HD6faD!b&`aL%kuUO1{~ zxrHxdb9|PoUoJ1SZhV8kd85%Se(Cblmc^UCIg)?ib8RhQD@S4uWGj2HI)(ZocV3hn z$O~^|i4K7Eyhc>j!GhYocDgPU|`J>OEH9+RO@Q4_(?b@;MAPG=eepEBSn- z4n!z}TEQq8d0GPvnIOgP{$#iR^rucH>>7^(!GuNsRYMbn@D9~_pdGTEJ)JBJ9KxVA z$x2{XFcb06;N)ZNgENCMt$^Tq^rtwu6o2$OfXhb}XfM#Sbn#zJv5HgULNv=-g;0WZ z9SeX1d&S3#zs?$ac*|SaS#*ik?vzFhC|X(cE4sp0e4i3Omyirc`(=mPnh z1av@g_!24YTFPF-P6?$;irZKM?<0LCDK?R4EeXIYNmG+xrer2jhw3EkSt%ar$<(D- zL=H=pG(m*nbuJxflgni7`6e*IPSgJLTr z!bXSgOzRD`VT1iw6dpcL4We$if2QL9T#MhrnL}l-DD&mKkD+-o(^&W!I)ip&q>s;# z1tzsi!>sBc=qpZ}ei|;dE}cAAXdUsQ@qqq)XF4rV&#vFAI~|+Lm)^5OUETZ`(W5RA zb}8V}{uG;+$4$;a?6qVkh*bQ~v3W1U)2sSkxuLfF#UnP3EhWu=_=C#*zf8!>n}DO$ z_gLveCxj93BL6I(ea3>=$L{OA^Wu@i=L>!Ufnr&XIZ<3bSEEvc(qS+SI_D~ZIjsheuQlLYMKk~eJr^2jIl;munj4K_*M3lAcpf(k>mG}UO zhjIoCm6=*kwAzvziVC26o-wJeh|x>d=&Btod^&(D&Z#|>;EFSA(;2HxXAF-F)Tmel zufUXq1{VP^8GoY@m)hBB-J99=+lUeMp9VQiCi*Pj1M0D8aU2)Wa_O z^sF)SiV8>N%tjFN##4IL$*oeK6SB07l5Q(h*HBf>d4 zK}Y$ve>$D=Y=Uel?&Uq5N*KSb9nOb$?Xpuc*)J3G@`=r?erfw-=mV6;3i&GcDPE&w z()fq9Jvd%*%hClgiiW0Qjk`32aBCh;M+y*3trE0) zutdbvXMsRj(M``)yM74Cj|N0&ntMMy!Y59vw$f#7rFinXv_JrB`r@~*zWBbPPPJ@Y zzi}Ts%R7qnt*KgS7e$89B-q00efYlh;GWOlnVt6xC2)CiyPk1V4JgrH3FvPRs^TY29zjQutl&cOdrSq|HbqLno=cvzc*>kQ<{aud*RMv*0Z{v ztwJiU@yg4yV9LY7E4#Ob=QVobvh3>Gi2DoH0UN3jd`v3Vfw09rF$EzW@=6T{Dphaqj^F}gZB*}y?}dgAGYsVUBsT9%#Ibg-(aiHTiI2f zNIxQ4+*R2`=L-3?CUqhP>W4}U{n+GY{4Zk*xcAu5v`U#XXLj+-d2D7rE11jgXAS32 zzw^QTDf$sg}G72ga~=@*=&(?y5iBjFGikvTSpuj#mim4+fK{XQT_x7Kl)ve4unV-*N>_El zoxXCx*?ZiEPVpPXl4DL!gC0J{nunk|dbVy(hBcQLe?2G3^27uy=j8i$b8hJBHlt%0^)KH8yVCs9cFNI={3O|7#u*kDR=M@JOe9u0yA$%WL_j0jQL`y5NSJkjr z(U3BFEFQT%!V)K4zP6}ABrsPLbXpxA5xBIguJ%6IBZle#WKw}GV;d-* zM2UVjiu2JmnosyDG3KZF=5D86aLipXzna~$ctw%ph0_^)3;UGSb-#%4WcHaWdyYuLJ9NlD0oyfN-)N4KmR{W|bZVv&aQT1YVC2 zg?U0jiYjwO*AOpb#yX1xn?jW}aUx9SofchVS|GxZ80GrGIUzpH&$SZjVH+hNEf*Muv_|!pNKM)k0A|Q#M%)k(}iY; z3Smy+cvam_)Xs_ROxF$@-qJ+5T!(K_&*^t|-NHggn?93z-LX&W*3qzIw}|AvkDlaN1C`R|~B zU-fjsCW0Q$W5PTf>PQqE3z1c6Lm4Q@0_!jW^=$DzBY@bFN|HHRt4}hBCz10{ToukB zeNrK^{&hZYSK~P03~HRLZ&l<9Xq-f(fseLO341u^YVDtgqD0c!BG8#i=v1loQj=5L zrvja-De+p({RhX8P`n7Q4l1!0#wV~qaTc`q#HEI$ODLb0q$_-Yd*6oO|tP zO854IS|<0Mzj$u)lI`0!PkT$lx>D<|Upi-V-W$iJ9Bh&rt9x$;gHBATNZGN8*?Hi_{gQ zrRd5daQ3LRDZF4X3IJ{=;DP=bX^s3LVcM{0=G(GMEq;13AG?@Yv$9m@`XV-|=hVBS zAyV*9>!&)++#9}FPrjoVhdd^RvLUa#fdy-+qXrj3FQl;YiNzhl(k9+*U<67 z%hFLoibQQBr30!$r)4;isfq>CNh|bb!q@_RtfF(GEg>i?T0FU{I@kz zA{NZ`D_*0K>zYN?3+6^nSqrv)b#kBZ8FTzbO}@%=KbSna`rKLJnUg=j+y+$?fp$-e zx%JlOX7GD^b#^}?aezt&Aq-nrheP13C-8xEP34@4m>zJyfWHAxwRdL7MZ%1kZc3@T zsVcGdl3|l30l97U(8-gAt>y>2r)SxRr1$8NKE$4t-hIi;;AzX>*>QQr^pNS(L#HiA zpYG*T5qp1pQvZ;Gg0Oy*(XD&ZgQ2quLIzCQ0XkBJpJk9w8Y<2@pcCssZFYiuBpDl2 zc}dgGFakSt`S}Zqf@IRADp4}LPR(+~hKcNV8>Da`gbsbQxrD`cw)8$~P7zyYOG76= zC%W`?sFc>O&Mn3LIww0j5^AJITz~XPi8X6F`Fb34bBE8EF?@L4iPsvZwjGj})!|w;pP$xZ zp=GyX{rY|P`46s*9X)#NwGWi`?|*GoMjYScKEL{zpu*4zQx{1SRBXluS-x90Nv8kZRh3g?+zY}8TdyQYBD{&Kzly81T@uI{led}8;qAUw-{AbL4qs!zQ(G)B-=|pLy}-YF^W7nX2M>AoO%{CN zU8|C_=TZLMrrldhe*U>+>+Ve~_|ZLV+TgAI+6UJikL4brEjP}u@FiMrBgY{TRVqa& zRRcI67?iF@V;NOSKs3mnxJ=t*CTCvIEKz#=o1Y?7x>Q(z>&M{~0rW z_*ec&^m`+JB!ma80qhZ~){`qBiSBP!pr!;h&15;unoX0(DxlT~<`u1i$y&J%|II2$ zRQSJi#ImW%Qib1|s*JmrL(?+i!3P&D;vfF4TNAz7_seMP`Y2hxXQ6EL-488?U*sQr_2YF;2$~G}GV2A-g>h_hYyPdV>5`2-V}oEpT-4Y# zGev1+f9z=4(e>wmaj|IRqUB4Mbj8@R!&syD3BlsZ)0TysfpBs9ju_WWFszp??ch5B z?xnv*HPRl(T_SvJaM7S;uJ}n&am~K}A?3$Sb58xx?6&KN7C-K`zw}ef@0s)Ik^8xe zl^n=9z*Zg@b%2fM!w%%^r+c^?o6l7AwEPO%1S+ixms=$t!Y#sV=`psHF!$D}j2&T< zEp3X}8N589}81N# zxOOccE?HwoA{E}tBkNS$`X$8Hnt5vS6zQ5{q)%REZ zJ~x_SXZ6j@Qk8)TNsVl5y<*Ppn>j*N2PQUZl+YPhnf*7zZCl!sxbm=aL8VN(m8#O}C z_kR{Lg8K0UEq~e@FcNj*qJ}IG9@P<=gb)_0ln^rC!xf~8-lRc> z=zy!Hc-G~w{R!9pL}+iVYMwGUoP^5-%076eH7-7;h3Gs^&d3;6%gzp;y_|10&+0K} z@EmliO7GuhRF5$o)~w;LDZ|}+EY5Gvy-;8_Z|b@$IlunGE{lgPUi}PsiiY!)2Rl0g zk)O5N9E6ipN)kibgV-UN`5`yOWfhpGE+6er4ed{m_9sI76Dj^si+H`7197RZdQH&Y zYZHIKRmiXrbM;_Fq4F!gUe zw%4#0?94mGs(DTqM~jT^?$0dmZ|FBf*N!QvwDY1IxEz_N^DguW!ij6Ft%ivA$Q_lE z%xSFxW6R>S&gaNsEK~?6IoEFK#t6z5)#LQNE3nw7Ee}CvdA?VCm0V@7yoLi-m(GMm zAWtKb5R}urtAm|#XsNi21P#^0Usv}+M+>LO5V!!TCkWp%WjHq>!YsnML4uUt z0glt7bCQVLQ$OQSMZjMm6iIQ27=nV{`z2FeIcjA~mnhF4-YbBi-M{kB_?KVuH!RBV z-_BkC%H2XZA1H6~Cl$F<@I63}0*XA1(?DcWeI^1ij5AmO=%RRDr&f7J1$UbwAP>_# zqf(yXJ*S-eX3LKHvnQ~9tEY&968^+DpD*FR#E* zSU(ZVfx?denEEw;jFmphpYAqhlHEROOa@DW6TGv#hH`{|$?CW>ag|TywW7%?#*R80 z^$E-(6y06LpbQyi2Cul6sA#?AL|jaCkaUG;S!W^1uH+CZ7zmjff@CutzAR}%sFU}H zJ|YGV+ru+(FwK+@bw2-ub=}6@X=8F7j@&V+UnA6nni2Nx&6`>Wtsj11pMXp;=I-$2 zkH>oZ%V?V6Oo@@n#W##u=FPgQDWdUdHLN$K$Y&x&-jz&`it$K)VCY=x=HRNq$mb1; zp`pWRjTNWje&xGuc0NU^zKOlLhSyLcHwZ|K?s@Jpz{p5-*T$IBK_kG_#5#*H z%kwJ6EHCao<{AnW3%h)4h?-$vtg|nzv+q=2th0{Ds|@+iW1UxQ=SSEphGGrC^obT_ zRILF%fY{L(tZz+Jr;4$P5y>SLG$AkU9lbVH7oiRhTFJ4)rn3Z8LKr2-E}=6pN)rHD zGQ(9tpd|tH2&f^`{{(8Hy>|wQVBH>2yh(Q~#OXyepY{VkC}vekl+*6#sKK0FwI~Pj z?mSC<#+|tO%C1Mhgy0uE!UVknibMvf=^UnbjJj4T)BnQ} zo7k)Db$(b>U?_vwm-*$%S``M-`eXciYcU2NNjR1sUT5$dc%wCRDkbA{nKVBDB6JXn zdeCaDUSOp|i&`M*Qbw?t_h8SowC3m{J%cXNz}3|Us&MEe58S%o(Uyf+=Lo9$^q}Aw zGP7mqR1la9db>ff$&zNKCmWr3)rWoLjZlC+8FZ zPW0mi*U)taqRLyH$IKO_Hl>qn6MrZi-lz=t)Bt02rjbh)+6lQKOk~*CQ(|G!lYtNH zPyr4}8Vg~d11FCG`40dpsUF}m^MN6cb#1ex+co~pr6;UP!I~>a5;Gdu7oFI!;pC(- z%_iUH{^zVI)?v9b#*Cg;D=w~n3|qsRzQIiFK`R@>uf6#uFy~zU{v%kNtKu8hl)rt8 z|8j_bH9RC(>A#1&y8}04C#&)N_qR`yo|lJs%A3&h8UgKRo^I{rNfK)(FXVDnGCm5S z>6QrVDE7U|I_lRZxy+fI>}&?FPvDXCN(!!AFtI$E_mzAgv|=8xHwwd0C@n>WcI#tH z5Cykbx-|98ZVS_sC$u^G>0@)O-A8O%Tqmto*61~}X0GkhuEBuhZ9Uss+jZ&J%bL=< zMxEOA>$5JuWxUD!eAuYBw)J^~-|?%FabxX-^FQ;uFXzqwXGVZOdw$|0F9Blg*h5q1 zo=;0Zh4b5(?-H^qK%(dvG<@hr+HfxkJD76!Zkff-NSM))!jp~09Cp-B%SD2Y$V0I zLPZjH5%kkYz1V`+63Qv!G+N=(Uk)}!ZDw!PIy5AAW8XoJ)a0Dpu+Y|`kg29w-S9NN8Y&Q^5=nfWZ;||Ih71Y|@k*R^lwCxm3vVdu>=0}fJOIg! zI44wPr-Z4EzvX`vFCE*vx3%KzJ2%VkJa=x)#x@O_Kgli1n#XrPdN=|NBLg=Dxi*Y1 zs;&gH8f-Y<&#z9{_zAz+A#HeCZ?#{;Pgyws=zTH2igNJ4$G`)lkyGNy5*Fu1QiOMY zu_h6LicQvwF(;h(v2uQY9ljz42iE49pQmU+BJN>!Dz<}y%1V#JALoo3+oYNAha2}( z=f?#@Md!!)(;rgV?fGHM=fbpztwkB*!q45g{pReU+b*HiWBXp}9~U2Oy6lLcnJxUH z`WH}<|r%Ebi64z4pl zLQQ@LZ%_t>e)#%A?rtzL=Ge@q_cGb-m&W%v`r6hP>*>*>1wqL5GYA5~e5EHus&qhI z@{~`wau5ePc9@+-OJ)~hLeQhxCyexHMtU@!0GJTz(ex;jUN2^)^j^H4t-W^!<>ctL z0Wp*++0TM)8;W6sN=+KIeWfF+aipg=?hIhrxd$o-bgglfUo{Pz^uAtd2ch?Q^lLF^ zxglcC^5XC2EP`aNA252CiKgRZ=P;dP_0i20`t^T16KL9Y>fRYy!!H%xJE0yTVG5b}HSd{#oN+;}NrZ0P&h|WL?|~KS<^jxcszUgXA(X5EEq-=ubAhBRYQ-NDaP_ zut1Yg_B19Xx-NvY2&N{3!AgriSR}u7;V1s9I_8Zx^LE@9*W&Pr$IqMH;pZ$b^Nsxd zC;3&r6j`Z>1w(&kEjp$SPs_Yh!rJ`M@-u!@o5TO#`z7Xr$4b{=Y*Cq!NEVk) zO>vo(djOldEI{;w-e3XnsX)rqcYLHgJ%M%(rHc9yP#T&S@JB;3Nmc&geoiS!>+ zRJ;Da81i%Of6$OOKBFJ-%TKADe-qJ}uXyRqI0 zrl)NtQv!SYXlIiT+iH50ri0fTqc`t2I3Nk8>rKV$CzdmMeKlT=Fu8KzlyC*muLbnW zA{2zlO}+`0r(SVlOtsxX~T33 zAC<4NT9Gqr*HzThE8fM1GvQe*uSDh(~fHbtk4N<;%|I83N? zH1J6e5BC9Xu2uG>1|$=yTUsUtSz)72>>jwVi9_k%)3H>oU8|sWU8cVM_=x#+8<&oG z{23)XZu)@YqPg=27sLU7H-wr%Wpq=r?{+L+&b}?nc|D&w&SU{``zvMm=wYMKCyKS` zJG#PjDeT3sas~#*0Wya{*Sv0i2YcF>GSLCaOx_TojLA)Hh&0ZIv<|3X)0 zm|0ZTG&E#SxndiV0tcEytbpKw1w#O*@FuN>c^3ms1AMGvF_e+BC+%3Ye)Z}N{9V@Y zA6KU5jUCMTJ}|Y|T&GrHbRDK%+B9#4g%vH`ng8&{#p@=#d}`jajT#(U)Mv~b#?Ov? zBX7BD*j@gPy8Qs=*9^W2>a8p0S6`c-n39yHLf4`B)i>m|xzu{XLjgyR&RB8W= zh-n&Id}%4Cp4n8AEw)x0Yq^Q*~ zi)P_9Mh(5nPRz=mF!K-g`)*giz5{#puSV0bM2=1wIV?}j%N;XzQr^xDLyKc;FB~=6 zSIDgn71yn?I8QM$5^2y~r7kUwnYUm7(Nx{ZLT3RDF)i>&n2wF0211vYNNgN@TjPPV`*%(;>5nBRb02!!M=FsV{rA>1#_q?nWWe6i);>^QbAUY-jiC_ zkeuU+s7pR?%tv3R922DR1)Ldp@a20K@(WrY||4 zVY9q!;+~u3svSXK@2J#qRd`B)XSi}u4}9!!?Xy%MT#RRrU8?;_ZP*@%=^a!te5|;3 zDZQ9Xg~RwYLwm;z{c)s?_VP%>MvKaaAoVxazvrAKs>T|%O?Gc{IFzx5Ena+FZZYfR z&V?N^KtXjC)?+dD*M|L#mflE1Jk;RZGSqMgT?{)9WC*HQ`S+0_0I{rNKCX~jp2(1h zLI_jpUR(b%Pe;wzYj)c9>DcyK1$F8&Gq!z|h27u)LgL}<8_$jpJ3E#Yx;#5hb1Z-^ z{0{7q7>So-$j^{k3#lZ=5^eqYbJZ4jh2&Mh@eDM9VQ5*`3f#)Uo`VP(hOR_P&$oCv zGru)-4Z`A%E<2uoZs)=hm4$~E)(Td?2xHl-CQ7Jluo1R|Q897+gZKFFAM*Fv@tqGI z9lNc#&%4)X%%s03!bcJ#ad-`ZS{aekpEH-WrijuSgZtE2Qz#qS*q~o{lFQ`iVK1@U zV+Sd|z6I55s86jt`ObwS88hPRCFHhVxTK^%n>p@2M|!tusXLxvt-oyaIcrnD-soD< z+L%^AZ{JieknKIZK!udfw!f0!d8wXxdgeY`TDOW%^nHt0mgpc+f zl+Rv5H@wq48)WZTLK*=nfP%NdnwU@?f+0vAbK@ALaQQzO zqtIXkr(zENs`3Lrk1>v)W(JQUt>x@P;J@U`buY&lPw#oql|AdR%#Uwsd}%3c=DMI! zZ|_BM+9WHIZe_g(+11cW$m7n2$$AVem#=>#JnIT=M2d<_Lnn6{am}&3n%WQP2SiPC zTxrh;^bO`yvUgMdj1QwAP5cyjNc=>{&sdH~%e&()OnSOlPlY1ZA zw^=!|Zgc706RWKk-u>vMr7m0JLz7;(@}bkZc+V3{mOcWwa@apRm8Z?IYN)9zTk)Bx ze@X{>?kPNXS9|V^Y1}yRTm!yW1^zHFv^$!jD*ORT-7(4p&wB@7lM<-ZSDGPjj4UJC z(|+b;lNWd90zybWZ7DqEC{lEwmckwOMnl2j;^*!F&?fcuda+zdy(QkiSXq6laRY=L6q2 zp7y-|OYwdf&3J#F39LiDUw$(JAKH2;rhXNvtc(R?+s&9;0i#QTS>|5q)5G^8*4U&nKCsn4Sk{hCh zPJc}bbha*|YQ_#_&IW-;y6Iku4m{GQ@`E4(u?8Z|jO+?p2@%>&NY!4Et7B}aXVEh7 z$=(8YGrksLV-d=^B@;W2jjlVc3H zjcTSSN{ApX6{n_#qIvC7!pUJM2S!$zN1vEtonJE8A$Ltr=`0ZiL9aINz?W3I_ zkw^%M9BnHM7ZuHM zH?!{w^D;WQUr=Ld48+sc2pN1-TM6U2*N%8mqY_^)J~_U9ygA!76;HS_@J!RV=TyOH9TazegYs08p`pY#P!G5yjUJ=n>l3umVA#JgpGN(+M#(C=LN_EnBh$V%aG{NYv3xe)Ij$J$GO8$fnVOk-cpr zC(o}wBL6G^YNF2M5A|Q*?zfA2HSMzW;kR<#o$`lRtywh!)@@VHJT=koM*lO%xJOy2 zd(7F@YtL!)+Y9=7bI?u_kcFF|=v<~8`4#RUdT2@LuA<%GN^ktT-xpqu8cSc_<^Mr-tES!i;$Np{|+ z$rllNkn55N3Zb6jXu*|8x~!Q(4B~_%#2D&%3LD~p@k$zBUQDJ8NYC0?wC2MI_QCR?R)g-c;5rp zmP{0qV@b9qIJ))XS;S?{e%7322j};me|W_R>-~e~59&RrXh<9Pu=$6C+&Eb56%OB4 z@?+q8D=%TqYX3#d-R&?glw#yq*dXdF1$y0FnwYsdbpt!pwn@lNwPEnw{} zRt6;Q`HU}CqF`e_;l9SM@Fwg^SK@ce&@=EY*yPmX$J6Ig$V|!Nys?u|IfwUNsNl*Y^ce=L zjy|IjN{Ht(GHl@e%v+Yjc<;rEpOq5vnT?*$46OW&jAe<>jKX~eh|iRnYI;7Sdd7CO z@-vcyz^qYB1HgCfmTTCPSn}?8>LUf!5MS}HCQ@^dAs!?^#wi4@b9R${uj@boVo67i zg#eqz76=B3{6Sj?WCk)xNUsbHXWOlx{Ce%s;ZNT+x>FZ$mO599{B`%#-@q@kuO3uon(cPL=@Tu z5k0IhNJOX?ie9u?C^-y2>UR$JR=YarM{D{YuUU6tQSg23`E8Z@B-TJBIN1^Oecp2e zs?&Xw%c7FM4RI{-$ETV~Y!{273vyr;AT(l986zJIQ;zdsHL`pp`-S_dXqd!?hh zc7Bdht|}w*-67f-9#)=KyTX=NWi6n7^yJM^ySjTTN0p~N@!fXNwYFl+ex?>CB*lv{ zOD(T*LCEyLYQR?1If;m!r=&x<1T0f(3fmh2)4FpJA28z5l8;%;#EIrobSf!^IfPr7 zCcxfVjWZhs-jgbG^+gJfJhg(|$P0Od#Sp~dCMvS}Ql6D7MEubc3~|{8l`{qOfipVL z*@C!EC^fzjW{cP3rq#^|J0&ve4(=GJTVD{f{`3Zl4zXDA z1OkpXXxXqSo9RB-DA1XLT?xS!q=iQqnq?;>_<*^pfB8zTZCrY*R{eSar6M=6TH?60 zv{qe5G-;idYYVXDrnhc6uy>2}mg5qA=#|tSLtC`Q+tk6G`>?3yO{4mBwRhBS>llkSz{O87> zPG(Ifv&hDf2_+^)eL(#kc#(C1oxHMxsr44{_7xRw_aMajWfr>38F95oXA8lvmx#~( zhR@YUEpO%L?r5JQ>k~9p`8kC?hdoch!A!;3w?OJQ)Tq!9g{eG*B6$~-AaZ1>Vgz_{ zfL>FncQad@18#eG1V5-O{}%Ww*KY#&1d$D!yP@)~QnzbY_vh}R12kr^mS6!y!tv>Ix)~` z&OH3^?uS~v&YpqJUS+PvyBpRZ1L`OU{SE(&z6EORanbgnCNE(>%%ROVbA=zOHiSrX{n zAjE*q?g$IJMgsVFM~BEVyXp!bO}cM6F*VW^8GFzp~@>cFWI4>u#)hlXi3tc^Uh z^t$+Ay2l~p0>GC;*VT+Y`YV5kn3SUv1`L`oVZgwNt+o!xY7k>4+}C!R`5OlYd8 zJ!gr3f3%t|{;4mqh6%R%{7U)!JMJ~*?zITn-zg9KgJhn?G|>Hybw#z&&<5&4OH2Um zBjc*331nM448Q7`@k@zSlTcx&S`Y})7BAKsLA4HKA;GZ%q`io^uoRW}Ed5MYYnOjj zeqGHDi*4Iyjbp|tRo%gw$2V@?s6oeOPd@o%J5^Ow)%sw0^YZ5Er5{u8uVq`@XThV3 z7FknTwoh%*yH2a2Lx%5nXPB$6HIocz4PLX*ycYV9KFbSbm1>P69sm}G4bF-R-=?3Vp(hX4Ss7K+&c$LmBRq_KJRw1n>iPh3RF&p9( ze0vUTg2k|G+9D_En1) zuUxZe(MqKy5Y*m6rfn4K$|6|`zsRqJef-_`AMy1c{`BKVM2oEAH2+>1sy<)}1Rc73 zL4%~?=+h&NnXt{8t5qt?x;(2dD0{YQDH+}4S@>x}ftW-16a+R&QdkfTX?8lz0bgYyN&pYk_?<4QZIDNd&Rr5XqG*J|dI#pv_=^DrKiKsGS*7bq513Orz7H70! z&lm=4d2y0C)|MFGKBMD(?XBq{y3tmyy&dBXAv$jiZ@V2C zDAX$^#BP<{_KCCM|MV2#8MJJi6H_~}b&r&UarJ9Abg0D}HqKW+n`Cu$${NzHp?}Bm zgHs#wMC*YA)^9ah#n{yhs|)KDN!%QGm=r7Y4mwgkLba&?=f+X`+YQFn+Voo+pvu9m zVD~le*4jK~dZ(7GgB+M;^bB)!LSlnneLJ`B=#y&qj7+K6F4lAmqE0nT&4uRyT4&`F zdI`!^-AvvAGRteov0@BzNi4{lQ#Q!E@vla1TWtPD+$8I|IIE*D|6$fKIM?Dn)dbva zCEBG_JVB#NpgH^;Z3=_x3pTiNe{I(Ezb?|--g^o)?b z>Vjg1EccdvbovxS$g7gkj3?y&^A%S#2iUp)9U8Oe>R5S#vYX$6Ov0+&kyBjsSMO@v5 z-246J%)IlyH?X_Ue*b-*|MS5!dCNWTIcLtCIWu$S%#7S!8y!2^$o##)wKJEpJ4@KA zrM0ze`LjOOBk-PQ!^L8@jmvgX$h~~Uc<>P8j^HK_oXv&Z_PPh%Rn23`hlcZiU8B*e z@cI<-2CuWr%`C?%PH->kmCy%3UG2nLZe;x*dT!E)oAOWWuC4Vi$e&rS_B6K8UUb^C zVdu^%Yg;$oF?;tR-a0U(XkK=in3?a-n*q5O1ph4NdUj(@L9chDVWrKt-6e9*9=JyT za`wP^)UyY+8rbfcurRfwiQOL;IYPXB^r25adFbIcgjl$0aryS`<%?Ibg}x`xuzK(R z{2r_K(i6UQcfWJ+!r^z;-;FYs@-2dVBVe_3zvGJ1m9Bc1zfA_ohqTI4hH48`B|h1e z-^fNj_}zC8e)wV8p+jY!4S}EEdH0>b1y83-Y3KI8xAz?Brlj8)^ds#VUDBhvG751A z)>At=U`}z z$4-FmZ8D9=-kwm?o-j44>y6RYRbq9=(;I(R{inxHzQFkc->pk;J8*Dy&TTDf*sNUx z3s}SlQkS0E>-8*N{@#8l6XuT_=V^Ivrt%!Ada)tp8IlpZ;yQgj>9-8`$eCg~+tS^E zM$n3KCqvP&1bXx0+P`3j?AXOTto9$C4Ygl#Y?do+9ml)CZs!S)SXkg6k6Lx<&BJFNx!<>> zd_$S$jmAq+_6oBQT_ZP*O)$i?8gEoRb@r&Q9w{T%?z$=fG|O4N2=khsQ&BOK-Ml%l zke$4bH?92+Qu>)k*S=MISo6X^Mt;3^enWV%$sc!xJ3(or+9tDb_D<~+6|+%=l)ODN zaaZ5g)ew2p^opG)+u%{L*s~qL+Hv>WezxmC2(fk5$xu?1TDU?W+)vuuEf6(xaI` zkRB(Sza4eA?l{gCf?a#%{J_5*$4OtjHuG`l(!0GbV*B~W9{=q8V~>4aaqr5N+wWO* z$35(=Ph|Y=CqIA0yn%}!v8q$2sxCZs>J$Q~Bu|^fN8qU;B6GEkr`ZIXCwtC7I&a-e z7%|Fo?X3$1gHJ(jss;DZzvL{w+pe+qC6;Df#^1~X*FHMzXs6CsWKy+51t_l;7%NRs zHJ3zX^Jvc{lfIa(Pg*jX3&NzOOHr{Hflgq+(73(Rf`WZH8Rc60(WGf(dv!=B<(-1_ zDZGM}++Q_r%%tJrQA_K2bEgHWFO|%lTXKnA40t^o9^R9^wqvUed1Z-Xnlx-WGo@rs zvA=MBVL925sj%CVAm^*?bKgj?b`B^=4HnM5pj{56U0P5jI?*x;aPBIHs+gv7YPPDq zkRfcy2ga&bh^T4Xj?Ow8=EvctdQVZ8z!|U*&mB zMbxDVqH7?IeR1N%7ZrP#F580&S^MHApS&o*zJ~0YTLVjq150juKQlu-eX$r=8OBYP=Pledw)A<^AvQIn z?W4$eo3d^GLUo(PNy=4Wvm8$3Dr}ZQbvo@Fv^aWCuQl z90Fl=Aon*$eu#8(xqndKr2kHK30*N`RgJsK1?^Ssy2_&wpbNT+!9k%;47C?wg*uSQ z13ded+mV8_c*XR`h$Z3{X0btp|8A7R!@2M)Y+ z=D>lMD{d>8zhXr};R?3%)vv#Pl}&v4n{QrbTOWCJOW?@1%F1oZKHLCd=Yl7%?SCa{ z+A^^FTU8z}?QVeKuIrR{>V<{D8=6~jKWpu2SAX7Bq??n_Xng{lE$maPXukI{oSfF2 zRfz_K8Z*8w*KSo5y{&3$)}^_26#-p{+4h*b)loFPihokOf@M#-e#+!o^A`%wiEZol zx_*u1ra{ma(Q^=)|V*g^k^4S|=vieK~{e*?d!E`@Y^%n~HTZMa4Pb=Egj zb!|^e7`w(-MRb)t;NxAKwyUa97g`|Ewo7|em*Cq|J%ayKl~UP*vu~c0GhyLE?tSvk zZI6z>ar~5Lx34+l5ev$0o?S9;?wx#PVQ%)4MK}A_KYDc6gtZ;p-j%nz>Y)R^*{hcM zOA2Sp{)21-ra;eS+^z1_hqP?Afku3*4!xy4EZl=O3cU5HUv=QEva50uShmY1@bE%ddceU?TSO&Oy$cz!lJKQh0wY$J zvQ>r0kV^nVxP~gM2Ib+Nn8#G6Yq4Tg+ieCx9}+x=HB_P99oNjOJtZXL^HJ>^B6vX0 z;H7kCKMp8MY8pR%VBw~&w~oE%!1MQRKl6v%$1ZBNY-Y}qe9!LYEoL=u{Os0^{WDKj z9(wDyGpzTif7HG`CbR3-Q#%%}Scme+hJGwWThctFzS?bxu>t>GeGQq__*eB6PNapk z;cR{Wgo?SV?nHBO_T-*tm&^~G;IpUmR$E`0w(8(xJG@U``uOohzitoo!KiQsWZnic zZ;F0qyj(vn?KW+~V%rzHH+=jmR|V{GRb$k=${ryiud3gJI+}1GBhCSP%Utbzfd)^l zF(#dHFI5t%=8_VH+_P!Jr_6t8%g#3or;nNO)W+41-E_zFoYkvmPrJQ!$>_=D6;nnR ziCI(Ew(q!Y)}E@WJ+roT?6CHx?T7BK9X$KC+h)&QzJhPKsl4ds8KtGrtue?a)4HW& z6lnpTol9G{LRzP=Mikx`7GLEFlXoHdh5gz>^sAGce34@Ty#xzu3gv@b{MrzKn%Y1i z_UvB&on4mPu;bC^@7aF(?VWwf`ZP|+9z0=D^W`&UEtx;z*s6O541E28!(aUEbl|{a z-?nH5ZDS{pb)s}|%f z8a@6XXQQUF=2?>xt{*lw&6mAy@xo!tZ+cobF_1xS@E1M}{D!tMHoqZljKc)AG0tO1 z8zZgT@h+|(?KY-Gm;btrnU#6{pp1S)XL9eIvlrYkAa%g?cP*T~#mjR>T%R@ahQWUJ za@O_zhGg~i%_uL+?>DV^lkCCs7ncNC$xF2l z*q_3*4>m2QeQ+pLx!MQUThX!y>XO||$Ogjs@xN~%cwSns>xOM9D7|-hdf&8l`Lowd zoIEgV+O$CfCp8|{``VGCuI)99j~Ot%Ma$f@g2jsq(q^}8KJD5$#l?Zn*N+~3ecJHh ztf~*@QwJcxjC3Ohd7YzmL$9ZzHp0%StsBQ(hh$)@cHKrCZ|P*FQZ^3GBZkX$8wY2$ zJ+yI{IA~hyu?fYuZ!9XiFCE zR%`&bb<3hf+wv#gIBfjH8*iL|QQ_|0Yks(M@7_Dvw7GMq)y$YTZ-&&u(o;p?4s{ptU!sytZ}MUWyQ$w9=X|YTWk$3W5moHr)%C5uN%=Cf);X0 zO&;qOrWQu1(X^|F%9bqSM<&f4(Wlpl5xx41xUNgv)?K=^ZrjCoulMD*)22*GOPequ ztz%MRr_L!Ukmo#4Ax}YHPOi7@Y@(d0gKc-{%uWP|X`|yw8YW|LALgAgf5?VR*mk1N z`O;CDw|dsIzKsJfZg~04HNcB;BJDLL#}N9=HmXQAQd5J?7~-36nWbgGjSc07}h3N-27-9L8E^UpkW&#NAu zf7`sJ%Wo~3U(lRy5v_}Bg9*Kb2wES18u<0~m%N*IoPP4a>4{SySDd{qR-wFF!0V{j zcTk7OmaAQd$-cXCW9&PQ`jT5Pgmm@((@;X?f;VW85*K3Td9Q&L-CK2=di~0WQnpPx z@a!A+KY0Gax|`Ru*-=)s3S72tm(!-r#W(Y^MhE`-(MN&rSa)nHF)zRd*4|q~{=F)vnxz~(0ghKh-Zx0mPQ47b<9bwlWAH#;1bB481TR2AM#9eIlV zFS}8^L42s|xj{HZN8q%MfeueqZ3dEC7p;GW>utyI3<$mwYa;tPZ?U-U_|Oo;)B%27 zZ9UP7p=PV-KGpA58z9KPI@b0oMiKmGbk`wtQL&h~vEwzTwq4b~W%D+D61VJp^e?9# zIX!Ji%hpNP3?A{q_IB5{X6*w}(M==!k6gB7!?B!#z`M(4W-nbfbLK7L{hp<1P40dv zqF%FWyY%X|`L1Q}9;mo^L)RwP_ZT>>Q;%(vo80qCWW=Rrj5l38e0<^N@e{N8>S=f1 zJ*`R3#*H~r&c)ExEzs4=+g7`5own7Hh`Vidy}i6`b$^78 zwffo1cAYr)^%Dbc@7Ji;{K+}1+pb?aZ{w=5=ifd&aT<&I;Ccnp4wkqTUb<7Sj$cXhI=-=wg15D{_Xh-?p1QlhFmwHuEtsItXZmeMvis6 zriSdyY#M*ri6bYXoME&X@;l z%zy2&xAedhj~^=D-KBl$*vX}}&o5avdwKK5x6E693v04|FZQr&EVsGayPh>gc>mWd zaJu@dr-na#DG>NQ@`SYvD?G>e5^p8hEt}kE1N?D$+ zu#d9OgVS4N=B^lxdOX&t5>=j9dvxrYG?uaN*dx#7YpFz-j_gxV{6413)TX5kG4Goc z2OEQpx*A+{>h{}N?pLf`;PbCq27ddo@(+Kg{E>z8Nt6eYsth+&?R% zzVkRL6O=&cCQh<%hZ7v-Ituh^l=BW1MtK}@BO~MyLC-q|{@G*Gw7YjKnwK+WMf-}C zD=RQvRULTXrkwXatIgqi9@$=e^QFIfs{OCND*HWhZOB>ZO?}(jNHxc{NcMb1Red^r z1nb@1ys8E6aO28}YgeF6Wz<={8@%F6ZYd(81o*GdRp6L`x#Ipn-g6@D((@wC&vwt9 z8<-_kn^}#5Kk(+>5$J;zD-EVTm@Q74E43eJmC6+yx|oHN?I*$@T$539jf!iJM;Swa zb;dqgbcK~2EzjccUuk}%+gT>+DLX6gv1|dtZNU0I^UV44uBG-5KfHZAEvye*^ama_ zYwOu)KlA1yaGB~U`Yj$T%Hf@54~B)oPM&8oaM}(j1$A2>>*LYh3vzQC)N2Lb*1#9D z+u39r-mcNd>(_x#G4MOAXV|pM;A2E6eg}S^^%$FQ8GLsK42xbej51J zCJzc;;#cs+Y%wdi48Cn0_#p;cntc0ku(!%tgNUle>x zgWqp01-z~=2EH|9L>f$Wehp}ROy%5L=lK(-ob3_u@rEW33SO48f-h#vopPowjVx!> zFIfnv3kqJ!NWt&0o^;CDz&A2^R`9Z%6};cN%_(OCABQ~1*2vUf$f+5==}&nm#!<6l zY&jX-aO~VnAIa>jO= zFH*&Y%Kk=<#Jlfv`y2Lw^%(pl+76m;`oRvypRMdCccD_WroayN^NhfEh&UlT*o^Gp zB*?j+_e;DVtmM3`jh#QTYEsVaw44>}c?~P&+yN2RTGtJ9dn0EB|FglpV`{6*ps&)h zQ?SxbD?a?48{4uonA<^i9aMgTuY=qA-Zufimh>q-Sd4go%?s(1Y1{_dXV>ZA3BcoA3Vtu84XM~| zHTH%S=~Si@bw2NM%9O%yq*NLkz7@PIQw3klk}+z~a#R?`2BVz%~Z&@;o6~mpfu#{8Z8}OiiJTimgiyFDAFm4KE5_;+OC~%YOxp zX$t&uTqW^Szt8tiz^i^@f%O0zYUkDIC;Dugu58?sfLHdjV1TI|#!B>%&^GR{fd=<3 z>v!z#%Wyk=6@|Oj;NCTAxD9P^Culi#2$ab^Qx$I5oxS`kYI9}=%0w>NBk(8RvtQ_a z0d(LL^#{;jlX7GWoc5Z6nq}K{m1(=Cko}Tn3cE(|agMIr1N-Aw8M!O`vb|RLcUVWA z_TAtoi%0w@{8HZ~e(21NrfwMQ?Q~uhZrMjwxOcNLSHMj*$%Xq3!~1UQ0>+J6e+~9F zrc4$78x8)Q*3(Yk$MEjhU&Z?c!~4#u#%dVs?KSVR9~KqX3$UF@jytg?-i$*```paP z5k3`9SGgxA;@BW}wn=pM=2%$YC_M|E;0Nu5F)vhC>Mr$dNq1G>w!pf@(OuKGjW+pI zZNXFEMYRP5gClIIxZ48KUDa=vx~p*SvNk%pYj8Wdt8fPl?p-&HxD0m(Mt_@ zSwE*=WN>3_qw}e7%Qi{!9cJxjUd+$v@-&>cHTgV*I&h5Y26(4B(3s>kDNv=`YT%*w zd#nMr9I1>{UUymtoH8=}G%#hP`1!@;b?5xc+jcvzOHiIZ>c?Ud7`*SWUT}2R^h-M! z+}W^q>C}D=0X*u(45PWm+Sz?5g?k+MP`Gzl&$C0eTnz3`b#P1jqHyn;ZtRP}ZQB=x zTh=*+dpFCw0^iijAlWLuWu23_Wf_G#bbkao?{Q`tYr3`++7p&Gt3n~G?Bs$b;Y zkUpg*pGwt39SdS*6!*EtYWso4`ob^Ao&HviVOfigCo>KgE)H@EjElAF~M?+5tgxa3Cl9vPK3>p|e} zOLbrIv)gLpl$YVhWAHzQJt8gm$!P40I@_InO?b9qAEL*|PD=b?)-bl8-e;oSdNZsI z=ynGs)HgPR4Yv8WXXBi{PVfn=b$`_>^%hQT2_L*Ecp(H{_Kh&+vTZK(Hj(n%L(+xb zUQ2qrCXgh?QhtZ4_tsDJekb%TkH!@}34gKGg|)Et&GxTUM%el$&xL01giQrMBQ$(V zw%vv&`AGc?Gw_E%7Yj`R5B$VWKcZV0NMg~%5AewM!CHDR?Ye=N?F%dM)Y|Qf-PY;6 zZk4)EGA3RC%bm7}`i-G&kqa;Ce_8EO=mRzqqxMANs_)>k&?eWOl)wAb@8Apm3OTk` z{)%Guh%>e}w#@OrseZofpU8f`?9U`R{S&9BZ)_jrOH8v=iWcsJ1JyM$q8g)_OmhFea zz00b)Li^$L+0?j0wjT=juKdf}54+E%aNlfj?`I9re$@5HV60Tx(Tv>)zb``L53}}L zZ=emSJKn=6$o0(u=uHgiO^VioQI6i2{`=LYUkknAGiVGtPQhD89lfE&A5uaMjouu9 z-o$tx1y8_F`jJ5TF*lIJ`;*=P57n>V=)K}c>W$)Or?fz}Ju&vJi^0DD{EQ>Lk^De! zeldDuxM`&HhRXIdwMD5qucMtlyzy6cGkF~g-3h0>j@R%$C$9uA^V-euBISRY`YHGa_Z@7?S0F6*n}edj16cf)&k z&3iY{#9R$vF<2!X=t4BRLI*H!g7*{Dd#jS(cMFVm!y~UFEf4b4H87m_b>OXX3%v`x zM@uNqh9xTesN*}W&1{OTGp7F;ZFujB`I-!0OSFlgOE!F<*KgYonyzu|#~PIB$D}j8 zNeA{>$DRI*@hLWzIVE1y_+0j1)cAZ~uIas)@wx3kA>7n=QMe1NgHGSY;Epr4N#T}# z7lpfEqUpI9+>InOWTN<%;}3;EwUm~B=R0VJS;`p3QSv&Pn;g{oCg?~3|;mFgB zK_X2ZQ}`bTyu!cR`p}W58P7(VdZX~mHbvpziFpCjrWpM7jXV|p&oq9tDFaO(z+k7D zALvLlI_;cfgHyIqw#7Whk&UrE%}kq;f&Ta$8sFTZ;afVsYC7gn>Oz*`B`^4pr)k(U z@N%n`{SJ1ItvjU8Qugr0Yx^@HSOTByr+~jx!$)A}!MfuQ4R7(_MU<`FGegE-jC0M7 z+G{K96$v5n7cEr$MT>aMq`TMc%Q;R20E8@0vx6_xh8hhqQ!T@3G5wFbjoY@VZ8h5d zo%YrE@bA2}pNH$sHRK*7w7Ev$W>m}nr+B5k+-R+_Io*NA2DVhGTFUsH`hs>)zhZns z81~i<4FHgCdfFL5&g07Ddiec;_sEu@RT5QR%*(I` zNFUOzEspPp`gh>TRd*FU^hd*^t~>fewo1Y~;|K-+R}GIo%)%D7wi)Ocsr{%cbz%3- zZFm_h)j|V%+Tiu~Z)jU7gBKP=&EDJazH1EMd#q>BGtqX(C5NlIQZ@;wHM{A7xlR|Le`y0)(=6}m>VoKUN*7>M$*8c zV5OWTtQ>zea^y@_CREM}UdmbF-Z9+B+2D@Va#pZXb_&+t)X2_YM(bhAF8CTah#|fo zRXP$Za&&~+8_A0^UoS1o8`8!w36D9e#-SEQLep$L#%f;x;#sfcTjAaTe~96ns)2;| z+4eCg4>$VJD|uJ&{-7M~>vA;km_KvPS;_n!BN`|1b(po!T7z%2&7-j<$FJ=SKcdU!wnX4ywAJg!t6Qx}*gKneCsxIulf)1C# z(u|nYJL3C2gV#T>gDn}8OWA{R=B=;mprbTQB9}%+J$42C|=`;fvwf zGxOC3-kG0Q@EE^n_#M_Z$7gBao7iQm_DS$!-i_cfw=~1dyE)L{zoG1TAirHvuI1hj z0skEFFY8DHTRKKBoqmV1FHZno+B%~d%)-b3LQ8XkR?#YUqI?)DnDtS?1g%zrcKO$2O;u~SB>)MGJrO3GB(l7c=)rpE5j zOoM@yGF7m*dJ2VHq4Z|*Y0Bne-HTAy|OG7{I1|g%ao>p50?_4a%cj7b#E#kz@s<5_Z3`F zJ}ZHzkynp#Gbvt zeO$J~@MU~La$JMX;>Xfg!encL_Ni&m#$xP1gf2Vakb6fdSiodyW7J-%_NkanblQ5OA5Nc2=Ia>o1bEVq-ZoFbBXwQj z*@@Au(RPD}G=yZY+KX2JFWWiT!<&sYH_)xLJtSD4)OQ8DtK@QhciX1z(l@T#&;8bW z(0AQN8_Z}AU4BL>g94Jl6I8av)?XbN7=3m8j8X>JLkTnhPv!ECkwF2;K;nVz>Te`q zuyoO7OM4iReST8WWNj_eZkraz@%Irt*#`*^`#j0m2Ls*J#*IE8_D2GLfJIFzXPu}I zsBlO-tZ?kiGj`bE=&o^OB9GXQ2(VA-JpPgLmH8>n__sBDfwjVkWijy1e2s#yHSoKvtyov2>!g9N)5go# zF^zwZ^|=!}W+YJ8H-tP$zqS5mzxA`@w>C6n-<_gPlwCo4py~+vHnKfn@UlQ2S@5;I zMRxHSD)SvUdB9j4Q~RCqxawobHeB{GeAbTPjqThS`xK?iOTj*8VEs*FY^^u2k?6m~ z=>E$MD965}^Uo{&vo1P1Pksp4~Xxl=PK7DR9Mm_=7y1d}H7*z#VMXQF)#W-bdkm1K&6c@e4UpzDI*O z7=Z`nY_?}5z3+>C64ZtDGdg{ME}@9We1#6|?ah295W0G=82zQ4xb zjPPKl%o9WJA5-v{umwNCw}L;gfB43OPt_NEFnC??NjtvKM2#R8RGtpnNCwBNJ|yK2 zzCEAJANW6nGI^h#JDO)1>)^Alrf2dM(KCES3f_bDd-xrtk7sEed(v|^^ShkS^jSUV zc@KPp9(s;9zsq?upPUE7_jz(Y3T=~5j)pZqU(@eN^bD-z`}Rp+IerJ%fS2FH7l>#4 z6~EFm>HGgxY%}5fFMWV=t9^`>baO`VCz0jr0eCg` zIBNYG{DTcoc0j`SFz~B!s`Nm@uj=hl7VY3SGk}i2`VjQtZ@%VQAE1Zfuh`hBry#M% zN$il>D)2sybmwKNCl6*C&7syx!Xg?E)}^v(tjlM;0kU2O|F6$lN3y5+HO#g6g5YwTD$r%%Prs5 z_u3Z^Jn;TMPx>}JwWB0|OYZ@1J@DvTpT6UJaQ}8y_H}H_|5e?V@f)qkK6EFYM0rrW zg>9ecnPd%nh4Lw8!yH)~U%u0aydL(OQT)p%1i#DL@602Se#!D|Ve0XJvbR*$#2?BU zb%^wZo|XNT{BX?r4!?$LZY$!k2( z+lsGb43AI7P{AJm+jw~D!AX4Ku&!R)9;>rF2*)tODa*6Mi!qh;qv8pE8LR+Qt3oES{8LQ%8|&FZmwz9cSL^^-HLsY?_B!)a#tt@>y;0%?Jpjxrz6p3W zub9qyIDL83W;$`^3V&OJznEt_b)V!Z>vHot_+K^niC}|E;bC+MQTXZ z2f!))15bMqgXd`g_%Kfc25$`B4}>mF#QA2O<&GlgV~^lN<$H>$d&Bz{_`R3%w=35{e-Jc-Rpoos8oCyN(Xs4fVEBnd7K&8D|(|&QoO%>kGM{}56+SOVBb=_hc3gv zaxQSmdJ;0P#6kA*2pBCN?<_|?Y_pP&l$&?Id4IKagM2UL=Ru7JO=?sAyET+(b7Z~y zi1M1wVw`$s^vM~gsrcppur^7L8I}E)x+m?w)YT169W^b0I^B=jr<0VI+(4#h z2-(or=(!Dkj|jUCW4^|O?*XwG(F(eUNMmJLhvhg(9!UeSKpyp=XA68y@J$o_%{4gr zRDWY?Kr`4ql01DgA#kHFfVPJEm5}XCLeb9)+!%Hr`d(CS^1UaA;Ku~U!Ve+WNqs2G zg6(D#f{%mtq`){4>ya@WKj`SHM>g{1m)*tp~&V7WAI#Jjn%h9^d!G zctQ2GpQPtHeJ9jP%lirSBhFEtcd=zoKZ16K3hlSF0=%Gh`g;xE#fjS`cxl(kQeTlC z_|yFs+@YNRr)yORx3sGYcgR|1(=MPF;jF>cYY+eZn!f~;cn@9IqA@tDu|YF&7Idcf4EDJh zEOvSNy};47`g@r9Br{g(fIQmsVM-^Y9FFL0_#I3cFeI^CI&{?AsIWS`k@6AOzfCrg>>u~;ifU1!tJ*n zcjRPnHwe);g z+mmZC?e@d;{TZBEplSNom{*X`h6njOmD2-GIZ+!Y%c&!HaN^hq2hCvuhb*Vgrku=Z zyCZm@FF<2Uu*OrL^7)mfvBjZb>TYMypcSOVmt4ozhw^z*(P&|4m>#B^294237t|Q7 zz}n#G0@-(&5A>mQzftvvq%NrbP(eGR3#K(7Xz;Jbf3nUf+b5p+ABLhK+XzKtKf{)BAzw)T;lpsXX_7`?iu02+WSrj?cq8jl!J0PLH=EE7 zenWbV!vLwgH#&KtIUPv{k#g9x#BMvY@l71;VrRs#QF$|y7t;%pEhl{ec^yPMQZLMh z_VG(}Ag{K%iBAAm#lT}R`ZLG;`M-*2MtKi1zbrT5+N z{qywwPx||Z=zWL4nUMb85l;(xKQnM9q`!AWtXJ^VhGE`8w_%4p4cTSB25$y`0=~G;T`plVR$tM$ z-+GNLw!bj?D{06*dB7~{p3-4yJCGO1?EdL}>@OS|umA(xG{Q$48hb%wi2a43fmvAB z{xd{_*0(4cd#8ulUlFs;htfnu2IShWsmjS|FZ1ub(V($Z)4mcWsH6) z#v@0>k5)b8b5h`?khQ8u#0xl?)gBv4Jy!kL!=l=;Lo~Z8+W^N7(OAz{4*0=Rx2(hB z1jZJ698CUf*)t=-HaoV#@Gi%GPT5KPPxuzt_}QUp(RSGx{GITH-Cya3_U>5N5u1N@(7KCd*;okABX*FXdFO)<#HNWH|4T%G9QP0GUi*B zgO44UbUBSge9_iL<5-xqaY|PEkq=|zOg=h>*f>?zW_>r?Kl#_o@`1?d%Jw!5se5GO zKm&AWFD2**>7cD6hL)q}q?=Qg1!RAF~=zD}C93U#sB{qjqS$HNH+~o#@fPtE>;zBjA_yh`&Q?ZdL`}W{qX6 zhjpWV{|MEuyugbzk7@e>j(8dbYf--@1fCJaR`smF?K zeoTMJnMb02wokVIz$4+s8K?a>J?(C${Re)mV|&@gkGgS^&9Y0+;Kv>WN<*lwN*b^F z3N;P1{{>O@7lwlQ0(lz__={oB8X5e=^^a?a&kHKkYWIi6F_FvIBkasx^^M#=iZD{OAK5o1$A4#Yi zRGW;fimClqH1^Lm?Z3%~>?_&zkMzUdf69_|1N&8>97#_uD|g6D3e46YYX3n;){Xh9 z{f8FWUm1G#-Y;^F(xNfeR??MX_|3=L(574{D#*@@CysoZ+cbPCag5#;SGK#b_wMH{D`|nJgn5+ba;SGn_=)fzEj2jNrV5eC*E1VX7G1*WF+xZ z-B9=siTB{?T*kAzVz7pexbQ)(&)OKSNmDL*P_Qz!R zdXp>E9XS+(eQGoagE=2YMeE{;2-#Dw){| zgWsty3cqX@6#m1WmX3T3{+32}h<|Dq6n<$}jeHD#?DM8|N8y+K8HIlz##N?2Lq~Ox zdi$Q<2|- zWTSivhcW6fvN4_!+KEZ=L-=Kki^9LpT8FiC8oz0i9pAq4i%8i>{E$sgBO7BCnv*2C zCCBFuPJg8kdm#FsVd?6uYSCfqDyaS5dji4H1@Wi<@aj&Z{g>CI^)ew^p#+BF!P_8;#U5)y$eTkT^r)kea43)f_| zJ9qB}YA<2&!98>9^;mtA+)jA%${rUkRNPbRTe56Yd55dYCNICmQ+=`7`VnL84TZ-I zXZ^9W>!n9de{=H$9yf7*(E2^eI6D|4<-j|OZ>Vh3thK>1lq-uwj6jQ{2_w>i-v!S-gm=$_nPJ1>|uHzkM~Up z{%;B%J#dMqKk$1Azw*EA7Rn!z2>2TaUin{k^JxUX3Gf*N4__4VKZ)LF1HO>pf6@Hh zVZ)1W-0*z2fsb>;v)AeU0pM9m@ZekGm$T{Mb3?z@!rRFqkhWwtpmG#g5b|7 zcyBX$-zu=%+l1i1SMNRO9|ArlkmY%t*69pT?|EME2Wjy|MmWV<)2}%V#HiQ{?X{y zlfbEMw54xsNEDsYTp1N2eYt;fRBR>IC*l+U*Fox#uskG{7AMl7;OzsyRos3%|3fWy zGvcReuj8lueAV3AuQAREm$4n5es$=hbqKX#(TaZbW%Q$CE3tp`f1n>3xVUKLN**5= z%Dn8CKqULc&;B?sa2M!%;0MV<{u^0$s{GsS0nxV?)`l=c5B6U7RWY3OGA6!i2F^CA z8W{r<8!zvcd)OIG??+6T4y4hR!$z1V>-L zxvS#j$%+p@yqCSTJ`ly5ZQ~Esj`!^JA3Np`RPf!kskJSkj|^v=SYi&^i$+$Nt32)2 zf+mLR3YYR@Z%ADgha)iL`99ctAIyd>NUaK^v#fC@=y8uL3v{Nn++$cg>So*HO=i(7Nz6#?7#8=6$_>* z3U&`CrS_7UTa1o`ujnH*6@&{>XmTdi{?- zZeXpC9tvDo|M{020>A8JzXl@M>w#YES3mnh;0E?&07E$0##0P8VmEv;h8z4}1^z2Z zPp7+d!WJ`iVWnha1qB<%#>2XW*b7DmJJPWrRZ$8Q%}agfZQW*snv#yxl!&O>d_J)D zMHVhkY+&vDo@?gTzA-m|RmR}=D1X><5$9D6VymCCX3xGJO^l4aVvWJGK)p@8LhZ6; zTj{H;*KN{AEkB)H#e8J188+5}QA=(p%RIWgJbdL!c3!;u&rwGp468Mp35lqGXiN1y z!}<=KcSWx`D5mOrVYSEJ6Y9Ok1>?p2bp76kv$jk0eHePFYxI2t<~2{~`$)v{Jf-iW zu-@;qzK_Q4W%9Hk`7g%miZw6lK8|P!3kOl*m+M$h$U)vS>;spt@3|F&-CNXqVP&$z z`rhM$@#6k_{T?eJcoTgeW{u<5>-z{Rif`5TkyazVPv1vbo%u<9A8k$LpXmD-Yndv)t_;%;pC?bqEh^3{ENGY5Gch3{F(t9TM4GHV zFgSZCoOLPX6}QW7S5lOnlRH1VXkNR**_yAOimdwEb5`N}41ZBxaY!(c?$hS%6dK|hsY)5qZpFR116apC0m)p61w3(iG;uJF$j2SdpLCD32>!9Io~;f- z#G-ACqjk)UVY!-OXPo9(0oM}V&DK^MSk`uEgWAKd(-Auv%bA^PupX@|W<EHTHMJzHYSsVr{a1gl*r4c(NxEwel18;{6c5 zpf9bjFmoM_7V0>Qunx0&ERsdBXhfpcM}*fG)*q}-u^RAm>tpLP7K^&m*}jJh7!*R3auX9)}k zo}wRx~_q`eGO1{%iodmR-jNGW2CwI?G_0EQ<|79QO@~l^e=##A=b@Yy=z0 zMzPV@MS3h&>WpU-*hG2i2%ExgVpDO5>vZfHdNa#rGubSb!*bbdHi!AK|Lt5hkL9!Z ztbi3__w0q34=83Otdy0pa#q0>;RK8&>=x{$wG8J%tYEjY+i-@=9c(3A#qMOQ*&4PM zzS;F`1G@_&gN@kHZZq4$wz6$(JG+P7%kE=4*iN=pJZdyT!$-e7OCx7ge4_c+_~1Urkha8Fog*gMuqtW0>xy3IOe-H90ahp@Kl zIqP|xX!9O>A1A_`V;{1Q*vIS>Yd!k|`;`5WooAmRwtI(lpY>?&D!RoJa6_Jd#K8Xdc7s^H|=1$MJ@|5l;MS!khAD zyg6^dTk=-CHE+Y)@^<_x-kx{h9eF3-nP1JX;azxF-i>$XJ$O&+VII#DtnYXtPvXhe zG3zz!73&eSAG3H0YW*9qUaw-$wclHBT5nlz!-~FVoweSv9)-<0XT6W;em^1{=fd{P zgT>6Z3V13k(n44$*#?xt{*}RIRalGBaxJlzTDMrst!35mPgsAIV4Y(R>Ua z%g6EYd;*`yC-KRA3cra@<CA^fE@p4|l7xBe>3BQFe<;(bTzJlM1HNKblZTxoYYwH_+2Vcoo@jLlyzJ{;m z>-c)Uf#1dN<{SAYzL{^~TlqG=o!`Un<@Z^?<2(3Hz6*Z6Z>>M^J$x@tN!!m4@Pqsi zzn>rG5AY-WD1VSYgi~3M@kjWhypkX1Rr~}$$sgm7^C$R|{3-r4{~dpZKg*xv&+`}f zi~JNn&Cl?c_{;ni{wjZszs}#_Z}PYJ+x++ZEPsc;%irVg^AGqr{vrQ}f6PDOf8d|; zKl1bZGyXaMf`7@s;$QP`__zE|yqbTp z@w#|JyeZxiZ;RiHv*I1`u6R$pFFp|G#E0S|@v-)xwp4?mcKk(Jq=2Zm{XKpmW!_X%!uq+r6uaF zBriXQ?mYg&!g&OmoG>Unr?6yZZhm38x1_M3usAv=59}19e=naRvI`1Ja`SWZvb}?| z=g-gfX6ELXWP8W?b4#*)!?Nek%*p1H^7yDc@7TOK^RvY$f1VgsoafEXU*OO7%mkEo z4t)-q6tNt!2Sv@Cd_#_RVq~Vh^e3GV{r0FKv-)HFWGxaq~Uo}6;nxAByk7P|RS<_3_ z^pZ8bWKAzw(@EBJk~N)VO($97PtkZ&G`0O_R@Uz()fF6{Jk{( zUYgHdn$KRE&t95tZ_Ou;$Cec;rMITnThr^U@%7gDdTV^WHNM^&UvG`CkIqLQosT{m ze;6&i3rkkPjo1wqY(D*a-_nG!pKE1CH`=wa>bSSz?JfeEAfFV@qsJxfh+NWEAfFV@quf4 zG=lsRCL0)`EKU9o>e5O3(a)()kgKbBhY;E(RW~ zIcW4GX*57lv*7*8hto$s#JV5yb7z-C+Am7-X2r~uf-ucjG(F0%WCN#uG_732S$RdX zO6Skc&#f>Y#5wQmuUufJsdT+F=oEGX(!eE)BD7j1xxO^Yt}k6(GSnqgU9!|=kh%<3 zmmAb&h`J0_mmAe(n7RyCml5hRQe8%?%NTVTt1jczWxTpfP?w2xsYj(tlJ`wkKTM&E zDiK*;R7iAFQeNo(NWP1hU07PAK9H(Gcj3i(73xNQAd9yiX^8?W$U~XSPs3#4Lq)>~ zZRvst#R}epE2Q#r`Bfu2Mu%UcnqHrih&E;=Js_ zio9&aF)1Bkmv_W5F{<#(Tko8n+4&`!a{?zi^3FF(WraF05-Qr(LsB|w91_wpeVO1R zyTs!MC!TTgPYM3iOEXN>%Qm-RX{y5)maVS7G(zReRv6O?=RjKX!m`yhGQ&~U$XU)k zQBKrmD={G*9Au*x>C2%@SeB*%*RAYa`mz*_T)NcDLLX06;Ci{{HY`h1&Q(`mmcp1z zm&m~m?Z`RKz2YNDnc>8w#HhipDiJlu^$>Z3^HrqZx%UmBis{RvOV|+2IgAr=K16Yz zr=&AP^O&cu^@bSs`H-PJZ*JsJ2XW+F=RWF27bj8DP}n96-B#HnMt@UYqK3JCipqCA z_=YKQK*`+1Xh3+Tc7)85C(H`R>7ggkX@QqQli_~ST`l^^Nkz*Yx zMHV~vRIo{js+~+qRPAJ9FV$~J)cvreMAdF4C8qnvDdZ*UGF}yGsVda*I)|k?hvQWa zOX=brFYAW4RQ`<~@6KOzsrxBxye|Awb&Z_pa2r|fx}WU2U*z2Trl@=`rc1pkMs?~f zHn(AES@dgIcCM1n$m0C$V!ygCbls~8uWVmdiCS@Y>GGL4!DeNSK0eQcV;j{cDZ zME5ai_E?J^mGz+8`i>!?=je=CxjASnv*{@^%SBAFPw!*1>JW>`3Ly|V#P!_}7n4Kk zem5layAcl0kt1C=M!Il}tb-$Rr1MeC$WVOaT{y zjidLmE(=F5qQ{0*pRvwo4aT{wrb4RBnz~m;jqangNz*?#(ym9=j9$lu7&HBuOD$qu z28@1bdiYTz`?(%^EQ}pmNMGrqy^zbu94?k0M^O=&Mhsk=FnWBc52`P!%O`yhYc-F&h-5jSR>hBWu z@H$bu1roJeK=;d1lJxL7N#j#P$Apw*J-klVc$4+8J6YpN(Z8qY?^E>fJw?N(>i4Po zeX9LlyAM+J@IF-!>r*wqsad{>Wb}RI>N1fGv#*>k5fklFizv76e3KR6B6XRcS0FoW z#qeJiMl!RP`Y*oBo0#CCn+aHVwTDkt|XnrEH!w?m2#0dNI9+WJ>>>h z?WE97h7|1#NJ-UFN!3#Ct)F{qY4p~)@2zv+TT8XKmO@|qs^6z+r$(A~CZ%cVr|DA6 z(D*Yn{tR7;8T$83{kwL0rf8>UN~SKAOr4KRT{@YXzf8?vrly~%>1XOv%GCMG)cj;> zdRdx&md2l@@n>oLSsH(q#-FA0o2B!crRim9dRdxYmZq1b>1Anpx*Ssm>HH7U^apAB zgEaj?n*Jb7Z;+;^{1OQ%gB1Q$T}xAS?MhX(D=|ws#c);nkd;Ps@Jw`YB|5kg9b74& zxKciGCAzp0U0f-jxKciGrF`N_eBes?#Fg@yn3YcDh^wZbuIZ<1`pW5s-!=VoO+Q`J zS57$muIZ<1`std!T@REq4se=&x~8x6EHO*z8LpbXa@yfp=RZT!&(QRh6A!=Z{AXzT z8Jd2Erk|nnpP}=gq3J6dX8tE zf2HS%SxV1w)%jO?jc1+TL7LtmonNKr_`NTN{nGy+&0kW2ZASVM`Gl0dl>LMhrOvqO zYNON<&#GFaD0NFnQR;>(k;9e9C8Vfg#8p>U#SW^K{=Kh;@2j7cdf|Irjg=ZEr1a6> z>#<}?UlKF;)O__NvEW&M*GK20kIsiuFYuw?D|N!N{!XbUo^AfMc~sR3{AxJmwoFJ> zb3BNPBQe9JtN4LW7J)sOZb$5n+z+}wMH<#abWV4RWeyrP4(}0LPw|*cLe9%ADv;6s z1SjL}WsDHF>ZN{eF)>xbvZD#-63+P$WS&@&umWKP9h1VtVp7|uwoh7+@_quYxa*j( zw%!f(UQgPZv>@Trgv#VQQZo~#N2VlxpV%m=O=MZrzNDdvjS@yhZ%-)8n%Hlf4^=$N)Ca*U=nb@e=Bh5~>c%;SGt;$** zY27)wCb_0;4 z_AZwa8+BjY{bbLzJ=Z2S>T$m3&GHWS6-h%AK20j?`EX*Rl(^)@DetGepVTIKvCOOb z-}7A0>iC%WX7O#}6XK`DFNnV_erx>G@h`-mi~l^qm(U7w=$N!Mu_EL@PYPH6C0FV{ z!AaPTNek5f)J(|5^*^bN{y#Ly{$G|<2E5;!gm4b|A2`ARTPN9+xEL zC?$-N|4~Zvzvf0>6Dm_Plgeb7$^Vc|IN|CDPEqDb;R(~_bISYbZNl25t*MzPZ%w`<@q6$NJxD5p20+$HWeJt?zoe~Xj`BpV zRW4=eBy!@beexa2->To}cbWe-@*U+17!!K}Rww!1$jvRoe{)|~qII8DzLgAZS%zGP zN+~KCN;xK#NmPE%fxFc?4yp0`gBV%l?MSP7NT_fXaR8-9<#M8(~nyFWepOLXMDso0f%PgrAB_pF_ z{`YY)PyE}Mn70uD^Ik}#%byVA@&m=U*l{f~o+W@d7LO+!5&ClX-oA)Y?Qb=~4xEiR zx0>)ZRvcf4>jtC?RudtRd`SJRIB_k~K%_K0W8Jivj_YSgUm$&DH37~hXc-#>+o7Js z1e;i~NF9PNS=|G_A%eA$l@UB|Wd(o0**HH~gOP?HjYh&=$JV&ux7Nhq_tvCfwRIEH zCcN8*bPwJg1CB?L9>?>O`0X^VXOLdTZ*K$dyGTFdIf#AqBZ4onMz}T!R%5r#A6Oft zc&iakwflkf#ua-(GSFp1k;WnA1)H$>NDGmQkd6djVAa6!9n$wmKOog0{fP8a@FgyS z=eY;Ti{wKJLkdTVK&pp5@*|O=kfM=dkiZLXjMN0FDN-|}=E3iI3#67vt&my=t9cuw zw!q&Gc&@^=J+6=)?}%$>d~*$wJnOeRQct7=q$H#iB;<|vLF$Jz0O>j;>_f*#1b*Y# zQ;Fvw%|PNCa#$uKjRLN4gPk!vG`qlAMTVxi`%;q#3x+ z!Ed?vZ8olRaGi(u^O4Gt79lM`S`N5dk#0v?i{}l1y$i5+!*vI)J8|8G>uy~4;JO#reYoz&^#HC1aXp0VVbC~&^dQp1NRJ>@B2^)s zM0y(O8KmcsUO+m91bq}QBfX0BI?|g+ZzG*WdKdC~AL$&@M@XL_eTsA*>2u`iOQf%n zet;ggvw8(Tu=)hQw)zHZtp342T5sd|-QWkTaqw#vk85wFBUsPJgMZ}Z!4LQ%q$Nme zf;D^{-fcj-5d5PMNIs-4!4E`#>@a#Q(mHx^^&dgK64Wa}`79_`f^sD&SAyzUP(2H(XF>HWsGbGYN>DlrND(@1BKentwC zov4PLsD_QGhJC1peW-?gsD^#0W^=4q>_i>Q<|55Q%C}-s&#O_-t5MIZQO~PU&#@;u z(ltn3k-8)GL`pzPLP|jbZq(6g)X{3x(Q4GuYShtc)Uj&Roodt@S!b$6h7~I^k#0a5 zgJ;-7)Rk(~i)z%1YSal?2dbf?)zHyu=x8-`v>G~E4IQn9j#fiQtD%S0(8FrzVKsEH z8fyl!pihI41|tnY8jG|EX&chxNT-p`ApMLK4A#JU)<7yXkV*}tQUj^fKq@tmN)04X z0}0eX0yU684J1$l3DiIWHIP6JBv1nh)Ib6?kU$M2Py-3nKms+8Kn)~N0}0eX0yU68 z4J1$l3DiIWHOO@ha$SR5*C5w5$aM{JU4vZLAlEg>bq#V|gIw1j*EPs>4RT$BT-PAi zHOO@ha$SR5*I?DfXmH#Jlw@j*)C8$1QZpp%y9?V`1KU^w8&?C{Rs$PW1KU#ryHkUD zUW0mGgL+GZvwPK(Qs^M0#3O*+8f^1gq*_k5mv>YjU+TAr$U>UU0^UvZUQ?yBsc;4Jtod@gRo z>>kYS!R#K)?!oLH%>kYS!R#K)?!oLH%!$>%~=+`6m z>-qY_>S7?9Q1oY~6|1vP!|8AaoLQ{ai}dS7`nBNwTI+tTaK9F~Ukluy?^~?SKLpd@ zD8EmD%is#Q5|+R+=yZ*#VN2iJfHQ<$z+U0&@C~>VW}D&i8?h+EIG6~N;VmE**=}$+ z)ZkC>XZQ>J54<9V&R=>bxJGF^crUyU_JR+_hd}}xej)CLheE0%f z1oy$O;Q^Qp55Xfa2Oftf;VEbb@uz#Xq&l{Ncf&4l1$-U80e8YLiif3kjMP@7wj#9^ zsjWzDMQSTjTans|)K;XnBDEE%tw?P}YAaG(k=lyXR;0EfwH2wYNNq)GD^gpL+KSXx zq_!fp6{)RAZAEG;Qd^PQiqux5wj#9^sjWzDMQSTjTans|)K;XnBDEE%tw?P}YAaG( zk=lyXR?HxJyIy5#F<-mBfTrrCsXD`Kv$hu&^XaC}tP8qf1+0V~SOvXBr#629ebPyr zbe5b)o4-JtzkpWg)b1~!7do~53-WR?U;Dp+Ht5W^72aF;z|`9;$WQe9WZ_fcY~e4% zb;8%f47d?)f?MEQ@E!Ord=I`4KZM23w-jE2RgNDh=Icuqm_IeT*i2pAOe))@u3hTd z!^7&v$f8~S+)Vx4O#R$U{oG7S+oiN!O53HhT}s=fv|UQurLtWr+oiHy>e{8OU258; zqFwCU#lBsv+r_$FtlP!9U98*1x?QZ>#kyUr+r_$FtlP!9ohqJfPFN|-(W`2s;@n-H zjXnbV!TxXvJ{}4mD;9>stPi*CD82E~ybd1+GyJ{@Zn5ni>w9gxPY-y%lAUS)2k75f zMR$0xsE3D&s@A+iYu@3CFNMb(^LX)0c(Qmd%;mYN%lYR#5v&AfNaFCmfm=v6vO$GOhOK}%QqB%I_LC&Q_5sqc~fGA4X9`t;Iqu=~BA)MSa6Uy7xsrRY$(P|99|vM{9A>(k|6=b>zGHtu52)F4gKT z%?}Vh%yw;|R(GjhtwXQYq4iy=XY0_jb>!#z?>xA``7ZSPV(ZKNe+66#*ZA+Nw*Lff zgWKT_xD$Q`KZm>Fe#gy(S@0k{43ENN@Pz;8!qf1K-_KglmzL*XA^a8=K?nREmbmUR z=mcEJR{&m=aiE+-15TW;e_Et}T7=1UOs->c9h2*rTgTiQ=5}Ci2jw~o0r%&lW? z2e$U85p9^d0#oalTF2B5Os!#R6%*@NSI4#vY^!5i9n!b9hSf2wt{+^aA6%p# zT%;ddq#s;_b#<((V_hBV>R4CDt{QgLu&ah$HSFrZt`6*~V^eyAst~z$rv8#?< zb?mBRR~@_R*j2}_I(F4DsD?o`460#J4TEYJRKuVS460*K4Rbm$r-n5(tf^y49aB0m zrH&yT7}AmNTP)HqFVZhB!jw9ebYMvxOX^tCfhBb;sbfYRD>|^E11mZ(qK*-DjHqKo z9V6-(QOAfnM$|E)uGH&Fy{^>jO1!SbYf8MP#A`~tro?MXyr#r!O1wjfcPQ}={eQW* zRmt8OrfE-(D*BY<93?qN3HB+yIZCfL^@ ztxDupx!))E`{aI~-0ze7bL9RUx!5Nc`{ZJuTWeR9q_ zaA6|?IW-s><@>-47dsIfymKEtRIDbD2ggRR`Iclk5zoE;$sybtN2*Oy(;ciaj%Md zRotuMSQW>rI9A26Dvnigtcqh*9IN73700SLR>iR@j#Y82ibqwvsp3r)XR7#7#f>U% zRPmyU7gfBd;zAV{s<=?ag(@yoaiNL}Ra~gzLKPRPxKPD~DlSy@M{|srE;V{;F?wo| z59>!w)BKJjr;n+darAVwJ&%LoBdB}*zE5BFkoC}LYL4TEMpPRYEBI#_C9mFWWYuD1 z)na7TVr11~WYv=0R?Ni!$p@3t+D-lkgb z1N(*+qqr8MxEAHsl^&`9nC;i1vo1&)s+x{IwZv;7LV68@GE-u;f53A5lqco-f9 zRx#zhe)RW@-$sD>66ak8oyx2=9INz>PikaoSW&DhT@N$hM&tFJ;UqW*z5>1Q2m79k zFQf2f6uzvt;!X2=(301UFDvn6&~g{8b%P3JHI58g>>iITg*r7?J3nNx+qme)lR-;e zw9>uSLU$S-eHu=OGvG{R+RU2udP`e34s_!{Hx6{;K)160$1Gut6Q0_R8Rk!WvN@4b}Q3v zW!kMwyOn9TGVNBT!!1kQ%5J@ET|9ceZ|Ki{r^PTHrP5tW&M`furCA7`n=3!dJkR z5U;qzdKq-W(ABTfx6IYI%niF6hwMR*I$Ii#98$~+hr(fSG);Rfh8$;oZ_>B(!ZY@t z4-4(T2p3^xd_Ue-`7XVZF4 zsw>%);w84N`PojzqcrV2Hm>>Ed+FT0h4+I4?e|fw&_P=HBmFnMcv3$%S3fsbKQ~uD zH#a-8n488(lj|QDrx}ca}x)3ggIDWd;K5-0X{FD!loz~=W z>@>2NC&w%Krs~}`#yH!`!R>9^5sXxoLXFm(M{CZ@r}`boSo>J-Tg=rj&ebo@r9J1- zo%8bP#dAukl7GTJCs?28TqimHZ0mEZ&$Z8aaH(ru=KssBje_$pT3=~>RnnmIjMZYP z*3$TEiS2O=w#+(?!#b^%1D!aJZEwDDSuF8dUUO_8CVpGSW#2326=fgma-TA;D$A;JtSZA;xBHY~tlxdgu2;GB zDzjeY)upUro$pgtRpnGwMpdb*D3{m{^eLAv<f@OE~NEv0B1V8Le( z>5>ae5vyF7IjdZzVI);6u%U#nka%D;Qjc~N*&KG{3CH4j3!5X^6UC?o% z*YAO1iH9i0WM#R+V#}7&CC8Rz6Rju1Tfm(VIk<#PrArPjNwsjQ^0+1ZVwdS+m+8u0p&?4e;?m}hltcA74Bnl5&luF{F{DL4f#z_|otDA%z_)_ za$YP}qKk9ZiQF}ER$?W)M2RlW547zdzi~J}#`<{pgzYEWekz>r_ZQ$Ih&AzQ`+d#! zYvDS$9%jIea1-1D--7SJcj0^RefS~V=N!L=2Vgcl1hgA_Q5Snr7kg0`dr=pAQCF@! zv1c*%EXJP2*s~B{f*0GI??c1gPzZ|{@vHkj5F(6fSsj5p=U8?$0TcvF(Hx>g@ zQuoG>x6>zswZCF4G#d9S_}+%=ZK(x#*0$IRJdf84gspBAnL7eIH-lO{cCWoeXfJ+VFug?H^D9NE%*+67rqDIhabXX*H{WK zL28wpr{=tM=k2pzZ9U+>o^SnpvR^I_FZjL4 zc(vEaBfyUO^!LCa`uQW-C`)ib@e)qGgi|l!RHs~uw##U@?8K?%a;Fogy5-DEIJI2P z#Jgmj__Q3Kmg7@5K6T?$H$E-Lr{(#z)b(QfEQOa~rDIpwK2R*jspaJn#R@6t#H!uJ zbZUzIGO_Oz`(kQ5DFv~wTP6j|q#(w8nV2sV^JQW>6w75|8Dkf% zshzKhU8mS}irq>vS|&!FV$>-{ono}oeGy7qUiQn&m0}XF=KeUfT%!2gdv&#yuC`J> z^~)#kMNx;?e&kWCb1UUdzr5*}_I_#am-c>FS}Cpl?)4v{A3qchgJadInbuv?@R3jnb-7 zS~W_mMnTmmrW(am(|gvbr5d$Vql#)&QBChz&(DE#h0lX);46NMBNbEAOV+8Dn%=Qq zcKvb=4dU}w`gQ28%mBqQK(P#n`5G~dcV-5}Fe;J(`tXhJ&tg)%^)3{WToo`dSv$F8P=2jGu5vJ-_d72@62tDz3@ z|6`2QHnh$SK5tPELsq$HksGqW4O!hhvygdCA$v2+n|tHgoqA-WJfrlLrDpB(Yprf? z^z6ewYH=I(9D@;AJ&(^MYy{D=wu5!Fu0_jQw4x1J(1xsMgU=Gwjlx#uU-kcAvz)#8 z{r&Y;wZZ%Q_3%C8;#TA0R!_Lp<#;cfQZJiQucyvh!~WLMs(-lkdRt0wxXJH(AlgzM zv3?Y~i`&)zyNr!{*_wK_19uHt-Hm%EDQEY-vnlK(n_2G;`-1bcKlNrGwa>wDgz#x> zC7*`V;S4wv{ubMc-qq7B^-=@qVM}tlq*pABgl6~OM?nj;!f1FSOa74EWedl=4c-A; z*>`K$7Toh^1M6i2>tzG$WdrLiNedfTFB@1d8(1$JST7q`Z)v#Ie$WQftK?bb^+nMl zzn#)_J`7lh0ln+&FulX19Xj&7&>m6x&aOGyFaa1}*Wu z*uoO;|MfPRUhU~!o;<00>ZG3E0N;R{;hXSn_*eKhxD|c?KZ2h)=WW2QmEQq(!q4F6 za5ucU<-V8Qu9w}ecb(0K9@BQE96aT7@|7sB0DKNj283 z?H83>IKZ0&Tf954#q*JDesDOW*Dqyey|Cc`9enYEswcuSph@ZoNV5$$H)Ma&KDOzk&5c`#xkbiPrwtT1*Ce zpA9W0%10l%q1B|GdY}>d)Mh=;LY9+-dX|MO4-2!?;S4wvPxpln!8H3cDW&`MN59cy z{!XbJszknPq+HJq)+bFbKAO%o;9Rkn8gQ-w=NfRX0q2T6(SUOeIM;xeUfr%&xl|kewk%Iu zSc=6a?l;@DNB%8sUW#EYUFGq0>8guMJ;p^k+;fZ8=a}x)hCcY(9Pw`(+w>T==`ryv z*glw|^=FBB@Vr+3nBqrbJ;OfZ?9(sRed}^CrsRE6y-3`T5cdywtLQZ2hv}GijHjNP z9J}1p2v50(+v)h$VX^2D(;hKx)%LS8=!d3@?`6gJSYHRiY|mUi?AYgv+w?ATvuSGQ zZN+2BireOisg`gA1$csS$8E(^&e|X3Fw|!r* z?+f;Q!M-m<+pw#DK>eV?jM!IsK4y-RVvA0?Z?$srj1LC(7#%%d-05lQjY5^hpu6~K zSc$oRGLn3SeJwZQpTvf;b@5`htyX0RzjuYHVz-w(npQlJ9cJWzq!>*JZ!I1Pbf6qs z9Bx+XzmVFyS^8%CcTVv{8mGDAqgKpy{qM0Ue9W0HWhP0pRSD*UT?~HxwR=>K{?Z^e*1v^a~jxhqcS6$+3G(bovx{5Bfs_ToO}ai8+I57+KTM921^g`%0L*_650rnA~p=^9SVq z{-JyATDdo7UheNH_eYEA>2iO6DQ*$l4`h3- z?UUjMvuSHes&xT+5fAC(@V`gr&D*tYr zUMN?)aQc4n@5Y0tQd{(-XBOtF)1OiHo-V_${}k7DaeYc$pTe)FaH}7;YN0gZtJ<~D zeDp@!8vAV;LUB{^<>HxQPSI05;>p;*<5NukJ9ge+*W$}VKeer)7${h-i~lHoUHm}! z8TEavTD%c1{nd|Jz#<7xZn&!!>92g~zQ6gSKN>;j5_<`)-U~ z_bGn(YUsgNL+4}itDj=_+EvBe;$y{Ui?PLX#l^4w@rD8Z!Uke#y+Mh!*{WRi#6D|h z7Hn*O?J;zk;=hXPi|-aU!nJZ^jO}Bz=wpiS7xxyAsvDuWwD@P=Tg4-aNyV6=Ui>13 ze_71et_C`8gXfFjh;kk^MI+UQlP34ejNu+iNF6@pNIV zwvL7Icf4N2FuoP+dFzjReMqbPzkc)PCerTUXt{b~sg_5j6?iy6fO+TjP( z@OaN+@Uw31E`89;Xrb4h75^x{vhM$Nt2fV~^=;trqlycM|JpF@Db;nK!8UB@mn#oY zc^Bx3^~Kaz^!YN{QqqErF;aTFr+>?QC+zH>-QBz0D0zOE%&M`U@xcL>P5DDO%ro^z zSl-48ceG=U(;mekHnge=Q*qSBoUNgUETDCXu^I={X;@jSLG~06l-yI7rJDcyh zDC}asXNN2O-twNX#Igr{wv68HvP?DWbA@NiJx?nxf3)nC=6$|D&iV`=H1D%9>|^fd z$gr>ZpA&eg**e=c?3ZnyZ66NEcFcAR2bu-CZ}_O0p!!yE&SNh5sxaQ98nV@TZriho73Sd33nboXu0iUEUY}=`hn=&C|mJ z=4+lAW|^~jL6~jc=7r%wb2l#z51GGtNqE>C&db6h=5byT9yOQq$}q=#&a1;?=5$^Y z9yhP^E8z)qJ8uk6n$@``%rCucM&WP0KYe8IL{;7zy3OBg3+9&P8--({ZdX1?Yxv-f!O z_^+~0nrHb~cB1!+Ka-tfR^`0xGiFvU$UbX!WoPy|Zx63#Uof|_JG;>Q%9YtgagJqn zvA2i+A-lwT!~c|B5#Jo1ebJl4*Jf9lZ&}K&Hs`XOeaU;no3d++)(=Vy&Ju$&YII?y{6py_%fr)r3^9#-)0- zX{uKvQoV|PL0*uSMV8G{?HZA4*N9ZRHcho_(^R`QPqk~4RJ+Ed+O>t+_2;mKnbm(` znTU04i&V$9NOi2Fj%^$!@-8yo*lvRQHd%e!+Me5F+k`1RiEJA-Pjzo(s(T|--5a0k z-sb##{F4)&r3PlH24<-SHl!NZV%~MHlB{Jlwx@d59~ybF_+uEsgT*UGQEN*)L-Jjr zmEyl*qt_@UASa%; z5vgSvky@4!sbv|FT9y&1Wob$+%g9n}S(;0+Wob?=OLJ;jnzby)I>T|L@C_d<3oNU>hg;32=O;lNetI$Jg*v9CQ!v0%oXB)J$?-Ylv^Q}XfcZzMqWZQgOao8^3&aCfuX@$pYg?9)O z&7a>fjN`LnC$oRw?XJsYzAJVPoA6(;i+y&@cMY3ssi)fhJ~PKh$M)K{_S*N}`QFm9 zkLP43n`^(ns~?abUG^c`aE{84a@6s;cdhVi z@$onZ-7NGm{9Bx0`zP~HI@^i)iQ;@xev9eYlGj$_Zy&liUa@(ZL_Z{hor{1U0Y)Dsb#@rZGmD_)*o zE_{W1M3Z^P_@eNYp5L9UNBOezd?o*i^IYc%i4q?f|Kf_*ds3prSH{v;iW1)%|0?`lPgs=r z*!VZ$?|IUq#Mg!~4}Tlq7yd#11K}Tf@}k7|#*c)5oc~y=f8u_~cz!tkUHCTlMaJ{T z@gKssyFW6XUylD2zQcWz@%(fARQOK!OUColahLGV+&3A|U&nt5|J?nP@%(oDLild? zQO5J%@k@EGAN74-exE$NKfhn@{W|}(@XUOs@B{e+!n5*O!n5<)!Vl&T3O|%TB>Zsx zu<#@KBf^jJ={}Lqk2%7R<&O#Lm3`}#FrUyp>=K zj~|`F`fPPUpDkAUY}{Uzdzyytk6vZepZBW~Yw|UCJK*V)HaJ3(_co#Izj*YHrviZ|AzP~l~{gdd?eH;}PK%Nvp(Eslz?$a#6eZc*N4+sYfAHs`RL(&0_Ne48z zLwLAJiybAMQCYXSXK;)yQ6)@CDxoc@gfaY%U2gjomL~qCqP^EqrPFwO_nmRWH;M#i)AzqQ+Eij*A`9dw8hVOs|xN_-edn?Swd19 zZRrgzA!&{V{>>h?{SkLE%k1NGgdekv_Ewj6;b$x(`FQ$`>pp84OY_gO-Sft_FJQF{ zNux|mZ+i)J$_w_1N@aZVWES``dy$sj5U@u4EA)K7C}G{?W%INPHVYD`LKR8m51{H;y2eNr~bK9jS_!kc89IP+Vw zw+K(krr5q|wyE%D?(vrSW81-&I7S(n?UcP+c;{?qSLb_8c(-gfd+zQoaG4jj_t|>Z;5W+ed`s_@;q3Hmr*t*&KDCCl~^cY=^incxZN*@Zs6v&Uu8p z$YtKyK4l9pY&6`d*{QBzR^`?x5 z>9!`i?T@xZ#nzM*TXRxutvce7dhTXgt<1}qJWPtMAt|;-KE|ea14GnpZNqe1K1{de z!*pAobX!x>ZRMofnv!lSC*9VRbXz&;wx*=p%1O6{(hly2my>!6NxhYmdJ9Rtm6Li4 zNxhYmdJ9Rtm6Li4NxhYM7ke)aI@SI2a_N2ij5YBxwx{r3rM-mT?|yo@^Z`D{ns^-h zpzz+MgQPT$5jQCvLaT+O)f$pk3rVXrB&`;bR%=LFttn}>#-!Dnl2&U>TCFK*wZ_tE zr8Ax9tkPLD)7ho7sh@L7=LmnM^cmsLmOd-|xzgu^&n=xR{Q1)7h0iOUCwzYCeBn6m z9LYb~7n~=KK1cFX#tM>j-bnt+SS^#JzBUD%p*VO!FLtw|S7O1f}N(uI?fE*z6| z;iRMs$3#D9j=i~bvs}HU)GIus6xH{n5u1`mY>l4AY#CCD>U+|NlW4>uXqr{%Cc3aB z92H?}QiKzeA`D3pw(>(Zf)Z-V)%TF)777 zDaA6sX2u>#FE%E<*pT#MIqAi=q!*_oy;x3qv4P*S-So}7=PcHIpS{A-_Q1G`846EGDA|C4Z~Dso>XQN z?`a?NZ&aCO{?iV3T|U%oiHdVnQk-qPsU7X#WAbC9msd6aMh)7OG-x?#(AK0u+wxE5 zpY(6kpcC_`L8l}Q8ir}mJYTOt^Ze5^Xh<5goS&JiDM^WzlM!vqPU=TDU!L7mfpT``3u5}@uxr``(TsIW)!t=D5q)Y%i0&Yr^0UJb|Uc^$|4@;>3!`D)>)zeCdB z4M~4bO!|9D{&F<<5;YV~(%h0-=5IGC@4ypZgK(oK#mDl8opxeKj&8!P(X&mMdhWS9y*qr+_s*V` z(@3v7XBHc1XOB^g?+}gO4e2|210GX4xO8&)pUeMRexlrw;=meYlrTS3cz69KFRTv? zc~VVYRR8@=y}JJXHGW-hPJUg7A9Lqx{J_595j__y4v#oG(!16vL1dgtFYPaL+|YwuBN^Y z47cFQ3E@Z7)aSxIl+PE~%P(eQdRqNj?roBTJZlOWMKj2vpJu-s#;IAM)Io1!OO@NEmU>`o*pQaVP|X)6N_A}`Hk8l`^IA}} z>`{|O_j`m~GZ3=M7*$lDCT?!`5YnuI^ATh6$4(0UuIB-Se6(=S>9Hf;%STp7 z3GZ75=k3N$oHpj8ne#tFDC7r(%e`|)kI4DGP2~u<)*H^p=fVM-WAY`i-yik^awip( zT-!_1VgEHkinNJ&qel4UoVo(z@>mM4nT}H(2jP#{>N~~Hoqe;D>#7A<(Ezo zY<=A=L3kUlza_tJH4+hI4bAw2d#pz4flhL#xADR%xwrTv(@D1CoY@gru0gIS8}X*| z4hSBBZz2l&l`>RaD#I~Jve`q&846o^fI(duscNjisoZ)vpN+D_`$oXJGwMd4Lc4{&=VH)M&H-KJPoaC9%fG|feAVBG~^OCm|AnC?Ytb{ua&ZE>~1lXgTg zY@4q^k>d4xP!io^xX11xX>flE3L(j8Htc86)~Jg67M-K54KJY8(`E*NB%pq{0yQTI zhHcygGzV80zN0HpIz5a0xW~wcevfkSQo}p?tKk~$hSmHiG?e^=E>IboPFJJtfOi(q zOdy-E9lT=G(v!bi|Cfb}#!gI4y{WIm0=C?PoFryO1E{guI1C(9WS|`WLW1g}n8Tp^e1Ha330v+c2EyM%0a4 zY`6_DXK{&!pXdSP#;pTBIbe9sZ9~K1{guE2u5i2~z0GKj>H*F+bP;M!(@_C~nI1<2 zp}$81tsVm(wgrA3EB4ag5jIqW+*PGUyC+hIfYT8|XRL z7mbsBZ+Iwsj=J&j=nt+EU~@qoxQm9v{8{L`uTh}LpDPSsgNzq&kI-OlKT6|nM}6K{DXe_Ou3QdI@OWU^u|NGJFQ``_scHflh&T z#BhhZ0DPx|ZFa0V+Qw<2PcFlD8Jf$7pai}>islq(9rqlrn+t6gis3uJdb!~j=-X&I z8+GPq7{27o;U2aR&jG!V!v_N|&PA>Gi$LQBIQPBb4lOi%%fG>s_zNXC$|AIbAqgv>D8}yR4L-nkW;JHbBH5$u10*&h6+09Wp7mP;IsX$u; zN{9aa8QLGv-}j*Xg3#M|Xam{%IUkVYLm*eHQ3vt_;QIphI|EKKz_Sv?^KCKVvQV{b z1kimq@Zw6;1#pSxu7Te97W%9P{m7-EHCzVz8tAzN))%=KXbZiKlEr7tMDeW87*B9z zs4wGFdJ*uwXn0O98EQ$rVJH0t1p~~%@Z65PCwj?+qq%e@x;u`ynJ-ijcG>9YD_>g9es^GM)Pcw9%k|FF*t9#!W+y z__pXBd1F|Pd!Wz7mTI_xdl-^QF#4Q?LGv)&1UsA1 z=1+b{wnUFskPpx%rdRkh)S2d?k=#Xen<`P3+!}PJ4100S&}4ojddN4Rz5MTJ2R{>I z(77?dqapN);TS!NJ^;R$AgcrYd(@B!a@B{90KGj9`h5b>symv3_kylkhH@DEviA*I zStZbDo8bw?=mSy&y8jLuMrH$^8w{RUXV{E04L8Z3IF9^?Bgjv<6_sIo+7lXw){@uQ znw`UIZ~(mj9`su)z_T0R(27omHUQc^*#8r?5_M81L}_%#s^?a!H$h*4dCm|>=#K!ZAF{N?BYK(`W9u2 zHj>#%Q)4#LyovfJ0p$3vjoC)CCfY`3|Nc{BHWBQhd1Lf9Z=!A$Z6RD|xn{P$sWCeU zjp4-J_t&+E7keMW?;qC8HvoR`BI3+oVz~bgYvw<|`_=z(4Za0~U8EbsiP6wvZ8!wH zyMi6(^FXJiK)-??!fYEC1Uv@*0P{zfPhead&ayR$GVX&6v}OIk-tpJ9cntam)=8|7 zEY{%5Fn@yiG$hS%%D4tS_yYJJe2o9PzJ=}r4~;SL(rj^^i)OQahxcUsZ`Y###C#a$ zKe4`J>(fZVe3`$lnNPud2+;k(qW^Ffxr6MwGZ_@+naT7&H74UszRj9BZ?Wx0*=F)> z)|hOYH&M3D-@%@3-XvXO_Ac?gOs|+Xla6VE!%)t)shQ4UdPiyuKB<|*C+Z=lizI!- zbduDDp$bVqnd8v7&GZ%1Rg%79It!XS3}6!V*aZ;k#E@D1|;jsET<=G!(N zH_H1^<|m2o13!)NrzlJ8c_1(By<%g&kjd9){v5lW$%P0L$fBsLz^4=8Vmg5N^2~o{ zx{1j-^LLCe+!OVKQJ=hE=RiNlGudFWDE1rk*O|Wr*GPQ)*R{mg;y4G!Kj6D0(VM84 z$v3mV3@+yDH|nVb6v$se#WDvN8<=31;1c~$kbTJql08I8@~MD7_=2MUCh0U$mQcN@ zQ@~eb{vF$He1}OlO7bMq6!7CrehTw1MW4|0Tv4w8T^iStE|GjPX$?Lm^8=YbD(c|B zuE95@%ztD)Dfo>d-Pza$#x@-Iv7+DkAN2NLVgG;KmvH@mU5h+t)Zfmaw}1VcUX^I` z-`3Jt=D)4~s!vU0A88EqpVkuJ{cU|&v~BjHZ2{h8ax41zOh%cX&tw7mgpDIuUrB2w zON{>|-jIA&7oYrMH6@NWhg$Incjq<4ri2;&N=uZ^&wLDD-#eQ*g`Gar@t zd#vHDD2YWeu;~{ht|M@Sbbzhh<)%F~tfMjZz*vQ`tGIzNF`dNN+q4zjcm#XdczI#m z47)TFkFjf87|%Mu%F4JI11nedRBs$&-FN{zXMDC-m=kOV1_lHM2C|zJu1az&|16H$ z5HAT7M*ha1NbbhH#tl#SHSRPb(R9Sg=^tq%Uf?b+8RV)U>;Z2jM)qm!ji$#ij*kX9 zag2n(Dc(R6MrYRfHtdg>F+q?GyF7$F3}6f3yvF;&}Zlg`WXozB2Mt&V8F5; z9*)Q2*|-!};O$t8Ut$A*l|TlQ)8s?)G5Lo4N-?F>nmST{T27bI3c8(Y=?Qv{eoU{^ z8}thEKfrN2;CKj~M<1dF^gVhB@kj;qb`Z#RH13bHajuBt zHe3rhz9H@=9IpV5w*f~844ZJA4>+!%tLaW!M^Do8^eX)q;E1>&E{aR#(z#JwJ~y3P z%zeh)=Dy|r;0f>KgM8Zgl=*D)dFAsP;E2>pwVPV44g?%y)U6tE+zB`yu)s0Pgrk!g zjyWQZ7;t=NFmU#q-0(X>hHr5P!+G4&a1QK4b7=n1e4#ai<^@d&O=VCTu<)DkJst$K zLBa?j87UZcj>#Ot&;AvwGW7rjX9vU{JzI*fT-w3@s3hfZIozOPJ z{gu!l!|<*PLf>`&&i3)C$Il=4e*E+?dI))lhrJ*6df4M($45>NTR*aX81s-m_!FY$ zpF=BtF#bXAgQ53VKIr=(=>EKWd+!(DFS?(1f8zb@`;|@i=4aM&%&tLr49+*-H{Zs?*dAOl7nU2OGk6p1J%;z%L4$Y^X$S2i zXt$v~ldh81y?46&$sbcFI$M&;BBB+Z7}Qacy} zJ5Wb-p4!uNszTSPEBcJOQFrP=Jwb~91#v-d+J`nnpHm-nlloFMx&@J?FVL3|b@QWM z=nm+l02)YxXfSO~L(pCH6>UL7LCbxQen3CcF!U38ik{JM^c=ka&G(W9{z1L+_-m}cMr z90*zg(>I`Ff2vx5;`oX5XZjMi!b!L_{S)H!ZRx-1Ynn|*(2=+uZqLa$ zIZnnMIKol-3w_0L9FJ3QM>>&CqLXPJ&8JgvC)}C-N`IpZ=^~s8d8Ea331`FE;xt;$ z+0mtR8P36@IS0-jPoq!p3|v7|X)oFv$?$97T5I%gh;$o&O(`+cfqz^9k3+7L2g@Tz zR&c)!vPE{Fn;noNQXnVf4EabGq=LMh8*)b;$P;;i#cGCpkT2+O4QOzG6o3Lz5DG@k zQ3z^*LQxnBM-eCzMWJXEgJMw}YKh`e0!l=!z(a10+Mu?m9cqt~Q3sR)`O;3PGfG8W zP#Wrrx}ol<2kMD>q23S`?}PfHeyBehfCi#LC<6^fnJ5blK||3nG#q7vUI4koKjU9O zF7+UV97rG!(kCNU#D>@rTVhWfh=Mp0C*lm!r~-L(1smc9a_GS%5l==C4MwBTSkOv^ zXdaq`#^F-*9?HebQ7OoGIm*W?@Jciq72pMU5nhNcK<;ilnud;mgfBv~(FimVFF~vE zGO%M4&~!W%KLoAu6u)C~$$ASPI*!#|mZ!2&8r8^BslMw`%Pv;`G|-Q0>cYEf8st#x`v9mXpL zAIF9T+WF1utm*J!;aVJ~R(BrPNsF_?wIoc7TWG?yG)$eUrGcq^GyDgu%hlywbIR4J z>f8}IS}ssr!->)5gCo^i)GuQkEc<6@w8?|L8aGD|9-I`e<=A834!F8}Fg#$q=>f17 z4@K(3wR~82wU!2@XY|R?mUZ&dCU+X_rO~K6YtN@=XwP@@(hMFPu9Y>y2(Zo?=Wc{n z9;TJG2-jK}pU^Kuo9v}UgUid=^ZI4@YqVwMKv}M4b!^9$}X%f7%x_r_scku z401E-xD{I5KjQ>a(I4^$dujavSoPxL3ZR?m7{k&&Oq;y;xEf_<)VZQgUMCe^7@0f1Uu$uT_DP8iuxH1(jtQZ@;uas*LgOiJ$tDf% z9HWG@NGF%e;aNr!>Y}Xid%AqKP+Q{yT^ZYIZwrgzY*ESNme=!hMiozd}@nkWnCl9ECCW5ufrE}>9`V0nNCEN=>p5G!< z$hyg{$m8VQ3*)+yF|tOc7?n{u10wh^`^ww1P5?cD9!*{!m>X0Nu- zwZH5T;jqEss-u--yyG&*FBDda6vcSOT*ZFHO~p$m2d7GB>)mqhK*C^KwZp1Cc?YO(0dxraB_j?}AJqkPyc@h|ZP4ukyyzSM->yUSpca`_a zW+R)G`FMhdTH|xgx4?IqZ-d%d9iWa^4^baif2;mY6QGIL%+;*WRBJA3zV?gr+va!M zKhuAIfP26ffg=Mq1-S>62fYb)4bBX%4*sEeYV(?qxR9GItXh<`coNzxv^vZoEG4Wu z?0VR%aQE;Q;kn^!!*52&B2ptVBPK_bL>!8^8}TfXi;Rj)j2szR5&0&ndDO(HEm2RR zGonw%M8(v^2E}H^-i_-Ow?FQ6%j}kwEnmcsk3XN_lQ1*kW+F*UOVqXsXtl7_>!k5X zAGPk$y1tE1n-y*C+UB&aZu_oX-*y+*B8Wy0z)Hu-i}F zbGu*f(YMFtp7A}addYgF^*YqsrT6r7lwOv8y-)K#m3?jc7WBQ_FSp;T{)-2A512pT z*}#Z_1p|K?l${Zj@py1SCYRYib4TXQ%vV{>v)X0#AJT2e$)W0@B|~2f^B&f1*p6W@ zhxZ!3Kby-Ql3hPSF=Fb7k4BCeg+_H7RW<6joL)JVqisgd9DRFC)R?tn(b(~08*<}v zt8%MzFOPE=H+4K2KYjd*3H>J=pBON4)g&^hXwuEeVUx=y-^fe-kALZTnR)qn<#~JZ zPUkh`eVzA1zFmH={QCTx`4946PB}m2-V|Y~^VH0#+unpg_GWs{^qd(FW+u*@J@e?yZ)e5L z%AK`#*5z4W%ub(uw$!<_sPtN?P!?5IR<@z+@to8-o8~;28!$I_?)7=j^CITu%sV;n z!ThlKx$}=NP%J1}@MNLO!oCa37Jjj)*P^mTCl^~Sj#<2730cx@$x*N{Gs|Bu%~`r) z=?}|>E!(x+Zh6u2nib7gtX=VV#k-X~Ru-&0y((x`<*MuNZ>jLCD6eQ(-EMX2>Rzh{ zuCA|it}LtkXiegp^fkF_%GOk^(XF|*=7%-Et+iVlu(r+GfomtPUAT73+T&{**8Z># zt#e-&wXWN`k?W?ft5{dF?(({?*Zo#yQ>Cs-tm<2pUp2F;qH2HD`KsGhFV=JGz1PRD z@3nr+`q}F%*Y96{asA!(uQph1P;W@wkiH>z!|V-fH`Hu6zTxtQuQ&X*(Qc#P#-xpX zH;&&}wy|pCp^aBIe!cOxO*WhSHYIIJ-PCu}_)TS-sx}?kbY;`MO@C~5*zCDEW^=dA zBR5aqT(Noo=8K!}ZhpD>-4?4Y>Mdbg61Svp$=y=0rEE*p7VVbPTRz%yZ_966xvef+ z!?t$Xn!a_&)`G3&TeodJzV-UnCtKfbbKMrTEp1!&wu#$HwyoN>XWQ9rUu=7^o!hS1 z?!CSF_PFgmwvXICdHeM33%6Hn-@pC*_S@TE?y%b7vm<^-uN}EN=I+?Eds+1i*~Nqxo79uoi}$r+r{nj-W9iN)vjl|<97GhowIxT?uy;}cVFK9 zVE3~<+#c^eF?+i0$=*}6XT_fCJ?Hn_-t%&=Y_HGW_`SXMj@dhVZ`EGy-Ya|W?ft2m zRJ&J4Ri{=Dsh(QBxO!W4P4&g<+tn}kS?zP#*J5AFzRZ33`)2N|*tdV*(S6tU-QM?N zpRnI`zu*3({eAb3-#>r%m~JP>st?LhW{k^>b7Y7QJf&~V_% z0injVCZeWOO?u6cn%tU#nzEW@HB~jcYR=buRMSv%yXHa74>d1qULQmUtqv*@ zY<@86V7G%g2WK9vJXmw^;=y|dpB#K~@Q;JSA@@U3htdvZA1XOiacF<7YpqXhVr_D5 zT5Wc1No`r};@VZURkhmM#kL6n`>uk=WCZ~cWF;+ zFKe%9pJ-py$?Cl8;_75_--AkR7&PAuzCF;8AM(U>P7V0W=yL4LJ zdEIT@%fqt6K8J%2M;uN&Jo515!_yBhJX~>j%i;Zpb%#$LzIgcV;a7*>)H~NVuTQDZ ztRGoFzJ6|fRlTnMYW?GS;fVW@s3U1dh8-z6vg*kGBNvZcJ#yp7v!mQmpQG_ddmYU= zI{WC_quQfak3K&7?wIGX#ABU~r60>UmUArs*vw;#k8L}4{Me0SKON_edmoQK-s||7 z__N%hI3lYLK4JURd5 zmXk+MHk|z76nDz!RQ#!4r!r5CIW_gv>{Dw`9Xj>VsRyUtoOV7PcDmE)VW*2uSDdan zefjj)r++(RcP8LWn=}2-j6YL!X6~64XEvPCow<7E+cR&@I-hNEHsx&Q*{NsC&#pbY zbvAt4S1m+y=nGzZ>if=2t6~6sSc#8?dLEs(9kPnCiPsIyH zOO?iV*ui7%>`m`bz>Y%NA+ST_rZb+f;|V)DS6dpYYwwDO);qfTx{{$^fV8)}a9oYMmRjRtl|egI2{*@dqsY z6Jo^{OJkMLaO@2}%seuTQVdb_kZd`4x)Y2Pum;quC8Yge$B*Gj{j8mw zTWPHoTDu0F!rITcQ>QdTfm&kj$FR@^8SnE`)P*!%3W&uA1qTHs#K%KV$z5IL{_#Qn zeloet)eUxJGP&G80ZzxtTw`P6$#Lg?vp1A^d7fON9;GfT@GbJ_pF3uSv$D^Es#%`i z=T`ZQ^jWyxuh3`O_;FkC*eQ!Tq@3Kh_ln|^Yc4-t+>}StZIGfayy=A2S5X(&v>O$zjE|3vag_tU{(cg&2?<6@;Q!$q zAB^4fUc2%}=ej$3@0>JdyvJ~5T-OfcoE?>MT~a1E;Xz)zCW|L`u#>}-ElnrW;H1#H z4OO<~suu03o7r>GF71pVMKcHX98yv`;N7PS_h@JKTD(g;b7;}5fxU(o%pCMQnwuI8 zd_qwu(2D}S{2+GF8e(fAm1IB|nM5UT*zuMG#2t3r8OdT~-ari<3XWl`=H4>4vX5!b zRu0B<9>#;N9u9C&>#eBsZ({Sk)73ccJJLiEqhi=`!y#=r-2 zyY{-Hoqb}AJ|(pSerV%6bWQS{ZCvw|#XV<*jZ93>nG3RZgGBY}aOQG%PBj8Hjoc9RDO5oJXi z+WU)?g7II@m3afepc zpv4NUHG8^7t^pOQNzf=`$!I*pzn)b|J^1Tk@;5z{&Z!ArEmL4ky8u2R z{(eNMbasx7ai+mWjYLIdoItbM{C;4|s>BYh|6Q|rMZ(m`UL|?;pzW2P6bA?qYzLHh&oCoMeQM2RiT)gc4D75cFhX z&qYGCyHV5X2xUj3qIrMJCj{azim;9FjT7D}fFR@w8+A)MMY~g380-#dfGqOsHj29U^flr^er6m z_1RMts)3_RcDhX_o=*=|tnqePH&2*DNb)e^UGd@YrCW}#lb!wjtNPhLuNT@vvWUSQ z3w^g4;ARmO5pE0TL(;7ls*(6B81N)gtFUk;bhgBJ!ouk4Ttf&$SslU@GIVkR*w(*e zA=+Ovdjy^Dk7sfv`72yp2jz|0s+vgLA8lN_shM)-$WdLD>L0hQIi@ahpEPCCW_OP< zvq~s&-!gOghMfy!y1Tc}OsorSethO9Uwn0W)!rSew?K(8ku71W;`$_dL4fgZyiMS8R{VAwhcN5YtD!f^NpCWLn1(<43?9I1F8dE3%lxHIFMVj z^@(`J7Csz*ktOOqTl#M=KnUh9M3nZ&)v-k9ds00et>36;}pie)ns=RWf`pjSu z0)oZ@KINhe1VdC_w18XO{Zwhk@;s5xR<7e$?4)3v}q zF|Ka%Akl4;GZ`>q!n6ibf-46`*T`SwRMM1yuz-GTr(ahq+N|%lW`!p3>DEpATO_r> z?tz2Wg}L}on3B84(>sg*z~48=$47s4WXB%Di(3zbUm&|fAwF+~Tk5OwGfQv(^km0j zF-?fkH^4(bK%dz`21CTq7Lc-)Fl^)?WXpJidD~_J&NLjN;9~-)psDGX&xBvIeG8fm z!7Xm+XE~8Ke5&x9{u7~S#tb}_^vC>o#B2QC21B?dqfoDKII43D_hKhi3W!`cDmnlV6iTBg0;5Ro4mi$6M;VB#G~1@t zo-1>PX1RyHtlo4e*lXu|eR{YxzrS(WR^fHCNqOUrdihQ$%&lMKHFU&~ZJu63ax%Ab zt;!AthMk#tJ{tjHVCIGr1OgG9;Ofd8 zIFo{sx#Ha7Ga4lyv#QUAP5uFI*6!XF(y4_Y)U}!!9T+ik$I$hm9)2T>N9eq~Gy6Tb zRz&+|VAs3fVL#y~;hiv0crCp0ZI-L{#*Y?eSAE&=+rC40p-Z9Kp(QAQaxM`vWQsQk z%aH=r(h69LeJlF6w#?YFYYkrt0$vW$?O-^sqm@{O9H2$w1R+dwL!G zla|N>92EC@U*KjkR5u*M=#PjV3g4jR!P8Kf92P5++oH8*KA2qP1{GBa3D`}Jn~ms? zw|eR?Ir8K>?@m&@WZuFbbMcI>p12t5#aSQC$GholnA1cdQy2uZJ_rrf5(Oll8kvgu z(0tP_yn^vQYq|Q#uB5`aq{)-?uO~5n$DpSRA(t!RV8d{*iL_xj*Z>X~z>Ne~f*}J- zKn9lJddb9t%==O%U`GO(*MyeAS3F5y-iFt^dJ^9e{b}z~VWCH~r?8+5E4*aQ0Dh=& zphHBR8VxdB))sTrfZeCr7^Ybyf`O2mJQiFu@YdtOYuET8N}M$y zKyGk}8i7*QsGYGt6F?{4j8x3^lWO7tIlj-Wfj<($F8 zhy8Xzz;TIjM1Ns^wiV{zUBL6PR`3@V2@8bCF#nz*QBa++7grOx;3SZZM|+RakN_9= zmoNwP2JpacUJD#-3t4562Si0K=^2XKaMrmS< z1%m{zq0IJ+0UQEWA9Q#;%uOS$pB+1XJwB=pcD{J{6YoN&Im_nX36G9mxMudgM0{3u z{{>{-?SF={jxNHxZ*(6B_rLq)SK-^blT4Nv-A4o6tzq0_8pl}pFLKZYa;6Kwf3YzG zRj#PBZQ2DP0dpb;bE3g+6o3R{Lj1|DPk)OKY%5&9D=fwSBmOj0{W~%!>fj+>E36b= zoe^#bCwcAow|+SA`|~fcpQr~JJiP%PTgm!a#62Wm!+Z#;vmq?d!6HRwHj!yyv!EZ- zz!V%oageH^ll2dZNxn+&iT%j~m459c;!Doy_vHdO`iG5h3=-*Lvcmr;9cBViYPAw1 zK{wnA|5Y67WEO;iL9z*o3Hp1BiU5KiRQeTDi67akAItz?)6!7}@KF))ky`R9|8aDw zbEGyR?ut5dKC%oC>U@nC`9{|Hm_rh1I`48{qDy?&u<$t+v4ft z01wum7sdV@YG&spEn|U{B;ZZTNK`o->)n~)`@7dGtkhOyO8o)ej&Cplbo9ELi*wFi|O9A`SG#H%nl!5CM+8 zQH=eI;aYZ|EBIztVcQYvd73Vja1jUB3}S1Zx%PE-=ClUDjP}DAXHB5}i~be*-NyA> zLyG;f3bLx3@!Ge~Zhd|C+TL|XplA_8eGuYi!Mp6CzNd*G(z~ocDy^g)3so%!)fp7F zL>wH+jfzGdsf(0DJbXAT%*6!c0>*IwT`Z1uVMCY&=AB{|=i3j^%3-nDE8kCJ`!q7Em-7L`|e=Dg=nv!?qJtH~pQa z7NKE@z~W^h=ZJaCXQ3`j z@iVy89feBa7xEi+7oPn1%OAoI*z>7mLo$IrHef?ij1;oyIMIxYJc-3{y{)CD25n`g zynrK_f)oukSZ1Sz*5ITPU`xDt-|oN`FHb}oA?&QMN zwMM#yigZ&#Ri24%77?CCHxXhvZcS3k97PKS367r}V!h_Z_ixk-m_OwG?5gk)vHt@J z4-0R5-s}0Ji|W77u^aGNKfV^?Y5q{(bv8&G>jG^p zBMFVPWkX(;1d{s)8HavNwC*^M(R$UP>L8Ehki&WVl$&$CTfqZk{nelP zk2W7V6H@FmZNbQ`O0OY1b!!9sp6xmKD2nC>ZC^CH7Pnilx<`)>PVcUJ_UVQr<=Kl@ z_Uw7}=>7vY@AGF?v(L;xbuQuxfam2<*ZFsyAn8Eng_t`fke}p5-x%l%qd{)CFk5(4 zh#iDd6)oXY-<;%A#rOwCLq*wVdNJPkd<(D4LjN~9MfOdEVNxXH80Mg4j6)G6H|tuY z@W-j@<6+m{yB0WY?yRf+*Ldwa{>9fne+3~r{@4MX7G_vubQN$b2i&YJvcZzMv3R#M zG64Ms0R}fW77v7UDQ>Wq1rm9we&YCxrSAsfL0tWtba*0WRq-+~c2K2e()SjAm4z-9 zLub-kCA((9`&v7uQklw!L5CwFteiohl;8*smW$9#C9=+V*~AoH)*g>7*8h7_M_v{# z^q&}Cgtwo^7dXeazg)zZIL9~X+@QI5-rIcuAmjv~j+o1VO?#-n72j*&Cs?GfEo_sd zUv#$Cc8q5s)eIoQ61pFjat0`~O8^_#C5&T9M;TteLU6_Q%l{=4a#rF$g|{nccTC3U zWAr|x1nU=(ZwX8|zzAkia9aT;Yp5vxJ4_aRBf+FYJaYw1FNLTrjU^E>{CJVRWk(8+P&T<;4|3F19I_KsN=YANM3GZ|lJ|cy(GLWYLF()LqP-oD;mhK*q zEtYxnB&S+tbQFF!8o9fM&WQ2`E=<#Qlx&x#r(5rSw53``AEcE87K z|Ab%&>+AKxNBH03`-8=tAEbal)o@J`1?Jm4fD6xn*Fz}7{}u$kE(`aZ_F>O`va;7{ z<7JNlpSk1?fq@S6lmB1)NeZg4Fb*-Y0}PV^A`1Na>l8d|KxSSHk@>?DzSM`{hyBO^ zBaC|tRiqR)DU2>fgrp>sc~?Nj1_({Y>)WWv?ZBr$eqMC?41OKfzLaN>jmSGP&CK*Ru8Z|9uR#KL1aV%2*~@XXhb~%a7l9M=91|$-bFr?=}WV4 zF35LXP*WFx?*s#NqaO`n@K{s864Iw)avwZwH!;R(jM|be;N-O3pH(u&+xMs1IxqLW zIRn->O(d$XDi>C2#@pKxp*W*9I^xL0LrP_G%dSD`;|`Q>+rMD?j9G)RZ0@m>d-c!T zC>7--uL_M$tMMbrcEXC^|wA zX)-frjNzJ@V~bgCFeq5g{Bt*B+~1!$Z!$S`6(jz%e_X@nKBa!4qj6%SJ%1 zdmw^qfrzM6pi|A6Oh>ImJd}=N>ctWdW28CO7_@*u0E8(TZ8CTqxN_iDf2cM#i50jUu>z~cg@I)UBD(HpuZE; z5Si#N5>}$WNOFn(jj1HYn2j1)Mp>jBaxNnMEmKB}{@&*FSF)t6E2PY^zsPmOVMZOt~Ww9|;9%Bnt6;QM-Can#Ww2LNfQ0l(u3f z5>&96PYc?>k4SwW*O)Rz&^0V?6qt=n9oR_f~=JSR@?Qy%NzYHRb+ z2i*w1ZlxNm!q!*oZ(;fGpA-+?@p1da0m<;So$D2R#L^m(e~LjRc|l^_O&Y6;Ec1`O zq67`0{40Kp@aDmDD}{M9j|J^jP}c=k6Le$(NIjEwHz^;+5|PE1m%1!f`|qCV5%1yW z6y%;d&Q*QE<-%opYxJhtYFq2kGWpEBO{3q18u>^qbf>$3?mjR-XR4VdmEaP=mv%%m zZ*9_cQe+(DSah#JKbe(f>D;|Uw(_!Yx*2vB1z9GxN-%{4So(zp@}$&^DMDZj90QMi zv8~@Mbx6*w@W%&Rl}EG;p4c{jr&`HJ&+qyEvdH3)0gT_qIgc8cx0CUk3sz?Is(5?z z{^MZvIA8x`TZVJVsla%j{+ydd9Qx({0?r+idC0QRQjjGVm|-N!yx22RpNUSHL;*rOzQ-PL`L9eD@mQVK%2N0QeNPS$@UjU5ieK1dt>b%zE;YHPw~zkSLKcF7apP zJt6jR(e0vkMSewG5{}ys&oy`o-SG=}t|Rya?fya2iC9BdTS%FsLhID@4kvhrGxOh! z;T);&lIt06{pz`2+?aa-QSq4&>ngZ|fY17K(I@#}}o z%@3PjJUJ!|cg&fQ`kA691tmq?lRV z|5T8q6jQ?x8emZ($>5nhtwR4lYWM8dcm(`jTfNV($ZK?IQJtrUCzPUSJ;=nbuv~c2 zu=N`#`c>T6`}tQ}x9+<6)n<^pdqOr{3~-s*ZP7YQgc9MBc0>y(>08N(0tWcMu-h1% zXYiYt=8^xS+tfGi`sTi~111#V&>Y9arRl5Z$CQNj1w|S)Nja{6-sT|ulOX83b=E)O z?=I+?F4PKluuXoZ{(jFvcg`AV-34&kXu>J`A82hM!J-IAI7yC)B~IqGEC0z6VWSPD z7>$zprO`-$BQjGHFjlx#JT882HFcBFBo*4`qxp|i0!R*d0b=AnWTmK$w>8=2p|`<%#i zMYnTZ_~^xboC0jLmQejPikFI=$U+#J5pI3AmAcuL0dy})1UW5iVqkV@ngD?Fr~ z#>lp1L6jCeZnNwb;HyaxVo`4(__(?FsQ1THh`a}#sN^myv1oO6~ znkOCRoq^U`UQy@J)Ne3~GrBtFv8h-}M!NAW*AAIe5Iw7Cc8m7Ihpdj?RCIeS9WeOm zOH!aOzp<%s6t#PM1$dn`4-yBLg7ocS>#_SKFeZM@_&d?iIFN60W!s?+VFe| z?l{sH%TjPai4ZwLLuH+X(<6P0@Q7V_H@Tw^uE7V%owrxW{r&iWUc;cph8IAKY}mAn zQAx0h5J@{0eI#}z^W*+YjEY4iAlL$)#0eR8D;HLNwxm)fd{d6gK7yHT80+-U^mp+k zEVLm(#K<>>dhoB;iS#p#CoKkM79hR zbZV44i_w0u7sUi(ySf-ko?M+Bv0|W?uuu(PGX0c$6MelK`tbCw% zfJ<_wJvVT&OMv&bjWXLY1#SV#(fvBbDFQs=vxEX1^K9S4+4K9kEt>YI?)#YT%|BfA zs9;+_^Bv7;jKD4derH+IYoK~&S zq6VFtnneb*Zjt75b98bKH+B@9X$QcIm18n&jMxPy#2RxEv2r(vgZcnDFd2qTQ3vNx469GVZnC)fE|+`t+^1=J?8m=N2POm zdzF_wtbGy-9}0kP7VPHK)CIoPkcf1y3aHY88AE1SV^+&+R;tLfDC7+xTBT5EJsPwg ztTfEXbjI4tV56^T9IkO{*KH#^jZX^h7MeK5aiD7B=#;$p;I85EV-@7_!V_t|TEM~t8BW*Nt+IOF*3Pw@4r z!`0W|yJUACHT!tASv&^={D^)JxgiZIFybMq1}V-gsc!Qitj?Dc)r2pkvwc}Q8y4nx zvOEAJ1gynmt9=7Z1A?@G&fQnM394$%s)wO(8K<$xbSz^>W+aWH2&oW4BgZp*+|nY* zAeCOBlEn>m_gSl29UJ=j>g8pA#lAhW22}XM$U;Tt)V_DJZEmi^Qn*vn zDXnMP#*E$R7bg^dlD;c*bK8`zDf_c@eXmTMdb!t@!DPlGsFsTU*F)?hG%$XJuO4w_ zpj+IeXp5+7rG9n=-_BLqkxVEQQNUzB_?k7~dDM~jiuDIYetN4%ltIu6Y+>Y^}U%P@&8V_+wSjX%^) zg`rv~8x3mO)p@9cm{58|9(DBa^@#MKL+d!R)3!lscG@-)CZ@6?$~tGWla`f!%;t+3 z4U;A^MQsBKlUt>;D7UN>5b92$umeE_pzDs(88f|=-Y4fwo93SFoI0R?sf*IJOGcmZ zN_}zU^DnOA{P6H+x2_4RX2#+5e?G8Xs=ll#KHRXqsvvhyY02WP z6Q?c^?lV&bQ;U4@dyt}jiM!xkLQj}tbX>@U|8xQL+67Wi9f5yYUTC(FVqye`F|RDl zIFB$=r-Kd>ScuLh_&iD%Z+cbM2ghTD8rxA4Z(kPaZbH zv%Req6@H1B;@NCYhin^%7UZI5OYfGQW{u6C)OPTo9-VDuxijCNCtQgi(4t@W@QR-C zol{s{`*isFy*>PY9YMIja1Y6G0s0fx7;VRMXgg{R)?S66RNFi?3OP6c+&G0sLqi}o zm#BZCg733z628M;Vof;5>VNnlz?Zh5Ib)!b#YAV(cu1Tn`SEp*O(bE%Uscnt&cm2( z@`%)VsYK_@D^eHhAqKExBQ56B`nku7Jgm@$HfSM?oz(Oc@JP&fPHD!AP_Lt8YQm^X zVAWJp63hbI;J^B>U~Koy$ab%R?dC;3yL}bsg@-@A^{KE5cS+1%{7rGO(ynLwmVvg` za>|iWoVDD_A-c=LmF-5@IV++|@0^m<5k4Lhx+aEn zP$^vd1;-Ce9hTlD1Io-W68Ii8P1F&fAuK04L1!?lkf^_+AW3`=uvnl|?C1^B06fm< z-_pqA676-4?qaClF|y9OiAH}RJUrAW$42gy)GH+Lu*S7=P_Jwk*NOq@qb4}Swv5Pd zaEOYH8p2(jv|?RO-ja$jX?-(N(gqA+vNi_(r=0iU{{^vy$aP!9Ty0C>bsT)v3+$u~ z=gGC;K)hry-c&Fz2*L!GWr&SN5JKdDFd2Z`I0=_iC#MQ^PPljKDpEn)kAqP8 zk#V^GZEH5A5_o(Q*+{?;HK+zP7C;jhSqcWeyu2x4$s!Jl@8FOP}lQw&i{!(EGDh3HvI5je3JObRuN_1SC( z1_S1`3-$_DS)@~1v#c7tpO~~Tm~~?|Pz*5Qd8J%%+K{Y;;hT$Z=Q_vD>D@NVZA>8! z<&yLZ)Mr=ZjiJtOuatJ{me^h|@OPQL!SFRSM27(%+OS#&7BCTAc1fb8IJ*ub=Ac8k zM9CttOt)ctIk(5bogtxbPhS$gAy(Mx+Sjk&q_bxpBl&nF4FqcjbC#jr0gL(tB8Kf2 z1uP=@ptIS$+urCgK%iiw50l3sy^Xm}aw*RNA%3H`7#z$7o)98SSmN3$QQ@*;3UAYP zjGbL<m+>3v6xAzWJ9q&6W|rHn^jk@eWXe*pb|70oB>rT!P=4#xf`=u@y8p&(N% zMs1pv+9*>t-l9y|fZc#eFTjuto~C*KO}o$?M!^DQ!y;U!lo``BFo48FT{}HLznPo* z(6lL2ea5@Rr+1#Ba&t}SnfjiRE80?b_Wi=m+SBjn&0097aAMh#Q4IDtw1<2~kAMy@ zbb|k$3%*IG6#4#J@Lgwv4h{yKE|Dr&7s0n1tzf#)r$i&tQtZJd9N}3|6v^Ed?NJ-N@B7=%_fqPCv%&8gwA$va94|dO|;ESUO@be&=>rXtrTV+ic z>*|#@yw^&%JmPz6(USRo-iymxv1vQ%xn%deaRUn9&u^Tzv*OI`xFOki?G`{9#=lV1 zDr0=l@^5pEoG%XY{>u3xMa8@d3s5P<0&uM&vffeQtAIHt?G?RYWigPqEcR!aakGG< z&c;ESAYh>kHSnokR)+`U01-(sTsX>RZs=@m#q1U4#Gnp@7hs4l zw=vC<1pN#)71IPI6obKpeB2pNzCHXV9@p3Nfxi#e+=U zfoI7|PuM6xH2m;U2T>`na4_#_0AG$_Xj4#uWhlt-+Z(Oh3qXa8kuLVZ>H=BE0brSadn{vqiWH zCKFgCw^{$B6O6iY$5n+9&L%1G{^!Z#1IRnKW}f%H6nTmL--2R|njQF7@IM|gEh?%q ziI=2Y7idwD_&8GM0D(8~z#YJ3n^6S<>y`;@n7+b%8Glw652bQO2L^xL_T}zf{>^_r z@-i8UV*_UXT&(r*8ZsBAvi$4W;ScT#XJ9K=zxw2i#aaLmi*-}8_@5x3k%`#MLk6If zJ8y!P@wYWECMWEj#98<-ug>iI0J>)4QJt@N4IBTO70Qa4Zpp!b*+52RCQ)CZ*X({AtB4Cz63ViER#K)p4%oo&@ zuVjd&K#nEaQi+%}IAEV_Niypfrv|7JW8;W=Rw4#7YrH*J_vzXrU)GE5Bh4qbvLQmG z+0D%xbfL}t*>zB%5!ZBrmBX;{D>E9*pql7osvvVS85OfK85Ru#^UHK1hNW0BL)VX9 zsZRQ+Y}T}9n$Hh@;Ow28l~th}Pdxs$Zs2s6ls$v1%0pfBC-{(zr9GD?c|`5h2d3-^ zPr8)5*+rE~i-#WwA^1a?Z&%f%Q3I#ftgPOjv25|ek@m9HHN!J9hU;&Q_PF{mB`z~A zeQZu^9I!HH>^NHSNfqzAp%#3>7^s2r=bwWGkAUxTfU*~6{sAA%0s{%Ipd}>bz^n+&1EbwKc!fI03D4o}^Zc9E(gM}?0JpY!V6f~D(i?5tg6LKnBz0g%HNllMN}`|qcmpTZLOD%JMS zl0Tg_xFQUbw;o=-n&s_Vq%NKXnM7!7h`S`)0;^&F-CLKWe(qO?K68gM@{a1-uHR``EoDd z%)rdvYp=cPZ>_Z-dYtU;b-;c^z<%}N@OZXZAVqW_FOlKld@A%3Vx4x*es*s0*{v1P z)htF{lm-M!%7`v(I^~q}?XbW3J+&cOtHVMLP?P$ReaiY+UnwjrH`QC#-Iv(!I;WmK zu|Jy{boG(HW1o3X8ryVI6Z}&KdB5-__$6e)4aOf}tJvZD`D_(k9X=1a3uPm06~0Fi zfA=u8F9n0)f;b8+7O8rVo^alt0;y6hsF>Kb2KU{NhX9WvmWgKw`358d4;Fv~;7ZT{ zWp2c$#_8qZ!NJI%T%kFhS^eqNH{ zyuOUB;JFAb)<^KI@CsBg)ky%U@T>gq@}K~oz=L4)sOH<{maq6bkwZgGJZZDJha7yZ^0rA;=?Mz9-BCPMET|N!olp=YDr0ES=-rNQ7z5DcjeEyNoZnm>DhJP9vj z&bL^|JhWT#VFR-vl@XP*coEyuSJ~2pzon z+PEEF)c#g)c_<#r~8v87qF|0T6zgN?-IQA+|))fwScu zNm+_$A>5v8H$JDlp7KC>M5ZILM!nF+MNXTt&U}m4xlJ?Q0_^^G0>zCn)mS{azmheM3${g~s2AcZ6#S*LE4b$_)-DhtplTdA4|NtgsF=R88u!Vk>+gW^ zsSYH?v)B+*-i`u5uePTgERU=c;i{2mZ8RccdwPe_y;j%1pI}%A<$i+!!?M#(#+iZ^ zOp>l&SUqV-N z-iT#fXfUU_bW$yp4(GMgl>_UH%C5{BUT?+KI?d~q)d*s}FlitM)_c>MfheLb@g8wl z0*u!!0m`pmC~y6I8=AQ}?8aYlwn^}l8e<9s->Obu>S8uJL?AzTvT)2YH)HamczcJu zY^|q9ab*oa(BrUi)L3i+*D`4rNwa9OYVLaEfvH9enSQWqG^QV^98M`Uyg()GoH%|v za9S=iy2q@G>+syjU2AGNypNgEhtBS?J}p|K-2#m}8$V#$lAPG4AMxL6!@?kZr_ExRn7G<^R@IOnM^m{4Yx7 zY4+qBTTSuXJS6iVf~7BjvknDrnbVH*jF2mSp3z@eh;TKpDG<|glRtozj%*x-WLRYT z@ezL*-zSXp2(x*?#M?jvu&R+t7wIc}PO`vaIbqH_#pmdf%{*ZxZYNg-bRp4#Qd{)~ zw?*T4gNaFkgk5wy@2s~3aEWVr*pcLS-3#q4we}o~-8Um5(;i);en^u+_G7E9tD|BL z&W_5Dj3;{<2x(0S ztx?+&CQE5guMaSVOs_L%Km6q0Ipur(4l>4=8CCCi)bOCwyG^fs6p=Ttz5MMPpTDb& zzV?Rji-7?(E;D|h-J9-)iT*(zvxDyqX$eiJgwoFcv^SqQ>faQVkp2x$w9n#Nz00D; z$no2zg;|3B9x~eHz8ah7nC`D|G+NT(F6=0;gEV~&oJkC(U{s4naZ)-f%nz)TLb#(Z zW$V+!I@t*oV1W)$59c1Gl9}caI}#?z86P~n_8vu(Z%KiV?KHplQLwl59o3U`PpNmq zVdK+?%8~w6Jv8nKh>PNnIg_I0w+508@foD^JuyMNcL~aQHI|9Tq84{RmTM$EsWF7> z;HUUpTG)kZ>`ujA<{KZB;|F3Z^ur`wNWMOtQ+_gH>A$2sT4S`H=kl5sbo&(%jl9FeR?`7<+T>LukPvr|%`A%{4*=w!y z`?u&?X?|_HDQ*V@A8Tm5A~O@B#8mrd%=WZ2!ofrX0Dx007h45}S`sYTmX;PHaH?ef zT9V17gRjYqB}4X)Hht5__`Ch^VaI3SCDtA9<>K#!+C7RRp@NvKRJ;vZ?_>wG48Ys) zU_Zihc&GeaDPsS4`9_}&a;Yi%k+846LO2`m6Jk6e%diPUsD~z6J!(ukm5nGQ;)|op zOtNmDGJdLkRB(QmwgZDrZu5+l8>jUcQq-BhS3YoeSMXju*8tO6B-q*6HA!nsW~#Md z`Nrka0@J&&ft`qfQMSP!kZ}9Ea8lACRO5J)66UcttVNqGYadeDs&U6)YjMk_od*Oa zC&f1k3~;#;nwqk@3?137+rVKRvg$QV&&thLdG-aR3=@{p;JYF3YR`6?FX}^l)V)@H zdt4vdH{`(k?RwO(IMXBQh8yGV%WTm$)HBA^#D{r47QF&_ohRFIY8JSuls_+WnX^ALC)er0V3<&~a_^N;8vN1hfko z*RIaA%%qlqrdNkdnb5wWZP2udo$^4_aPUI0=?404@IKw>Osh?o)$pau&^yd+R ztzJ%@9tHh6bqQzzdU~%IuT;Ht(V?1I)egJG=(kGfCnZRv)2I z9+b@9TJ=&Zb8iLdL4(YinH=&Y^FF@TAXw>;6A&$`*uo`8B+wlsZma5&A{IfY8i<}` zx#y~cRmyGe;evp@Yj>Z)r?}^q8AG;88noycY)4<^J^&CLSDyQ+?`162FRDw zG$^IGs>al!?d7|iJg(|%^mRwC5xJ3qO3a5}|L1-!hf3W4v11F)pz3>U>VDA6B6=Bd zReskQkbxqCDZ~f{A{PO|QDG-NZ}uLWCA~a;(M;p}>~<}p7|ue5#5WjCzO(T6@zUkE z#TjeqgFeI@kP79bX_Sf%{aPzd?Il1hUFoZ~^pV4x_Knom;eED1y5R6OEh&+0C9-)e z=QHZtbDr<9vC0wuIon7=ToWTg@*N36Y}X|pEMpode0E;hhsfYVLc95pXs6=R~Pc(J~nyMws7u3+vt*eEP*@& zV98bi!n(S2aH=LA>yAY+uGO7RoIpOa*^rzJ`^A?JfGm)Cx+IrRP=IQKz?5_4C*G)2 zUwQpyDXlEc^u+6Rb6A5{jA><$ZMvSCxnRHPMA-@Bh9A;vE!=DTMS1nBKa@{ic!A|z z`HiJMt9<Uz~<8yD>?E zBk&^-nN=rAK*|AXsny;*_D2o^Y-+S}{Id;+?E>3Aib4or^c0O5GujqrpyD3e1ygSEW`QZKsGa6+jqCF(6tk#clH zKMai3U&zvDJP7h&7$TnceW)n`d`fa9ZeheE>0N%F)*@^b`4Fw&}p zQiC(~B~WS{Ctt1S&-eA_6v3|j2b~eg7Hdr@vUX&nCdQ`Q`fr+-ZOs36f3Jx#+1`_x z?Pqse(P(IJ-=32_8OA1+A5Q2h8;1o4^~IDdmiD6qCD-XA20h|EfAQn#qu8aA1!O_9M-My_b<{bn*Mt*sas4Mx3Bf3ej}MP~Ff;SjCGWl0q_GlidhF>d-szj?m+kc| zuJp8Oe{#c?^Cn1+X}F9+yD4$P>sdR}v=#C6syp9yxlJ z_x9i!L&nT*E}4O*x_wj0XRjKql^wKjX=2t z$9P2q5=lKy{(~g3hO+R=wJ2XK(&DO4fTFntj6r8Uf$Fs~0 zluGxZy*cLWe;)~O0OdcYz5Tc^ESS)&iLJhE#`zSJyZ8xZ(tC+j2K2INcs=n4<_y79 z)K(ii6jlyV+()#m`nhGONRsipym6ffd zK@j8ZwOm>JMN9r=31mN#$BcB9gfjcMm%JnAjMzb zy7hRRWBRbREv*S}A6$MkUYcYpDIBvdEWFR;T~;Y5qPTd}q@}~m5AQj)v1Czf()=!a zw;x|-Dx5g2U(s+fC9u!w$|RX|xC=-FLO$MggLwG>Nk{Z|}(s&L%8&^ORjs_Un^ zndJDBdg3mi4FgPE`SSTtW$NOkkx`vTWfhm&9XtERG#nEeRKIQh%JTTgJzH3R$@?Yx z3UyH|2d>VXyK3sFQG1dLqKn%$ZS?N;SuFAd+hc<9L3xZKc{XI8zjl(F0^)rBK0_)n zBA)+Ioj6ZcESX&AgR&3qNKm|g<@TG#`WMzt8Yc1*vY|ij&Sj3lqiBn-)7-ryplW~7 zxuATc8*xufvkRnvw7Cd!cQw}roFkFW5rZwzlL&-{95RUryIiOnZsA?ezKKx>T(HNK zn5e%WaxrxUO}Y4KfjZ@aXg#{>2e!x9_-|rVLZN6C2$ttl5WWb2o$Wd3Os!|HWw#`? zN*&ZG@qn>$<>g6T0|N%zLO1S}QL4nMu2lUh=fRhA0r7>QFx9*$G_@F2MGy*Yp-Qwa zZ0AWZ5a@z(t5o1eRDoj&mUP-xA?*Y5$my2iB~n<3IlDoiE7%s26IRf-#t=CzEzoXt z1iET;?-kP2oNjbJICQ*`jW7lt8dKSPK&fOLV+`0l0~1&V5^b6*W8@RKKXnbGFt$yz zW}$&ZV&x9mNN^kt0MiqwPVWfR#Z*0MHMj{0zqR&7cO9|_Ey=zcCIrVlu9~mKK1#0S z6ONB3?hJR1Su@TtZqvs}iL+N{O_&hw*w!be!RV0Socpqmo=tZ>y1Z96TUhsIkK^K% z2CglcK4omhi9HX_99y{ERS;R&x=r(M&p-4^dith;gBE0zs&WH!88BVC349UXY!WUf z#QhU$mmi@&?Fkc5o3=pcPy+}CeSB$)a8zf}Rz;b$U?D0mN(PAh$Ej;|th7eibFS>% zM2B2Ye#hI&&r{OVmD%z;=qtthBdmt3AkWel<>sEHSS|M~MWWN6oKRaL-04-`^BSh5 zQ%aLF8Nntv%lQlfxle=7_x7Cb8dvrjWA%UDb^o&5^4hIujXe?H);gs3q?2h(!GAw> zYUlk<{x$Hg-<0!JpZxmgPUU#7!9P9^{%Ws`mZxFu{7!^x_)9F_-!jLjcBF(%*1C5n zGSK87KvgIezCxI*yvPWb!6&CNbO|{)n^drDTk@oszN4l-of42%v~Kq3@bK+@;u?$z z32NN!sV#K_>U)jdFP>hvuFBxaeD0HQ+vt+Qt;q#Zg{@lT*N9}!uQUH(DPR(ALl|w~ z5i5M9)~XG0&(2pQ>a>gjmsAslC&q~3{J^VNIWUTlQ7&#~`qG9lz`Q@Uts85}QEs0k zTLAL0f<0S#(Psyw4xB&ZY?AzTyRX)}ZYp1q1@J42@?KIk|1(#AKMq=>_>bY*-0b1&g(iUHoaiG z`9cr##`j&x(^i=QNO}JHRpk?#(ty3`V9l?&znZ^T`D^8iw?moyVP%FKcKhH{EWm`$ z*i|nm{p9D2?SKL()L5!wE4oAEId5^*xs^Z$vXO%%wMkTuQ*EtxmxV)Ggeo5IR3(UE zKy&zX4U6gDH#FVMTF+7X-xnH}5)>XB9+Vi=wYxRPtZbXlK4=`Al^c*+BP=Ax*lzb| zSfo;fw~=BUHBgpHO_qf#*$C!+K(?|Y!wO9d`bL$xU6r=RK{&TKl44qKM{JeHfW!lx zKo&AsTcJxKN0hkozMeQ6uvQvaD+1U<_3#J^#t%;V`GR@J`zeto=llqBd?V%eZ~B$> zJ9V(}i1HD+#f!`rpvp648*@In==QuR*Y_wll{dna0qmHQ;}yPF!Yi)^GMRwInEi&_ za3}1cmcUi({1@Gt1>}TtXEL1hWY_^(z3&M!a4d@Tq9-wqTnsQDXEr`L!k4VWwj^xJ zrrsDI;sA`uzU@0Ju~x%UbN{^=P0N~Qbsjn5fwbtF@eAUEk{W#Q;IL^yjUOo8IW8x4 zd>>IYj%q+EJx`LxEQh4pi=Dot2q3MY6gE?bEY8IIToAmZ>N2IwxD(%y_ zhN-A#$hcX`0CdX5`4A5lg9jsEwUwx=*ENL^k!H?#{w7*T-D}UQhJ|pxZr&D#P`#)T zhgGVH<9X6z$PA@QzuKz$GT+IAux7CHbO44RA*-1d{Tghh-V1A5q8q%lv0z+ax^5hb+P6f3%hTODf2>&31JvV;-U}-63i|+lsX~4*%Yj#Mhu^oNWLny|DXr}oj&WJoo-zn(=TmlWt zc~#sr4-4QyEP`d~?;I>Gjn_elO%2`+Lx-s0K@^=5X1DN6F`Dqour-i`s&BKSn#R{K z-uT>XmT=_3)LOTmRL0|I`pq2v-T4$p{G8JRHb~}$EPnQ>nApOlm}_w0=98~}j#GPI z>8Wfjfks#=ZS^+tE_`m;S`Y3ba#iM2*q;puluarZazjgSp)T6&=R&eq{F^m|@+c)b zzYIr)($mAhrg%2czq0Au0(xi+q5@9Jw}BoSdzf-yS~k54|3T9(1SQk~7=9A4p;GDc zviU6j$ipcaM23~#?JJQtE0em-#{Mg!V~Uo^cA$e-etY`-N76BGKTsplyZ7|Mm5-?U z{5QzZH?eo8=uXPjpV+zI>Y~jGl|f;2-TkvsPzJyS-L7!kgcBuh8;nz*U!q>LNw{d8 z*Yv75R2O*e^rAKGws+Cqv1`uA53VXjZ2yH#Q4!uIbit5URQ4OsVZA~3tO(L2xVX_J zga@~7Nq1{9KZFjhL79E<8j#lXMfNkBfJP2dDGMo6K2^51FK@4`qa>lJ<6k|M{j7-S zCJ{E-7>9LGZIZ9Um+q$fDTm|K5(`myA{KBKikj>~`ISeKvS1H8|TW%0-8 zte*zUBR%TPoWtVho{WhZz5@LH^Vd(j@;**D!Mp49($x>q-8}_*y@GXyV4Xcx-sajw zoUmUaX%P}tcSUmP{UVvq_^J{9wHMP>^#5e8fP<|fWsjy|>wD>e# zV4cwyiF#w%d9DjQf|$S?b61zGUZezUlN$ZH=I!N6%a$%<@2&R!n+0x_9`|Ik zVn7^3z8E=3o-ZZ`JXg&Zlb4q)507}^UpWnxr!P7(%Q7Qge79ahWES!7*LHhr)meTd z;<>WtoV#vk)>(1b6sw&2xAL3v(!c)2y8VjrrA;oPP025Bef7J1s8@oZmVs z2aPX)#zBUbDvfn#uG0u&F~kKF`bwKOBA^n- z&ZxSP>qzz$8Y7|X3B+KJvXFA+)7#Byv=XNX*OB;eT8DCwuOn1=pa11LgsXG+I-sYi za0(c^nxwG(Yf=yCu66x9eayJ_w_EDg_N3C74X5=0(59=I_L^q*8X^q?@>G%EZv_6e*tp9Y@*;jxPitJdId?@F%0J9<|L4NiBp3;G6- z?4a38PLT`L=|-K=rgI(r8qi?jH`}0tg%UtX1KS5#{cFzkk4}X8%VncAt4^M=#lL3B zMg>1|BfaI}tw&TQIzto4m_VbQ8>L&hSghy&VtqsYW^H$_iuke={@G;ipZRjCIc<#LZSWDsyVjRWjHF)z9l5$y$0Z8TEyBcbFF8&FQIVQbCT2OF zK8=}<%BAzCpRZG%R=#=J%{q3amV;dms5f=f^0$)ZtL7`eD7%zfKVeqrDdp2=pJ27V zDk{nNl{wEq_SM^%oYgpTk4=1e>`invc|)7>LVh z+dES7FR|Lxz!rTtHke4%h1>@=(N7*TZS^79YMfh2e6spn*nb#7R^M9+1Gam=znerx zJY~k+y$?JU43E^8+2lG??3rI=u}vZAJrOlH^bCj#4aa+=n%sGTuGbmhNZV2VI|UJb z@(3t8Kc*z1pm)m0 zwv=t?{O2osfW3#1w-f894N%A~FHLH{Z=cJQ_Q%PGA5JyNVGUS~C#Oyb8YJ2GZkm3+ zt}*{W{ql+^Q~b#J<)>mz(WB&_l^d5_*Ol*C(ibkuqj|&l$nc95#`}7f ze7?{1*f%$hyAHn(o|LJEN#20i*4=YnMO;{%kQP1tKb-SwS0xpyHPc{ z%-ZaFAl6>ovsXu3;`!bCdoXFpGP}Ls$R96_UTqH_Hth{#ldbCp&WU!cAG&V?yQRz+ zJG^jYanX>`10W~zu!m&qL62V*>-U?hcjH&NM--xrI9GmIa>#F2*29~?4?Cuum5+0p z`28?0dBi&kHr2T!Fi21y%54&|!hp?H{V;s0&JUy0hQ1Nr7zLo=hc)cGpy^Pl=DCrD z<6C*Rwi?@ooy%R`gPlFDd|XoW^Y3hBWnFZ7YoVNFho#Q%Dpv-}ux7}1ejEA*C@AO} zUqvHdoLH$YZOLVgc*ReZyZkV&pKv2RjtGh{1JA|-&0*Q6hlfoHL*s{R3|-J|9d^Hi zgYFRz;`-j_iKS~?F|<@kmTQe0SvIm%S-f6mXW!g-pmccI@Cj_lN?95E%{KP45<*`l zsh(t1(%47z1wc8CU&R?G17Fjg<7>)Q$;tgOu^YcXriprcSn@ymW1dX(88{tSBMMW! zDX^uP3F2|o;=Wm8E%MDgjzj{o>m4*-NYcmBP#dCH!{?!OSUGIE&E9ED&rM+yq{#PH zt=SN38{Mr#GkfAYyA~Wxk|#O}3x}_H8%Onem@ij3G(3&`?x&(cB`3Nkoa0XkAQi+z#x>H+%Ug>=s_uxaU@fg;q z_aOyIgem_&^C7u-;65a}ZrSbfvCHLWl~bMCp4gcdnb31?-f&K=x0Q9uqsng+*%vIB zQEY@{s*!5)Lj^9KpNLqC?oM(_3iT(PNxn)!JOHkN@&>Gc3~CxxmkOs+Jw2IINy;{} z8(S}zKWI|w^aQ2Nk87O@jWWU|>Syv? z{RMxnUPgU?p>Zqv3nZYTq^V)1x_)jfh#FmP%n1hICo3NCtcfncEVx0;;&j7(*N8O) zy|n#bP&4gLwz?aEF?@53Ky6BxP*WIK7-{L?6@s8j`Ki8ut_o^$sV0UGbX%7H;m(w1 zQ6tMoCUnePJ+8j7!F$^>+C&W~@0ZXvb=8y{d3IK_DXvD5N5bkS7eAEdl`@-7j?a%e z8kU_{@=%6k$6T$n@GuNFv)aM|NpS#bebZr6y0c@UVFb$k_&2+?@?=QpkI%pJku^l_ zA8b|rf?$ViQC{%LHQ)(J7wP1hPSE((t~M;JQM)9f`M7D-%M2|$$4&rQF|4q(m3JP* zSzY-OwCDhaa4_Zpf*+`fhJQjXH?hU3=v1X(KGYqNTc#S{8YB`GC2$gpKmcj@T94_LTz{nQ*5<&e=Q~qLg3$G4Y;s|dy62fcdxvdXAAzxC; zm4vmU#;(LNx$J)zYgPS!Umr{zZ|N`#!lmG>f4BedNkleE8`-=&2;g5cf&jiXlU`>{ z{HwlPHd3sa-GKO&JhW^qKU7_|mvj};8QUvgqtF zmkU1GaNyYzM2=QxZit*7RV8T*2nxV!9Dh%21a~K6voR-;00df8i^m@73&5+9cU5#! z6}`Xy7C2-VJh8~0_d83a*l(8Y2dFLg_K9UXlBdQF8aCmvR9QLXV58#u$X8a*FdsOh zymBS;w({BgC)RAd@rY^c=?{sv@crYl5Ayw&sI=t)3~|GBZF{)*5qdzFbJ`w0o}1Lj z*3*wANkfo%i*2(=~9j~8rj z(ZZQi zsP<$Z9?4TXxfVFkT^k63+Bm}=wQ+75*2SpSWO^N-K@C(Mdvc?KsJ5@nE195ibnz{B z&Md6X+VW-{xt3gM<<*wHX@A*lY|6nhG|x$_(IBi5dH}KIV*1~o>l|yd%CfE*KUH4l zLjbRNf1y4)qfJ3erWA;IfW}Wt-hEfSm+f#b$Ag~}QA5hV~^o(oc>C~42FDGD zV&_U*e-U?3Gja3JMUF*Cr~Tr;bJc@4#YH3g_<+wo)^=4DT0>`-3CYR#CTt>|P5^)t z9Uge|GSwWzT3y^cgrR&{x!Hb3d*uh88Fu?6a;9&EqJ`m zJ1_R{SJ3<78R>a%o1L5Xt*!n^dy(KN8{~ZOJ>6ZON6)3O;C#UY9$P5SC!sHyR?|r8 zvpib{1O;JxaeI*}(;f}bF8XVX;$d-#)y{|2*H~I!)%m+MD-)7l-Ju-1yvwnxOIepH zW!bMPG*G z9zZ>x%CYCeenP5k#!~^!kQzGmdhCp_MQfLSSSNrTb|?jQ6|gtK2kNsw1*{Y@Z*|j9 zrrSZO{M2(n`TU!Vk|GY=^MU$`0Gpyj9PT{u2hT#cW*8Qz_l<8~a3Uv+c;MeYT}we2 z9U;P0LWJ?E@<6qz@g0Ofk7Esn(GzXs9etDOQldx&_F?t7a8u52;K_Ft~i!sZhr$^RG>;h!ZQQIdJ&4KZRoQwhP%lz1#}31~s{74DTY5*9I+ zD>@93U&sVY+~P;4Fb&5OKn2k>ns~+ojQj`z8FI<#(zl0(l?~hZ^(^T^>6}^UMmi1S zh%PG`^u@FH?WOgIhDue)MN9w2DuYlRG)6rgZU%@0`ES;yCbxnym?k(OI6GJ#dU|;9 zq+opv)VEd+wkHZ})|zgSdQ3)+G$*Z#y_I&(+JLyseXLnSdti(S;_Yoq_7-iU(wP8m=@)RHazg0dRMt6k;(h*4Q<%&nHh{WG zSOUOLVyoN|pnjXxTcs^ywuj8;O8(5c;lQ$dr+4~dTU>{0zSBD+&4SnAJ3}^5c?2q8 zh3^#6XBubN8D|)W8XTV%)`8~zedMAYyl^-g7zm!0!4xjU$WZa9#qna<(N+v3fc2t< zpworNWygvsi$OorRjf62EJSP#jqzRb#MY1OtJSr% zA_D3$#&Y`$a9qIsU~s|gf~JDysli%P14CdT$|gt^k#EY| zl$1M9cg6HA2{_&G`*M{1E9hoQ7(7Y`9KvvxL-nU@T(y^uxp;GqcQBv<{G_>^VmgC! zPC^f`H7afR1r%3P7ZBIUa~+}l)x0E(M2N&w!^~|POz+f$WGN2|#z$v1@Hi-hhsoR} z(WT*m@8Be${KP-72YWa@ymcMr3{PE1z3%3dBB_yvPq29<0=7;RA|qOM`P%Gf7wC~s zP^WpxG7K4mJhFJ=ab2-1P8Pu>A`z>#Qamh$Zx!$ z>Jg=mZK-?FoojXHQMbChguLv$mU-w_m(3Nu8tx?AKH>O%c}*2d;Y6JcNR{jJ){^s? z=xxV3j9YRdI(pQi-yOg2uSkyEJYiJ7s9IHz=Cte{6w*Aqb^8Ka#Fm-0r#&0(n!a_M zl`Rvk@Z|XIixzJxd8?xASVo3t@oTT&*R1{EsDh+zh0`WIwCurEy=1rOl_yob16s8- zhjUuNBDz;qt58(h=7OHoXdXdI&DLHRkJ+VOCLO)#R^^)h8$$gTeY5_d zXxo(jy*h>^e7!eCB~Pmk1vcmAnTezJ+8yH;jWdRgo4UakHfZAa4%S!@%GhM@vVQZD z66X!vbH7R>*LKio>X2~-;r&Yn_ZvQz)mJGc8#=;nEdGDrM}R77(MJHY25hpwj{wHD zs0k&R&m9qcR9|>8xAKNGKT&O?yLUhDp8Drj-aZwvbi|m}!49Ul zVS>>`I@G(mgvxL^!{dy8QoCAjIS~CsDJ->UHns7{_+0!_=n$>SmcBM`got} zw^0Ec#=0S74NEqc9X6V4 zvHfk9^pAB0)a{+^{k(L{LS`Pw3S>9nf8)DMygdTCiF^wHo#Z!+-4KV?u0cp*U0ItD zvA#9vFjuq&eH&xGj(+G3qcom#pCi+n5)dBjYM-o38q!yt=q+`hHzg#v&>YyRAE67N zGY3~qG0rnLhE;d||-?o}86_xlY&Tyt?- z5*DR4AnH!INL6!pZWj&zuv1{g{5!?&@IP6z#eB`y*?}3(X|4MvMJ3OfvM*vrWO4I; z;Osf$wp@v+pVHYmBXVH-g6OE|+{6}+8Ihy94vbn_7CCn1rTrf-nN?%r%-9jDF7E$y z$&^s`#lxjt98=3|{U`3<|6pmGsPVIchfe^f%Lep%Fg;<(L$zcpO!hvZ?v}HbI9We? z12=>iBEStag&>5Z*ikpBapdt@MZ89@B{_JD^>pf1?S?wT8`SgnKy2XuS3OFJyBk<5 znpgLYbl0<1w5opSX|29h>ugWk2KbP*h%?(@BG{MIg%G)EAbd9d|H| zt|1wg6q3(n>BMiwlja3WGN$IODfa|KG*+8tu&N1GmE=4&5#&wPJ*RN?61KYSpy zy!HX$GEY9>JyUVy_-^)rQtR-6#~+khx{tD+1NQcAX-k+e^?SE3AOR@?#KaZCT!E0 zL4;taPzs;K&1EIEGX(FN^epdZasNN09br<5RjG7Na7u&!Qy|uSpiiHvQ*ZurG*-gg zbi`tzmxw-F^z;$Td2jl-v3ts{OjXIU0JJ$xv_eJ+gqiC3f?l6Y-wxmO&(*A=`M2t)4{c)jcrJTmM*D-i8)P?S*%v&| z)hv?VS2kH+NJvv!M}esPYp_V?C=3pFHz~^8OdMepkMSEzwEYEKh}freB{p zy8q+#X(Eoi=?vC4v#kBf@+@?cd34G4q)9P@hf=SZjIQ(BVtKP9Vj8=hzTg5|(%I){+n#^7jIpz=U;6EA z+jCz}SAIUsNk`d%?w^L(v~?g`NK^u1!b=6R_3R@RCR)z5%V z=p#pNtS=vY$3xhG|M2P^zx>Y+?|3UESqd53qg^NKfWWAXwA?_}NeV9Q-l4O#ATTB) zH8&tx3Le+3V@JFkT`Q$QfO1T#IgVZ)5D;A}wSmQ3A%&E7?bs=-e_(WGGG6~)3K`!G zj|bF<$xO)&RGybY=j<-z&yNN*N$Dn3Ie0(*Ny)+_Z=~=SKa)knaU5<{|v-G zOMBC^-ao6Ky<+ZHRN6Z`uW6ewThhJ?s9;NM=EP#t0q?;Stw(AXze~w=)t* z>DlhsY{X|8Whz?EZ8++8ctF5!5a(&pYcCScRB-Xy2@?PcFlJZOkmPPv$ zxwMfym*(r6@b^W`{_rvGtR}zUk%GAx_Gi>k2k_sg)0o=0Ta!+EwrZh2oyJ0tPfICF zsZs`rd>U$37f?P8#rCI8RUQ}FG~Oe@I1qZ(ihJopRdTOcSl@zhVvS~^u9xjQ@=$8#Oj+*Hzt4~v%8x9gON-Y1 zTX&C+8@62eP#Wxg$mG89>|2v0d0YGYYmZHy-)?Tfye%g=?RmeomCz#*;HQzQrqd;2 zbwPb@5eQU`NJ)5t0(k9>)y~sCcg(K?I7|~U#fG3(_(nK77NguqAW$PVxc@No2_LKO zPww5II4Hk=UZ=sm=ckM-V_Bm@8?EW-8)DaGUJebhYuC7K|E6t|+4qXFAb484DVd$y zdA~J%w5(H4b&B2OLEg{14anTscHY<%&`YhMm&RDaaEp91gLu4CoQ%*=6vNh_T(RV2 z2P&HgLt(5TiH7U#I+U3@FzS3woeoqSM6qep9q%plvG%>?YAZo~Z(K^kX9OF0F${a4 zUAg>@MD;LefP??2m%~-wBR+!q_xWa3>s&g2S{>bm$MBL?D{Ufy#*X#mAnm9sTki zbItPA&Xn0pii_29BIVGH&z35`CrJfK&z7C=cyD7loR)3C18cF+aFMm=cwfN-oWaEd zzY#^|pNMvOP|gRB$zxX$a&`o|?67KwP^*QmHFBQh5rX@KRw(&$&MhMrl<5>tB2V`JHX0exPp)5bYYg4`KqHJ|Q;qaWI zoE+8|S+h#-YwX7#eo&_r-n_{^hs%WIEw9TB6_uB|d&enzPnrww7$!F5pge)WJQWoP zngO2S1)ZoEm%dvCT8Ajx9PG=bTP4dT*?Ww2S}9e4&>c&t z1BJ<3*PG7y1Z`i8`#|dufj-k^$M~A>No#@0_SBT9aNQGFlh?2N)_i(+;G{s%TBEq` zxoX~=5UZv|Pe%dHIpswMdz=^HD6M@pIOvy2b0EFHQw^V^^BlTxj##UylAQb$bvkE@x?IuZ&7wxMFFszf?$?dgHS-ibCT0nQ{`>zS<#*<9uskrnBgl-^4K4fUY&1 zt~!2BL`FAJa5@)>6ugHp(8ACWKm>cED}oL}fY}Y17u}iJO?!R7R~sUe5)yW3H4@>ZzKo)qpE0i6nkKE*bbRyWrnT~zw9jlCb0MQv z{<5PPJ<JOHvy#1Z>>r=|rfmW;3=eV~m>%iDvR`b;_(f02* zWEx;scSR281K4&%yXmUN;Di&$%n2tR_z6eaPF%TrkucF(k)tIQ?`YzuVx#Jpbo9%! zsexQy&ov}9)tD{f<&^Num7&&o8$^T{LC8G0d&k-J>KErex~*Yo#(U$;_IC4K){GI; zqI07<)J<@tzECo$Pc28(#ICL$by_*%5*wJBj7W%xs@=?--?wH=Y+@p7$Shr7WuX>% z_)8CWe@Xc@utw+awv|5j#~+tUX8j92l-YCRHoc5CkwhHJ_}(+b@0 zP|*cSXT1xJMEs(aiM&WqmlBpKtd7f0m4gVe^Vz;oMHWhSL$H(3k>Zut9nuYl^4y>L zwkaJ-N^ZN*MoVp+!VKFm;VBjOHB{u`bh1(hf$}d9LR+h3c%Tvs(RNXxr2&j0R)+?M zm|Vn>!n8V8_GP$~9e(*yO(BJDwzBVsi5|ZkT$f@Yni}!lT$yw8G zMBBLdKK_O;A!g$rzlS=c0#!JGd6IecY;yt)hQSCeKw zuL~DiEBDZD9W1DZVsO@o=9BMr7J7Q=fNcfnGl%v$=rh;lp?+weq9x?ytILvYO5zH=H53Qg`xVH6E9NAGYg`xx5$ME-P^#^j}o9$e<)+YV|{s zAdtNf7Bu1AKc_`BZbV~8n0M+t7wPoBUdl_DTohLnk<-y^Y{cq6_58z49Nwh(oH%KjAC%wQG#K2lyWFeR z4HlqWevj|973ApCkfU+H(DUm28cFIO@!3l&|8hwMuG7J%wqAkKCL+3H_KksFyBh;dWN5W3mqsK|M>t~d6i=BPFQX0Fm3^U3P zmPcfTCkECJZ8S1sr+3G4oC#>(PdcWVP%iz(4S2p6s>gZ&w08;{p6^8vUI!NWk9+xB z8~(r9l`nyoPthZ22>2nWaV=yg3d_Dn(UosgjSHPKls*7K10ROUcg@sQsRNb6)A>k- z-pJYRLEeW@FWT9w;)I0rL&|&Vy8i zjYq!_+>qRTti^Yx1~-&HXixt?nkP&6eA$cp6KfcuTC_a0 zCQe6q-&)T1Si*TjDst91WP22eksi6D9`CO+2P7NY)&F0TqMIsjgx3#2Mo^7gn&E0){`$cc zm^`!xm~jK-hNlO*S9n6HkHv8Mwh-TPP*NtL8@s_s{rRYt+n0gWSvy?1aICn@!Ito> zVUufPoVb>n23DX2q@N3g#n7qf!3s4BEQ8!)Hahbu0G;6A@rw5Zb?iQ{zmF;AHK0@`as zJZLlEQC75ug#DHN-P1G*wBsZ_;6L@J+ z<>E2RyiO%bM`MpY%0jm(Hi4%$a2^`SFO??JRGjKg8KA$q$9(J&qR^a{j-3(+kow81 z>1T*@{7xAL&~=#*KfChJB<*!#AZ+}?W zH#|L@n3frCR$Vo|jdQL;8o(EE;O>Dq=uAW$GJQb?E%F%#kfzn4C&I+zm6^Jnjwd;j zYHI0jaxvn=t3uBB(XGUpn$suBK` zBezA#u}pi2X*$T#P^sE9b7VZL-+BFxvD>$-Sy}qZ6U$F!q*l!BK5{mu1sAtnsf5RQEL%pq|z_eh9B!bBcRW9l`bdo2~nuLA0!2;S!fF!H7*4ho7UHvfY`)%4uo&((;>^^RN`wzaBCoSqZq+m>GzmZeM99>sX?uwn=uQ%W4 zCFN7OKXT@&6!-GUTwUx=6rhl!tT{-s4YjeP_+W141L2+`KyNVHVRYmtrvdS(JyzYe z%&0~^y}QdqDcvcD#>5Vrbj-16MMZS{$km@XJ~{btTJ*ZoVXY!#0_A}r$`35EM(VasGnaO-F9t9~>oLS19dl6^$|8y^*Qm(WEJ7L*jmLR*m z)1dR=Cq^%@JGxH1?)YKzme}y(z8&j_g-d+`Xd|Y`k@X8lj4UZBEFDvFXmjD*gt#R` zMg-D6s(!4xY7WL-bBXz^x)cl_1S*7&2ue|Tvo^MYNS_vrkCC97avM)%d`<~K8wliIOTYqa4v0Zjg{NG=8Z~3=J#o3kaD<$ zHD`k*_w6Gq=j%m_T=63Ib*1X62@SpO*q1n*|Al=y@7NbFQNLqf5U03j$di52zU}F4 zbt98|Eo(4D3fmH$b6?S>bbC$XRM}$7y}Ek#2p8(q_oGhztBLGSW@c}A6BevsuXzfd zAH(Jy?|1!A+7#!zPS{r^&MVF^O_PHXf{`l=@jwKQxjfkGx zuO^nV53z}{lzoW38H-ej#t?$cyw|y@c?Wnm#(kefH)uEQcpZDNOoFhnQn`EX=)_ju zXP1$Cxk_rg3T4Viu(Ka84u5SdTUjxPbOH9p+IUC9)#)q28D@q$*kdTpF3vDdV`GZ5 z)5Y6#bus<`msuinaxQd7hjs>2*qA*K;G9(y!p(y?1|WKbVNaU?Cf zs>dpwQhFDmecTB4=!i0Yq?^<2K{!&N%C4=RUF2fd6eoP02==`=%@;h@H^Hp7ml>q$Ub`d z`34Oev%J@PF00+7?)Wxq|Hy2ZJ#*LWBgwYV>83zyUF9za1Jnf!7{|J0q!zi7mG}Rp z{PDeVl|6Q#^{R`vMcJCzT+zz;}4OvWX8SnHgAzaOBH6CQIg_xZzhmKT~?@HHaB z#0@Q&A8OgH*aeg^+dH(_Su+%~-GYLW&n$UxXPtnY%46-u#nn$3lt1O^q=2+Oeb}@y zEoU_9Jh8$4L#*XznKxN&SNw?RIOUI{na}(Mp85(l1x9S3TC$_cQ@Y@aC^w>vm1fBl zIx_Kb%$k&u$0|`OgV=+|lXa}Y&8U27oKo(P*Ey7_ug2tdz=a5hWgyiEZ^SQz3!s(K zN;{WZBVHfP%3m1jy9QXNr|PPF5xlQor{Mkn**YUAHgxwoeI_j=6N*Yd442*rS1!$u z&TUt;AtkJad79A_mh;W(xuabaZT7CfZGGmUKBorH+|&KDAGmBa3;^G*0^j;O#p-6^ za7zu6MynJ&nHE0#CR2yDf$$+y%#)bOU&Oc^O|Lhso1&tiE^JT~T=Pi)V3jm@5I!iN z8aKsnj(p~1+4-Nl2uBS zawH@7sz|oIYs_Y!!1gy0Hj@lJ?p2ZHZzSU!qQ;W^+u>G|lgo^su_nreNALAF+~=mh zVfY(BlAw|2g&%Awv4?eE!?Vceg64Ro+s$ z&T71g-^CtU8M6(Y%#p}qm9SWY;YF#H!C=)$Uwm3lJ?tOrm!81-(^xV7(1PzD)8F&w zpXJY&@aIbmU*M-y^{=Xi>=9+hWRRGbheW2V|DRqz6KFU^ow;m ze1S{SrG;SpYSQEs*hP^mDtyhpwz_ar#j1TPr>vIjR32?JqmA-x7;C#$c_xgtYc``9 z>lLP)Tnj{CAv;ha7muT@jH}!Qdb*`pDMmhv{6BE9z`D|5*nQz{@&eQH-?Wx=Zr33s zB#eH9%AtJ<$8>Accj%~Y{Jh)YaB~fZ5m&I*03R5vG~yL}fam4O{^!%x=jnBRL(GO} zfqVZRvLgz&r6Kyc_JSwB!Qk$l?e42OKDv~ZaD4bp5yHv#jpM7v1%(?p7DwDLT-sJI-3sz4|x76r2uDEj74j41uYAPRwp6 zhXazzq>3uvBWkq;!R32|Vt=Q!HD+H)<6gFmNv(=TM25!h8{4F}En`BguoNy+T|$^43JobE-KZTvg*D-(?SN2W088$_mlf_~ zGHX~UWhrymTyrp+!~ZtfaF{(SKW4x{E&Qzoe~bDiq+m(1F}o!f^?LZT#Jv)emDdYd z;u85WWuZA3RnyDZYJ7H(VWvFT6obkg@FW3AQInJp%5|VE&J=5u4C^6L74Q($hrw4* zCW?nWCM$=bnlK{7ZEeML@E&ksN3??9VchTW=+;`tZh5(pR0laT_{JsdY}^aPh_ ze+GhpE%D8rp=%0F1?3sk+RC#(g$+dobxJ}?c1p_>R8ZqCX)=b?_&bF{$Rm>Qg zO1UF-rHfz&%Ivr-C=q}{$LQr;{-thR+sF)o(;}m@V_j*0!)tYz8w`y!?sn{m+u&Fm zpY`sRbqkZq6S@uVw>cr6b#*9D#Igb-g5#v~d@mcOmQ=cM`ALL!d>26e3Fz(I<`E_M}AfW)vye zx&$klPSmdUJU|K=EJyAIgari}A$aY{Fnf|YcCNlN!jfwT2nk_0#Jr7fH1dRd);iO3 z9Q9(1QQcAp^iEt`R(s;?r?$_4hsA0h>D@MDW~0iVcFZ{)3-s}JQ+MV1Xm6Xzz0Bqz zHAA=TlAb?RJk|Sz$vvldD+~9IJhx)olPcf97m+^(-((q{Rry9|({V)yo6eJ!E@ydu z%A$BNeS13#n6Cv{8?sP+v;qI7XQ#Nc^r{x&0xg?Cm_V699NR8>hNrVBkB6owq-Uq2 z6U>724e59zJUP_!6Mfr&mpyOen>*dAogYO_Fw!aGPa_tSbmXMkWj`(9O957B9{ko>?QiFz2D;_2l`s`RVwwG+;F!%N$bImDaD$%-7Qb*gl&w zGM(*{>|vKa4GS9=YGvs+!%7}5Nnu824-1)SwSRvmt>j@;2waA3JOy-&1?r~}>Wmi| z+>Nu{O;z2-!G7W{ri0VciKfP&bXdXES1vS&r$LabvT0-$%6y}$A9`YqG?~qln9c{Z zC87WU*s1E*-HFzUhSd+jVaQq&TOp9EDGc$ENw4yKgSLc1Bc-)bvTiLHIVd(X@}a>+ zgB(MG>NRXO)D{|+)2K=J;6Bi3MMcnMdrP3j23KpX7Nf(IHYBx;LFS<=4=?LB$FpQ? z(}A-Fck4U9UvuxE<%hYZa?kZErXRU@r@H7H@(|E32Dk>_ygD7O!4C!rWL$;<-V8Ac zPC&X<8_)-kA+eeM_6ZAl|Cf~nzHPmg#wmAZd8cecp%-f3VSaOEdjjT7U zc1hBKVFle10+PPm8J>_g_@%&br^{ToLu^0O@Z~klUw)Bn3!7mLlT44k`M~bXhm~iG zM(uvVXsJEA1g`Y_^~wOL%}uh6+QU%F2bM0$kn@)T5@?pOW|f!8hEQXxst9OJI6`Xr z#UQa5d55tz8h5vB>Qo!9Co-qzAzw1WJY?$3eMKH;?_oaRsyp7$X3CfU|S> ze-F1Wm~J1j2JBumx*>QpX&Rnmhx(Hv%^!3f*RrGeY(}oROUrRR_m&TBIdpai%Q1#9 zcF6l38!w^yY__soifXUaVeevRkgXG|uFF3mCg8vn5np~r*Xu;&jI`(sPmGPL=@{Lh zL65`6=fMKP5TWJeRAOa`CYn=^Zx=6D$jg^ueIZJdmL?l}9_VuL>AE?r$)TN()(P|; zYU3K!y!}Hx7v?W+l+TVfPAnRh-;{N`a*MT6Uivy)d9q>S=FR2IHjNM_jc?E#XY^&& zuc*uP7}D8mhMoT(b?*UJ<+1z^Kf8MhC{6Hy3Mz_#ZiB*vKBl$(0fd*twbclLSqIS0(Wzx)1w|Ig=rbFaX8&OEcT zv$Hd^v$L~&9e!6BxGe-hk=J=8dTFkSD7p*w)0*fg-r4Sa9I!7NSMgo)9X4IPBV?4- ze5Vs8d?)LjTk+04h=nJ!SB(n3mEO6=e5afJj`7V`f2Cq7?ZXXWm1ZW7Ee<5M5xP8BT{@#BIx)Cw)+D@?J^J_d>$qai6d&? z+ziuT?>t%Vnqy(E*6Vzs>*)i1x@P+Sb^G4iJEs45=lE+|I?~ox9xQ$}Ii}I2OG;~! z67!v(vx)xe{O_N`jnMD0xMwdgHg%N1m1*wWKi^{PiTQJ{{_NyFFdp4AI@LuwaN7=i z(vGx(l#@ZH!(br^FB7gzz_zlS=oFP~BW6_8)jm{L!Jo5Fb#R=q#GcF9<%bs8;5bJ;P6kC5R^o>l~%6w15-qJ2ADk*u!`56ViWS z#$xQt4hP+hQ56e^B1ka=ZNXbEp5zMFya9nLIp0w|1J@G@SVe{+8J&5nOKS(u8g`}U zUDjp+Tj;m}mjbOp$uuEzS6%Bdm(@DW%)}r~Y^|(G9a$f&sZI0{A7un6Ky+kgSv$LL z@}}pOQPt^E3AvDbVQoE{LM2UAv|3R~$)fBGl%b|w$yiDNcIBpAIJ{>w5Y} z@%vrfV3T?(O-zyXpxs)m?gI;z$S8Zju3T!Gvcbt#h76fv72$NbA57S{!qX`>J}fn& z@AR0r;tyQbBD+Pa=%l#e3!6+oc~_&*1ACQ-O+y1GS*Z&_>kW_!HZ zIts-^syn7sw~wmn7BFb2GnoEm=je{v zDfmuI9Xy6LOHXMwc7RwuWOU1p*&a5ozwo~|WHcV9#f`(`p}7g2vSQ_9Id85tZV^{H zp1~Ter{N2W!s;g~N}5ZEWnj`4Oeglq;mpHn4NPW`myh7E9P)Evb&{o5Nl~LX{`|eM zpFGI&V*RDJrEa`G_Ol25`(oKPxRNKA`rlaU|GDc&OIi1&D02tf(#zmtzxWj=pIV`! z`^Nr8uRYAoHq@2ZPC@=0O&u$6?#q$s7;DUQ47{6-cjwZ(iP$H$-z~k^yIj7DA2O8# zva%c#dK`3y6W&B8)ec3WEMLN&yp%KzxuJ7YSa_hnB01U3VxTzqz}Yqa?z3w6g0fIo zTmSu~A+C1Vvq`S)#NXkq24D;4;$oHht)6_A>T= z#M^}%9`LnpS=21y>Qx&GFLXilKDMsfU+PY9-U<66R|35aSq&x^d&M&`^7)W}#mGM_ zGcGsQLNYfPn~iP8E*9ha@^ZG^s2-}+`dIi2V=+d)4HGc0ue}aGc3p)ZgSO*`Xao_a zk&*@8B4s22rAd50W3hBfB*!H4(&|a4edUv=et3Dxsgm+F<-GLX*UCRE|E^rjuAX?> zmoyROB4Q_&%f$z9Bx22;h$nv~V$szYe_=r@)ij*Q)YH|IqN=k`R}YPFPf8amZ<3?hwE($KmwT)kUYP`<|{I6jj~tv^?QH?zFG#IIP|ZPFK%6T|Mh`^)Px| zc)B|8boK1h)x%F$Pl&1>bsB4y>dQ}`I(zw7m*dpXhN$Z6Pgie`s@_W00Un=TyoeaN zghB9tl0%b(3X+&>8KkyK_fTJ5ATXY^dnY4L_zRUjq>GEg*5-OzmU5G23gkb;pY`8* zy)BO=qr?z}C**HwH|1|$6?^G~+zCx%n_h-rF=53!M~#UL?Ut035E?aasT4*TpIUFuW4=nyrkDp zag}Y^r)~4wXN82c>Bw^9-jA#OI_|9ckrVWZO&Q*`cSuNw^x^!^X&KZ0?1~@Fr=?GG zmf*(=`1fZw{9tbtm9Cz*Y+?E3bN%=8_PHZF_l*o6(rx@mHhlP~@dKBQ95Hq<8|z;; zY3ihLX`QpXTzFymi~eU=pBID$b5JZt>AHXfb1j7EZl&^#(VIiwF5tR zThS#oEmSzw&Yv2@xD1+ma&YngxFnSK$6!gF>&WKm7lzlqE=1$j9r_nU#TQmAI2^}s zZrm#=xqYL?S)GRWkKS^i?SW?m6TAg}xF%dkyO1Vc`=M9Q_~dKGY}|V7T31HqfQ%j^ zTK1eiZRYK@xsFC#97<0ii&=c`*aClQoYIWsapSl?sbh-iTOX`oJ$<9|P($77fFW5E zEV~dc#ZPq|ZH7F0DubRGtd7mv>>vH+ro;Zqt?Y?cH}kttjQ)vQAN$(x;bVA?v{BE1 zmcgJU40&PH2zm1Ln};f;l|P~c!OoqFWA7+CI+_kIro8ZC@Aeh#FL~@;zth7PIof~k zzukZKfd^P7>&n8EFZn^;pZqeX)X`>p)~bdYx74Z6;iOW6j+8*BSi0EEncbdEu3%yQ zA7j`imoum1Y`HC9%)y%DC#>Paq0jrMo)9A&*c58)ZyYfu`TmDaQ0;wq*imKCz zxP|#&o^L+-={^6BuRi_dJ;`gs{~ezp1{qP1QC}$J6QdTmV~Ln|;4wS6IFg3I1KP27 z1|I;tv;LVs2pFqt;U8tZjeFuFk!gy6HgT2&NqUR{9tI-arrTuth}my zhesC;>paNQKDu*!a;Cd+o8&HO8;4Gr+#-5%cudb$y(jgNbid`_XWW5(E-Mx`bUVedi zbEG`Gog;sg;D>2^VD_;S)tjHGkdk0-L6G;sI%IYS6nf} zIdIhYzKoBZJ*!XG$kB7>T+$tV?v6gkxI<_>ml?k1QnN)GvIF>WDh1gPII)WmC%MV* z#-E#B?Y4SU6JnE%`?TclgRi8ye5-j*bHqI(@i)@>WSy!6{Z3Q+9rO_Xi44wVDzsIONubJ?un4Gj>A&D1g+e)}$Y4Qu09o)5qXIsLQ)M0$7KrswS^^Hm#Ua8d1&rK_ zV1bHBN_HnD!!;NbIW?n0Zep_@A(;^~(h?^mHp>iYQMT&ICA{_umv88_X*nGuhU8Dp z>gaF#;DfGznf-9IcHu@T*vQF-&&@;^^uyiSo#M`MJ7)Vhlc_z3Y)YddQhbPx$j`__ z57nKDwEhb0gD*DJ%wRI9i>oI%qN7RK?Vi5rA?}>?n7ru`;iJ+UJ3f`fttfTGckI}1 zRPOMc0q!19Hr%)gJn!hrhdyYGdV0RbPNKDO>&7XKa~gwI!%0R7T1cGsxf)Y8yfX^1 zN3bm^88HXNCN^`n_bT4RY~8u~3;$J$8 zEJvQWmmIhFdMYJ62leTFk>L^uKV^5 z*=DSr<8JnsD-JgKV)-G`V}(-F8r zy}o4KZaL5@X6d*I!)3}C+=zeYj|J@71O!Lqu8sZC+_izAlHQX^Zj{7i z?RJ_@O%LAgv)gtb?VQ$?u_Jp9x2tHGx1#8=#I$w=Ws7fZ$(FmGxsOGh{^_II7w_M- z?yahytDoDtMfw7&hSMG3cPQk>^tp(^7Pl>bRr)mn6?LnTTo~kq;9L}rggcVj#KfT_ zjY?qP^LN*D>fFu$^AZ2!U*yj6;r#ye(Shy7069!818FFgJe5 zS9)se#<7QaXMf)Xpv1qFd?QUqsI?Pu(HYTT63{W2Q*t68VIVMWfZ=r6!%5^I#7xAz z>mRVFLJ=~VJ;pt?UrRc$0bt3{E0Ceq)_JL*C507v@kOY*&HvUR_O%kU)M%CB8`}!X zC=x#cL##-plm<%6mOE&5jPOPq(Jkfl#-pdCc!kwe9f+@p$y-tSO6#SP+ITQ%gd-2Ti|C_9B%i@hU<5DVNj@?tex-yt-XquB>tS+fP{Sx~JmHJ=IK{|Eo+?@CzHn z)(fS9bhW?-eTO*hlUSq#4S^*{QSPh4vzJ$hwMkN3hCR#>X%+r^Tn~ZCY!rTp zqZg(_7^aJ(U z(YKxGi$Ny0X*Xz>$D+^L%aMWdz+D5ZmIF#tLm$eZjXOC&0X3x3Gb*Ea-qIec`u`hJ z7as0&d+wp6wihQ@*|}pF#}-&~n)f3S3oUxB`~Vs}ecU`=75l>`b3k@C(vQi(hyNd( zLxTAeco@tD*U~&!q&*APw6Nk!mcMgbE6<{-Bh#BUYwUJAE^|hN#l;Sv@#DW1tc{Hu zS@JLTm*45wa#y8yecM)B3o3eyiH(Vy)3dyIiMMpo3Pj~G_c}m6_CP*#WdmZk)f?*; zn4qmQus+H*MLyAv5+TrwfQ?(aU=k=9)j^FLvvUDZ-CgWKLFjm3$j$3`R^a^HH;Hb#W7b?HOziRre+Dso2xH{L+#~TJFI_u6^~D4;~fbLhbIo$2JSvOL`GHt~J^Y z#ZHW^B&>b~wH>eUg z(PAyZX5Y=9Jb|CYvcXX*h&5ocv|-h z+SpBPATL3VB{}ZaC|h$TaKiW;oWcU|G(Y&xp4gAZ<6n-Rr-s{O{p z4@50kFhRWO9RnLM3OeZe{}mfW+b?EbRlRs^VwaEi@7UdONas)XZ@;<2iq=yX%{!DZ zBysYhyu&S7<=gLk@id$I=DS}!#rECi+vY#E|LEO2q>OFDj~_u>aE#jGhh?h&E=CQP z(v29ktK!Z5u`JG!7`a&H>$cEH&}*7KA+rv3Z|I8kU)3ZG~~;cx8d2ZY;wVf568 zV{?F!i>iRd9{dBaT!rd_1r<3W+*`Z9DZ8y`T10H0$x}BrE#@s=-G0TDiE(Ro`p*dV z`~r4z@%2NCS8ZA7y7{r{s%5v{ZU93v6on%IlMYmmqYdw2fIZc6i^Iwr}iQeXvc1XX4Bm zTRhE1FIekvHCj8PqN!*2yipsXi$#l9u3fiPOq;#2O`9!+M~~fgc*)we3oc*iX_Hzy ze?i6SIj);-I{|r2#`tu`9FY0l=E^(BDq0HN$0#EQM`!}qlW-J$W{wWxIE`sL#>(xM zmR;v|Uwg!JBx7ZUKP8-(Us1c4H}XiWm}z!jqZSpyy4&m9qDToBF{I=e0#aT zlyW5ZJZT$LnJVS|ZFzu)#`@=$bSdh$aaB@>XOFGjpLl6AoY2^q&|=u^N#$)=9p75w zuV|OT#q%`}KY!c)kh0~w)?c@A)Icdu+!$@jQwwl>yqXC?R+J2k>>0#6;DoO)qAAUY zh@hTT<6K{`8x@dmYi;exK0rOlB1)$3io4}YvzB%0oIIuP{Cir)r*9auZgtzFvpd)A z?2yyxLX(l}+J_{Ln>+QE*!U5Sea&0sH}^cYV|{kcb0_Y4@~a8~aqw$XtlOxm=um_C-6p_5 zc5CB-s8n|g8Va9??G<5-=(cBX zxc+#eXG7l5LD7k?Y`JX5r=GkS(+@O_E6ks;XJOOHW5#Zd@ywhuY=g+p-;mg0*W6>r z?x|e7vrW4V)2sFztsSv+^)-ddS6#(7=PfUrTUfG^WN;q(J&bg5vK6VJ92l$DmJ9}2 zym*7ML*dQ`ilxI%Pf=nrNDk#?>Dg-fC^59F6~&kVE{G#enGT(CJU$_9&EQQN+9Z9r zbKUm#LzBO`IemFb$4=8KM{Y{b(VUs=mxz}~981woMucXsxBi#Hd?oZ}C>=fx3D z{N(e1Gg!78;A|+{HtLJmE&I#Aw_7NA#y<4-jAq@2_ihxP+^hGDusj~Md+FSHu}$WB zALXpiEY^I;wA8`FC-rxEuf4ov{EB%Gz-r0$%`bd8Xb!en7R}mbHLdCyGrEK~t1OvyS#yye-m~8& zv%@1Zh7>p=3i^x=4@>KxF|F|&9(7}W;SxTw->hcM<_#_{t0>04U~bOX{&9nc=JXpf zw5MyqvQ-!!=+h+pm@V2guv=Dd8``alA5D_`56W(-JS_W6QU=Z>v2T_~m$vb?@%uvA z<4gQw&gVKkxFzSifA_`U|Tw6c72vRM`-{{x#9z}+C5MaC-N%OGRr z{##?U;%c@b#{c%vmczRhOmEg=$C|v$Vi!g9%^5tiNmP2jUSm9LHhVhn+t`*|+;I6- z8<#I}4;eIL;-qQaJ1X7|K!1uz_JeJe)gwz!kgWm4U0v`^^QdC=nK?%%f{qDi{wipvb6A}eN2 z>CpN5ic2?~y!Oo2Tm2=yQ^E?C&mB5xJk4iZ|IHU-jDqt$tR87;G4!dBfX!5;#*yy< zjw4H$Puj96xw*G_=UZ0zkHxTO`BMi!e0t5A(?4A`NAgb?-NC;N;9o=gVzsB|V&KFI zurD^hE@EHoFaLY{!pkGZ_3F_htXb8PqP4N%bBCmL5BJ-32@u}^97h0`zaRp_05cO z*^;wkV}s3%yWg@V(QPMpU+8TXciXc0%Uh(z-&NXva+|iT`Q%i~iLj#VtFXi*f?cle-1(J7w3!v`*I%HntIs#^E; zwwn%K$MOr7%>1UXaOrF*Z_K!ZpWt`=yS#ROli%ZEU#q-!!BQMv{!iC#*vlqHOXN%X zj7aRvww9R{tz|X|PRU5Uk6rN4NIFJ|ite6BvIU+LUwkNi8!tEMinKHBgkO@=!C#R&f z@06zYzkhd>aGBF2&#@;cIidx>^ehoyL7*BTYKmJS$56lmrSk&mVkM-6#p^>!42~7zs zuIO_m$Z_$-sNun}$iTp4YZ@wRaT6yEMzp!Qv7yf^;+I0rR{`EDn95K)30*!4eL9l{8Y93*31!E ztWEgjy{XN+=9T83YSV6#^O>a91+7~7Uzj^^r2m^Y|LOmYr7^}9vq;vxcK7lbSDyd$ zi>muxrt!KD@*``c1=|j*XIgsxE?1Bnlq+aZuHb{8`@dY$Zbi}}miAihUJpO(9P0n6 z_C^1y)vH+v)t8?31W;JWs#U0iq?fT6-5)%BsK3sV?&QmrfHZn9~P)e`V zCXU4ScO>*^j>|-5gn1hE&5y*E>*X&sX)>~?vgwRDllDYAJk#e)xg|!tl~O(+cK5@L z8pY*w>Yco6^K~!Xw!*t9Iktb7VYAw%?3^5X@R7!$7n(5n#DKdZ`?jJ zcG0FC^J#pH!I1Y~A@2=syd@X5jkkH@3$XD4PygSoA+g1vPJzMQ4q8LL-eSjsd2^a| z`Q^mHQ_1m1DkhDM>-cHaw!{8ETb7qCeKfvx>FUJ~t&7hu%sbK|K5y}yBaU8cPqy#+ z=;}9~dHcyt4|V8NUG~CLZ(Z2F{m{wvyKg=$2Cmy%b@irgd*wV|hJL?>e#@-1NFW^)dXYYEP$?QR?#XI%OJ30zEd<*vS<03M2s$EWsUZroTALDx+R2)A31I98rlMHZ4W=rk9(o8Ry3cTWi_P&!bha>1pMQ_CKXEA4a>u3x zcADu}3brHFsY|4jL->$9#FOyXqK%h(F29cTc;)A;_LulyJ$ua`<#oG%OX-k$^3KPW z{lTlfd^ZXd|M-ai4gZ6@y7qq7{`1GbXKicW`2RKS%ovOLun)C{60Ew{RQAp~Eks*x zmN?Re8HF&R2drzadP&EQc(gohJ{Pss3tci1J8zG?;mG{5@b54 zv?l_-i?kt_O-kwE4|!Gu7c}vEe;we=zGeE_WnI>-T-SbR-q>APl@))j@vP}s(eYQu z7ygIE#2N3rUt7TUKe%bt{0qN3zVJT(JY2GWQ#}`Sr8=+8q zAl-876nWLI(=wSLAbF}f3@5%7%|xO!`Uos%h|c#MS#jhE&l3~~5{$%h*|*^)}(H*VC&_Tw~!FOMJ&} z5AnT;&3Br@L3}siCEpc%8N1WwJMEE5c+GbcUh-YR?=fDn`L6LtS$sF)B_9>M*Lc|G zqsAW=$VZ&zGk7HRp^NH+A?!ZTRFyP2Emi4tMMk@88iuJYS&C)$JTHa8f<7>wi z?w%M=AfR!}V&#^6YWS9R9|%5E!d*Z950KLBse7n^?YC{gohHnkyjM7G)I9`-nsOD)GOM)yI%OIcO$W$X=m zoN2FF!ef5PLBL#4@KRP4{2t>6dz>|VQ{86;FJ)E1qt>21&Kf=jeUJxR)i@)sz;VFc z4DZO}J#M3n-NhzYeA2S2^_$fanlB{DFLwioKI`K-u_Lk(bZIR zbN-AYt>BD_JKxnw)4d$LvVZ}bp9}}&AR26NbbguPIb)R#- zsy;X_kb(zy3zB{YC;Yw}ORUhRBF!+P6$EdFWCZNR^F zW`D3YVYfS92K**P_x=zIH%XPG+iB7bSiaHuyoN37#VuIUP7>A~06UZ9N#b=Id+KH& zZ^P`PhIZ+BEpZ=#@2==@8{Rq@*D~j|hIfK;TlZmVh}%i7#!(wp#&u}HY=dmSq^Oy0 zL-J+|&57{@KM;M^b3(V#GKlY6s1FLhj3wK1Lc_PN2QTM@gvXp1s^^4;ZWS<2TZncA zTa~XV*RZ7ZOnKQsb3(y-d+0f#VOxSTr11bh4gEY!V>;FB=k2IYWb%b{q~uGirdz?w zaaHhTY#3G;COj?sh>!K)rLK_h=;s1GvKo7Hv!4>TkH%HOdME2qwP8U!X*&2er*PlJ z%_L*6hNS1BZCZ41n_IM)@KSChyvy(=YWx&7kd(Ioe(CdD{@)napMY2XVli{Ekyc-A zf6-~_cBw0lIPV9%)T1t=c#h_zr73E70;DE0)6s1`+%O$gUy@dmUbI{8}ac4+iqJG zhH4VE4eJY9@=4aA*9hKa%Q}URB_|Utz8ea^wA%{*9{8==&TIVk+)()C+>rPoGwt=< z(AX_`SGeWrbA@{!+jtS&E%m%sxL-1HyN!Luvslra@~g39hDZZ|`JwQS()cUk(`z3{ z)81D1RpI|x(_WdSwT8yt#*}yI7ZJ`-9>!~ z@SSaUG<6mjQOXvzLu|GkRqiFa$>%27RX%R9an_by?GuOVeoB3Jz4HOkqHI#}piqk| zfwq8blJe)J>?+)Q!4oaJ8n-RG5_h4~uW|34Kc)fhb^$yY>kikr_pxHzKhn6d#xci7 z;+{qNOVTaJ^Bt^I%<RI8ZIZ#Rb>h1T5S!An$hn^oY`eOW5U*#C7 zzE&FN?J?5yG|}TP>G3*$(S5BP*3h=MH~R{G=csUx0Bk3seUIU{Wmo&Bwrx*@zB}yv z5#tYg$1pEuYsuBx&hm{E?nxT=Ue=i%w)moPx7Tzl+_ffdH=<%25%)LwsIjMMzAOB4 zji_kf#|~VCc9L}BufqS5#=p<-+w)H2hqq>q>okA5qk?=B;79H0?X0E$C5#8*aZR-F zup_JqDlgWjGhNdu$4{-RIx8NtX0|+$e8@Rw%PMBQSc9le2YJggE_=zJQ@&1B-AW*;PrnT>@yF6UR_nat zx>xOatnoWE-z5IKoVS5~g}=CNA@Ypt$td;wHF{2K=D{@g6)pRWdG=W8 zbqm(Cri@^H>O6$_SqEes$vNAVy+>nm3FgTL(vuRu+sI{m=y@#W+ZJ~#wAgLDtHQYgh|Q)^waDRLdInk@?`($U}49)~>OJTlo6iEEmT3p%{K_LThIrM{PQ_*sgjsJKNLH|#aG zMOQ#PNY3F~$UjlOei<8K`zN-qZ;i77J~^JHegi-0njGRs8u)hw*#zJr{ylH;3G_&t zpy;W@4d~i#YkGop${wfm2_!u(qw-Si6KHBIA6U|Uh09~YN*UVkoNtW*mB6z3s^T+| zkbk@dz7`vG7oo%UWu$GYB>!|g(NR26`==y5Qkn@`>NU)jE8LSb?!CCOy`lZEeLRVK z3;CxC_ukTm)+15r1;TyGJx}94$VS6<)Q`)+AFOV#*WtkL2yumiFA~4oIEeqnTkmM< z;S~nF0}bw&NOF@&@078lw%lm{Jz4v;;G&2lxtXNkjpuB+p-dvlAv-oR5^^)qc^7B` zev*%W()@bJpU&?fxd9%UUyqU8D0-yaD0(W5ckJ=f^mNp6De1v_1n`m`$ju*GZZtI> zlcyuWpBCi9BZo!m5_ZD&;dR`qv+iprj8`u86^kqhZ(OkZO7OC;T{JBUzx3f1{yoM^ zw!PQ*J85`{KZDk+5_@C{fTg2!8;EDCh?;KaZucnNkAo~1K98vjbvqusqxWZI zJC2SdpQgp6}S_K<2gO$45ce ze&}wEdDEBZDPuR-w!+H(3)ma<1AZpOo@SZwjqTVI!OQ;I^HSn}*B!3$?_*#uQ4c#KLj^z{zp)X3b8 zNh(?rbnb-MiNt}R+>I7dlo#A01v~12rvc@rCyt#29RaipsmRT0O59M@RFJq4SWsoj z7S9&%Kfah|RaJR$;ult772eXzLu$AAM^JGU|2(+F|39VMJ_{a+bqejRlTU1&@}cPp zZsT5CDsh5bfq=8DGQk!Z4FSh5k(Vq==;QfBt#$zt%0@YvaalMBqpqcq>y>pTM{*my{ zP%{bd9hW{1e3|y-pTS~a{U!N*hsp14Hor+<1o2zd?;(CG_%hbb<~M1hAby+hlHU>@ z{La<<*4U#IzfD-lKLzXUqxq*{5xt|F8EFrtwL3|)-$l3w9@LUTR!LGqyZj24Zzj4G zY+2u6EhJ%Shu?&qL*p)C90e=s{4>TS`WW=ON!`u7&RNut;jfO8{Q(Uj>i7 zYZKmUtVM4F{XU5wv8aH3eX2>|d05NEuDH_pY+nx&ieo_^&a-4E_Ykd zw$@YrG{Nq7UNB*0{I?RZZ?nG|nr4;Ksqh<7hfcvuzmX#j1UaWVY9u4j336S@!KM`&oK>alZPrmyy8Uv+&WnWaAm9w=D(^#6AeUUtRh4_E6KL7PR zY8wO_2D}nh%E(RdPEG!6=ynoX%fc&8IbI4rXuLGM9YeypUZ8%Of~R=Oo3v(@dX14@ zyHnA)Qfp3a9RhgB4+QAhs=CW;9jNstWgb|(;yxNnrDu!l7J-vypESH3FPD0GGmWRx z`Fl6&@zl^EieGh`5a&kiGV}+q@ZJx+ME(fbn2()uoE46Je%&8Ei>*8g)G>3o$sSb` z&-Y-C=$$z&nYLa*3|iJA1MV7WlMw^iVet_87|8WtKH_0nuR8FByfba#Dbg%u7O@M| z2ve|xW3|R{o%LMC7TEpbtQA|Z#?u^o$tR5iva-*ZQ5yjsSTSEYrY*>JDqB^?mfAMo z!e#qdk|tRL2s8nnX!^#Y33#NeD?F8GNlUwy4w7~nZ)G>01H7_%#fV|(+$G(v9WzyS zNy@x}-)r1@5t+C38Q>i~Wvt(XKWMy8bV}+w~vDU{LM;DX69q1$KNdfi&bG&b&K0X6p z9dLf9p36QC)!9&5w~+;e9M`wWRmPo|+2-8VHW{%MQ)U%B@;6MITx{&Ob73@vF?!9d z;A=JfUgHsa&s4+5YJEuXGXKoPzu)+$oqwj`gJVkaoryB;ZN78R_{NTV2fgFbv5YB* z^{BZ5Ux(}h`~~oX>P?Yue3-_3kMXB%U$mUH(DW*QL;8Et-@usXdMxhgmd$kyB2e-! z%11S8c`=p`PUS#)ft=V?s| z9@~`i`K5@Z;bH^8_c8I~U_738M!QAy{2m1lS4BQAMBe^!*JRMC{KDJode_|#@0Pf) zvre#YAunTWDiiJ@@K*m26LiV`0gv2gOQO&1^k#Ro45F<0;pQP_W z89vL%oZRnq$^BS-mO5VUhq_QZO@2n!it`rwK1IJT_uX7_A5Fdweq4cl0GHg)!e>d( z4EjEuK7WqSGS=>rv37h9nQ-7-Ej}ZLi2nSJ&js|kH+>I!{_7lR!ucO#hY>-sLwQc> zfU7(Be=o^0ZqukcXU!BkCMn}x-7VQPI^y2LRjzJ;$NYrsA2&X!d*6bm7`=qI^Jmli zdEzp{ujcJ><98cB&07f{r}0a9nCfb7$^+yO`&g#dvv;i}G^w{JHFP)UrC>* z(Pv5H!x$?|X1#TDf!Nd-w#*_MuZeC`(t3*CQM7sy{x;vx{R+t6qukjo#5d4Hd_H6I zjVz+%*}n~;oEAyd1cQ%o91n}Vf5%1@4fwww?1?} zvU8)9xB9x}-_C8le}GIBI;gLBiTn@oBI$>&B!l(!6Md#V0O%`>PZ`@`^P0S58Xs*R z%b~9hQSJ;ZE8zFCP3fVd`b_ddpOyZVpP!}n-Zk4B zXSZjKb3iWB#q@2EzP^aQeVW><(d`H7U&@6f{oJ0uucwb2=wF$$D)UWUG9MQGkvc-= z*tukmAwFkACmeUmJ-KgGe~f@VIqHv`pHbGHh?>s_}>yUy%CcKl_ML$#Mhx)4$fUHL8e zFpoaZ(0uxD^75rFPNKc2FNlw2hCE4ZYJ8Gg$;VJj4spjO_U4Iilc_!A-%vh~OXg!? zTrdy*KEIykmc$nV-R!jVl)U?feT#LEOG>Rdwlz+yvk=2jb14}kWYVPfuXNs|xxXi6 zLC$pKmCe?>vvzK_x#xZ!&QeP{iv>zC?*_8R?Y%Co6Yc#d_+QwYd>Oc>oA3i{zy2cj zQ{it7c!j@=&%THrXs-2u!vDO+U&hW~g#UIPufi|S^eFsZlzq_WP_&+jgYJ^2f|c%4 zZAg2m`rwsw#pS_B-UuxD)VBAG6=lY??I&T3BdHDm$C!A8J+i_n&Ij^F9@3AKQB#eqF=i0~6c`?Y%KM<6g ze=7?^wGEtm!t=n~{9AEXpnTq5>S)&$=sN@fF_$xS-HiLe^Xhgf)h(rT00#VVzG3r+ z?NI!Y&s}r%^JHVVd@lLtP(B%E>VJJM^I4jA%Ki*wUVGkYdD3e(rSJcT=bV%+kg^B4 zmUG$&IESKbfgStY1=`P&tvW?AlItJrm_a)91^WCwzQ4=e59>b<;X5jJU>7eizAncx z25TZZ?LqGVlX%$`i+5tpcS2ER!hFY`0hnWUE=F(vDEB3(kwAHA;O$ItgmBHo^H<3a zlM@)v9q6GPPvrl^Q(p5s@;Tebvg+=|^CbTyG1MXRK)zPbjW6r&!}EE74>(f`_$dV6 z*FQ1vY#E-1(Q}&f#23tYynhO7hn>Wi`xRa2S-={t?q$fx2=Xb;P@ng*4{V=;cFBW% znAad{9m!^YWx@})^Ju6NhqMg|dd^8r64)NHP8|Q&&bc;w zFcl--P0clx3qkx{L;R#%2ePHt(q}cNaxjj{$N%3v8!-X8pwb-=`9x7y%n`5goPC~E z>n7yf2jmxJ;GXt;c^-_x2ZLSpKCO3|w1#Yl{!tbabgGgEX`7Thcv+Qgn{0VN8+zW< zDVdPANy&s4`!d=#Sw2`zbF?DQ`Qs}&573u**%zGGP<^@2?hCym;pR2z}&YG5Y;2Ql4ee1kga=lg#0JDRazWj}w`1IZime6OacdX*fwT z2OM&o#_4g=7BN8Pj74?dIF^wte4^Sgezn`s^A@LOs@rP$NkO09tpnwpQMkRv%eE|N z-0`5_o-+!+oHGi)H&M?RjXxgaWS&JdR2$Mhs5TC=o_3y~ZbRlwH@A31efWv;1Z5jC zXL>VYYxV7!%$e5j80Ro&t|z(vz#NNj?Y`*qZpf2FeH3dhUk$ll3!T_OM&#spV|i<~ zqN65q_R|}XDXcP_hukisgYhw($7G|6ko$U4wyw9^(z1oKdja&pgK@kmeMH2r<-3~% zX1RP9`GyT!#XgSxZr$(xQ4}BSAU#dk-b(%xjrF%UFCy1p9dHw(dY(hFFVEWpN_@55)^^S=z32#?C5A^kpi97`lKK|v# z{)2hm^oXM~n`7xKy)KB?>o{6pyD9)Lb-UX*BCfXgzVxZkK9(((@dsxcca4P~`TW1K zG1f?F{L$E(lJ`fTD;O)Z;keXQVz%L8hsT6jZ|D}%A$2M84e&_X_ZIGBx{X7q=`h54 zL(gU8S=6(^rLG0KjYA`a^@eUE4Q*I9SoR~z{hMy%R@6|?ZRmc$52Y(8?S6P&_vkim z9nr9jZfGMjpdab(-*p=Yjqg|%b|`4sVzp7-M%F+f9U#YIlS_^r*;#gQ*sl%xFd&dm zkO5sQ269ZbVlajzBMrt}*NnkB0kUJ&N5CvVEd_cD5@fxld1lsBpfQPapVxhb_LXingFF+|@nKsUf$?hV!tXMwCh9#$jXlYX14-P!kUk^Yq0e5l^_j+v+z7iKlBC};$F$^39R4lZ_U_l9kthDdcsNtN!0)Mu)VgT_-V z%c4s6BMEKTx?lFA#HG)Kvx8lKv)<7CK$bP`WH#H7vS*Do+Mzm3kP(tWOFQYdY&j>{ zw8mWOw5$Yr3leI*rQ5S=m%yXpPmrzbqU4Z&Z_6!tndbT)q{;px(#B`F^3eZHCj3UM z%In8zP)EmvkM=(waCQ}a;MMY+PTf!bR|C$j%IDi@e$DhhL3@`Jrvc_;;(T4Llm*m( zlm4_7A2=qC(b*>D+rNU|fvapLbfDfq-&7wS(QO|26UiYbfNL#PkIFzI9uxys{s&$=0hjZtd5w z4P*)Gx;E605P3EuP4boH*pH~XP&DvEo zH&E+}q#Sb6VBGCJNs=F{_6sOPofvuxQe?fQ+q3G$jKSF7P3x&$Br9d?2R7M))?;ty z_DFtRM={JBP59C1ef_!7S<9lrFXQ71|3Eg0&9vY({*G2$nRM=TR7*$U9|(P`Pt7K{$xEj6#i6=zlwFU>tkvBc7GLr zklSlW{IE$EslQ{LWgO#w+IhEYrov5n;74WG{0}>>b0BwD;-KeyNDs{RKPhu0@Ep+r zdj3J3AM!E{wm^6JAFuVm18=zszk>_^V(O##-Hjv1Hv%=4|H)mCYrAxmx3popGydVV$FD+oWNjObZ-ad^J^;_xyj8u&*7e+R;ULgA4C;cCOUs3Jp27aoKbXk2YGTt zXWzPGz~A3LOFSrjL3W9H&eqmFhUf4)#2Sh-jl^?~y)W!TVf>A6tJxfKy7(WYr6 zr8!#Nx)2>y8Q90wQ=Wpm4&>cJ(NS1Fg`!8y`VYE&rF40}bRqIFCdr(}|_piz0?;s*dp!R6BY$PT_#3ldyzGO;{;i;4H2AO` zeDD}+FTw}wz-|yh^ufA=!xzKlHO9Wk7`n|kGR2o7uYH+|A3@64tvcaOsd3n%Dyv81 z`V~hMEx4uTwd56*qpge3-`=>f;_I6|Hz!pjo%fv2-NoJ8MeQAI#0FkdJJwO@J$cgW zzXrJjwcTs69ERaR#*nHr?lCF?`ea!a%Mti5`t-lilb9s7ZAsCJ-*m#lI;c94z!b3_c3%D;UnEhwgY%}(DR}Gk0=MY z18x?9ZZsks+4Q_O@W_194#s!txu}xQ5p(}2Fy;>YGwJzzpf@1q4*a`7C$n;bjVRRG zu}90AqZe1BjFgPe8A`r^Go{8AAZ}2gPN_gKQRTJ1s824dz(Yl1uHr`ePuJJ}vet8_ zd(ny|PkDAdzk#1(y!OHwZ=>38cq^~yEM;q|+Jnbgz1ab>WzE?juZ5HdE>$7YX@k~s zVJLQv4}rw_8mk!+b(*qdo#tc^88Pbi=?p&bkqIj%Jm5Jt@3Kp{s|&mQQh&1(4u2u5 z^olbV-YH;(qSFOQqm{ddGeHH4M!IC$;@jWPX$t2^TcqYR>h1>#zLSSZe+w5=$H-~x ziwsjY6*I6FEBv2c)%GfOUcB+=xMSc8 zvc=eZa7X>u8o$)v3~_ec6Go3Y_A+~ze+yJ0>|_4zKy0DF{M!lmtIWS$@TP7y|8~RE z^_hQ%0?#?~@5Z>JOKK7MUl`=-8}sjQRA{R+|Bf&^eL9^Y3tDmY8h*9brroHRj(@Mj~z>RkSrRnmO7JEh#QfEXXU*OUy4>c4=wR zLT`EEu#%F6O9~UyQ`6EXl*}(FFG(C!Qe042Tvk|+m@6Shl;Rc9po67}<=(=?0n768@yqGNa+(?87=HYi9 z{>sO*WyYmOsZj)X-b>#O!?O~6T4EFeA{_@{((rQvp3TRh@n&y0PAN$3l>h4vJT|WGprI5pm12&jB{yYwl8bR3gmTJbjEVT!4dX0v{wGdK z+AN6;loRNF1C=lhoRyYKEufzhpif&t!zZG`ep~FuwnJ5CxntE4`n@wwm30N_-O(L2T{2KduLn*d zWg`Qz7Z}qA=h7}Q`r*d9{$TPzba*g2I~0RE9Niy@Ra-9BE@N<~&^ScxCx8``P#a|m zBBRrgRXqa{s9EsP<`{F0d0^}zMCz`?iO!phFN}4@R-AL%hZ8}EjZIA8%UUW21rnPUPzzG`?j{RQq$mx_p8ih7j2L z8Ww6CVU1X07KZ)u2o`C)Yy87_AGYWN<0DjH`H)4iCM+6xWla$RiiP*tj5TL15N}LC zt+Q6FHA`f;x(=1Rl2|)b5AVQ|Sx43hb$+|BuCP#*tUF6VWlCIl3%@m!^YMOwg~y`OW0CWZZ2WV*mCT1l(BNQ zf>p4UY!$ndUB*_Un%EWWO16frWmmDQ*){B1b{$*C*0T+$-@OTWK%3bXwiPRvZ8&AV zgY9Iy*p2Kab~D?}Zee>^CEJVW(tgw&u3`t-t?Upx%x*(1;G^sqJI-#$8L1QOByNql zi&e84=3{rWQ|umgFT0Q3&mLe8vWM8i>=E`TdkiNBo?uVHQG1#_!=7c&vFF(f>_zqx zdzrn$US+SrOSqez#<{-xjHlV_#wp_-;~C>><4I#Z>Zjd-Gjop`kKy*1H`!abCFcx# zhrP?*V`q)c?0t3)nY8EGhsaIeW88vO&23mw?KO@XH(=M~M&kkYk?}bD2m6?P!ail6 zv4679*%$0f_7(e@eZ&66zGdIB@3C+5Bm0T{%zk0NvftS6><{)Q`-@#*wam}zFu@q- zTyO_>au+T~3*n)>5pT@HcsP&Xkvxhw;n6&XH{~84%j0-6-ki7K@jQXI78tbj7C zfC5`(Tn59q+PK2F+*o5=iFm?Q@VOr3Sv;Hf}^Kewg3JkMN`X7(dQ$=kiwFll)G8 z7q8|u+{f?cr}#bmUVb0HpFhAKZ|CWEpzvn;jANf!GXZ{QSmH)G!-5ZE8;{m(Ok3;@ghOA6s<&Skto`TwjxQi z6YWI@kt{ljPNK8uBD#uhqPs{DsUl6FvZu%tJw%qs7Cl8T(OdKpeZ?iBpU4sY#Q-r- z3=)II5HVB?6T`&_F;a{Yxni^!BgTqxV!W6jCW=X7vX~;KifLlHm?370Sz@-BBj$>E zB2Ua0`JzA+iUne!@QNa_NGujh#8Oc#O2jg;T$GA3Q7%@93b9hG5|@h0#AAMqDed6YIo!u|aGUo5b~Ev)CfGiW|f>v0dyCJH;+>qqs@jEOv`q#2!&8 z_KJOCzc?VO#6fYZI3x~>+r$xZR2&n>#qHt_aYCFFcZ$12wWtw3akn@n?h*Hj`^5d? z0r8-CNIWba5s!+;#N*-#@uYZ4JT0CP&x+^7^Wp{ZqIgNXEM5_>ir2(x@w#|JyeZxi zZ;LbH9r3PsPn;F+i*w=wabA2VJ`(>BAB#`Kr{Xj5Pw~06U&OECH}SjpL;NZJ5*I|R@QXT!;b0E#5DtgK>2NvRju1zvqmiSrBg_%* zh;T$Yq8v>e(T*5LQ-{Y9Yy9Sjb2M`_Hyn;JlXG)jOY`zeONt|w6_ys26u_e{FDxxA za15WHR~oi>VQFDu@shmaf}(seqaX&mB?a`C!&_3am_Rd9hlUiCl+Q0* zQnJ!nUQ%3A7G6*Ua>}rLke@>Hic881mlPJ|IfvyfU7F_{T)3n>&pF9kSf1y~&09LZ zAdgQg;^T^(6N?ru%@gCiMPgi8kuz_}GH;$^KA@Zn>AeE^p1W{aSrK~UxC~zi`6ZSi z<#~>x5@1`Ru&pW*rQQ-(nM9Z7q+g;uZ-sk>dQ~h#3;FnmkIs^%g$q@eGX|%r{tQkx ze`nF}%vAL`Gd0uv+{^qu!2CVX{5@3tPE&X?(@gj@6Hi*U`F&6GxA|UrhWeat!l#?? z=_Y)-37>AZn{Kw7ZoNOqe1EX{dx-hlq$k6qC&TPVhS^?**EVi)5M!;(w}MK?_uKaVdC#$ z;^|@H>0#pOVZvvns{Uu0{mwG`n`OSA)x-SWq%+H;Gs~ni%fz2$;?FYiXPI#FuU2>uL6*r`eC5CjOo#{+=fO zo+kdDW`BB`{pe}-qo;|#r-{F(iNBYLzn6)>mx-^JiLaMQUoZ3h0Veza6MldRKfr_^ zV75QN!r#N3-#tO|I^-?$46CUeZTI#ola-%u!K#-4HZ!#E1NnRlCTOWtDvI>2#c(;FOLg~yN=?5 z&f>Vt@;E+cP zRj2CIsZ;0Hy@zmMhBC}7oHCEeVDjvY+ZQ8v7nCo-XjDE`@?>64p2@RsLCV~Pi`De8 zz%zU1f->*?@`X~4mM&f}PbJMY#pmYgYUSqkNh!x5G^cD)`P7tobIZ%6acf5Uq8Us# zI=(P%+RP>Kc=|#Lo*TcwG%}~GY>J$zWbT7X2dPFGG-!}&G{O?^4ZRl5nKD0B-KU~H zO6fIw?&3KqE6NwlQ?bn1WecV=>B*v*fYPU6g`15{NgiY+9?UMEwkR!rV$sYgnUiHh zoSMEe)S#j>tKuy z#_C|44#w+Xf(lYq@2ZyfPSh7BsX+IL>@U?xDza$lyu_R2xs+-17BA2@NY+p>-@=*8 zbVS}DyEj#FiB2|mCVeh%O_rSxizcgV7tc@8RpE?JXDTBqPtvF?Nn?12n8}hvI!7Xk ziRAsLP74>JDy1x#Id{71rj)5=3ul(iTQ;*y*H|%~%3a1(ja5Z;{xX_0y;s@nMW*H| zxhhA-yw_<`lma7DWyJYVF`b$ma*9g4CDfyAk!J=q@r;%K7V$5&=v1Xr%T7g;i?qU* zT&6>Bk;=+jrgJQsH=Wj+m0YI7wBiIAi30(fn``K zm)=rcM!5=7OVRQ408TAG6-_QRC70{aTdH#`S3%m~ma@~Px5RZl^0XMv&C5+6oG>KP zrzaew4QaV6ZAMGnJ5&u!?@SdW4>dJMIH{Ts)is}~TW6@L<4hf<4n0+Ud+0EG=51-i zS~5<%ttFm5JfSA(Qc%Q27;3B3h|xD?kbZ5#rS#be2i|LSbIewO=UNK(%;ukWq`rTy zzJFxGE$MR;4!k4v{d0A5&MliiZ{eZ^^XAVePab7Ro@YoNrAeNrf{al!7Q@*K7SEYo zws=v-yu>5#XkGRKUH0gN;?fr+9C%0TvKQ!JjJ|833ev{3v{Kr_mbmKJyj(p`=H=>n zGPjS`TXKyamY1vN&Ai-!-myCKMLHO#J9V+{)NzKw#fHLhn!?2@NE#={M$%&WKVw`X zeHn`rkCMlk&R?vOB8aNp2`N)A2!zM-w}8`)Cl zv{4Cpj7rF3)Mt4H}X_p zC~mnUD?za8lv2@0qMDS7jdfg$R-MQQR((NBRTcNQ$W)V1GpR|~l3P}SAk`NKt5Klu zQgz77Q3q`jMX5TIl^{a(y;^qadyV8Y7ZNfxLQ`Gvw@6HNoRuIj)rmHVl2YfTC8WNZ zC?Cz$7TQvzRMcm+RMht*%0zRu<(_mS{qzMb`c%AaE5WBPYk8;QZ4#xOx!RIznwD|u zd{%;lQztUUv>HBRT5fAIHbH9YOto0kaV^wTJl%*ibD^cRQ+Fz6fC%se~PSk;~ z6qQxkb%sjiRmSL!nR4FM2jdbFr;d{56?MLiw9v$Brp_d(5jw!||o-s3BCXQ$AHy7f^sY(sgRWr6Db>O2U z6-kj5Q?d5OKoq}KolKe~E0H`;7q4cx{DH;x+{NjM1o=<9HQl6FS)`kb>L68FoK#e0 zR-l)GIR$1JT40u+1!nnKV3wZ+X8BoQrq6;LvrIP2%mTf<%qhq&2(Il zYwpW6%j;ZY7RWVb0i%}{6|#WqqNkZ(*r-f)e`Pr8=0P1haRk3Q{J-do5*YJm#IK6E4@m zoSAc_(zX!$<=m+$<;$jEE`;4>FAN%Ji~+fWbnWxB5hAx#Q$?s+C%05D-U$^Ixr4OP ziu)BcgvLl=j0^?F7*J4XTBXpmdS7$g*R)1oLw#REeP7e6eN8L$kB8=bkuho%8DmnB zY5gM8i^V4YVv~Qd>BVAmy~JEMM$ZCc^eiYby;5T6C^5ZLV(M37>Q`dQFEQnpm|iL| z^p%+Ul$i2LP5GrJ|5B5GsmZ_8v?FE#X*8hT4jd8MYjQd3^3DX-L&S8B>L{a7%_ z&_BqOKgg6n$do_Glt0LnH^`Ky?GiZ!gLM9dW|S71(N(BNS8k~`iV1X{DG!?ZG_{xDSx0Tf1oKpJ`S`oj&!E{fu?-TXSt=C&j?NV+GxkIp}*LaUu??P zMm(+?`io8Z#ismXQ+~0bzu3@UY|7VsoLj2-n9$I#`Iuuvzvg3(P5GLSIX3ib;~~eU ze9hM!oANbZb8O1je9f_;UmF{9OSQ3)(9o~>oMS`3=5vk>{hH4?HuP&g=h)D%`J7`z zzvgp}4gH$Wb4xX!6B_z8Uvq5e9c0QIWa!m=&h`E*`=$Lsiod*^xESfLiq9$NugK3S z(CkcThK*)Nj`gr8(Cn5|pxKR36-TIw%PG*^NN9$ut`5V>T<>qv_czCyy|~{DW6g#+ z1^vwZW-VFJUo|uJH1+DQnuTL?Uq3@fKSPIRFX~~=Yj)z;+^5--<9Pjzc+|s+`kHjw zY?)K2pYgEyPBk+oU0ok+vTW<&aXWi=`1i$8z2yH~w(Vk|}4E zFPO_Yd5?rg?hyj1g@=UY+$7UlzsuR1v)B7(vM+a8&fRP)=$_|G&MZ8?@cg{_1-o+y ziFMC;ICV(sw!EkF=H~=**5|J-EXlb!tsu8Hw|!o>v?b{;<_*hjpL1Qt+PozhC-Q@N zOENQa+h<-^&^C8jUiaK(ncMttWxd?y?zY|XmbC5OwpaUDhix6-%5C3iU8lFYtm{(U zbxGG(&b}x=k{>yzU*Y-ZY(IB%{_68j%93+?$^RF8Ca+z1^F`-gwC>{ci-Y+qdd$ub z_IjEFaBGSw}gCaPl4?m@<$#%(w>HRNix)Zl5@WN zohpAA_bKFDCx7&k{F&OwFlT*XN!}9KXYxne_*7oqsVRM)=gYZS9vAG^XLBCTd%CcM zK0cqjhUF~*zJj*u8XQruo6VuzRnRt`OU}d8{OSDFxwX_CKFC`F2hi4eOLErBpDbIq zIsFOMno8L_xwfj;`T48!gZi4fF6r+k&ndddF}D|K4dnS#?UvYvKM+5?MNdE0bn7;Z zw`Hqvm~2JehO!;=mdLh}H0K8;cgZk6QqWenU}1@{@P*@1yX)Gt+AnwJ-Eybzm6JQ< z>_wZ^dcRg)p7t~gELw(9V zpwHO}v|a80*~va2x%+1?-*x+nU2OZ=&-S%A$d0xn;;7s!BX_;9qppU1adqsFle_3n zh;P`r^H;f}M(*&jEWSOEVs^cCGke-DXD?eZ`_tqOGrhlTExWy5WuKSa-=+6<#dmhe zeO+IxeO1B#l|5DQ9aSy+sJ_2{>SFdzUCO>G_Dsp)W#`)kcA?qFRK#wjQg$j0WtY-O z_9l&HU($H?Bu!#J(#@@QBF$hI(roq{EoZOM9qcn&W#7xrq6gSj6yHe@lE{i`>t0l6@>5kB?oc z^6SI>*`s=e=)f05+uOG2U_T_<+K&)E22O|$jsv{l3encN3S13}IOh8{&dr1e!C`Pz zbRf?T%!+N?a~UU@ZU>PCE^sUOp3}GNU~Mmo@xWE;)`>xY?~dV{txjAI#(=SIP)u-Z zd6z%TH#fp!4d%4(i*MN~HzqKb5P6gAz zQu=r~SPAZ=+`GX&U^TcOJP0189#P8u#;tIY`5sG}TkAlJ<9EYO8{%z=w{1H zX)b{eE_J_l!|hLi4E((r9hX9CB3FTmj&2F@+Sr*f^FYtsm) z6VBrN9IzBD2P?r{q+12<1rKxl7-@e(+Q$i>AY4QEB;iwpPZK^vxR&r)!siHoO87Iv zpA-Iq@Oi>t623tABH>GfFBATX@YjUDrHog=tKc=T4y*@ng15l?U<23)HiM4={OEiF zJ_FmpmtZ^C0d~?}yTM-Y71$2~;A?OQnvQ^KPzN8MEBd&5L_fD$^milT3ip86&hbun zkCp9KTfGVUf>(GK&~^{lOWi&8aryLh4oEYEZJCcXL8&_^bv-5RprqrJw1bj%P|^-c+CfR{DQO2gw!Ut?brSHdye$Cl zyxAkc9pEmo3fv3s0}t?Z)GnY3?Bd>G=mlA523hR8Z_l3iw#b(-@+FLX35%g%47i0| z_-hEC0dIpXU@K?>u96dBT^9%h_} z8Rucfd6;p|H{C%G&=Xt+dVw5}2MPdrGe*OV(J*5)%oq(bM#GG;Fk>goxRGNf>=cVE zrvwZEqd7(%GFHNji!kFN%$Sg4APkR&;n6TW8iq&1@Mstw4a1{hcr*+jhT+37d>DoY z!@M(43O@}3gTYWR2CMteK!g^E&;k)!AVLd7Xn_bV5TOMkv_OOwh|mHNS|CCT zM4&nX)e)$UKy?JFBTyZI>IhUvpgIE85vYzpbp)y-P#uBl2vkR)Is(-ZsE+W~#r4#< zJtawGgASl0=maK%sbCtZp#s?!L54+;JrU$igmE5WoJSbv5yp9haUNluM;PZ3#&(3a zJ~G|a%yO%(nP3jM9W0RN;Oq#T9f7kWaCQXFj=qcsEE24;cTZX>fu6SGJY61)j% z-GmfwLIO7-ft#FSx6vs9L%;-%Zvl6KRp4H52pj>`lrezs7B}HPp-GT~$OohnPk^Vv zIeNcJfI!u2s(qa0JX3R!59z)e*u35e*=F9-%&&Iw=V{iVP6XRgDb#Q;A&6? zrhsy=7Bo>a0l3fU0Y-p{;3lvHECVaRd*B1`A=m^y0$V@@_!N8&z5tbg`lI(;h}Lll z$OZXe6?g(X4c39*yB|Ys7SslzHVCyrs0~7G5Nd-^8-&^*)CQq82(>||4MJ@YYJ*T4 zgxVm~2B9_xwLz#2LTwOggHRiU+91>hp*9G$L8uKvZ4hdMP#c8WAk+q-HVCyrs0~7G z5Nd-^8-&^*)CQq82(>||4MJ@YYJ*T4gxVm~26=<%0%nx~d@1t^cNaQUH9A$b*u)#< zd)=MrP1RNy)PP!02O{7&sCTQ8`Mc0hs?klVZSq0p??UG9LRY9p?(afhs7Chhay;%% z;-&Zr&S37fwKL{Qp{y10zo&wK+XTeXw&%yKH1@IF1 z6*x$Khrv;Boco*Ioy;Y>cz-I>?Z#N_29=diR|$2M;$y}}id)I}?8f-)#`x^U`0NIy zl~7sHv~DfIfTxX&pcs92V~}1HMnsZXo@K=)W7?8nM}piI3b6(ma4P z4^ZM!@d@{Q>TVaGySv3Uyl{m{9|6Y!V^qXI185@s3Bo^vZvf*~FlLzz0+z+tZSU?y z`W$9v2rx4QtUS*3AuJ*+CLBx%EzA-DW{Ci^M1WZ$z$_79mIyFQ1Z?C5vUo4DcrUVe zFS2+qvUo2#@d0$=1L(vD(1{Nq%?=~Y4l}C+m{kJIDgkDd0JBPfStY=%5@1#dFslTZ zRRYW^0cMo|vr2$jC1Br3IX?zSI{Q{InKGt=Y2Z%szZ={GR)hP&gWys3Ftbs>NkKlO zp%G=cdy%Av(R&XtH|$04J-|#Aa4zS1FOGW?QWqrcVP>v?Q@}B@45@n6>z8P~UgFTr+>cM$G`mfc`4_zLU?0q`|AM7c*mHGo%~ zS^!^o-~o>VlHiFY%uoB7pZ3GaF*rE}C&%FA7@Qk}bE9x>0L~4-xiL652IofM+!&l2 zfLkMs2tS-!3#Z25)EJx^fK#JzY6wn@!F4gXEdaO0;IF>tb+S4DO1;T~W9z3U@`}t^nMHH&U+k06oEFpclvi zd7uDLCfpT+yJB!x4DO1-T`@Q)3I|2upeP&^g@dASP!tXdz(Fy%Ckp2T;G8I26NPJH za7qkL3BV~aI3xgv1e{`bKlAc_=H>lxN(?Ruz$G!bBnFoR;F1_z5`!~ha76&F2*4Eq zI3fl|#Ndb+91(*fVsJzZj)=h#F*qVdugB>17`+~&$7A$(lpc@L<57A%N{>hB@hCkW zrN;yGcz_-cF#mhp7wOp-#SrAl1h;{nte__==)nehuY%sISF_?r^kRj(kzQ*MpV9gq zSR+q&U!+G~q(@$)M_!~yUZnLKX#ECSzk$|op!F+g{R&#KfmUpw6&q;923oO!R&1aZ zD`>$6TCjo^Y@h`jXt@ent%6popw(Wa)n264UZlk;XsHTXr-Ih0pmi#sv;j&RptJ!> z8=$lSN*kcG0ZJ>Nv;s;ic#F0aUK<1kgP~vySOcB`Zv)ArTL`y;Cg8du_%Q@OhTz8# z{1}2CL-1n=ehk5TA$TtY?}gyK5WE+H$3pN}2p$W;VPPwA|l(rJg5RnriT<;v-L#-?07-9XA4LE;MP zU5?*lF8hcuzM87wzW9o&y<3ZanKat!hgMeUtgO;mS*5eGN@r!2ZoT4evR-8^h+c2K z&5H9K!uQa5-xrzI29bfE(+t}9`>QX?V@9cEMyX{+sbxmNsv^?tZs6ZsnK5J3GGo*- zV_+2#Y4k^!8KKtk6K_i>S8crr<;pFWb8_`IfN&rv<~tT8fVQOH!p;QF#aD8-5Rb3s zmU6#b(XAxBi}S0%z2Ki&;l0m28^A`e8GH=30<2>6cgyN;JIAa5okQe%1XR;!8DbK> zcazda4vSj%xcxX-1D;~No(Cp_dEg;X5B^Nrsqjl0{E`O0v{>KtI>f z$J(;hV#TVVf29?xhCZ!hoc<%rQVo4tL!Z{rr#19x4SiZepVrW)iI$}r`m~M_H;EPE zO`w();NxHoc#2hC9+(W~frmgn_%rFwL7JaXcil+H3JQsSLf(z^K7nLDfn+{`1U^A- zP2|=@ZgM?&0ttLVyUov zqvWR6Bct3ZaUB>9Za}A<1c%&6_^#4#tHgHF?*w~EzaL&afc|@g`@^KKC2fT8IEaE6 zXaJ4w=jgLl=(APmvsLJ`Rp_%-=(1H-l6wrB)^4Z{T3y|v*tT|BIqp_;+A3^ZJFWic zxkbbWgW;sR7AZ6WDL;;D#yq#pn(b~=YovB=6|ESg6@%!YRp_8q z=%7{TpjGx#cc;A^tORoX^eAcM8jAIkqt{L+9JzK%ajR(YpmR3k?h@8GJ!!$qIoBJo zQl%H7=$cjNnpMsKj^!F_AYrk)jd^h!^Wrvi&nooJDrdaAo1O|fH8o- z=MgR>&0=sTW!=T~y9rqZJNFRYOSoF;pjE8ZWUofm`s)zqyD zEfuAeqO?YomWV=a6iTB|DfOQy)I^~q3I!Ya#zr6bj#(N0Y=l2U@M8lt3sSQnJlF^i z*29BgY8iz88mQ?G_$fpUgVb<4H4MT-d}Et)BcNa$$K$b)+RW}t>G$PeC3uA6$G{0@ zW(Q#Pfd@kLeLXb~()V&KH_*o+`Z7d6hUh~%wj1a}Ildd{yL$Q!zfoW{lKw%?Kg9Wi zq&*Cdf;#d#&iQ)IM@iEFnmPWn+dw~r_+rBa*f}nQqDuf4eC#1%THz3_aEKN-D6qg| z8wq0@3G>7>3;Rfzr>0r7$|3Pb;?kbGllUGivHOVY5qgNHpzTCG$Ib2`woPPN9$E#9 zEw+>}Eq2K2NZ1*i1$Yud3m(Fz5~c+YsZlt9@G3^*K>B+)eLuqe+8V|EV@NZO;|a*F zFvm5Z7Sw?VI1VV+f?Dh{VeB$t>@s2OGGXgGbO_r$$hWDo?DGJ$W2Xt*7X#?GF9q}- zcA7ADnlN^nuw4eGfO4=Do?8x9f=9^bF|d~NQSxabJi+ldSa1cc?6?Q%(Sr`w35PNq zti<%}A$s(nGn{iHIEIIviG(+Sn>jy~^V7f*j+cQIK#s)wNcRZm9|ezr$H5x#6nF+a z3w{cI4xR@ufS16pz_uVhMPckkVeCa=hyH|n4#GVL;huwV z&mlFMV}x=n$IJjfC+;n~bgm%z_b zJ{EC2p73TuDdVJkyOZm8gL{CKUyr!WP!)r!7*xfeszJ#rWRu71HbY5_FMeErexgTz zkhM@IydQ+${qVY9Nq`-klTu(0e7%?WKCmAh=zx1nNrR)bKn+hK>Pg?o$ZCe)gz&@j zey9!_2@x_9;+Vw~0a_qP3k2coOd}~m@U$PE_QTVDc-jw7`{8LnJng52g7B^%-u1(~ z{?jCioK=GGqMsHE!iRoZE$DdouB4X`y%=8fYw5zdBF+uxcs$|Fpp0`1(WDdR9W3Y1hLpD6jp z$hU#8k+7L>W@253zx?z{kZ&RN!HzY67QOraqwJT*#6FJqvtF%dK=usj>1z%;i+m`N!l)@-Le{2b=-TL^Udxtcn%Y;Z+GBl%f;uRWbKMarI06N-=0~Xc5o&&fn#OB+gj&klNo#8L zX|=1ScGc9bjv5`IM%C1)ni^G8qdK08plQ>VO|)elHIb$9d>n1rM&skzE2Y&@S{?1w zL_6_a6vhy?AKFNcxjNdWiMDBi_9kd=g7zj#s)N=hp7oDn9={HZ29p?78wkUohFPvLup1sX+}e7Mnh@lD`Pdxv5jcK&EQ*j zBnJ&+0FX~x?*lO)uTNy9*4jF!_gln7+$tw6a&Ze>-0H@j1&e(O)(=_Ucs6dWV@76` z$11(fPDMVSZgo4;-iLqJ;+C+FffZTIk$V!_0%=+6MJTOn(y}J4XmJZ#+62w@A z;lGUQ|HyLo!_W6ytZMrCeoVZ;x;TS%aRxhFVzhWYHl=!OO7-kI%Me2erB#0nVT&!L zUOdC`+d$e^ADJ=#M6X;&k37#xIcAMyP8#oCtMY0lFF8v!lUFl&HIr8} zdC8fmnY^0GtC^2py~?bz4jFIcyhyRux?gd&k+Y4QZAAJvTJN)K?gMPK8{AK=P3|T> z+P9Y6HXy|;@7JV`@WQG4iS>uPAxN$m;`>*E{6(mPjIpCeGHAUxUS7 z49?b)<64g1X9i*?7H5vBGgykLjZC+RvQz#UnWt(PRi%7t=!#L7n5+wQ@XSqGpC#Q& zhHgH+MY!t6Hl2lSI!opPw`+=8a*=JY2Pr?%{WY~-Lz;G^X@cqo(}I$cE1-HmbstOJ zujZ?wLs&nIhw~=#9Z?_m9%DDc7d*qQ=KhR?T12R6gqmg``>`@G4~?h3ceyWMeQg$- z*mLfVZ&jc*XsKTx+ORh+2inRX!(}NWG=S zSMIKAL)s&9Hx+5$BJDoX?j!9!((aSCVM@Q6@qre`iv2kIV=Cw=Y|%>ZYowpp;{yjq zSRL(g*Rfl=tq5T;sBvExb#U%qSV?||ea&IT-w7K^5BGr86RFaR;{q^%+FeB(4RJrT zMziuCM~%9Q^V}^0J&+bUDAv;JzlYklu=H)>YK8lmTBq^Ehf%SO@?XHFa6LJ##D27m z+zwz@Xk`7hnDy5-+HVx~dz4-}0Bz0CCOPU;dZvM%sibGN@}*bgC*!Mu@zq3*4UDZO z##Rk??&4dpL#V?E`IU7j12|lv8hY?4w92Dyr&2Mr}a`7IHk3iWt@CxZSs#Lnw zYH62uxv!S8Vn+L|GZrtt*-iR7>LN7^+0XJx3{L=fu7k98KcoE`*xNhS{R4IRRLna0 zu2|vrp!^YHwfhtCfcp~dw2nJJX9vNZVxv2qXR!~ELpg2sOP;~rM!)?IZd-`0{$}d= z8+ywxf~-$MJQ=KU7tv#PQ@c0mwL8S$h=1oUr|0gVws%qbbJTc0J-CVU| zz4#(+{~xsd&uIJEw0)4?oCQ@+(t@wkt1IbMKP|aN*>&U?e+3=rRrfvm<30N0J$UUs zo(XNBU!*iR&aR3Y?6I9_^-j>V8=7J~p*(K-|B!l~{5d?qJPI$gg@zjH{omB*zp2YE z>av%*R8W@?9`Q1)5o*5LtIBUZ9%^WH*{&({*%tEnBYA9xpF-qu5FV<6ha&VP-sIuG z99n-4t^cT)_1z}1;^ZCTu9F*R{Yz>6;ncK@nm$hJ`^CnSVOswj@$t!HwEiIR=}Eau zWTN=|^4;3{hPtyABsKE?cKaHkfM?@_{=l(3T$J|kDzpR(<$$>mFO`I5W8;O;1W7N*aF^qH0=K3YE;O(L5X ztLCm_)T5eKJ4&k^q1CEIci}_6NLiEa{!#7b90Es=b-!YK*Gjn~X2G*7*iUm8Jh+;= zJ>YJpemlfFT-VQVA9~+E{fAsi z_)}%pQsy3g5{rlVbARU6(l4j|F>-|jf9>O!pf?zg{|_Nw<8Jwj*A|}Ae{G1hku~A3 zjXo9s59jz0fnq_aDp~w83rC*te`8&D6#m2@_zj$u$|8XC8pLd@EkJ1`hoXTb7AT#qyvtplc+@)1 zE>-iVWmx=(lAF=;mNFAF7o&ZppigJ=vyos~tduTb_pb-v33*)U!?WAA$_+$ktQvz^ z9}MGnHvSMsv!{M6zw@!e-M~GQ@PyD^Jjm~2-T{3>^uQALE^mHs;CDIieSVA=2Klx3 z-n{L(3#T4?`Q`Dx=YEmT`-eNd!ffkEvc@uQ77{S}1 zbHqsLVL*(N?|X^~d`CYhCR)6AA|~Q;dt^MX^#}Yv#+zS6R+})=4kO>_E>u?-@zYmj~B1=zUB>L9q(*T z6L0Xn_!(jY?`qyAKIDDP*cyDvL*vz||E5%2=zj=rFn0Gku5?gqWbCuZ2 zyPWrm3f||uPkh2Voezjld9U*!@fq)SJ|#ZqtcFif{Q^`eov8d?mfWvg9|>Egx@eUS*~7*5=h#8gFiv zSnRZNMp#*V1^qg!1Mh8)wmQmpH?2;*y*b_LBENKQUBvsE^Q;~Y?`v9@^2X*$>vG=O zyw~a_zh!O}^1kLDtiF7C{2l97-n0C~D&xE2+pT%LRas@t=grDp*6qAqS#2%g>)|15 z8ShrsSj&08vd&r|-?6k-^7ZgPTX*o?@V{8Amw8gTZ)4%xbXtGxjR1xZy*=K%@^@Yf-^5>6)oR$PKGlt!wzsczZ5vL7gikU zBSd-!mY&E*hR-@}2 zHM+W}(bZ0ku5%e(f5lGnH-7EZ7&}*uv2)cJvl(OUMMu1gWV5#Gz< z@nZ33G{GrlU$ z5jOrR&L!n}JlVDJTX8<|3wXk7lBy(2 zDw1UqIoxR9NNzXTHxd7_{bS-c+cy)(X9e*xyNo(dwkOjvQ|u|kr`l7Am)qsUry-j< zD%sRY$)-+9Hg!_6DP75?bS0b8m2C1U+2m8Q$){wKPst{ql1)A(n=+A2?5V(?#iR7X zW4!sCgAN^xgim^(5GnYd zz~2x)D7pz7KNNUlbIx_nCFOZYSg-U*LHY}kvq{L=i>X5or-$(1o#GN|($ncl9WHe) z<*o0_kiywW;a;L6@6Y!Z?eJNV!`r{PJay@e?}|Lp1^*TKq$zL;#5qXn0i3^rH^(!j zyyidhn*T*k5wr|spKNE|wI539!<=EfK|Y*a2sZvKuBEII&Isy*G^d70bMhSTjOQ87 z1ZM(w-Q@7C75rNKSiXbKTj*K%x44D#w>r0yTbWZvohLh!sm~N=3TLJ|Q^~p9DJSP? z>}#-{>CSZGw>h_w|14(~`Ok6Y@PDo|mwV?q^SF13vxGVt516!E8>r-?tq4hkC|8f%F^%T5X#UmDL5|0z2vY29|l8qmZ z|0Mnj&qcEF$MHMjukw5(8^0X?Mf^3MlVszc<8|WecwUl?pN=<(ujjc*HvT&P5Aip7 zev*yfj^7i1i{~iW`0w}wZO%N(|M#5tXv6oN_i4QkoDYa^a5fPC(D{(~MrR}OP0l9b zo1M+XKXN`I{;~5h@h#34;#-}q#4DT%;-5I55NB5AKeI9%&aBM;gU&&C;E;2OmOsqb z2(s|>afJ9$zDkgV$B$~_%-M_u=4@)koDFXuci2sX?~i)=sL5$!M4WI=z_-opKJnuN z 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 Iq-}TpA2k&yXaE2J diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index 90c99dcd9..5558a4527 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -9,13 +9,6 @@ // use it with $blue, $red, $yellow, etc. @import "../../../vendor/assets/stylesheets/colors"; -@font-face { - font-family: 'Roboto'; - src: url('/assets/Roboto-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - // link colors $m-link-color: #2274A5; $m-link-color-hover: lighten($m-link-color, 15); @@ -36,7 +29,7 @@ $m-very-light-gray: #fcfcfc; $m-bright-blue: #49afcd; $m-transparent: rgba(255,255,255,0); -// site colors +// site colors and global configs $m-site-bg-color: #f2f2f2; $m-site-content-bg-color: #fff; $m-color-primary: $m-green-mconf; @@ -45,6 +38,7 @@ $m-color-secondary: #337ab7; //#4589c4; //$m-bright-blue; $m-focus-border-color: $m-color-secondary; $m-logo-initials-bg: red blue yellow green orange purple magenta $m-color-primary $m-color-secondary; $m-logo-bg: lighten($m-color-primary, 15); +$m-site-horizontal-padding: 120px; // fonts $m-font-normal: 14px; //0.85rem; /* 14px, base size for all fonts */ @@ -77,7 +71,7 @@ $m-link-decoration: none; $m-link-decoration-hover: underline; // borders -$m-border-color-normal: #ddd;// #e8e8e8;/* #ddd; */ +$m-border-color-normal: #CBCBCB; //#ddd;// #e8e8e8;/* #ddd; */ $m-border-color-medium: #e6e6e6; $m-border-color-light: #eee; $m-border-color-dark: #ccc; @@ -88,10 +82,12 @@ $m-border-radius-large: 3px; // inputs $m-input-bg: #fff; +$m-input-color: #4d4d4d; +$m-input-color-placeholder: #cbcbcb; $m-input-border-color: $m-border-color-normal; //$m-border-color-medium; $m-input-focus-bg: #fff; //#fafafa; $m-input-focus-border-color: $m-color-secondary; //lighten($m-color-primary-light, 5); // #999999; -$m-input-disabled-bg: #f6f6f6; +$m-input-disabled-bg: #e5e5e5; //#f6f6f6; // alert colors, like the ones in bootstrap alerts $m-alert-bg: #FCF8E3; @@ -112,8 +108,8 @@ $m-highlight-bg: #ffff81; // width of the central container in case we're using a maximum size // see `set-max-width` -$m-contents-max-width: 1180px; -$m-contents-width: 980px; // TODO: deprecated now that the site is responsive +$m-contents-max-width: 1280px; +$m-contents-width: 1080px; // TODO: deprecated now that the site is responsive // sidebar $m-sidebar-width-lg: 350px; @@ -145,19 +141,20 @@ $m-sidenav-box-shadow: 5px 0 9px 0px rgba(0, 0, 0, 0.05); $m-navbar-menu-open-bg: $m-site-bg-color; $m-navbar-menu-open-link: $m-link-color; $m-navbar-menu-open-link-hover: $m-link-color-hover; -$m-navbar-bg-color-light: $m-color-primary; -$m-navbar-bg-color-dark: $m-navbar-bg-color-light; //darken($m-green-mconf, 3); +$m-navbar-bg-color-light: #fff; //$m-color-primary; +$m-navbar-bg-color-dark: #fff; //$m-navbar-bg-color-light; //darken($m-green-mconf, 3); $m-navbar-border-width: 0px; $m-navbar-border-color: darken($m-navbar-bg-color-dark, 5); -$m-navbar-internal-border-color: lighten($m-navbar-bg-color-dark, 3); -$m-navbar-font: $m-font-medium; -$m-navbar-font-color: #fff;//$m-font-color; -$m-navbar-font-color-hover: #fff; //$m-link-color-hover; -$m-navbar-font-highlight: lighten($m-navbar-bg-color-dark, 8); +$m-navbar-internal-border-color: $m-border-color-normal; //lighten($m-navbar-bg-color-dark, 3); +$m-navbar-font: $m-font-big; +$m-navbar-font-color: $m-font-color; +$m-navbar-font-color-hover: $m-link-color-hover; +$m-navbar-font-highlight: #fff; //lighten($m-navbar-bg-color-dark, 8); +$m-navbar-font-family: $m-font-family-h; $m-navbar-link-color: lighten($m-link-color, 15); $m-navbar-link-color-hover: lighten($m-navbar-link-color, 8); $m-navbar-link-color-active: $m-navbar-link-color; -$m-navbar-height: 84px; +$m-navbar-height: 90px; // for a light/white navbar: /* $m-navbar-bg-color-dark: white; */ @@ -271,6 +268,8 @@ $navbar-default-bg: $m-navbar-bg-color-dark; $link-color: $m-link-color; //#1e9a50; //#187d41; $link-color-hover: $m-link-color-hover;//$m-bright-blue; //#2BDE73; $input-bg: $m-input-bg; +$input-color: $m-input-color; +$input-color-placeholder: $m-input-color-placeholder; $input-bg-disabled: $m-input-disabled-bg; $input-border: $m-input-border-color; $input-border-focus: $m-input-focus-border-color; diff --git a/app/assets/stylesheets/_mixins.scss b/app/assets/stylesheets/_mixins.scss index 7129eaf3a..8c5c70500 100644 --- a/app/assets/stylesheets/_mixins.scss +++ b/app/assets/stylesheets/_mixins.scss @@ -270,15 +270,10 @@ // very specific selector se we don't mess with dropdowns and others > ul > li > a, > a { - padding: 30px 15px 25px 15px; + padding: 30px 15px; display: block; - @include link-colors($m-navbar-font-color, $m-navbar-font-color, $m-navbar-font-color); + @include link-colors($m-navbar-font-color, $m-navbar-font-color-hover, $m-navbar-font-color); @include transition(background-color 0.2s ease-in); - - &:hover { - border-bottom: 4px solid $m-border-color-highlight; - //font-weight: bold; - } } .icon-awesome { diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index dc377f830..fa3b265b8 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -349,7 +349,7 @@ form { background: $m-navbar-bg-color-dark; @include background(linear-gradient(to top, $m-navbar-bg-color-light, $m-navbar-bg-color-dark)); border-bottom: $m-navbar-border-width solid $m-navbar-border-color; - font-family: $m-font-family-h; + font-family: $m-navbar-font-family; position: relative; height: $m-navbar-height; @@ -357,7 +357,7 @@ form { @include font-size($m-navbar-font); text-align: center; @include mconf-clearfix; - padding: 0 15px; + padding: 0 $m-site-horizontal-padding; a:hover { text-decoration: none; } } @@ -373,11 +373,7 @@ form { #navbar-right { @include navbar-lists; - position: absolute; - left: auto; - right: 16px; - top: 0; - bottom: auto; + float: right; .dropdown-user.chip { margin: 0; @@ -435,13 +431,14 @@ form { #navbar-logo { white-space: nowrap; - margin: 15px 0 5px 0; + margin: ($m-navbar-height - 60px)/2 0; @include mconf-clearfix; display: inline-block; - background: image-url('logos/mconf-white-transp.png') no-repeat left top; - background-size: 54px 28px; - width: 54px; - height: 28px; + background: image-url('logos/mconf-color-transp.png') no-repeat left top; + background-size: 116px 60px; + width: 116px; + height: 60px; + float: left; } #content-notification { @@ -458,6 +455,9 @@ form { } #footer, #footer-mconf { + /* TODO TEMPORARY */ + display:none; + @include mconf-clearfix; @include make-row; margin: 0 auto; @@ -685,7 +685,7 @@ form { background-color: $m-site-bg-color; @include mconf-clearfix; overflow: visible; - padding: 60px; + padding: 60px $m-site-horizontal-padding; h3 { margin-bottom: 8px; diff --git a/app/assets/stylesheets/app/application/bootstrap-custom.scss b/app/assets/stylesheets/app/application/bootstrap-custom.scss index daaf5f5eb..2a4413633 100644 --- a/app/assets/stylesheets/app/application/bootstrap-custom.scss +++ b/app/assets/stylesheets/app/application/bootstrap-custom.scss @@ -26,6 +26,8 @@ // override a few things in inputs that we can't do with variables only .form-control { box-shadow: none; + padding: 12px; + height: 48px; &:focus { background: $m-input-focus-bg; diff --git a/app/assets/stylesheets/app/application/typography.scss b/app/assets/stylesheets/app/application/typography.scss index 0e7af3a79..763e5b058 100644 --- a/app/assets/stylesheets/app/application/typography.scss +++ b/app/assets/stylesheets/app/application/typography.scss @@ -94,6 +94,10 @@ a:not(.btn) { &:focus { color: lighten($m-link-color-active, 7); } } +a, .btn { + transition: all .3s ease; +} + .label { font-family: $m-font-family-label; } diff --git a/app/assets/stylesheets/app/registrations/new.scss b/app/assets/stylesheets/app/registrations/new.scss index 455fc829a..06f031bea 100644 --- a/app/assets/stylesheets/app/registrations/new.scss +++ b/app/assets/stylesheets/app/registrations/new.scss @@ -1,18 +1,51 @@ @import "definitions"; +@import "app/shared/social_login"; + body.registrations.new, body.registrations.create { + #headline { + @include make-sm-column(12); + @include make-md-column(6); + + h1 { + font-size: 72px; + margin-top: 0; + font-weight: 700; + } + + h3 { + font-size: 39px; + font-weight: 200; + } + } + #register-wrapper { - margin: 40px auto; - width: 50%; - @include mconf-clearfix; + @include make-sm-column(12); + @include make-md-column(5); + @include make-md-column-offset(1); form { // every field is required, we don't need to show it abbr { display: none; } + .form-control { + font-size: $m-font-big; + padding: 15px; + } + + .form-group { + margin-bottom: 18px; + } + .form-actions { border: none; + + .btn { + font-size: $m-font-big; + padding: 15px; + width: 100%; + } } } diff --git a/app/assets/stylesheets/app/sessions/new.scss b/app/assets/stylesheets/app/sessions/new.scss index c669ce039..9806702f7 100644 --- a/app/assets/stylesheets/app/sessions/new.scss +++ b/app/assets/stylesheets/app/sessions/new.scss @@ -1,19 +1,46 @@ @import "compass/typography"; @import "definitions"; +@import "app/shared/social_login"; + body.sessions.new, body.sessions.create { + #headline { + @include make-sm-column(12); + @include make-md-column(6); + + h1 { + font-size: 72px; + margin-top: 0; + font-weight: 700; + } + + h3 { + font-size: 39px; + font-weight: 200; + } + } + #login-wrapper { - margin: 40px auto; - width: 30%; - @include mconf-clearfix; + @include make-sm-column(12); + @include make-md-column(5); + @include make-md-column-offset(1); form { // every field is required, we don't need to show it abbr { display: none; } + .form-control { + font-size: $m-font-big; + padding: 15px; + } + + .form-group { + margin-bottom: 18px; + } + .remember-me { - float: right; + float: left; label { margin-top: 0; } @@ -23,10 +50,20 @@ body.sessions.new, body.sessions.create { } } + .forgot-password { + float: right; + margin: 10px 0; + } + .form-actions { border: none; + + .btn { + font-size: $m-font-big; + padding: 15px; + width: 100%; + } } } } - } diff --git a/app/assets/stylesheets/app/shared/_social_login.scss b/app/assets/stylesheets/app/shared/_social_login.scss new file mode 100644 index 000000000..6c89a1c8d --- /dev/null +++ b/app/assets/stylesheets/app/shared/_social_login.scss @@ -0,0 +1,43 @@ +@import "compass/typography"; +@import "definitions"; + +#social-login-btns { + border-top: 1px solid $m-border-color-normal; + text-align: center; + margin-top: 70px; + + .social-call { + background: $m-site-bg-color; + padding: 0 25px; + font-size: $m-font-big; + display: inline-block; + transform: translateY(-$m-font-big + 3px); + font-weight: 200; + } + + .social-btns { + .btn { + width: 48%; + font-size: $m-font-big; + padding: 12px; + } + + .btn-google { + float: left; + background: #df4a32; + &:hover { + background: #e56e5b; + border-color: #e56e5b; + } + } + + .btn-facebook { + float: right; + background: #3b579d; + &:hover { + background: #6279b1; + border-color: #6279b1; + } + } + } +} diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index 9f74b6d1c..1fbb363f6 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -6,7 +6,7 @@ # 3 or later. See the LICENSE file. class RegistrationsController < Devise::RegistrationsController - layout 'navbar_bg' + layout 'application' before_filter :check_registration_enabled, :only => [:new, :create] before_filter :configure_permitted_parameters, :only => [:create] diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 5d7836e8f..5b614aa1f 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -6,7 +6,7 @@ # 3 or later. See the LICENSE file. class SessionsController < Devise::SessionsController - layout 'navbar_bg' + layout 'application' # To allow other applications to sign in users in Mconf-Web skip_before_filter :verify_authenticity_token, :only => [:create] diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 26b81342a..406209b40 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -1,5 +1,5 @@ --# - url = user_signed_in? ? main_app.my_home_path : main_app.root_path --# %a#navbar-logo{:href => url} +- url = user_signed_in? ? main_app.my_home_path : main_app.root_path +%a#navbar-logo{:href => url} - if content_for?(:navbar_menu) #navbar-menu diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index e7ca59a0b..14b2250bb 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -11,6 +11,7 @@ = stylesheet_link_tag "application", :media => "screen, projection" = stylesheet_link_tag_for_controller :media => "screen, projection" = stylesheet_link_tag "_development" unless Rails.env == "production" + = stylesheet_link_tag "https://fonts.googleapis.com/css?family=Roboto:300,400,700,900", rel: "stylesheet" = yield :stylesheets = yield :headers diff --git a/app/views/registrations/_signup_form.html.haml b/app/views/registrations/_signup_form.html.haml index e83375957..d6cbdebaf 100644 --- a/app/views/registrations/_signup_form.html.haml +++ b/app/views/registrations/_signup_form.html.haml @@ -2,21 +2,21 @@ -# For some reason `resource` is nil and then the labels won't be correct - user = resource.nil? ? User.new : resource -= simple_form_for user, as: resource_name, url: registration_path(resource_name), wrapper: :horizontal_form, html: { class: "form-horizontal" } do |f| += simple_form_for user, as: resource_name, url: registration_path(resource_name) do |f| = disable_autocomplete_for('user[username]') = disable_autocomplete_for('user[password]', 'password') = f.hidden_field :locale, value: I18n.locale - = f.input :email, :required => true, :autofocus => true - = f.fields_for :profile, wrapper: :horizontal_form do |p| - = p.input :full_name, required: true - = f.input :username, required: true, wrapper: :horizontal_input_group do - - if webconf_url_prefix.length <= 35 - - prepend_text = webconf_url_prefix - - else - - prepend_text = "/#{webconf_path_prefix}" - = content_tag :span, prepend_text, class: "input-group-addon" - = f.input_field :username, class: "form-control" - = f.input :password, :required => true - = f.input :password_confirmation, :required => true + = f.fields_for :profile do |p| + = p.input :full_name, required: true, label: false + = f.input :email, required: true, autofocus: true, label: false + -# = f.input :username, label: false, required: true, wrapper: :horizontal_input_group do + -# - if webconf_url_prefix.length <= 35 + -# - prepend_text = webconf_url_prefix + -# - else + -# - prepend_text = "/#{webconf_path_prefix}" + -# = content_tag :span, prepend_text, class: "input-group-addon" + -# = f.input_field :username, class: "form-control" + = f.input :password, required: true, label: false + = f.input :password_confirmation, required: true, label: false = captcha_tags theme: 'dark' = f.button :wrapped, :value => t(".register") diff --git a/app/views/registrations/new.html.haml b/app/views/registrations/new.html.haml index fa05229d3..0106e3c31 100644 --- a/app/views/registrations/new.html.haml +++ b/app/views/registrations/new.html.haml @@ -1,10 +1,9 @@ = page_title t('.title') -%h1= t('.form_title') +#headline + %h1= t('.headline') + %h3= t('.headline2') #register-wrapper - .alert.alert-clean - = icon_info - = t('register.confirmation') = render partial: 'signup_form' - = render "devise/shared/links" + = render partial: 'shared/social_login' diff --git a/app/views/sessions/_login_form.html.haml b/app/views/sessions/_login_form.html.haml index 99a513f97..3b0e8c3a8 100644 --- a/app/views/sessions/_login_form.html.haml +++ b/app/views/sessions/_login_form.html.haml @@ -1,6 +1,7 @@ = simple_form_for resource, as: resource_name, url: user_session_path do |f| - = f.input :login, :label => t('.email_or_login'), :required => true, :autofocus => true - = f.input :password, :label => t('.password'), :required => true + = f.input :login, label: false, required: true, autofocus: true + = f.input :password, label: false, required: true - if devise_mapping.rememberable? + .forgot-password= link_to t('.lost_password'), new_password_path(resource_name) .remember-me= f.input :remember_me, as: :boolean - = f.button :wrapped, :value => t(".login") + = f.button :wrapped, value: t(".login") diff --git a/app/views/sessions/new.html.haml b/app/views/sessions/new.html.haml index 22ce18cc2..e3a630559 100644 --- a/app/views/sessions/new.html.haml +++ b/app/views/sessions/new.html.haml @@ -1,7 +1,9 @@ = page_title t('.title') -%h1= t('.form_title') +#headline + %h1= t('.headline') + %h3= t('.headline2') #login-wrapper - = render partial: 'login_form' - = render "devise/shared/links" + = render partial: 'sessions/login_form' + = render partial: 'shared/social_login' diff --git a/app/views/shared/_social_login.html.haml b/app/views/shared/_social_login.html.haml new file mode 100644 index 000000000..dd97334d5 --- /dev/null +++ b/app/views/shared/_social_login.html.haml @@ -0,0 +1,5 @@ +#social-login-btns + .social-call= t('.or_connect_with') + .social-btns + .btn.btn-large.btn-danger.btn-google= t('.google') + .btn.btn-large.btn-info.btn-facebook= t('.facebook') diff --git a/config/locales/en/_simple_form.yml b/config/locales/en/_simple_form.yml index 5493f4f10..2e875824b 100644 --- a/config/locales/en/_simple_form.yml +++ b/config/locales/en/_simple_form.yml @@ -129,7 +129,14 @@ en: post: text: "Message body" title: "Message title" + profile: + full_name: 'Full name' user: edit: current_password: "Leave it blank if you don't want to change it" + email: 'Email' + login: "Email or username" + password: 'Password' + password_confirmation: 'Password confirmation' + username: 'Room identifier' # labels: diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 7d9036eb7..9dd33a308 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -1283,10 +1283,11 @@ en: register_now: "Register now!" registrations: new: - form_title: "Registration" + headline: "Webconference Platform" + headline2: "focused on distance learning and remote meetings" title: "Register" signup_form: - register: "Register" + register: "Create an account" remove: Remove reply: Reply reply_to: "Reply to:" @@ -1339,12 +1340,12 @@ en: one: Session sessions: login_form: - email_or_login: "Email or username" ldap_authentication: "Authenticate via LDAP" login: "Login" - password: "Password" + lost_password: "Forgot my password" new: - form_title: "Sign in" + headline: "Web Conference Platform" + headline2: "focused on distance learning and remote meetings" title: "Sign in" session_locales: create: @@ -1377,6 +1378,10 @@ en: processing_tip: "This recording was found in one of the servers but is still being processed. When the processing finishes the links for playback will be available here." unavailable: "The recording is unavailable" unavailable_tip: "This recording is not available anymore in the server where it was stored and so it can't be accessed. This can be a temporary problem, check again later to see if it's available." + social_login: + facebook: "Facebook" + google: "Google" + or_connect_with: "or connect with" user_card: gravatar_label: "Image from Gravatar" gravatar_label_tooltip: "This is your avatar on Gravatar.com" diff --git a/config/locales/pt-br/_simple_form.yml b/config/locales/pt-br/_simple_form.yml index a28d629d9..5bef08d37 100644 --- a/config/locales/pt-br/_simple_form.yml +++ b/config/locales/pt-br/_simple_form.yml @@ -126,7 +126,14 @@ pt-br: post: text: "Texto da mensagem" title: "Título da mensagem" + profile: + full_name: 'Nome completo' user: edit: current_password: "Deixe em branco se você não quiser mudar" + email: 'E-mail' + login: "E-mail ou nome de usuário" + password: 'Senha' + password_confirmation: 'Confirmação de senha' + username: 'Identificador da sala' # labels: diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index d75a992e5..0164a747f 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -1311,10 +1311,11 @@ pt-br: register_now: "Registe-se agora!" registrations: new: - form_title: "Registre-se" + headline: "Plataforma de webconferência" + headline2: "com foco em educação a distância e reuniões remotas" title: "Registrar" signup_form: - register: "Registre-se" + register: "Criar uma conta" remove: Remover reply: Responder reply_to: "Responder para:" @@ -1367,12 +1368,12 @@ pt-br: one: Sessão sessions: login_form: - email_or_login: "E-mail ou nome de usuário" ldap_authentication: "Autenticar via LDAP" login: "Entrar" - password: "Senha" + lost_password: "Esqueci minha senha" new: - form_title: "Acesse sua conta" + headline: "Plataforma de webconferência" + headline2: "com foco em educação a distância e reuniões remotas" title: "Entrar" session_locales: create: @@ -1405,6 +1406,10 @@ pt-br: processing_tip: "Esta gravação foi encontrada em um dos servidores mas ainda está sendo processada. Quando o processamento acabar, os links para reprodução serão disponibilizados aqui." unavailable: "A gravação não está disponível" unavailable_tip: "A gravação não está mais disponível no servidor onde ela estava armazenada e então não pode ser acessada." + social_login: + facebook: "Facebook" + google: "Google" + or_connect_with: "ou conecte-se com" webconf_index_links: view_playback_type_list: "Tipos de Reprodução" view_recording_list: "Gravações" From a06f847c36a2becd082993709ca8185d53ab94af Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Thu, 19 Oct 2017 16:09:42 -0200 Subject: [PATCH 07/75] Design my/home and my/meetings for when there are no meetings yet --- app/assets/images/icons/conference-play.svg | 15 ++++++ app/assets/stylesheets/_definitions.scss | 8 ++- app/assets/stylesheets/_mixins.scss | 5 +- .../stylesheets/app/application/base.scss | 51 ++++++++++++++----- app/assets/stylesheets/app/my/home.scss | 23 ++++++++- app/assets/stylesheets/app/my/meetings.scss | 47 ++++------------- app/helpers/application_helper.rb | 4 +- app/helpers/icons_helper.rb | 4 ++ app/views/layouts/_navbar.html.haml | 15 +++--- app/views/my/home.html.haml | 20 ++++---- app/views/my/meetings.html.haml | 23 +++++---- config/locales/en/mconf.yml | 5 +- config/locales/pt-br/mconf.yml | 5 +- 13 files changed, 141 insertions(+), 84 deletions(-) create mode 100644 app/assets/images/icons/conference-play.svg diff --git a/app/assets/images/icons/conference-play.svg b/app/assets/images/icons/conference-play.svg new file mode 100644 index 000000000..e7239a0f7 --- /dev/null +++ b/app/assets/images/icons/conference-play.svg @@ -0,0 +1,15 @@ + + + +]> + + + + + + diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index 5558a4527..08d0553d8 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -49,12 +49,16 @@ $m-font-big: $m-font-normal * 1.4; $m-font-bigger: $m-font-normal * 1.6; $m-font-double: $m-font-normal * 2; /* multipliers over the standard font size */ -$m-font-h1-multiplier: 2.5; -$m-font-h2-multiplier: 2; +$m-font-h1-multiplier: 2.71; +$m-font-h2-multiplier: 2.28; $m-font-h3-multiplier: 1.4; $m-font-h4-multiplier: 1.2; $m-font-h5-multiplier: 1; $m-font-h6-multiplier: 1; +$m-font-weight-light: 300; +$m-font-weight-normal: 400; +$m-font-weight-bold: 700; +$m-font-weight-bolder: 900; $m-font-color: #444; //desaturate($m-color-primary, 25%); $m-font-strong: darken($m-font-color, 10%); //#000; $m-font-light: lighten($m-font-color, 10%); //#666; diff --git a/app/assets/stylesheets/_mixins.scss b/app/assets/stylesheets/_mixins.scss index 8c5c70500..93ea1dd6c 100644 --- a/app/assets/stylesheets/_mixins.scss +++ b/app/assets/stylesheets/_mixins.scss @@ -244,7 +244,7 @@ > li { display: inline; float: left; - margin: 0 10px; + margin: 0; &:first-child { border: 0 } @@ -262,7 +262,6 @@ } &.active a { - border-bottom: 4px solid $m-border-color-highlight; font-weight: bold; } } @@ -270,7 +269,7 @@ // very specific selector se we don't mess with dropdowns and others > ul > li > a, > a { - padding: 30px 15px; + padding: 30px 18px; display: block; @include link-colors($m-navbar-font-color, $m-navbar-font-color-hover, $m-navbar-font-color); @include transition(background-color 0.2s ease-in); diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index fa3b265b8..2255f11d1 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -352,23 +352,22 @@ form { font-family: $m-navbar-font-family; position: relative; height: $m-navbar-height; - color: $m-navbar-font-color; - @include font-size($m-navbar-font); + font-size: $m-navbar-font; text-align: center; @include mconf-clearfix; padding: 0 $m-site-horizontal-padding; + .btn { + font-size: $m-navbar-font; + } + a:hover { text-decoration: none; } } #navbar-menu { @include navbar-lists; - position: absolute; - left: 16px; - right: auto; - top: 0; - bottom: auto; + float: right; } #navbar-right { @@ -384,7 +383,7 @@ form { @include transition(background-color 0.2s ease-in); @include text-truncate; max-width: 350px; - padding: 25px 10px 23px 20px; + /* padding: 25px 10px 23px 20px; */ @include border-radius(0); overflow: inherit; height: auto; @@ -396,12 +395,16 @@ form { .caret { margin-top: -2px; margin-left: 2px; + /* border-top: 8px dashed $m-border-color-normal; */ + border-top: 8px dashed #000; + border-left: 8px solid transparent; + border-right: 8px solid transparent; } img, .logo-user { - height: 36px; - width: 36px; - float: left; + height: 46px; + width: 46px; + float: none; margin: 0 8px 0 -12px; border: 1px solid $m-logo-bg; background: $m-logo-bg; @@ -409,7 +412,7 @@ form { } .dropdown-menu { - margin: 0; + margin: 10px 0 0 0; @include border-radius(0); @include box-shadow(none); @@ -420,13 +423,33 @@ form { } } + .navbar-chip { + padding-left: 36px; + /* border-left: 1px solid $m-border-color-normal; */ + border-left: 1px solid #000; + margin: 23px 0; + } + .navbar-conf-btn { - padding: 22px 10px 20px 10px; + padding: 21px 0 20px 0; + margin: 0 36px 0 18px; - .btn { + .btn:first-child { padding: 10px 20px; + /* border-right: 1px solid $m-navbar-bg-color-light; */ + } + + .btn-play { + padding: 9px 12px 8px 12px; + margin-left: 1px; + + img { + width: 30px; + height: 30px; + } } } + } #navbar-logo { diff --git a/app/assets/stylesheets/app/my/home.scss b/app/assets/stylesheets/app/my/home.scss index 8388bf7bd..5be7e4f42 100644 --- a/app/assets/stylesheets/app/my/home.scss +++ b/app/assets/stylesheets/app/my/home.scss @@ -24,7 +24,26 @@ body.my.home, body.my.activity, body.my.meetings { margin-top: 20px; } - h1 { - margin-top: 0; + #user-meetings-recordings { + h1 { + margin-top: 0; + text-align: center; + } + + &.empty { + h1 { + margin-top: 120px; + font-weight: $m-font-weight-bold; + margin-bottom: 46px; + } + + h2 { + font-weight: $m-font-weight-light; + text-align: center; + max-width: 70%; + margin: 0 auto; + line-height: 1.4; + } + } } } diff --git a/app/assets/stylesheets/app/my/meetings.scss b/app/assets/stylesheets/app/my/meetings.scss index 74e31ec01..36457a35d 100644 --- a/app/assets/stylesheets/app/my/meetings.scss +++ b/app/assets/stylesheets/app/my/meetings.scss @@ -5,45 +5,20 @@ body.my.meetings { - #my-webconference-meetings-fetch { - float: right; - @include font-size($m-font-medium); - - #my-webconference-meetings-error { - padding: 3px 6px; - @include border-radius($m-border-radius-base); - background: $m-red; - color: white; - .icon-awesome { color: white; } - } - - #my-webconference-meetings-success { - padding: 3px 6px; - @include border-radius($m-border-radius-base); - background: $m-green; - color: white; - .icon-awesome { color: white; } - } - - #my-webconference-meetings-loading { - padding: 3px 6px; - @include border-radius($m-border-radius-base); - background: $m-light-gray; - color: $m-font-color; - } - - // all divs for the status start hidden - > * { - display: none; - } - - .icon-awesome { - margin-top: 2px; - float: none; + #my-meetings { + &.empty { + h2 { + font-weight: $m-font-weight-light; + text-align: center; + max-width: 70%; + margin: 0 auto; + line-height: 1.4; + margin-top: 200px; + } } } - .recordedonly-buttons{ + .recordedonly-buttons { float: right; margin-bottom: 10px; } diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ed3df774b..ca0d427ea 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -237,6 +237,8 @@ def with_tooltip(title, &block) end def sidenav_visible? - user_signed_in? + # TODO: TEMPORARY + # user_signed_in? + false end end diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb index ba6b687d6..e514ccaf5 100644 --- a/app/helpers/icons_helper.rb +++ b/app/helpers/icons_helper.rb @@ -277,6 +277,10 @@ def icon_add_user(options={}) end end + def icon_conference_play(options={}) + image_tag image_path('icons/conference-play.svg'), class: 'icon-mconf-conference-play' + end + private # Base method for most of the methods above diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 406209b40..bfc0627e6 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -1,10 +1,6 @@ - url = user_signed_in? ? main_app.my_home_path : main_app.root_path %a#navbar-logo{:href => url} -- if content_for?(:navbar_menu) - #navbar-menu - = yield :navbar_menu - -# #navbar-left -# %ul -# - if user_signed_in? @@ -32,12 +28,15 @@ - if user_signed_in? -# TODO: link, context based link and localization %li.navbar-conf-btn - .btn.btn-primary= t(".conference_room") + .btn-group{ role: "group" } + .btn.btn-primary= t(".conference_room") + = link_to join_bigbluebutton_room_path(current_user.bigbluebutton_room), class: "btn btn-primary btn-play tooltipped webconf-join-link", title: t('.conference_fast_play_tt') do + = icon_conference_play %li.navbar-chip.dropdown.last .chip.dropdown-user.dropdown-toggle{ data: { toggle: 'dropdown' } } = logo_image(current_user, size: '32', class: "logo-user") - %span.username= current_user.profile.first_name + -# %span.username= current_user.profile.first_name %span.caret %ul.dropdown-menu.dropdown-menu-right %li @@ -53,3 +52,7 @@ %li.last= link_to t('.login'), main_app.login_path - if current_site.registration_enabled? %li= link_to t('.register'), main_app.register_path + +- if content_for?(:navbar_menu) + #navbar-menu + = yield :navbar_menu diff --git a/app/views/my/home.html.haml b/app/views/my/home.html.haml index 1ddbcd502..f692a56ff 100644 --- a/app/views/my/home.html.haml +++ b/app/views/my/home.html.haml @@ -4,17 +4,19 @@ = content_for :navbar_menu do = render "my/navbar_menu", user_spaces: @user_spaces -%h1= t('.hi', name: current_user.first_name) - --# = render "shared/webconference_join", room: @room - -# TODO: #1087 make it look good for a new user (no recs, no meetings yet) -#user-meetings-recordings - %h3= t(".past_meetings.title") - = render :partial => 'shared/recording_list', locals: { meetings: @meetings, show_authors: false, redir_to: my_home_path } - .content-block-footer - = link_to t('.past_meetings.view_more'), my_meetings_path +- cls = @meetings.count <= 0 ? 'empty' : '' +#user-meetings-recordings{ class: cls } + - if @meetings.count > 0 + %h1= t('.hi', name: current_user.first_name) + %h3= t(".past_meetings.title") + = render :partial => 'shared/recording_list', locals: { meetings: @meetings, show_authors: false, redir_to: my_home_path } + .content-block-footer + = link_to t('.past_meetings.view_more'), my_meetings_path + - else + %h1= t('.hi', name: current_user.first_name) + %h2= t('.no_meetings_headline') - if mod_enabled?("spaces") - if @pending_requests.count > 0 diff --git a/app/views/my/meetings.html.haml b/app/views/my/meetings.html.haml index 52ed60e44..692019639 100644 --- a/app/views/my/meetings.html.haml +++ b/app/views/my/meetings.html.haml @@ -4,14 +4,19 @@ = content_for :navbar_menu do = render "my/navbar_menu", user_spaces: @user_spaces -#my-meetings - %h3= t('.subtitle') +- cls = @meetings.count <= 0 ? 'empty' : '' +#my-meetings{ class: cls } + - if @meetings.count > 0 + %h3= t('.subtitle') - .btn-group.recordedonly-buttons - = link_to my_meetings_path(@space), class: "btn btn-default btn-sm #{'active' if params[:recordedonly].nil? }", type: "button" do - = t(".recordedonly_true") - = link_to my_meetings_path(@space, recordedonly: 'false'), class: "btn btn-default btn-sm #{'active' if params[:recordedonly] == 'false' }", type: "button" do - = t(".recordedonly_false") + .btn-group.recordedonly-buttons + = link_to my_meetings_path, class: "btn btn-default btn-sm #{'active' if params[:recordedonly].nil? }", type: "button" do + = t(".recordedonly_true") + = link_to my_meetings_path(recordedonly: 'false'), class: "btn btn-default btn-sm #{'active' if params[:recordedonly] == 'false' }", type: "button" do + = t(".recordedonly_false") -#my-meetings-list-container - = render partial: 'shared/recording_list', locals: { meetings: @meetings, show_authors: false, redir_to: my_meetings_path } + #my-meetings-list-container + = render partial: 'shared/recording_list', locals: { meetings: @meetings, show_authors: false, redir_to: my_meetings_path } + + - else + %h2= t('.no_meetings_headline') diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 9dd33a308..90ae458b7 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -969,6 +969,7 @@ en: navbar: account: "Account" conference_room: "Conference room" + conference_fast_play_tt: "Click to quick start a conference" events: "Events" inbox: "Inbox" login: "Sign in" @@ -1128,7 +1129,8 @@ en: events: other: "Other" today: "Today" - hi: "Hi %{name}!" + hi: "Hi, %{name}!" + no_meetings_headline: "Start your first conference and interact with other participants" not_confirmed: "Your account is not activated yet, please check your email to activate it. In case you didn't receive an email, click here to request a new one." past_meetings: title: "Recorded meetings" @@ -1145,6 +1147,7 @@ en: page_header: activity_list: "Activity list" meetings: + no_meetings_headline: "There are no recordings or conferences to show yet" recordedonly_false: "All meetings" recordedonly_true: "Recorded only" subtitle: "Past meetings and recordings" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index 0164a747f..f2692226b 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -979,6 +979,7 @@ pt-br: navbar: account: "Conta" conference_room: "Sala de conferência" + conference_fast_play_tt: "Clique para iniciar uma conferência de forma rápida" events: "Eventos" inbox: "Caixa de entrada" login: "Login" @@ -1134,7 +1135,8 @@ pt-br: events: other: "Outros" today: "Hoje" - hi: "Olá %{name}!" + hi: "Olá, %{name}!" + no_meetings_headline: "Inicie sua primeira conferência e interaja a distância com outros participantes" not_confirmed: "Sua conta ainda não foi confirmada, por favor verifique o seu e-mail para confirmá-la. Se por acaso você não recebeu o e-mail clique aqui pra solicitar que ele seja enviado novamente." past_meetings: title: "Reuniões gravadas" @@ -1151,6 +1153,7 @@ pt-br: page_header: activity_list: "Atividades recentes" meetings: + no_meetings_headline: "Ainda não existem conferências ou gravações para exibir" recordedonly_false: "Todas reuniões" recordedonly_true: "Apenas gravadas" subtitle: "Reuniões e gravações passadas" From 212f79fe44e2311984ad217d22e4abf2e9fd4a86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vit=C3=B3ria=20Rosa?= Date: Fri, 20 Oct 2017 16:18:41 -0200 Subject: [PATCH 08/75] Logic done. Need tests and tests cases. --- app/controllers/shibboleth_controller.rb | 32 +++++++++++++++++------- lib/mconf/shibboleth.rb | 17 +++++++++++++ 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/app/controllers/shibboleth_controller.rb b/app/controllers/shibboleth_controller.rb index 4405b6074..17d95d63e 100644 --- a/app/controllers/shibboleth_controller.rb +++ b/app/controllers/shibboleth_controller.rb @@ -79,15 +79,11 @@ def login redirect_to my_approval_pending_path end end - else - if !get_always_new_account - logger.info "Shibboleth: first access for this user, rendering the association page" - render :associate - else - logger.info "Shibboleth: flag `shib_always_new_account` is set" - logger.info "Shibboleth: first access for this user, automatically creating a new account" - associate_with_new_account(@shib) - end + else + token = @shib.find_or_create_token() + token.user = @shib.create_fake_user(token) + sign_in_guest(token.user.full_name, token.user.email) + redirect_to after_sign_in_path_for(token.user) end end end @@ -272,4 +268,22 @@ def test_data request.env["inetOrgPerson-sn"] = request.env["Shib-inetOrgPerson-sn"].clone end end + # def test_data + # if Rails.env == "development" + # request.env["Shib-Application-ID"] = "default" + # request.env["Shib-Session-ID"] = "_412345e04a9fba98calks98d7c500853" + # request.env["Shib-Identity-Provider"] = "https://idp.mconf-institution.org/idp/shibboleth" + # request.env["Shib-Authentication-Instant"] = "2014-10-23T17:26:43.683Z" + # request.env["Shib-Authentication-Method"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" + # request.env["Shib-AuthnContext-Class"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" + # request.env["Shib-Session-Index"] = "alskd87345cc761850086ccbc4987123lskdic56a3c652c37fc7c3bdbos9dia88" + # request.env["Shib-eduPerson-eduPersonPrincipalName"] = "julia.leticia.da.silva@mconf-institution.org" + # request.env["Shib-inetOrgPerson-cn"] = "Julia111ss Let\xC3\xADcia da Silva" + # request.env["Shib-inetOrgPerson-mail"] = "julia.leticia.da.silva111sss11@personal-email.org" + # request.env["Shib-inetOrgPerson-sn"] = "Julia111sss da Silva" + # request.env["inetOrgPerson-cn"] = request.env["Shib-inetOrgPerson-cn"].clone + # request.env["inetOrgPerson-mail"] = request.env["Shib-inetOrgPerson-mail"].clone + # request.env["inetOrgPerson-sn"] = request.env["Shib-inetOrgPerson-sn"].clone + # end + # end end diff --git a/lib/mconf/shibboleth.rb b/lib/mconf/shibboleth.rb index 6d7256dc8..3cf1a089a 100644 --- a/lib/mconf/shibboleth.rb +++ b/lib/mconf/shibboleth.rb @@ -184,6 +184,23 @@ def create_user(shib_token) user end + # Creates a new user ONLY IN MEMORY using the information stored in the session. + # This function is used when a user that don't have a shibboleth account wants to enter in a conference room without create a new account. + def create_fake_user(shib_token) + password = SecureRandom.hex(16) + params = { + username: get_unique_login, email: get_email, + password: password, password_confirmation: password, + profile_attributes: { + full_name: get_name + } + } + + user = User.new params + + user + end + # Update data in the user model which might change in the federation, for now # the only fields used are 'email' and 'name' def update_user(token) From 0875e6e5748eab4f38e4029acd5b25d4e34ca11b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vit=C3=B3ria=20Rosa?= Date: Mon, 23 Oct 2017 17:41:54 -0200 Subject: [PATCH 09/75] Tests cases done and passed --- app/controllers/shibboleth_controller.rb | 110 +++++++++--------- .../invite_userid.html.haml | 2 +- .../controllers/shibboleth_controller_spec.rb | 34 +----- 3 files changed, 61 insertions(+), 85 deletions(-) diff --git a/app/controllers/shibboleth_controller.rb b/app/controllers/shibboleth_controller.rb index 17d95d63e..b13b5048a 100644 --- a/app/controllers/shibboleth_controller.rb +++ b/app/controllers/shibboleth_controller.rb @@ -51,40 +51,38 @@ def login else token = @shib.find_and_update_token - if params[:create] == "false" - # there's a token with a user associated - if token.present? && !token.user_with_disabled.nil? - user = token.user_with_disabled - if user.disabled - logger.info "Shibolleth: user local account is disabled, can't login" - flash[:error] = t('shibboleth.login.local_account_disabled') - redirect_to root_path + # there's a token with a user associated + if token.present? && !token.user_with_disabled.nil? + user = token.user_with_disabled + if user.disabled + logger.info "Shibolleth: user local account is disabled, can't login" + flash[:error] = t('shibboleth.login.local_account_disabled') + redirect_to root_path + else + # the user is not disabled, logs the user in + logger.info "Shibboleth: logging in the user #{token.user.inspect}" + logger.info "Shibboleth: shibboleth data for this user #{@shib.get_data.inspect}" + + # set that the user signed in via shib + @shib.set_signed_in(user, token) + # Update user data with the latest version from the federation + @shib.update_user(token) if current_site.shib_update_users? + + if token.user.active_for_authentication? + sign_in user + flash.keep # keep the message set before by #create_association + redirect_to after_sign_in_path_for(token.user) else - # the user is not disabled, logs the user in - logger.info "Shibboleth: logging in the user #{token.user.inspect}" - logger.info "Shibboleth: shibboleth data for this user #{@shib.get_data.inspect}" - - # set that the user signed in via shib - @shib.set_signed_in(user, token) - # Update user data with the latest version from the federation - @shib.update_user(token) if current_site.shib_update_users? - - if token.user.active_for_authentication? - sign_in user - flash.keep # keep the message set before by #create_association - redirect_to after_sign_in_path_for(token.user) - else - # go to the pending approval page without a flash msg, the page already has a msg - flash.clear - redirect_to my_approval_pending_path - end + # go to the pending approval page without a flash msg, the page already has a msg + flash.clear + redirect_to my_approval_pending_path end - else - token = @shib.find_or_create_token() - token.user = @shib.create_fake_user(token) - sign_in_guest(token.user.full_name, token.user.email) - redirect_to after_sign_in_path_for(token.user) end + else + token = @shib.find_or_create_token() + token.user = @shib.create_fake_user(token) + sign_in_guest(token.user.full_name, token.user.email) + redirect_to after_sign_in_path_for(token.user) end end end @@ -118,7 +116,7 @@ def info private def load_shib_session - #test_data + test_data logger.info "Shibboleth: creating a new Mconf::Shibboleth object" @shib = Mconf::Shibboleth.new(session) @shib.load_data(request.env, current_site.shib_env_variables) @@ -250,40 +248,40 @@ def get_always_new_account end # Adds fake test data to the environment to test shibboleth in development. - def test_data - if Rails.env == "development" - request.env["Shib-Application-ID"] = "default" - request.env["Shib-Session-ID"] = "_412345e04a9fba98calks98d7c500852" - request.env["Shib-Identity-Provider"] = "https://idp.mconf-institution.org/idp/shibboleth" - request.env["Shib-Authentication-Instant"] = "2014-10-23T17:26:43.683Z" - request.env["Shib-Authentication-Method"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" - request.env["Shib-AuthnContext-Class"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" - request.env["Shib-Session-Index"] = "alskd87345cc761850086ccbc4987123lskdic56a3c652c37fc7c3bdbos9dia87" - request.env["Shib-eduPerson-eduPersonPrincipalName"] = "maria.leticia.da.silva@mconf-institution.org" - request.env["Shib-inetOrgPerson-cn"] = "Maria Let\xC3\xADcia da Silva" - request.env["Shib-inetOrgPerson-mail"] = "maria.leticia.da.silva@personal-email.org" - request.env["Shib-inetOrgPerson-sn"] = "Let\xC3\xADcia da Silva" - request.env["inetOrgPerson-cn"] = request.env["Shib-inetOrgPerson-cn"].clone - request.env["inetOrgPerson-mail"] = request.env["Shib-inetOrgPerson-mail"].clone - request.env["inetOrgPerson-sn"] = request.env["Shib-inetOrgPerson-sn"].clone - end - end # def test_data # if Rails.env == "development" # request.env["Shib-Application-ID"] = "default" - # request.env["Shib-Session-ID"] = "_412345e04a9fba98calks98d7c500853" + # request.env["Shib-Session-ID"] = "_412345e04a9fba98calks98d7c500852" # request.env["Shib-Identity-Provider"] = "https://idp.mconf-institution.org/idp/shibboleth" # request.env["Shib-Authentication-Instant"] = "2014-10-23T17:26:43.683Z" # request.env["Shib-Authentication-Method"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" # request.env["Shib-AuthnContext-Class"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" - # request.env["Shib-Session-Index"] = "alskd87345cc761850086ccbc4987123lskdic56a3c652c37fc7c3bdbos9dia88" - # request.env["Shib-eduPerson-eduPersonPrincipalName"] = "julia.leticia.da.silva@mconf-institution.org" - # request.env["Shib-inetOrgPerson-cn"] = "Julia111ss Let\xC3\xADcia da Silva" - # request.env["Shib-inetOrgPerson-mail"] = "julia.leticia.da.silva111sss11@personal-email.org" - # request.env["Shib-inetOrgPerson-sn"] = "Julia111sss da Silva" + # request.env["Shib-Session-Index"] = "alskd87345cc761850086ccbc4987123lskdic56a3c652c37fc7c3bdbos9dia87" + # request.env["Shib-eduPerson-eduPersonPrincipalName"] = "maria.leticia.da.silva@mconf-institution.org" + # request.env["Shib-inetOrgPerson-cn"] = "Maria Let\xC3\xADcia da Silva" + # request.env["Shib-inetOrgPerson-mail"] = "maria.leticia.da.silva@personal-email.org" + # request.env["Shib-inetOrgPerson-sn"] = "Let\xC3\xADcia da Silva" # request.env["inetOrgPerson-cn"] = request.env["Shib-inetOrgPerson-cn"].clone # request.env["inetOrgPerson-mail"] = request.env["Shib-inetOrgPerson-mail"].clone # request.env["inetOrgPerson-sn"] = request.env["Shib-inetOrgPerson-sn"].clone # end # end + def test_data + if Rails.env == "development" + request.env["Shib-Application-ID"] = "default" + request.env["Shib-Session-ID"] = "_412345e04a9fba98calks98d7c500853" + request.env["Shib-Identity-Provider"] = "https://idp.mconf-institution.org/idp/shibboleth" + request.env["Shib-Authentication-Instant"] = "2014-10-23T17:26:43.683Z" + request.env["Shib-Authentication-Method"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" + request.env["Shib-AuthnContext-Class"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" + request.env["Shib-Session-Index"] = "alskd87345cc761850086ccbc4987123lskdic56a3c652c37fc7c3bdbos9dia88" + request.env["Shib-eduPerson-eduPersonPrincipalName"] = "julia.leticia.da.silva@mconf-institution.org" + request.env["Shib-inetOrgPerson-cn"] = "Julia111ss Let\xC3\xADcia da Silva" + request.env["Shib-inetOrgPerson-mail"] = "julia.leticia.da.silva111sss11@personal-email.org" + request.env["Shib-inetOrgPerson-sn"] = "Julia111sss da Silva" + request.env["inetOrgPerson-cn"] = request.env["Shib-inetOrgPerson-cn"].clone + request.env["inetOrgPerson-mail"] = request.env["Shib-inetOrgPerson-mail"].clone + request.env["inetOrgPerson-sn"] = request.env["Shib-inetOrgPerson-sn"].clone + end + end end diff --git a/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml b/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml index 89de9d1e2..b4125c516 100644 --- a/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml +++ b/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml @@ -22,7 +22,7 @@ %ul#login-extra-links - if current_site.shib_enabled? - %li= link_to t('.login_federation'), shibboleth_path(:create => false) + %li= link_to t('.login_federation'), shibboleth_path - if current_site.certificate_login_enabled? %li= certificate_auth_link t('.login_certificate'), false diff --git a/spec/controllers/shibboleth_controller_spec.rb b/spec/controllers/shibboleth_controller_spec.rb index c0f47837b..b4d826ac4 100644 --- a/spec/controllers/shibboleth_controller_spec.rb +++ b/spec/controllers/shibboleth_controller_spec.rb @@ -321,34 +321,12 @@ end end - context "renders the association page if the user doesn't have a token yet" do - before(:each) { get :login } - it { should render_template('associate') } - it { should render_with_layout('no_sidebar') } - end - - context "if the flag shib_always_new_account is set" do - let(:attrs) { - attrs = FactoryGirl.attributes_for(:user) - attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile) - attrs - } - - before { - Site.current.update_attributes(:shib_always_new_account => true) - setup_shib(attrs[:profile_attributes][:full_name], attrs[:email], attrs[:email]) - } - - context "skips the association page" do - before(:each) { get :login } - it { should set_flash.to(I18n.t('shibboleth.create_association.account_created', :url => new_user_password_path)) } - it { should redirect_to(shibboleth_path)} - end - - context "calls #associate_with_new_account" do - let(:run_route) { get :login } - it_should_behave_like "a caller of #associate_with_new_account" - end + context "don't create a new account" do + it { expect { get :login, format: 'json', join_only: true }.not_to change{ User.count } } + it { expect { get :login, format: 'json', join_only: true }.not_to change{ ShibToken.count } } + it { + get :login, format: 'json', join_only: true + should redirect_to(my_home_path) } end context "user has a token and his local account is disabled" do From ae298d93e0a4971c477e0896e5510faa91bd4a97 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Mon, 23 Oct 2017 18:20:10 -0200 Subject: [PATCH 10/75] Add titles above the forms in the login and registration pages --- app/assets/stylesheets/app/registrations/new.scss | 7 +++++++ app/assets/stylesheets/app/sessions/new.scss | 7 +++++++ app/views/registrations/new.html.haml | 1 + app/views/sessions/new.html.haml | 1 + config/locales/en/mconf.yml | 10 +++++----- config/locales/pt-br/mconf.yml | 6 +++--- 6 files changed, 24 insertions(+), 8 deletions(-) diff --git a/app/assets/stylesheets/app/registrations/new.scss b/app/assets/stylesheets/app/registrations/new.scss index 06f031bea..ea0bdea8d 100644 --- a/app/assets/stylesheets/app/registrations/new.scss +++ b/app/assets/stylesheets/app/registrations/new.scss @@ -25,6 +25,13 @@ body.registrations.new, body.registrations.create { @include make-md-column(5); @include make-md-column-offset(1); + h1 { + font-weight: $m-font-weight-bold; + text-align: center; + margin-bottom: 36px; + margin-top: 0; + } + form { // every field is required, we don't need to show it abbr { display: none; } diff --git a/app/assets/stylesheets/app/sessions/new.scss b/app/assets/stylesheets/app/sessions/new.scss index 9806702f7..057bf4650 100644 --- a/app/assets/stylesheets/app/sessions/new.scss +++ b/app/assets/stylesheets/app/sessions/new.scss @@ -26,6 +26,13 @@ body.sessions.new, body.sessions.create { @include make-md-column(5); @include make-md-column-offset(1); + h1 { + font-weight: $m-font-weight-bold; + text-align: center; + margin-bottom: 36px; + margin-top: 0; + } + form { // every field is required, we don't need to show it abbr { display: none; } diff --git a/app/views/registrations/new.html.haml b/app/views/registrations/new.html.haml index 0106e3c31..7129ce0ba 100644 --- a/app/views/registrations/new.html.haml +++ b/app/views/registrations/new.html.haml @@ -5,5 +5,6 @@ %h3= t('.headline2') #register-wrapper + %h1= t('.title') = render partial: 'signup_form' = render partial: 'shared/social_login' diff --git a/app/views/sessions/new.html.haml b/app/views/sessions/new.html.haml index e3a630559..543521066 100644 --- a/app/views/sessions/new.html.haml +++ b/app/views/sessions/new.html.haml @@ -5,5 +5,6 @@ %h3= t('.headline2') #login-wrapper + %h1= t('.title') = render partial: 'sessions/login_form' = render partial: 'shared/social_login' diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 90ae458b7..225400ec9 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -1286,11 +1286,11 @@ en: register_now: "Register now!" registrations: new: - headline: "Webconference Platform" + headline: "Web Conference Platform" headline2: "focused on distance learning and remote meetings" - title: "Register" + title: "Create an account" signup_form: - register: "Create an account" + register: "Register" remove: Remove reply: Reply reply_to: "Reply to:" @@ -1344,12 +1344,12 @@ en: sessions: login_form: ldap_authentication: "Authenticate via LDAP" - login: "Login" + login: "Sign in" lost_password: "Forgot my password" new: headline: "Web Conference Platform" headline2: "focused on distance learning and remote meetings" - title: "Sign in" + title: "Sign into your account" session_locales: create: success: "Application language changed to %{value}" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index f2692226b..d90224e38 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -1316,9 +1316,9 @@ pt-br: new: headline: "Plataforma de webconferência" headline2: "com foco em educação a distância e reuniões remotas" - title: "Registrar" + title: "Crie uma conta" signup_form: - register: "Criar uma conta" + register: "Criar conta" remove: Remover reply: Responder reply_to: "Responder para:" @@ -1377,7 +1377,7 @@ pt-br: new: headline: "Plataforma de webconferência" headline2: "com foco em educação a distância e reuniões remotas" - title: "Entrar" + title: "Acesse sua conta" session_locales: create: success: "Idioma da aplicação alterado para %{value}" From 992345a4b3e252941e87e04b04d67f9b07219966 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Mon, 23 Oct 2017 21:38:06 -0200 Subject: [PATCH 11/75] Design the rounded buttons in the navbar --- app/assets/stylesheets/_definitions.scss | 18 ++++ app/assets/stylesheets/_mixins.scss | 5 +- .../stylesheets/app/application/base.scss | 92 +++++++++---------- .../stylesheets/app/application/tooltips.scss | 28 +----- app/views/layouts/_navbar.html.haml | 23 ++--- config/locales/en/mconf.yml | 6 +- config/locales/pt-br/mconf.yml | 6 +- 7 files changed, 88 insertions(+), 90 deletions(-) diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index 08d0553d8..17f13c0d1 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -38,6 +38,7 @@ $m-color-secondary: #337ab7; //#4589c4; //$m-bright-blue; $m-focus-border-color: $m-color-secondary; $m-logo-initials-bg: red blue yellow green orange purple magenta $m-color-primary $m-color-secondary; $m-logo-bg: lighten($m-color-primary, 15); +$m-logo-border: $m-color-primary; $m-site-horizontal-padding: 120px; // fonts @@ -159,6 +160,10 @@ $m-navbar-link-color: lighten($m-link-color, 15); $m-navbar-link-color-hover: lighten($m-navbar-link-color, 8); $m-navbar-link-color-active: $m-navbar-link-color; $m-navbar-height: 90px; +$m-navbar-btn-size: 46px; +$m-navbar-btn-bg: $m-color-primary; +$m-navbar-btn-bg-hover: darken($m-color-primary, 5); +$m-navbar-btn-color: #fff; // for a light/white navbar: /* $m-navbar-bg-color-dark: white; */ @@ -223,6 +228,14 @@ $m-tags-font-color: #fff; //#39739d; $m-tags-bg-color: #4b9ace; //#E1ECF4; $m-tags-bg-color-hover: darken($m-tags-bg-color, 10); +// tooltips +$m-tooltip-color: #fff; +$m-tooltip-bg: $m-color-primary; +$m-tooltip-opacity: .9; +$m-tooltip-arrow-width: 8px; +$m-tooltip-arrow-color: $m-color-primary; + + // Bootstrap variables // See all available at http://getbootstrap.com/customize/#less-variables // Some are definef here with their default values because we might need them when using @@ -285,6 +298,11 @@ $btn-border-radius-base: $m-border-radius-base; $btn-border-radius-large: $m-border-radius-base; $btn-border-radius-small: $m-border-radius-base; $cursor-disabled: default; +$tooltip-color: $m-tooltip-color; +$tooltip-bg: $m-tooltip-bg; +$tooltip-opacity: $m-tooltip-opacity; +$tooltip-arrow-width: $m-tooltip-arrow-width; +$tooltip-arrow-color: $m-tooltip-arrow-color; // Themes: if using a theme, import it here! // @import "../themes/theme-name/stylesheets/variables"; diff --git a/app/assets/stylesheets/_mixins.scss b/app/assets/stylesheets/_mixins.scss index 93ea1dd6c..db459edea 100644 --- a/app/assets/stylesheets/_mixins.scss +++ b/app/assets/stylesheets/_mixins.scss @@ -93,10 +93,11 @@ } // general logo style (user avatars, space logos) -@mixin logo-container($imgw: "84px") { +@mixin logo-container($imgw: 84px) { text-decoration: none; display: inline-block; @include broken-img-parent; + @include text-truncate; img { margin: 2px 0; @@ -134,7 +135,7 @@ .logo-user { width: $imgw; height: $imgw; - @include border-radius($m-border-radius-large); + @include border-radius($imgw/2); } } diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index 2255f11d1..060cf0473 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -358,8 +358,35 @@ form { @include mconf-clearfix; padding: 0 $m-site-horizontal-padding; - .btn { - font-size: $m-navbar-font; + .btn-navbar { + height: $m-navbar-btn-size; + width: $m-navbar-btn-size; + margin: 0 18px; + display: inline-block; + font-size: $m-font-big; + @include border-radius($m-navbar-btn-size/2); + background: $m-navbar-btn-bg; + margin: 23px 18px; + padding: 6px; + + color: $m-navbar-btn-color; + .icon-awesome { + color: $m-navbar-btn-color; + &:hover { color: $m-navbar-btn-color; } + } + + &:last-child { + margin-right: 36px; + } + + img { + width: 30px; + height: 30px; + } + + &:hover { + background: $m-navbar-btn-bg-hover; + } } a:hover { text-decoration: none; } @@ -374,40 +401,28 @@ form { @include navbar-lists; float: right; - .dropdown-user.chip { - margin: 0; + .dropdown-user { font-size: $m-font-medium; - font-weight: normal; - border: none; - color: $m-navbar-font-color; - @include transition(background-color 0.2s ease-in); - @include text-truncate; - max-width: 350px; - /* padding: 25px 10px 23px 20px; */ - @include border-radius(0); - overflow: inherit; - height: auto; + @include logo-container; &:hover, &[aria-expanded=true] { background: $m-navbar-font-highlight; } - .caret { - margin-top: -2px; - margin-left: 2px; - /* border-top: 8px dashed $m-border-color-normal; */ - border-top: 8px dashed #000; - border-left: 8px solid transparent; - border-right: 8px solid transparent; - } - img, .logo-user { - height: 46px; - width: 46px; + height: $m-navbar-btn-size; + width: $m-navbar-btn-size; float: none; - margin: 0 8px 0 -12px; - border: 1px solid $m-logo-bg; - background: $m-logo-bg; + margin: 0 16px 0 0; + display: inline-block; + border: 1px solid $m-logo-border; + font-size: $m-font-big; + } + + .username { + display: inline-block; + font-size: $m-font-big; + vertical-align: middle; } } @@ -429,27 +444,6 @@ form { border-left: 1px solid #000; margin: 23px 0; } - - .navbar-conf-btn { - padding: 21px 0 20px 0; - margin: 0 36px 0 18px; - - .btn:first-child { - padding: 10px 20px; - /* border-right: 1px solid $m-navbar-bg-color-light; */ - } - - .btn-play { - padding: 9px 12px 8px 12px; - margin-left: 1px; - - img { - width: 30px; - height: 30px; - } - } - } - } #navbar-logo { diff --git a/app/assets/stylesheets/app/application/tooltips.scss b/app/assets/stylesheets/app/application/tooltips.scss index b20fa418a..b543dd987 100644 --- a/app/assets/stylesheets/app/application/tooltips.scss +++ b/app/assets/stylesheets/app/application/tooltips.scss @@ -7,34 +7,14 @@ .tooltip { z-index: $m-z-index-tooltip; + color: red; } -/* Without this some tooltips will be shown in a single line, and if its - text is too big it won't show the entire text. */ .tooltip-inner { + /* Without this some tooltips will be shown in a single line, and if its + text is too big it won't show the entire text. */ white-space: normal; font-weight: normal; -} - -.ui-tooltip-mconf { - z-index: $m-z-index-tooltip; - font-weight: normal; - - .ui-tooltip-content { - @include font-size($m-font-normal); - text-align: center; - line-height: 1.3em; - font-weight: normal; - } -} - -.ui-tooltip-mconf-label { - z-index: $m-z-index-tooltip; - font-weight: normal; - .ui-tooltip-content { - @include font-size($m-font-medium); - text-align: center; - font-weight: normal; - } + font-size: $m-font-normal; } diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index bfc0627e6..86cef0b3d 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -27,17 +27,18 @@ %ul#navbar-right-links - if user_signed_in? -# TODO: link, context based link and localization + - room = current_user.bigbluebutton_room %li.navbar-conf-btn - .btn-group{ role: "group" } - .btn.btn-primary= t(".conference_room") - = link_to join_bigbluebutton_room_path(current_user.bigbluebutton_room), class: "btn btn-primary btn-play tooltipped webconf-join-link", title: t('.conference_fast_play_tt') do - = icon_conference_play + = link_to join_bigbluebutton_room_path(room), class: "btn-navbar btn-play tooltipped webconf-join-link", title: t('.conference_play_tooltip') do + = icon_conference_play + - if can?(:user_edit, room) + = link_to user_edit_bigbluebutton_room_path(room), class: "open-modal btn-navbar btn-config tooltipped", title: t('.conference_config_tooltip') do + = icon_options %li.navbar-chip.dropdown.last - .chip.dropdown-user.dropdown-toggle{ data: { toggle: 'dropdown' } } - = logo_image(current_user, size: '32', class: "logo-user") - -# %span.username= current_user.profile.first_name - %span.caret + .dropdown-user.dropdown-toggle{ data: { toggle: 'dropdown' } } + = logo_image(current_user, size: '128', class: "logo-user") + %span.username= current_user.profile.first_name %ul.dropdown-menu.dropdown-menu-right %li .observation= current_user.name @@ -53,6 +54,6 @@ - if current_site.registration_enabled? %li= link_to t('.register'), main_app.register_path -- if content_for?(:navbar_menu) - #navbar-menu - = yield :navbar_menu +-# - if content_for?(:navbar_menu) +-# #navbar-menu +-# = yield :navbar_menu diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 225400ec9..7807fdb8d 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -968,8 +968,10 @@ en: title: "Management" navbar: account: "Account" - conference_room: "Conference room" - conference_fast_play_tt: "Click to quick start a conference" + conference_config_tooltip: "Customize your virtual room" + conference_history_tooltip: "History of web conferences" + conference_invite_tooltip: "Invite people to a web conference" + conference_play_tooltip: "Start a web conference" events: "Events" inbox: "Inbox" login: "Sign in" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index d90224e38..15db99cde 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -978,8 +978,10 @@ pt-br: search: "Pesquisar..." navbar: account: "Conta" - conference_room: "Sala de conferência" - conference_fast_play_tt: "Clique para iniciar uma conferência de forma rápida" + conference_config_tooltip: "Personalizar a sala virtual" + conference_history_tooltip: "Histórico de webconferências" + conference_invite_tooltip: "Convidar para webconferência" + conference_play_tooltip: "Iniciar webconferência" events: "Eventos" inbox: "Caixa de entrada" login: "Login" From 9e5959265d931e22cf19b814da4e94910aedf6a8 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Tue, 24 Oct 2017 11:46:58 -0200 Subject: [PATCH 12/75] Better and bigger navigation buttons in the navbar --- .../app/application/tooltips.js.coffee | 4 +++- app/assets/stylesheets/_definitions.scss | 16 ++++++++------ .../stylesheets/app/application/base.scss | 21 +++++++++++++------ .../stylesheets/app/application/tooltips.scss | 3 ++- app/assets/stylesheets/app/my/home.scss | 1 + app/views/layouts/_navbar.html.haml | 10 +++++++-- 6 files changed, 39 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/app/application/tooltips.js.coffee b/app/assets/javascripts/app/application/tooltips.js.coffee index e66f2b85d..d78c8ed3f 100644 --- a/app/assets/javascripts/app/application/tooltips.js.coffee +++ b/app/assets/javascripts/app/application/tooltips.js.coffee @@ -7,9 +7,11 @@ class mconf.Tooltip # elements with `overflow:hidden` set, for example. container: 'body' placement: 'auto top' + animation: true delay: - show: 500 + show: 300 hide: 100 + # trigger: 'click' @bind: -> $("a[rel=popover]").popover() diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index 17f13c0d1..10b85ca4a 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -33,8 +33,9 @@ $m-transparent: rgba(255,255,255,0); $m-site-bg-color: #f2f2f2; $m-site-content-bg-color: #fff; $m-color-primary: $m-green-mconf; -$m-color-primary-light: lighten($m-green-mconf, 12); -$m-color-secondary: #337ab7; //#4589c4; //$m-bright-blue; +$m-color-primary-hover: darken($m-color-primary, 5); +$m-color-secondary: #337ab7; +$m-color-secondary-hover: darken($m-color-secondary, 5); $m-focus-border-color: $m-color-secondary; $m-logo-initials-bg: red blue yellow green orange purple magenta $m-color-primary $m-color-secondary; $m-logo-bg: lighten($m-color-primary, 15); @@ -159,10 +160,12 @@ $m-navbar-font-family: $m-font-family-h; $m-navbar-link-color: lighten($m-link-color, 15); $m-navbar-link-color-hover: lighten($m-navbar-link-color, 8); $m-navbar-link-color-active: $m-navbar-link-color; -$m-navbar-height: 90px; -$m-navbar-btn-size: 46px; +$m-navbar-height: 120px; +$m-navbar-btn-size: 64px; +/* $m-navbar-height: 90px; */ +/* $m-navbar-btn-size: 46px; */ $m-navbar-btn-bg: $m-color-primary; -$m-navbar-btn-bg-hover: darken($m-color-primary, 5); +$m-navbar-btn-bg-hover: $m-color-primary-hover; $m-navbar-btn-color: #fff; // for a light/white navbar: @@ -245,10 +248,11 @@ $m-tooltip-arrow-color: $m-color-primary; /* $grid-gutter-width: 30px; */ /* $grid-float-breakpoint: 768px; */ + /* * Customized variables for bootstrap */ -$brand-primary: $m-color-primary-light; //$m-color-primary; //$m-link-color; //#4589C4;//#2186DE; +$brand-primary: lighten($m-green-mconf, 12); $border-radius-base: $m-border-radius-base; $border-radius-small: $m-border-radius-small; $border-radius-large: $m-border-radius-large; diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index 060cf0473..9126557fe 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -359,6 +359,8 @@ form { padding: 0 $m-site-horizontal-padding; .btn-navbar { + $imgsize: 42px; + height: $m-navbar-btn-size; width: $m-navbar-btn-size; margin: 0 18px; @@ -366,8 +368,11 @@ form { font-size: $m-font-big; @include border-radius($m-navbar-btn-size/2); background: $m-navbar-btn-bg; - margin: 23px 18px; - padding: 6px; + margin: ($m-navbar-height - $m-navbar-btn-size)/2 18px; + padding: ($m-navbar-btn-size - $imgsize) / 2; + float: left; + + transition: all .3s ease-in-out; color: $m-navbar-btn-color; .icon-awesome { @@ -380,12 +385,13 @@ form { } img { - width: 30px; - height: 30px; + width: $imgsize; + height: $imgsize; } &:hover { background: $m-navbar-btn-bg-hover; + transform: scale(1.05); } } @@ -417,6 +423,10 @@ form { display: inline-block; border: 1px solid $m-logo-border; font-size: $m-font-big; + + &.logo-initials { + padding: ($m-navbar-btn-size - $m-font-big)/2 0; + } } .username { @@ -440,9 +450,8 @@ form { .navbar-chip { padding-left: 36px; - /* border-left: 1px solid $m-border-color-normal; */ border-left: 1px solid #000; - margin: 23px 0; + margin: ($m-navbar-height - $m-navbar-btn-size)/2 0; } } diff --git a/app/assets/stylesheets/app/application/tooltips.scss b/app/assets/stylesheets/app/application/tooltips.scss index b543dd987..560981fe4 100644 --- a/app/assets/stylesheets/app/application/tooltips.scss +++ b/app/assets/stylesheets/app/application/tooltips.scss @@ -7,7 +7,6 @@ .tooltip { z-index: $m-z-index-tooltip; - color: red; } .tooltip-inner { @@ -17,4 +16,6 @@ font-weight: normal; font-size: $m-font-normal; + padding: 6px 12px; + max-width: 300px; } diff --git a/app/assets/stylesheets/app/my/home.scss b/app/assets/stylesheets/app/my/home.scss index 5be7e4f42..9112fd1bf 100644 --- a/app/assets/stylesheets/app/my/home.scss +++ b/app/assets/stylesheets/app/my/home.scss @@ -43,6 +43,7 @@ body.my.home, body.my.activity, body.my.meetings { max-width: 70%; margin: 0 auto; line-height: 1.4; + font-size: $m-font-normal * $m-font-h1-multiplier; } } } diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 86cef0b3d..196412154 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -28,12 +28,18 @@ - if user_signed_in? -# TODO: link, context based link and localization - room = current_user.bigbluebutton_room + %li.navbar-conf-btn - = link_to join_bigbluebutton_room_path(room), class: "btn-navbar btn-play tooltipped webconf-join-link", title: t('.conference_play_tooltip') do + = link_to join_bigbluebutton_room_path(room), class: "btn-navbar tooltipped webconf-join-link", title: t('.conference_play_tooltip') do = icon_conference_play - if can?(:user_edit, room) - = link_to user_edit_bigbluebutton_room_path(room), class: "open-modal btn-navbar btn-config tooltipped", title: t('.conference_config_tooltip') do + = link_to user_edit_bigbluebutton_room_path(room), class: "btn-navbar open-modal tooltipped", title: t('.conference_config_tooltip') do = icon_options + - if can?(:create_meeting, room) + = link_to invitation_bigbluebutton_room_path(room), class: "btn-navbar open-modal tooltipped", title: t('.conference_invite_tooltip') do + = icon_invitation + = link_to my_meetings_path, class: "btn-navbar tooltipped", title: t('.conference_history_tooltip') do + = icon_invitation %li.navbar-chip.dropdown.last .dropdown-user.dropdown-toggle{ data: { toggle: 'dropdown' } } From 764eb30a0b57d716e17ac778d2ce92f715326c77 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 25 Oct 2017 13:30:53 -0200 Subject: [PATCH 13/75] Remove unused icons and add icons for btns on the navbar --- .../images/icons/conference-history.svg | 16 +++++++++++++ app/assets/images/icons/conference-invite.svg | 14 +++++++++++ app/assets/images/icons/config.svg | 22 ++++++++++++++++++ app/assets/images/icons/help-12x12.png | Bin 479 -> 0 bytes .../images/icons/meeting-many-to-many.png | Bin 3126 -> 0 bytes .../images/icons/meeting-one-to-many.png | Bin 2748 -> 0 bytes .../images/icons/meeting-one-to-one.png | Bin 1594 -> 0 bytes app/assets/images/icons/mobile-gray-16x16.png | Bin 324 -> 0 bytes .../images/icons/question-sign-13x13.png | Bin 493 -> 0 bytes app/assets/images/icons/user_add.png | Bin 746 -> 0 bytes app/assets/images/icons/webcam.png | Bin 728 -> 0 bytes app/assets/images/icons/webcam_add.png | Bin 786 -> 0 bytes app/assets/stylesheets/_mixins.scss | 4 +++- app/helpers/icons_helper.rb | 10 +++++--- app/views/layouts/_navbar.html.haml | 2 +- 15 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 app/assets/images/icons/conference-history.svg create mode 100644 app/assets/images/icons/conference-invite.svg create mode 100644 app/assets/images/icons/config.svg delete mode 100644 app/assets/images/icons/help-12x12.png delete mode 100644 app/assets/images/icons/meeting-many-to-many.png delete mode 100644 app/assets/images/icons/meeting-one-to-many.png delete mode 100644 app/assets/images/icons/meeting-one-to-one.png delete mode 100644 app/assets/images/icons/mobile-gray-16x16.png delete mode 100644 app/assets/images/icons/question-sign-13x13.png delete mode 100644 app/assets/images/icons/user_add.png delete mode 100644 app/assets/images/icons/webcam.png delete mode 100644 app/assets/images/icons/webcam_add.png diff --git a/app/assets/images/icons/conference-history.svg b/app/assets/images/icons/conference-history.svg new file mode 100644 index 000000000..0b56a6afe --- /dev/null +++ b/app/assets/images/icons/conference-history.svg @@ -0,0 +1,16 @@ + + + +]> + + + + + + + diff --git a/app/assets/images/icons/conference-invite.svg b/app/assets/images/icons/conference-invite.svg new file mode 100644 index 000000000..15ec4ee3e --- /dev/null +++ b/app/assets/images/icons/conference-invite.svg @@ -0,0 +1,14 @@ + + + +]> + + + + + + diff --git a/app/assets/images/icons/config.svg b/app/assets/images/icons/config.svg new file mode 100644 index 000000000..e0a14f956 --- /dev/null +++ b/app/assets/images/icons/config.svg @@ -0,0 +1,22 @@ + + + +]> + + + + + diff --git a/app/assets/images/icons/help-12x12.png b/app/assets/images/icons/help-12x12.png deleted file mode 100644 index 120df5c50738725cceb8f59c6729a514718b5067..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmV<50U-W~P)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00BoyL_t(2&vnwxOH^?b#_`V` z#zifzD7J72U4#p#5o{wtwMd8%6dG3|NQ;(5uG?qr0{a6*2&H8&=0*Y`NRX(;mn&jL zv

RZ6gXRp#($-O VYUmUAGeZCX002ovPDHLkV1iW~%ESNw diff --git a/app/assets/images/icons/meeting-many-to-many.png b/app/assets/images/icons/meeting-many-to-many.png deleted file mode 100644 index 02e0e9fb73f840c64e29723bed573c2f88fd683e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3126 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 Q^#A|>07*qoM6N<$f^l}wDgXcg diff --git a/app/assets/images/icons/meeting-one-to-many.png b/app/assets/images/icons/meeting-one-to-many.png deleted file mode 100644 index cdfd08f569ec9aac6e69c4eaaad429e4db4b65c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2748 zcmV;t3PbgYP)XzTbC#=bZ1Jy@V+&yP2_u2mnyiK2Qo03z@izn6jABPsB|OYFOs9pGwvy zVT#LcW;wSbxSN3+Mp4@iN!;x!vxTNL;KT0V%>@1wfF%ia9}8?;HpBkKv;=(E?O!ZF zbv(AqRDc~WXIB5^6vR{oOrZC9?3XD39hp)QW)2qpy{7kZzc6X{EG|WfL{BjTG-4&S zE&Uc&lyK@!Q0XeSw@fPFy+0h8bxboI*xnT?GMGUCR0Fu>DyOE}ax0&lrL+(0R(JS+ zB$)Q3;qFG4)BbI|ALNMw{H2eN{tyUR1p#6xoRR?c9Cynziz5vHtmnhPQE*zZ&?Ys9 ztLqw?4h`tmco2vP?LEC2o4eH$=NKtbH2^(zN*nG;1I%jYjIEs!rx?YP0OPxcQ!{#* zX8-`HiVVP;TCu}kS9x~V~SCqcLefGqffdDB+8A^E%1dWk8_FswuzC9rnVHVq9eccb z@Q$lW-w5?|Z`siuDhjGP7zCS1!rU^)!S!}^(|aepk5`rzW$ukB>;C1+4el6Ztg}(v zJE!zcaN{J$T24Or`f=Y|O(C5X0_A4f@bjt?WEzp@&O~$=5XjFkVPA7cq$O

5R&f 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 diff --git a/app/assets/images/icons/mobile-gray-16x16.png b/app/assets/images/icons/mobile-gray-16x16.png deleted file mode 100644 index 6d01b33752b18b00aedc2962df31d673f2beb3a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjS<1hbgvmQ{7FK%tACE{-7>^c-6(Dr|3puo0^ zK^KB-u51dEbM(~bR1x3siN*5dJcTt6o-t@In%euT-}0UOxAphV?D_t2FJs(P zozrfflXz~wdl}C>>HR9JZ03?z&N9c7jb~rm+Tp|Srin3aTfkM_li62)Wu1#=T=h%X z_2RB|pKZ2p(wXl6UcuzoY+eQt*NeQ2Ch~iiW?C^%V6f;uaq8}2-aCJp9&juWnaF(d zuQS`bI^)g4C;cbwmGbZ18aQ`{qoeM6R^^5N7 Q0X@gy>FVdQ&MBb@00P5+*8l(j diff --git a/app/assets/images/icons/question-sign-13x13.png b/app/assets/images/icons/question-sign-13x13.png deleted file mode 100644 index ad0e2b2996d65785456011897250029ab9ce88e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 493 zcmVOx>h*D zz6TErYYW9ju?ZFtw9*5GJGBtWk!*gO=kd(hIo;0e%>T2q;vXo>^0=8Tr<8t#5WX$y zsvlyES0&vCR%-MsGrQaC^W5aVwc6=)9#^aX!DmV427|%e%%0XAX0|WsyQKDFg#Zqq(P-QQejfB7 zeF`DG1-{e_UsFn(fAth&ydvoda17W7egVrs6W9T|A%xe5e#CG%Je6hHx|yv3Cx9I@ jE1S*cqi(mm$N%6r6sU+qKCIR5;6} zkbg*1Q547RkCGx=+ZrJV#zL@SQK$qJV#CSW)Px1IG~1R7@Ce7&_JfOHMV?!rlp(uU_DLu%oT329{ zvd}^m>Zu}~l!lF)$vj*+!9ivWYi3=6E`B>+7|Su$tH+R~2!#ne6eorwU&M#{7<<90 zO$iMuFlR;n2z>v9nKwp!?XQQ|aSfBtZ^J)10wQ zP}rH=KSJQ4N-!Ms3A?4X%~8iSR-zylzlSXd_?|M%f3%_Vax4V#xlec^^VT&5JP8rX z6}RO@h&}Lqo`s_<751_e20DK|@e2`2FToK$y2KTlwyhFyPdYY*B{>w4$%B}fnn&9d zQ0xQp-T@b00q1)Ft+NxwMg`RMry#!}42Vk(RW1t-$ePmK0V@&mp4&IBO>%w~~-qNFem8*NKi5C3*h;eH{=}2kRqEdNlF-|c6B{jNg1xE|{xZ_qq=T zQ%h@FVGuo6)Fi$Fi7(KrG!JOdowP}dr3o$AodmltUGz6(S=wE9-Q^d!Dj~QG(v4`1 zSW!^uQoNPKh>sZK`_-AR7!stLUKs9tmpNz7oNul)o6T_lsaC79N~H=-r_;cAJoZsw zG#X{P-R@bd)jIL}{lD+mOZN$`uCAU*l60ieXoBfA$ol%a zjdtbzgG~&F!*3}MlgrwCKJTKXQn)M6&7NqrTGVPakTRFqY*vT_sZ{D?p-}iNMj%Pw zwzs#z9>}t+*zI=cbUIvIT!`D@1u7PcY@V{VwuX(34Md~SPXzr-z{|q`r_%|G#Ujoe zHk<7(ce~x$*BAren z91i<^K3~&60VIhd;ipAsXJ??0#l=Mkf`FZ!9prL31{oV0^INS}P68lOc~KNmE|*z% z3aQtBpjNLl6|^{;%_0;Ep|`h}mjF_!RFEc8NTpIibTbRfs0TwfHzM&2$Y@9=lZeG) z&}y|o34oX+9vmDnskEzQ)D2fC4d;9TR{u9tt5s}lY%nDnjYgCJ*4EZUVj{M;w^6Ir zU>-ByLh(sb-T3TX% z;l0-gz4rkEo5T2A6kwWv3Z>~P^z`(A=Xu_Q27N*&EA9(*UR2QC-Hncp4*ERQ zVKg^4LoS!2v9S>{nG9DH9PSxqcq2Syo#{@`e?0h~Aj$nC%2f96y`SFy1aCO-mg ul { list-style-type: none; float: left; @@ -270,7 +272,7 @@ // very specific selector se we don't mess with dropdowns and others > ul > li > a, > a { - padding: 30px 18px; + padding: ($m-navbar-height - $m-navbar-font)/2 18px; display: block; @include link-colors($m-navbar-font-color, $m-navbar-font-color-hover, $m-navbar-font-color); @include transition(background-color 0.2s ease-in); diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb index e514ccaf5..826d97b5b 100644 --- a/app/helpers/icons_helper.rb +++ b/app/helpers/icons_helper.rb @@ -216,7 +216,7 @@ def icon_is_member(options={}) end def icon_options(options={}) - icon_constructor nil, "fa fa-gears icon-awesome icon-mconf-options", options + image_tag image_path('icons/config.svg'), class: 'icon-mconf-options' end def icon_join_request(options={}) @@ -232,7 +232,7 @@ def icon_leave_space(options={}) end def icon_invitation(options={}) - icon_constructor nil, "fa fa-envelope-o icon-awesome icon-mconf-invitation", options + image_tag image_path('icons/conference-invite.svg'), class: 'icon-mconf-conference-invite' end def icon_list(options={}) @@ -277,10 +277,14 @@ def icon_add_user(options={}) end end - def icon_conference_play(options={}) + def icon_conference_play image_tag image_path('icons/conference-play.svg'), class: 'icon-mconf-conference-play' end + def icon_conference_history + image_tag image_path('icons/conference-history.svg'), class: 'icon-mconf-history' + end + private # Base method for most of the methods above diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 196412154..3d60532ef 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -39,7 +39,7 @@ = link_to invitation_bigbluebutton_room_path(room), class: "btn-navbar open-modal tooltipped", title: t('.conference_invite_tooltip') do = icon_invitation = link_to my_meetings_path, class: "btn-navbar tooltipped", title: t('.conference_history_tooltip') do - = icon_invitation + = icon_conference_history %li.navbar-chip.dropdown.last .dropdown-user.dropdown-toggle{ data: { toggle: 'dropdown' } } From 89e15615c0b62e134f350c4482916d779ca5a404 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 25 Oct 2017 17:12:59 -0200 Subject: [PATCH 14/75] Mark as active the login/register links in the navbar when selected --- app/assets/stylesheets/_mixins.scss | 4 +++- app/helpers/application_helper.rb | 18 ++++++++++++++++++ app/views/layouts/_navbar.html.haml | 4 ++-- app/views/registrations/new.html.haml | 1 + app/views/sessions/new.html.haml | 1 + 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/_mixins.scss b/app/assets/stylesheets/_mixins.scss index 21b5b3fc2..d3861be7d 100644 --- a/app/assets/stylesheets/_mixins.scss +++ b/app/assets/stylesheets/_mixins.scss @@ -237,6 +237,7 @@ @mixin navbar-lists { font-size: $m-navbar-font; + line-height: 1; > ul { list-style-type: none; @@ -265,7 +266,8 @@ } &.active a { - font-weight: bold; + /* font-weight: bold; */ + border-bottom: 4px solid $m-color-primary-hover; } } } diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ca0d427ea..26b2c9d1c 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -241,4 +241,22 @@ def sidenav_visible? # user_signed_in? false end + + # Stores the current tab in the sessions for spaces + def sessions_menu_at(tab) + @sessions_menu_tab = tab + end + + # Selects the tab if it is the current tab in the menu for sessions + def sessions_menu_select_if(tab, options={}) + old_class = options[:class] || '' + @sessions_menu_tab == tab ? + options.update({ :class => "#{old_class} active" }) : + options + end + + # Returns whether the selected menu is `tab` + def sessions_menu_is(tab) + @sessions_menu_tab == tab + end end diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 3d60532ef..8d44a67a8 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -56,9 +56,9 @@ - else - if current_site.local_auth_enabled? || current_site.ldap_enabled? - %li.last= link_to t('.login'), main_app.login_path + %li{ sessions_menu_select_if(:login) }= link_to t('.login'), main_app.login_path - if current_site.registration_enabled? - %li= link_to t('.register'), main_app.register_path + %li{ sessions_menu_select_if(:register) }= link_to t('.register'), main_app.register_path -# - if content_for?(:navbar_menu) -# #navbar-menu diff --git a/app/views/registrations/new.html.haml b/app/views/registrations/new.html.haml index 7129ce0ba..f710f060e 100644 --- a/app/views/registrations/new.html.haml +++ b/app/views/registrations/new.html.haml @@ -1,4 +1,5 @@ = page_title t('.title') +- sessions_menu_at :register #headline %h1= t('.headline') diff --git a/app/views/sessions/new.html.haml b/app/views/sessions/new.html.haml index 543521066..bc5847334 100644 --- a/app/views/sessions/new.html.haml +++ b/app/views/sessions/new.html.haml @@ -1,4 +1,5 @@ = page_title t('.title') +- sessions_menu_at :login #headline %h1= t('.headline') From 79274e0e6c49fd2883c37b151b2b0b3890efdac3 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Thu, 26 Oct 2017 18:18:25 -0200 Subject: [PATCH 15/75] Continue the design for the navbar and the list of meetings/recs --- app/assets/stylesheets/_definitions.scss | 10 +- app/assets/stylesheets/_mixins.scss | 13 +- .../stylesheets/app/application/base.scss | 105 +++++----- .../app/application/bootstrap-custom.scss | 50 ----- .../app/application/font-awesome.scss | 8 + .../app/application/lists-and-tables.scss | 162 +++++++++++++++ .../stylesheets/app/application/lists.scss | 78 -------- .../app/application/typography.scss | 1 + app/assets/stylesheets/app/my/meetings.scss | 9 +- .../app/shared/_recording_list.scss | 5 + app/assets/stylesheets/application.css | 2 +- ...tom_bigbluebutton_playback_types_helper.rb | 4 +- app/helpers/icons_helper.rb | 12 +- app/views/layouts/_navbar.html.haml | 16 +- app/views/my/home.html.haml | 4 +- app/views/my/meetings.html.haml | 12 +- app/views/shared/_recording_list.html.haml | 184 ++++++++++-------- .../shared/_recording_playback.html.haml | 14 +- config/initializers/bigbluebutton_rails.rb | 17 +- config/locales/en/mconf.yml | 8 +- config/locales/pt-br/mconf.yml | 8 +- 21 files changed, 414 insertions(+), 308 deletions(-) create mode 100644 app/assets/stylesheets/app/application/lists-and-tables.scss delete mode 100644 app/assets/stylesheets/app/application/lists.scss diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index 10b85ca4a..7df34283b 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -41,6 +41,8 @@ $m-logo-initials-bg: red blue yellow green orange purple magenta $m-color-primar $m-logo-bg: lighten($m-color-primary, 15); $m-logo-border: $m-color-primary; $m-site-horizontal-padding: 120px; +$m-active-item-border-color: $m-color-primary; +$m-active-item-border: 4px solid $m-active-item-border-color; // fonts $m-font-normal: 14px; //0.85rem; /* 14px, base size for all fonts */ @@ -48,7 +50,7 @@ $m-font-mini: $m-font-normal * 0.8; $m-font-small: $m-font-normal * 0.9; $m-font-medium: $m-font-normal * 1.2; $m-font-big: $m-font-normal * 1.4; -$m-font-bigger: $m-font-normal * 1.6; +$m-font-bigger: $m-font-normal * 1.8; $m-font-double: $m-font-normal * 2; /* multipliers over the standard font size */ $m-font-h1-multiplier: 2.71; @@ -84,7 +86,7 @@ $m-border-color-dark: #ccc; $m-border-color-highlight: $m-bright-blue; $m-border-radius-base: 2px; $m-border-radius-small: 1px; -$m-border-radius-large: 3px; +$m-border-radius-large: 4px; // inputs $m-input-bg: #fff; @@ -152,7 +154,7 @@ $m-navbar-bg-color-dark: #fff; //$m-navbar-bg-color-light; //darken($m-green-mco $m-navbar-border-width: 0px; $m-navbar-border-color: darken($m-navbar-bg-color-dark, 5); $m-navbar-internal-border-color: $m-border-color-normal; //lighten($m-navbar-bg-color-dark, 3); -$m-navbar-font: $m-font-big; +$m-navbar-font: $m-font-bigger; $m-navbar-font-color: $m-font-color; $m-navbar-font-color-hover: $m-link-color-hover; $m-navbar-font-highlight: #fff; //lighten($m-navbar-bg-color-dark, 8); @@ -167,6 +169,8 @@ $m-navbar-btn-size: 64px; $m-navbar-btn-bg: $m-color-primary; $m-navbar-btn-bg-hover: $m-color-primary-hover; $m-navbar-btn-color: #fff; +$m-navbar-conf-panel-bg: $m-site-bg-color; +$m-navbar-box-shadow: 5px 0 9px 0px rgba(0, 0, 0, 0.15); // for a light/white navbar: /* $m-navbar-bg-color-dark: white; */ diff --git a/app/assets/stylesheets/_mixins.scss b/app/assets/stylesheets/_mixins.scss index d3861be7d..e5dace661 100644 --- a/app/assets/stylesheets/_mixins.scss +++ b/app/assets/stylesheets/_mixins.scss @@ -255,7 +255,6 @@ .label { margin-left: 3px; } &.notification { - //background: lighten($m-navbar-bg-color-light, 5); margin: 0 10px 0 0; .badge { @@ -266,15 +265,21 @@ } &.active a { - /* font-weight: bold; */ - border-bottom: 4px solid $m-color-primary-hover; + font-weight: $m-font-weight-bold; + border-bottom: $m-active-item-border; + color: $m-active-item-border-color; + + &:hover { + color: $m-active-item-border-color; + } } } } // very specific selector se we don't mess with dropdowns and others > ul > li > a, > a { - padding: ($m-navbar-height - $m-navbar-font)/2 18px; + padding: (($m-navbar-height - $m-navbar-font)/2 - 2) 0; + margin: 0 18px; display: block; @include link-colors($m-navbar-font-color, $m-navbar-font-color-hover, $m-navbar-font-color); @include transition(background-color 0.2s ease-in); diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index 9126557fe..a5818f33d 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -357,18 +357,24 @@ form { text-align: center; @include mconf-clearfix; padding: 0 $m-site-horizontal-padding; + box-shadow: $m-navbar-box-shadow; + + a:hover, a:focus { text-decoration: none; } + + .navbar-conf-panel { + background: $m-navbar-conf-panel-bg; + padding: ($m-navbar-height - $m-navbar-btn-size)/2 18px; + margin: 0 36px; + } .btn-navbar { $imgsize: 42px; height: $m-navbar-btn-size; width: $m-navbar-btn-size; - margin: 0 18px; display: inline-block; - font-size: $m-font-big; - @include border-radius($m-navbar-btn-size/2); + @include border-radius($m-navbar-btn-size / 2); background: $m-navbar-btn-bg; - margin: ($m-navbar-height - $m-navbar-btn-size)/2 18px; padding: ($m-navbar-btn-size - $imgsize) / 2; float: left; @@ -380,10 +386,6 @@ form { &:hover { color: $m-navbar-btn-color; } } - &:last-child { - margin-right: 36px; - } - img { width: $imgsize; height: $imgsize; @@ -395,64 +397,61 @@ form { } } - a:hover { text-decoration: none; } -} - -#navbar-menu { - @include navbar-lists; - float: right; -} + .navbar-user-chip { + margin: ($m-navbar-height - $m-navbar-btn-size)/2 0; -#navbar-right { - @include navbar-lists; - float: right; + .navbar-user-toggle { + /* font-size: $m-font-medium; */ + @include logo-container; - .dropdown-user { - font-size: $m-font-medium; - @include logo-container; + &:hover, &[aria-expanded=true] { + background: $m-navbar-font-highlight; + } - &:hover, &[aria-expanded=true] { - background: $m-navbar-font-highlight; - } + img, .logo-user { + height: $m-navbar-btn-size; + width: $m-navbar-btn-size; + float: none; + margin: 0 16px 0 0; + display: inline-block; + border: 1px solid $m-logo-border; + font-size: $m-font-big; - img, .logo-user { - height: $m-navbar-btn-size; - width: $m-navbar-btn-size; - float: none; - margin: 0 16px 0 0; - display: inline-block; - border: 1px solid $m-logo-border; - font-size: $m-font-big; + &.logo-initials { + padding: ($m-navbar-btn-size - $m-font-big)/2 0; + } + } - &.logo-initials { - padding: ($m-navbar-btn-size - $m-font-big)/2 0; + .username { + display: inline-block; + font-size: $m-font-big; + vertical-align: middle; } } - .username { - display: inline-block; - font-size: $m-font-big; - vertical-align: middle; + .navbar-user-menu { + margin: 10px 0 0 0; + @include border-radius(0); + @include box-shadow(none); + + .observation { + padding: 3px 14px; + font-size: $m-font-small; + color: $m-font-color-gray; + } } } - .dropdown-menu { - margin: 10px 0 0 0; - @include border-radius(0); - @include box-shadow(none); +} - .observation { - padding: 3px 14px; - font-size: $m-font-small; - color: $m-font-color-gray; - } - } +#navbar-menu { + @include navbar-lists; + float: right; +} - .navbar-chip { - padding-left: 36px; - border-left: 1px solid #000; - margin: ($m-navbar-height - $m-navbar-btn-size)/2 0; - } +#navbar-right { + @include navbar-lists; + float: right; } #navbar-logo { diff --git a/app/assets/stylesheets/app/application/bootstrap-custom.scss b/app/assets/stylesheets/app/application/bootstrap-custom.scss index 2a4413633..79933fe50 100644 --- a/app/assets/stylesheets/app/application/bootstrap-custom.scss +++ b/app/assets/stylesheets/app/application/bootstrap-custom.scss @@ -248,56 +248,6 @@ label { @include link-colors($m-font-color, $m-font-color, $m-font-color, $m-font-color); } -// Change the colors for table borders and bgs, make it more like our lists -.table > thead > tr > th { - border-bottom-color: $m-border-color-medium; -} -.table > thead > tr > th, .table > thead > tr > td, .table > tbody > tr > th, .table > tbody > tr > td, .table > tfoot > tr > th, .table > tfoot > tr > td { - border-top-color: $m-border-color-medium; -} -.table-hover > tbody > tr:hover { - /* background-color: #f6f6f6; */ - background: $m-site-content-bg-color; -} -table, .table { - thead th { - color: #4d4d4d; - font-size: $m-font-small; - text-transform: uppercase; - opacity: 0.6; - } - - tbody { - td:first-child { - border-top-left-radius: 14px; - border-bottom-left-radius: 14px; - /* border-left: 1px solid red; */ - } - - td:last-child { - border-top-right-radius: 14px; - border-bottom-right-radius: 14px; - /* border-right: 1px solid red; */ - } - - tr { - background: $m-site-content-bg-color; - border: solid 8px $m-site-bg-color; - - &.fadeout { - opacity: 0.6; - } - - td { - /* border-top: 1px solid red; */ - /* border-bottom: 1px solid red; */ - padding: 12px; - color: #848484; - } - } - } -} - // Make labels a bit bigger and add a new type of label .label { font-size: 85%; diff --git a/app/assets/stylesheets/app/application/font-awesome.scss b/app/assets/stylesheets/app/application/font-awesome.scss index 75205e6ea..e09dc4b4a 100644 --- a/app/assets/stylesheets/app/application/font-awesome.scss +++ b/app/assets/stylesheets/app/application/font-awesome.scss @@ -258,6 +258,14 @@ a:not(.btn) .icon-awesome { font-size: 11px; } + &.icon-mconf-published { + color: $m-green; + } + + &.icon-mconf-unpublished { + color: $m-red; + } + &.icon-mconf-event {} &.icon-mconf-logout {} &.icon-mconf-logout {} diff --git a/app/assets/stylesheets/app/application/lists-and-tables.scss b/app/assets/stylesheets/app/application/lists-and-tables.scss new file mode 100644 index 000000000..ec72ddcb6 --- /dev/null +++ b/app/assets/stylesheets/app/application/lists-and-tables.scss @@ -0,0 +1,162 @@ +@import "compass/css3"; +@import "definitions"; + +.list-container { + padding: 0; + + .list-item-header { + border-top-width: 1px; + background: $m-light-gray; + padding: 3px 0; + text-align: center; + border-top: 1px solid $m-border-color-medium; + } + + .list-item { + border-top: 1px solid $m-border-color-medium; + clear: both; + @include mconf-clearfix; + padding: 12px 4px 12px 4px; + + &:first-child { + border-top-width: 2px; + margin-top: 0; + } + + &:hover, &.active { + background-color: #f6f6f6; + } + + &.list-item-disabled { + color: #888; + background: $m-very-light-gray; + opacity: 0.8; + + .logo-in-thread { + opacity: 0.7; + } + + .label { + opacity: 0.5; + } + } + + .list-text-title { + font-size: $m-font-medium; + font-weight: bold; + margin-bottom: 4px; + @include mconf-clearfix; + + > a { + float: left; + } + } + + .list-text-subtitle { + margin-bottom: 4px; + } + + .list-text-description { + color: $m-font-light; + } + + .list-actions { + font-size: $m-font-medium; + text-align: right; + + /* because they are always just icons */ + a:hover, a:focus { + text-decoration: none; + } + } + } + + .list-item-logo { + text-align: center; + @include logo-container; + } +} + +// Change the colors for table borders and bgs, make it more like our lists +.table-wrapper { + background: $m-site-content-bg-color; + @include border-radius($m-border-radius-large); + padding: 40px 30px 30px 30px; +} + +table, .table { + margin: 0; + font-size: $m-font-medium; + font-weight: $m-font-weight-light; + + thead:first-child > tr:first-child > th { /* very specific to override bootstrap */ + font-size: $m-font-small; + font-weight: $m-font-weight-normal; + } + + tbody { + tr { + background: $m-site-content-bg-color; + padding: 12px 0; + border-top: 12px solid $m-site-content-bg-color; + + /* &.fadeout { */ + /* opacity: 0.6; */ + /* } */ + + td { + background: $m-site-bg-color; + padding: 12px; + } + + &:last-child { + td { + /* border-bottom: 30px solid $m-site-content-bg-color; */ + } + } + } + } + + td:first-child, th:first-child { + border-top-left-radius: $m-border-radius-large; + border-bottom-left-radius: $m-border-radius-large; + /* border-left: 30px solid $m-site-content-bg-color; */ + } + + td:last-child, th:last-child { + border-top-right-radius: $m-border-radius-large; + border-bottom-right-radius: $m-border-radius-large; + /* border-right: 30px solid $m-site-content-bg-color; */ + } +} + +.table-tabs { + font-size: $m-font-medium; + margin: 0; + padding: 0; + @include mconf-clearfix; + margin-bottom: 20px; + + li { + float: left; + + a { + padding: 20px; + @include link-colors($m-font-color, $m-link-color-hover, $m-link-color-hover, $m-font-color); + + &.active { + font-weight: $m-font-weight-bold; + border-bottom: $m-active-item-border; + color: $m-active-item-border-color; + + &:hover { + color: $m-active-item-border-color; + } + } + + &:hover, &:focus { + text-decoration: none; + } + } + } +} diff --git a/app/assets/stylesheets/app/application/lists.scss b/app/assets/stylesheets/app/application/lists.scss deleted file mode 100644 index 6572e9723..000000000 --- a/app/assets/stylesheets/app/application/lists.scss +++ /dev/null @@ -1,78 +0,0 @@ -@import "compass/css3"; -@import "definitions"; - -.list-container { - padding: 0; - - .list-item-header { - border-top-width: 1px; - background: $m-light-gray; - padding: 3px 0; - text-align: center; - border-top: 1px solid $m-border-color-medium; - } - - .list-item { - border-top: 1px solid $m-border-color-medium; - clear: both; - @include mconf-clearfix; - padding: 12px 4px 12px 4px; - - &:first-child { - border-top-width: 2px; - margin-top: 0; - } - - &:hover, &.active { - background-color: #f6f6f6; - } - - &.list-item-disabled { - color: #888; - background: $m-very-light-gray; - opacity: 0.8; - - .logo-in-thread { - opacity: 0.7; - } - - .label { - opacity: 0.5; - } - } - - .list-text-title { - font-size: $m-font-medium; - font-weight: bold; - margin-bottom: 4px; - @include mconf-clearfix; - - > a { - float: left; - } - } - - .list-text-subtitle { - margin-bottom: 4px; - } - - .list-text-description { - color: $m-font-light; - } - - .list-actions { - font-size: $m-font-medium; - text-align: right; - - /* because they are always just icons */ - a:hover, a:focus { - text-decoration: none; - } - } - } - - .list-item-logo { - text-align: center; - @include logo-container; - } -} diff --git a/app/assets/stylesheets/app/application/typography.scss b/app/assets/stylesheets/app/application/typography.scss index 763e5b058..f92bf8731 100644 --- a/app/assets/stylesheets/app/application/typography.scss +++ b/app/assets/stylesheets/app/application/typography.scss @@ -40,6 +40,7 @@ h1, .h1 { font-size: $m-font-normal * $m-font-h1-multiplier; margin: 1em 0 0.5em; line-height: 1.1; + font-weight: $m-font-weight-bold; } h2, .h2 { diff --git a/app/assets/stylesheets/app/my/meetings.scss b/app/assets/stylesheets/app/my/meetings.scss index 36457a35d..e230981b7 100644 --- a/app/assets/stylesheets/app/my/meetings.scss +++ b/app/assets/stylesheets/app/my/meetings.scss @@ -6,6 +6,10 @@ body.my.meetings { #my-meetings { + h1 { + margin-bottom: 90px; + } + &.empty { h2 { font-weight: $m-font-weight-light; @@ -18,9 +22,4 @@ body.my.meetings { } } - .recordedonly-buttons { - float: right; - margin-bottom: 10px; - } - } diff --git a/app/assets/stylesheets/app/shared/_recording_list.scss b/app/assets/stylesheets/app/shared/_recording_list.scss index d84a49be2..18e68b215 100644 --- a/app/assets/stylesheets/app/shared/_recording_list.scss +++ b/app/assets/stylesheets/app/shared/_recording_list.scss @@ -12,4 +12,9 @@ .rec-not-recorded-col { color: $m-font-color-gray; } + + .recording-playback-links li { + float: left; + margin: 0 4px; + } } diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index f2738125d..053ea8c7c 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -26,7 +26,7 @@ *= require ./app/application/resource_filter *= require ./app/application/logo_images *= require ./app/application/footer-pusher - *= require ./app/application/lists + *= require ./app/application/lists-and-tables *= require ./app/application/select2 *= require ./app/application/copy-clipboard *= require ./app/application/page-menu-js diff --git a/app/helpers/custom_bigbluebutton_playback_types_helper.rb b/app/helpers/custom_bigbluebutton_playback_types_helper.rb index 71eec0ddb..de7aba5cb 100644 --- a/app/helpers/custom_bigbluebutton_playback_types_helper.rb +++ b/app/helpers/custom_bigbluebutton_playback_types_helper.rb @@ -21,7 +21,9 @@ def link_to_playback(recording, playback, options={}) link_params.merge!(name: name.parameterize('_')) end - link_to playback.name, play_bigbluebutton_recording_path(recording, link_params), + playback_icon = image_tag image_path('icons/conference-play.svg'), class: 'icon-mconf-conference-play' + + link_to playback_icon, play_bigbluebutton_recording_path(recording, link_params), options_for_tooltip(t("bigbluebutton_rails.playback_types.#{playback.identifier}.tip"), options) end diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb index 826d97b5b..1670786a9 100644 --- a/app/helpers/icons_helper.rb +++ b/app/helpers/icons_helper.rb @@ -281,8 +281,16 @@ def icon_conference_play image_tag image_path('icons/conference-play.svg'), class: 'icon-mconf-conference-play' end - def icon_conference_history - image_tag image_path('icons/conference-history.svg'), class: 'icon-mconf-history' + def icon_published(options={}) + icon_constructor nil, "fa fa-circle-o icon-awesome icon-mconf-published", options + end + + def icon_unpublished(options={}) + icon_constructor nil, "fa fa-circle-o icon-awesome icon-mconf-unpublished", options + end + + def icon_options_dots(options={}) + icon_constructor nil, "fa fa-ellipsis-v icon-awesome icon-mconf-options-dots", options end private diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 8d44a67a8..0082115bb 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -29,7 +29,7 @@ -# TODO: link, context based link and localization - room = current_user.bigbluebutton_room - %li.navbar-conf-btn + %li.navbar-conf-panel = link_to join_bigbluebutton_room_path(room), class: "btn-navbar tooltipped webconf-join-link", title: t('.conference_play_tooltip') do = icon_conference_play - if can?(:user_edit, room) @@ -38,14 +38,12 @@ - if can?(:create_meeting, room) = link_to invitation_bigbluebutton_room_path(room), class: "btn-navbar open-modal tooltipped", title: t('.conference_invite_tooltip') do = icon_invitation - = link_to my_meetings_path, class: "btn-navbar tooltipped", title: t('.conference_history_tooltip') do - = icon_conference_history - %li.navbar-chip.dropdown.last - .dropdown-user.dropdown-toggle{ data: { toggle: 'dropdown' } } + %li.navbar-user-chip.dropdown.last + .navbar-user-toggle.dropdown-toggle{ data: { toggle: 'dropdown' } } = logo_image(current_user, size: '128', class: "logo-user") %span.username= current_user.profile.first_name - %ul.dropdown-menu.dropdown-menu-right + %ul.navbar-user-menu.dropdown-menu.dropdown-menu-right %li .observation= current_user.name %li.divider{ role: 'separator' } @@ -60,6 +58,6 @@ - if current_site.registration_enabled? %li{ sessions_menu_select_if(:register) }= link_to t('.register'), main_app.register_path --# - if content_for?(:navbar_menu) --# #navbar-menu --# = yield :navbar_menu +- if content_for?(:navbar_menu) + #navbar-menu + = yield :navbar_menu diff --git a/app/views/my/home.html.haml b/app/views/my/home.html.haml index f692a56ff..ea3722fed 100644 --- a/app/views/my/home.html.haml +++ b/app/views/my/home.html.haml @@ -1,11 +1,9 @@ - page_title t('.title') -- home_navbar_menu_at(:home) # TODO: home_navbar_menu +- home_navbar_menu_at(:home) = content_for :navbar_menu do = render "my/navbar_menu", user_spaces: @user_spaces --# TODO: #1087 make it look good for a new user (no recs, no meetings yet) - - cls = @meetings.count <= 0 ? 'empty' : '' #user-meetings-recordings{ class: cls } - if @meetings.count > 0 diff --git a/app/views/my/meetings.html.haml b/app/views/my/meetings.html.haml index 692019639..76cd31a36 100644 --- a/app/views/my/meetings.html.haml +++ b/app/views/my/meetings.html.haml @@ -7,15 +7,13 @@ - cls = @meetings.count <= 0 ? 'empty' : '' #my-meetings{ class: cls } - if @meetings.count > 0 - %h3= t('.subtitle') + %h1= t('.subtitle') - .btn-group.recordedonly-buttons - = link_to my_meetings_path, class: "btn btn-default btn-sm #{'active' if params[:recordedonly].nil? }", type: "button" do - = t(".recordedonly_true") - = link_to my_meetings_path(recordedonly: 'false'), class: "btn btn-default btn-sm #{'active' if params[:recordedonly] == 'false' }", type: "button" do - = t(".recordedonly_false") + %ul.table-tabs + %li= link_to t(".recordedonly_false"), my_meetings_path(recordedonly: 'false'), class: "#{'active' if params[:recordedonly] == 'false' }" + %li= link_to t(".recordedonly_true"), my_meetings_path, class: "#{'active' if params[:recordedonly].nil? }" - #my-meetings-list-container + #my-meetings-list = render partial: 'shared/recording_list', locals: { meetings: @meetings, show_authors: false, redir_to: my_meetings_path } - else diff --git a/app/views/shared/_recording_list.html.haml b/app/views/shared/_recording_list.html.haml index 6c80cbdfa..88d12a47e 100644 --- a/app/views/shared/_recording_list.html.haml +++ b/app/views/shared/_recording_list.html.haml @@ -8,94 +8,118 @@ - show_authors = set_default(local_assigns, "show_authors", true) - redir_to = set_default(local_assigns, "redir_to", "") -%table.recording-list.table.table-hover - %thead - %tr - - if show_authors - %th.col-sm-2.meeting-date-col= t(".started_at") - %th.col-sm-2.rec-author-col= t(".created_by") - %th.col-sm-4.rec-description-col= t(".description") - %th.col-sm-3.rec-playback-col= t(".playback_links") - %th.col-sm-1.rec-playback-col - - total_columns = 5 - - else - %th.col-sm-2.meeting-date-col= t(".started_at") - %th.col-sm-5.rec-description-col= t(".description") - %th.col-sm-4.rec-playback-col= t(".playback_links") - %th.col-sm-1.rec-playback-col - - total_columns = 4 - %tbody - - if meetings.count <= 0 +.table-wrapper + %table.recording-list.table.table-hover + %thead %tr - %td{ colspan: total_columns }= t('.no_meetings') - - else - %tr.table-observation-row - %td{ colspan: total_columns }= t('.delay_warning') - - meetings.each do |meeting| - - recording = meeting.recording - - - cls = recording.present? ? '' : 'fadeout' - %tr{ class: cls } + - if show_authors + %th.col-sm-2.meeting-date-col= t(".started_at") + %th.col-sm-1.rec-author-col= t(".created_by") + %th.col-sm-4.rec-description-col= t(".description") + %th.col-sm-2.rec-duration-col= t(".duration") + %th.col-sm-2.rec-status-col= t(".status") + %th.col-sm-1.rec-playback-col= t(".playback_links") + - total_columns = 6 + - else + %th.col-sm-2.meeting-date-col= t(".started_at") + %th.col-sm-5.rec-description-col= t(".description") + %th.col-sm-2.rec-duration-col= t(".duration") + %th.col-sm-1.rec-status-col= t(".status") + %th.col-sm-2.rec-playback-col= t(".playback_links") + - total_columns = 5 + %tbody + - if meetings.count <= 0 + %tr + %td{ colspan: total_columns }= t('.no_meetings') + - else + -# %tr.table-observation-row + -# %td{ colspan: total_columns }= t('.delay_warning') + - meetings.each do |meeting| + - recording = meeting.recording - %td.meeting-date-col - - m_create = format_date(meeting.create_time, :long) - - format = this_year?(meeting.create_time) ? :short : :average - - if recording - - rec_create = format_date(recording.start_time, :long) - - rec_end = format_date(recording.end_time, :long) - .meeting-date{ :title => t('.started_at_desc_with_rec', meeting_start: m_create, rec_start: rec_create, rec_end: rec_end) } - = format_date(meeting.create_time, format) - - else - .meeting-date{ :title => t('.started_at_desc', meeting_start: m_create) } - = format_date(meeting.create_time, format) + - cls = recording.present? ? '' : 'fadeout' + %tr{ class: cls } - - if show_authors - %td.rec-author-col - - unless meeting.creator_id.nil? - - user = User.find_by(id: meeting.creator_id) - .recording-author - - unless user.nil? - = link_to user.full_name, user_path(user) - - else - %span= t('_other.user.removed') + %td.meeting-date-col + - m_create = format_date(meeting.create_time, :long) + - if recording + - rec_create = format_date(recording.start_time, :long) + - rec_end = format_date(recording.end_time, :long) + .meeting-date{ :title => t('.started_at_desc_with_rec', meeting_start: m_create, rec_start: rec_create, rec_end: rec_end) } + = format_date(meeting.create_time, :numeric) + - else + .meeting-date{ :title => t('.started_at_desc', meeting_start: m_create) } + = format_date(meeting.create_time, :numeric) - - if recording.present? - -# To get the creator from the recording instead of meeting: - -# - action = recording.room.owner_type == "User" ? :user_show : :space_show - -# - if can?(action, recording) - -# - metaUser = recording.metadata.all.select{ |m| m.name == BigbluebuttonRails.configuration.metadata_user_id.to_s }.first + - if show_authors + %td.rec-author-col + - unless meeting.creator_id.nil? + - user = User.find_by(id: meeting.creator_id) + .recording-author + - unless user.nil? + = link_to user.full_name, user_path(user) + - else + %span= t('_other.user.removed') - %td.rec-description-col - - if recording.description.blank? - %span= t('.no_description') - - else - %span= recording.description + - if recording.present? + -# To get the creator from the recording instead of meeting: + -# - action = recording.room.owner_type == "User" ? :user_show : :space_show + -# - if can?(action, recording) + -# - metaUser = recording.metadata.all.select{ |m| m.name == BigbluebuttonRails.configuration.metadata_user_id.to_s }.first + %td.rec-description-col + - if recording.description.blank? + %span= t('.no_description') + - else + %span= recording.description - %td.rec-playback-col - = render partial: 'shared/recording_playback', locals: { recording: recording } + %td.rec-duration-col + %span= distance_of_time_in_words_to_now(Time.now + recording.duration, include_seconds: false) - %td.rec-actions-col - -# Edit description button - - if recording.room.owner_type == "User" - - if can?(:user_edit, recording) - = link_to icon_edit, edit_my_recording_path(recording), class: "tooltipped open-modal", title: t('.edit') - - else - - if can?(:space_edit, recording) - = link_to icon_edit, space_edit_recording_path(recording.room.owner, recording), class: "tooltipped open-modal", title: t('.edit') + %td.rec-status-col + - if recording.available? + .dropdown + .dropdown-toggle{ data: { toggle: "dropdown" } } + - if recording.published? + = icon_published + = t('.published') + - else + = icon_unpublished + = t('.unpublished') + %ul.dropdown-menu + - if recording.published? + %li + = link_to unpublish_bigbluebutton_recording_path(recording, redir_url: redir_to), data: { confirm: t('are_you_sure') }, method: :post do + = icon_unpublish(alt: t('.unpublish')) + = t('.unpublish') + - else + %li + = link_to publish_bigbluebutton_recording_path(recording, redir_url: redir_to), data: { confirm: t('are_you_sure') }, method: :post do + = icon_publish(alt: t('.publish')) + = t('.publish') - - if recording.available? - - if recording.published? - = link_to unpublish_bigbluebutton_recording_path(recording, redir_url: redir_to), :data => { :confirm => t('are_you_sure') }, :method => :post do - = icon_unpublish(:alt => t('.unpublish'), :title => t('.unpublish')) - - else - = link_to publish_bigbluebutton_recording_path(recording, redir_url: redir_to), :data => { :confirm => t('are_you_sure') }, :method => :post do - = icon_publish(:alt => t('.publish'), :title => t('.publish')) + %td.rec-playback-col + = render partial: 'shared/recording_playback', locals: { recording: recording } - = link_to bigbluebutton_recording_path(recording, redir_url: redir_to), :data => { :confirm => t('.destroy_confirm') }, :method => :delete do - = icon_delete(:alt => t('.delete'), :title => t('.delete')) + .dropdown + .dropdown-toggle{ data: { toggle: "dropdown" } }= icon_options_dots + %ul.dropdown-menu + %li + - if recording.room.owner_type == "User" + - if can?(:user_edit, recording) + = link_to edit_my_recording_path(recording), class: "tooltipped open-modal" do + = icon_edit + = t('.edit') + - else + - if can?(:space_edit, recording) + = link_to space_edit_recording_path(recording.room.owner, recording), class: "tooltipped open-modal" do + = icon_edit + = t('.edit') + %li + = link_to bigbluebutton_recording_path(recording, redir_url: redir_to), data: { confirm: t('.destroy_confirm') }, method: :delete do + = icon_delete(alt: t('.delete')) + = t('.delete') - - else - - if show_authors - %td.rec-not-recorded-col{ :colspan => "4" }= t('.not_recorded') - else - %td.rec-not-recorded-col{ :colspan => "3" }= t('.not_recorded') + %td.rec-description-col= t('.not_recorded') + - span = show_authors ? 3 : 2 + %td.rec-duration-col{ :colspan => "3" }= meeting.duration diff --git a/app/views/shared/_recording_playback.html.haml b/app/views/shared/_recording_playback.html.haml index 92d0a23e1..d3adb7518 100644 --- a/app/views/shared/_recording_playback.html.haml +++ b/app/views/shared/_recording_playback.html.haml @@ -7,21 +7,21 @@ - unless recording.available %ul.recording-playback-links %li - %span.playback-unavailable= t('.unavailable') - = icon_help(t('.unavailable_tip')) + %span.thread-playback-processing= '...' + = icon_help(t('.processing_tip')) + -# %span.playback-unavailable= t('.unavailable') + -# = icon_help(t('.unavailable_tip')) - else - if recording.playback_formats.size > 0 %ul.recording-playback-links - - show_duration = true - recording.playback_formats.ordered.each do |playback| - if playback.visible? || show_invisible %li = link_to_playback(recording, playback) - - if show_duration - %span.small-date= "(#{t('.duration')}: #{distance_of_time(playback.length_in_secs)})" - - show_duration = false - else %ul.recording-playback-links %li - %span.thread-playback-processing= t('.processing_dots') + %span.thread-playback-processing= '...' = icon_help(t('.processing_tip')) + -# %span.thread-playback-processing= t('.processing_dots') + -# = icon_help(t('.processing_tip')) diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index 3c1b89666..dd0942620 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -100,10 +100,17 @@ def short_path scope :with_recording, -> { joins("RIGHT JOIN bigbluebutton_recordings ON bigbluebutton_meetings.id = bigbluebutton_recordings.meeting_id") } + + def duration + if self.finish_time.present? + self.finish_time - self.create_time + else + nil + end + end end BigbluebuttonRecording.class_eval do - # Search recordings based on a list of words scope :search_by_terms, -> (words) { query = joins(:room).includes(:room) @@ -149,5 +156,13 @@ def short_path scope :no_playback, -> { where.not(id: BigbluebuttonPlaybackFormat.select(:recording_id).distinct) } + + def duration + if self.end_time.present? + self.end_time - self.start_time + else + nil + end + end end end diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 7807fdb8d..fa319ddf3 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -1152,7 +1152,7 @@ en: no_meetings_headline: "There are no recordings or conferences to show yet" recordedonly_false: "All meetings" recordedonly_true: "Recorded only" - subtitle: "Past meetings and recordings" + subtitle: "History of web conferences and recordings" title: "Meetings and recordings" update_meetings: error: "Error updating recordings, plase try again later" @@ -1163,7 +1163,7 @@ en: account: "Account" activity: "Activity dashboard" home: "Home" - meetings: "Meetings and recordings" + meetings: "History" profile: "Profile" spaces: "My spaces" webconf_room: "My web conference room" @@ -1363,6 +1363,7 @@ en: delete: "Remove recording" destroy_confirm: "Are you sure you want to permanently remove this recording?" description: "Description" + duration: "Duration" edit: "Edit this recording" manage: "Manage" no_description: "" @@ -1373,9 +1374,12 @@ en: started_at_desc: "This meeting started at %{meeting_start}" started_at_desc_with_rec: "This meeting started at %{meeting_start} and generated a recording that was processed from %{rec_start} to %{rec_end}" publish: Publish + published: Visible + status: "Status" unpublish: Unpublish unpublish_confirm: "Are you sure you want to remove this recording?" unpublish_unavailable: "This action is not possible because the recording is currently unavailable. Contact an administrator if you wish to remove it from your list." + unpublished: "Not visible" recording_playback: duration: "duration" playback: "Playback links" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index 15db99cde..5512d975e 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -1158,7 +1158,7 @@ pt-br: no_meetings_headline: "Ainda não existem conferências ou gravações para exibir" recordedonly_false: "Todas reuniões" recordedonly_true: "Apenas gravadas" - subtitle: "Reuniões e gravações passadas" + subtitle: "Histórico de webconferências e gravações" title: "Reuniões e gravações" update_meetings: error: "Erro atualizando gravações, tente novamente mais tarde" @@ -1169,7 +1169,7 @@ pt-br: account: "Conta" activity: "Atividades recentes" home: "Início" - meetings: "Reuniões e gravações" + meetings: "Histórico" profile: "Perfil" webconf_room: "Minha sala de webconferência" spaces: @@ -1391,6 +1391,7 @@ pt-br: delete: "Remover gravação" destroy_confirm: "Você tem certeza que deseja remover esta gravação permanentemente?" description: "Descrição" + duration: "Duração" edit: "Editar esta gravação" manage: "Gerenciar" no_description: "" @@ -1401,9 +1402,12 @@ pt-br: started_at_desc: "Esta reunião aconteceu em %{meeting_start}" started_at_desc_with_rec: "Esta reunião aconteceu em %{meeting_start} e gerou uma gravação que foi processada entre %{rec_start} e %{rec_end}" publish: Publicar + published: "Visível" + status: "Status" unpublish: Ocultar unpublish_confirm: "Você tem certeza que deseja ocultar esta gravação?" unpublish_unavailable: "Esta ação está desabilitada pois a gravação não está disponível. Entre em contato com um administrador se você deseja remover esta gravação da sua lista." + unpublished: "Não visível" recording_playback: duration: "duração" playback: "Links para reprodução" From ccf0a6a3416e136ce8be0fe4be36e989f632ad0a Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 27 Oct 2017 18:12:40 -0200 Subject: [PATCH 16/75] Small improvements in the design of the list of recordings --- app/assets/stylesheets/_definitions.scss | 2 +- app/assets/stylesheets/app/application/font-awesome.scss | 4 ++++ app/helpers/icons_helper.rb | 5 +++-- app/views/shared/_recording_list.html.haml | 4 ++-- config/locales/en/mconf.yml | 6 +++--- config/locales/pt-br/mconf.yml | 4 ++-- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index 7df34283b..ef6937daa 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -162,7 +162,7 @@ $m-navbar-font-family: $m-font-family-h; $m-navbar-link-color: lighten($m-link-color, 15); $m-navbar-link-color-hover: lighten($m-navbar-link-color, 8); $m-navbar-link-color-active: $m-navbar-link-color; -$m-navbar-height: 120px; +$m-navbar-height: 100px; $m-navbar-btn-size: 64px; /* $m-navbar-height: 90px; */ /* $m-navbar-btn-size: 46px; */ diff --git a/app/assets/stylesheets/app/application/font-awesome.scss b/app/assets/stylesheets/app/application/font-awesome.scss index e09dc4b4a..7425f8a91 100644 --- a/app/assets/stylesheets/app/application/font-awesome.scss +++ b/app/assets/stylesheets/app/application/font-awesome.scss @@ -260,10 +260,14 @@ a:not(.btn) .icon-awesome { &.icon-mconf-published { color: $m-green; + font-size: $m-font-big; + line-height: 1; } &.icon-mconf-unpublished { color: $m-red; + font-size: $m-font-big; + line-height: 1; } &.icon-mconf-event {} diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb index 1670786a9..3d15de34f 100644 --- a/app/helpers/icons_helper.rb +++ b/app/helpers/icons_helper.rb @@ -1,3 +1,4 @@ +# coding: utf-8 # This file is part of Mconf-Web, a web application that provides access # to the Mconf webconferencing system. Copyright (C) 2010-2015 Mconf. # @@ -282,11 +283,11 @@ def icon_conference_play end def icon_published(options={}) - icon_constructor nil, "fa fa-circle-o icon-awesome icon-mconf-published", options + content_tag :span, "•", class: "icon-awesome icon-mconf-published" end def icon_unpublished(options={}) - icon_constructor nil, "fa fa-circle-o icon-awesome icon-mconf-unpublished", options + content_tag :span, "•", class: "icon-awesome icon-mconf-unpublished" end def icon_options_dots(options={}) diff --git a/app/views/shared/_recording_list.html.haml b/app/views/shared/_recording_list.html.haml index 88d12a47e..6d42d8214 100644 --- a/app/views/shared/_recording_list.html.haml +++ b/app/views/shared/_recording_list.html.haml @@ -89,12 +89,12 @@ - if recording.published? %li = link_to unpublish_bigbluebutton_recording_path(recording, redir_url: redir_to), data: { confirm: t('are_you_sure') }, method: :post do - = icon_unpublish(alt: t('.unpublish')) + -# = icon_unpublish(alt: t('.unpublish')) = t('.unpublish') - else %li = link_to publish_bigbluebutton_recording_path(recording, redir_url: redir_to), data: { confirm: t('are_you_sure') }, method: :post do - = icon_publish(alt: t('.publish')) + -# = icon_publish(alt: t('.publish')) = t('.publish') %td.rec-playback-col diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index fa319ddf3..bcc81355e 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -1373,10 +1373,10 @@ en: started_at: "Date - Time" started_at_desc: "This meeting started at %{meeting_start}" started_at_desc_with_rec: "This meeting started at %{meeting_start} and generated a recording that was processed from %{rec_start} to %{rec_end}" - publish: Publish - published: Visible + publish: "Make it visible" + published: "Visible" status: "Status" - unpublish: Unpublish + unpublish: "Make it not visible" unpublish_confirm: "Are you sure you want to remove this recording?" unpublish_unavailable: "This action is not possible because the recording is currently unavailable. Contact an administrator if you wish to remove it from your list." unpublished: "Not visible" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index 5512d975e..348395b73 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -1401,10 +1401,10 @@ pt-br: started_at: "Data - Hora" started_at_desc: "Esta reunião aconteceu em %{meeting_start}" started_at_desc_with_rec: "Esta reunião aconteceu em %{meeting_start} e gerou uma gravação que foi processada entre %{rec_start} e %{rec_end}" - publish: Publicar + publish: "Tornar visível" published: "Visível" status: "Status" - unpublish: Ocultar + unpublish: "Ocultar" unpublish_confirm: "Você tem certeza que deseja ocultar esta gravação?" unpublish_unavailable: "Esta ação está desabilitada pois a gravação não está disponível. Entre em contato com um administrador se você deseja remover esta gravação da sua lista." unpublished: "Não visível" From eefeda0f6e2ace6d4acad2f3e0974f8f187a1ad4 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Sat, 28 Oct 2017 22:17:54 -0200 Subject: [PATCH 17/75] Add a font for mconf-web icons and refactor icons' css classes --- app/assets/fonts/MconfWebFont.eot | Bin 0 -> 2988 bytes app/assets/fonts/MconfWebFont.svg | 18 +++ app/assets/fonts/MconfWebFont.ttf | Bin 0 -> 2804 bytes app/assets/fonts/MconfWebFont.woff | Bin 0 -> 2880 bytes app/assets/fonts/MconfWebFont/calendar.svg | 11 ++ app/assets/fonts/MconfWebFont/clock.svg | 16 ++ .../fonts/MconfWebFont/conference-edit.svg | 16 ++ .../fonts/MconfWebFont/conference-invite.svg | 13 ++ .../fonts/MconfWebFont/conference-play.svg | 15 ++ app/assets/fonts/MconfWebFont/link.svg | 42 +++++ .../fonts/MconfWebFont/options-dots.svg | 15 ++ .../fonts/MconfWebFont/rec-download.svg | 16 ++ app/assets/images/icons/facebook.svg | 14 ++ app/assets/images/icons/linkedin.svg | 18 +++ app/assets/images/icons/medium.svg | 17 ++ .../app/application/help_icon.js.coffee | 6 +- .../javascripts/app/events/index.js.coffee | 4 +- .../templates/uploader/template.hbs | 2 +- app/assets/stylesheets/_mixins.scss | 2 +- .../stylesheets/app/application/base.scss | 47 ++++-- .../app/application/copy-clipboard.scss | 2 +- .../{font-awesome.scss => icons.scss} | 149 +++++++++--------- .../app/application/simple_form.scss | 2 +- .../invitation.scss | 2 +- .../stylesheets/app/manage/recordings.scss | 2 +- .../stylesheets/app/registrations/new.scss | 2 +- .../stylesheets/app/space_events/index.scss | 4 +- .../stylesheets/app/spaces/meetings.scss | 6 +- .../app/spaces/user_permissions.scss | 2 +- .../stylesheets/app/spaces/webconference.scss | 2 +- app/assets/stylesheets/application.css | 3 +- app/assets/stylesheets/mconf-web-font.css | 50 ++++++ app/helpers/application_helper.rb | 2 +- ...tom_bigbluebutton_playback_types_helper.rb | 7 +- app/helpers/icons_helper.rb | 144 +++++++++-------- app/inputs/datetime_picker_input.rb | 2 +- app/inputs/showable_password_input.rb | 4 +- .../manage/admin_manages_recordings_spec.rb | 50 +++--- .../manage/admin_manages_spaces_spec.rb | 20 +-- .../manage/admin_manages_users_spec.rb | 26 +-- spec/features/spaces/creating_a_space_spec.rb | 2 +- 41 files changed, 520 insertions(+), 235 deletions(-) create mode 100644 app/assets/fonts/MconfWebFont.eot create mode 100644 app/assets/fonts/MconfWebFont.svg create mode 100644 app/assets/fonts/MconfWebFont.ttf create mode 100644 app/assets/fonts/MconfWebFont.woff create mode 100644 app/assets/fonts/MconfWebFont/calendar.svg create mode 100644 app/assets/fonts/MconfWebFont/clock.svg create mode 100644 app/assets/fonts/MconfWebFont/conference-edit.svg create mode 100644 app/assets/fonts/MconfWebFont/conference-invite.svg create mode 100644 app/assets/fonts/MconfWebFont/conference-play.svg create mode 100644 app/assets/fonts/MconfWebFont/link.svg create mode 100644 app/assets/fonts/MconfWebFont/options-dots.svg create mode 100644 app/assets/fonts/MconfWebFont/rec-download.svg create mode 100644 app/assets/images/icons/facebook.svg create mode 100644 app/assets/images/icons/linkedin.svg create mode 100644 app/assets/images/icons/medium.svg rename app/assets/stylesheets/app/application/{font-awesome.scss => icons.scss} (62%) create mode 100644 app/assets/stylesheets/mconf-web-font.css diff --git a/app/assets/fonts/MconfWebFont.eot b/app/assets/fonts/MconfWebFont.eot new file mode 100644 index 0000000000000000000000000000000000000000..df6248d5ba99200cc96279d58ddf3000e675a772 GIT binary patch literal 2988 zcmbVOZ%kWN6hHUAKYgW@(!SRgN`Y5eV4y9G(pKjJOZG<>$JA}v+_Je9C@^G{0gEiz zhxzw|iDn;+aeUYZXO?J|eVQgl(ZuLxVu*_x6Td7ZW{D(zaK=qz(&F#FKA`Mh(35xX zIrp4%&%O7YbMHGBT||FY5HaGk8W^2ng0th9)qJ5_f`#*!Z{H~+s-|A*r#y|(Anl_Z z_0cwKGzHa4+6B%KouE<5(gZjG+6&GEP0~?I%cS*`pbkhLWCvog2^XCvi8`L%-QKD7 zEnWcUGqfZ9$Fk$Wz2CnDr7*^OhO(36z*QIvtPPEx9K3q-6Ifu=MC!HSTz250Kd!Yx z^d#izVKC&E_$wHn#yB>7Y-(ChQ3J;BW85*C@6T#J6}Ge=F%BKePLGq0W0Ced#^zY| zSgvwQ_g_R#vF4ZK`N=8l6Hp=aO_JCGJ3|U&JJ=vNPuTbt)zGU#uM8MWtcFcQ3l28F zI8P=+gHZTl2~3L+tBDqdtb`>?D@-yy3VsD?2sj7NTyQKF78k8q<^owXTl^&`V_vyk zMhse>G9D5p^O&WwqW55)L=B7ou;17>R7)A!NTf8jBv?yxsw>mYGU;Szu$~12e#248 z9IDi4A-`cUlbx1Is>_<-NCiENDeY}-Jw8BBTU)zD>lWRyE*48wc|29ASZtk5dq7Wo zdgysoXgu7}(bm?zG!t}>?qe6LJn3j`U27C`0jXHDbzLl)_Edc}GLlRQFT&%;;qf4~ z6Y@mwX35R~Hs?1~>@?cgjIE`*(!u}8&v-S%C`mC?J_iA=URE}yJc+}x<6IsxkbiX)A!;(zXr!?@o(!bM^~6yqLtv*>v$kzk22Ec)UbY^3-O^TgvHO;6*( zS(%A7XRu}!`H>5xlrQGR;!R?~ILjzaK|WTP_0`n)_-0=y|UhCC3bENOUGNZ}5?v+%9rlqDITQ{gE^lP%Dc z;*A+u0^g~qPU(=a+D%7j;O=Zk1aQJMGP*e$(edbnnP0p)&DJARdSlWp>oa(OHnNm> ze*!pWCS7`O)SzQUIgnwv34FXTtA|25->lcx7Cz*%%=u>F^}_6p>W*rBF24)CESJa= z_hN2w2i;Owa#y?LI;l9z&lUR2kj^d$!^H!7i2W?{;sIfsUEp$YR&UW2mxA8uccPan zWxd7c^lPu_&AL*d8qH+_i@uo5byjMXor9uhBaf5#%_9fIz1Ts|;ie zTi}5pnvHP-f)2PwxW~rgngrpL7Bm~D9C$MDV&K6rR5r(1TJgCzXnvPZZwrPU9tXZ~ zuub>5{MrV$Pf0Vr7M;1C{rh{+=KtUHyO(&^G6$35EfW7OwA+`@FC6x4yhSeSrqEBJ zs~-z-3BzL|%kYC2{<8pctbZ`^bMWZj=!KK*xdOXfxKB_+emJSk|q; zD_l>f=vUUr_OR=G8=sekZ3AwUO33+=DGQf(m2}D810y#CrTuVn(3>_bfxp$JWzg^0 zw1P@1X45M8M{T+S@5B{R2gpuvsv#-S9EIH5HZ6hwtWC?HFWIz$(yra6Rq#*PbOm+M zd~bh#Y;a$$Z(DwB>VDPom#$mC3y*dquIFK*U6) H_5k=7J`k+K literal 0 HcmV?d00001 diff --git a/app/assets/fonts/MconfWebFont.svg b/app/assets/fonts/MconfWebFont.svg new file mode 100644 index 000000000..3acf52107 --- /dev/null +++ b/app/assets/fonts/MconfWebFont.svg @@ -0,0 +1,18 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/assets/fonts/MconfWebFont.ttf b/app/assets/fonts/MconfWebFont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..24fba205d0f2c3b99e267200e165f8b7f6c512b7 GIT binary patch literal 2804 zcmbVOUuauZ82`?>e{$2rrpdiY+B9u%n)I(G?V2XhIo84c=y095jm?eCEp5|uwN1LV z!w&W^|2_zc4otxV>ZaS(b_uTLI z{W;$`=li~MZio?)i_Vcmy^rtj>C=W*E<*AN`ibGm>{RgJx33bhF!%%c?93Es9e6>t z{KT2jt2aM_2R28fUK`70NACOWS{GE0LZ2RkKz^1#5B?nZ*x2OkoSvc<@b7@{ohS}x zHJ=J!+V|i?li9f`(kT!ASMX*bJDIE9vGsQ%r`ju`GJA~_==QKt zNFK52Eoz__gk4o*aPjxHjcD1ymR6R?WavIzd23XA)Dd%L^0u8ssA(0%MuohKcQb#_HD7A+Nv zc6G+0X;0l33K0)d51~%(UdfES|eY0i_fPuopX9B^O@VbgDnWbI#??l#7g)2)uj(vH^K>amQgs9C> zqmkD3l(#>fjPwQkEaHuLrHDV0$|U{KHgp~j8|9=C4jXLI2$zX{SB`tw&9djQM1m#a z@j6TOoOqXCX5-~Im?s|pU~Ucv&Z zRc4?5i?YMgvM1_R(XB~yo7^EIPW6YdBh|{J1bFN+q%f}T4bVa>+-%p3qu`rjM)?=5|;IAux3<5YM`(PXP>O8LgTEJ5y6RHt;z2CzB`b3CHWn_`rzIH83DVF|%A z=Y_1|=NR)?GRv-f6K;efG2%R_)_yKvKOQn^Gwr7nG;((}u~yaZH3HaS8Wr6hjp(>^ z!ptx3oObJysoXK?j!hX{KwDT!+&=+qGn1~|H)_zaZXC!koCH2qTF^rwop0A08%ytT zS>}AZh3Ua_$R`A!?lz;D@D!9S^(jaA4`+PDVy#1-*BKz2e>4^0Jgs-@R$EJ6N+ zjb-4=HdZKr?_|YZh5WRQYp9==28WA<(L=eRUB$vI4bm_bsX(K22>TnNT^2WcFgHDO zvRE)TC3@)~6w@?=g$YBGHc^6lH{xU?Hv4k<(-YZg+J{Nq@lWj@?Juoy BmYVTum~8=D)OTiT`RYMXRz z$2!=B{}+Pd#SqtvT__Bcu`3lss~~d|v^W$5Z$?1|7QArcrU*%W&i8%&aq6g^)eGFaL3aKfKpB({rl}NoIuvs+m$23Xzngbl^ke4x~tFyDukJ8uK*=1tQ#NF-jc)G^xtx3n@?KbuTPknUsX;oM} z*xlXPxpieEaG&O9mutM4SiHR>hOsE=c&wv69?N)Zu8xhR(jtn8_$fp@L|ybak+zkk zdV*M7Kv%KSSaU0umhR1j{v)6DId!*3cRF1zr&IU1bthWaMmhHNsx<%x3J;$O1Yg4I z3Nksfcg?>G2Z=0PUgQbv%S$@)uYsaOExH1JQIg6^OM! zcp{=#QhFq!vjsg;A@*%0;bpfg-Y1etmP{mS%&zA}U3rC#Ro-CUMB@F~SzIpUzd7d| z=B%Lra)Ffflld@ticKeK6cqx zSLdtj_tmA?TxH~)yB#-gcGzky=>iC_lX0Cb?VuM{#dNPp)u+Aq4<-H_v#U2cQU!#FrrbzLTKkDl}lWb zo{>~pQYDFVX%xCDvrqoT%c|GP%NQTM$0u{agDRhs9DGbd;i@dFyf6)2!o?)qcX8GQ z#3W2Rtf;SUU7Yi3WMVCAd{3~6ArHhZEeqco6ye~z%U>!kS(5Q}DLkz>WwSVy%B?wB z0`F2(mvqzyusQ;Bd_|cv#3)s9p%)H>C5ST@1ZVj<%Dg6L+Es4Djc_DJTp-ol&qeIV zO9pMGeRQ1g%HNw!tXU2C^dNSaK}NU6q8c8Z2n&cer`3F9tT!gpwkeATXbVe=_a}&L zW;51%qlO%7#=$JZP2iK|c`Y2)_%^M+zWgqiWzM&WsF&w&)ppn7>khb4%d!Pe{}Z|0 z6Y@wA$y4i=8>GrSzgQkJ!Wz3I99Ir&VfMYuD~E+|c8SZCd96)T+zM(}z=c|>mbEs& zE8u)dYt@u0Rc~F_VdBfFd{4Erx@SbxZ0ymM91!C4yA{_YgrKxR>^AMdlYtil4~DL?1x-?P~naQn5+P{iSN;2Q~bYJPXX zx!L1aGK_D;W})xUp+3ms{~P}IDc&^Q!KJtp; zN7l^tvzvT?FG{1f0}tgz&Red`c70V%SL`(~@}R?74<`q`YGVof4jaqBZ`oMEzp=QD zRq!WmT!nYyn)n|eyTH_<$HJVd>Aa04@K4%U2EJlrg@X8 + + + + + + + + diff --git a/app/assets/fonts/MconfWebFont/clock.svg b/app/assets/fonts/MconfWebFont/clock.svg new file mode 100644 index 000000000..098a5096b --- /dev/null +++ b/app/assets/fonts/MconfWebFont/clock.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/assets/fonts/MconfWebFont/conference-edit.svg b/app/assets/fonts/MconfWebFont/conference-edit.svg new file mode 100644 index 000000000..e47ffc952 --- /dev/null +++ b/app/assets/fonts/MconfWebFont/conference-edit.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/assets/fonts/MconfWebFont/conference-invite.svg b/app/assets/fonts/MconfWebFont/conference-invite.svg new file mode 100644 index 000000000..f594f8b94 --- /dev/null +++ b/app/assets/fonts/MconfWebFont/conference-invite.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/app/assets/fonts/MconfWebFont/conference-play.svg b/app/assets/fonts/MconfWebFont/conference-play.svg new file mode 100644 index 000000000..e7239a0f7 --- /dev/null +++ b/app/assets/fonts/MconfWebFont/conference-play.svg @@ -0,0 +1,15 @@ + + + +]> + + + + + + diff --git a/app/assets/fonts/MconfWebFont/link.svg b/app/assets/fonts/MconfWebFont/link.svg new file mode 100644 index 000000000..7425c2f1c --- /dev/null +++ b/app/assets/fonts/MconfWebFont/link.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/assets/fonts/MconfWebFont/options-dots.svg b/app/assets/fonts/MconfWebFont/options-dots.svg new file mode 100644 index 000000000..8c0228504 --- /dev/null +++ b/app/assets/fonts/MconfWebFont/options-dots.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/app/assets/fonts/MconfWebFont/rec-download.svg b/app/assets/fonts/MconfWebFont/rec-download.svg new file mode 100644 index 000000000..a7f68033b --- /dev/null +++ b/app/assets/fonts/MconfWebFont/rec-download.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/app/assets/images/icons/facebook.svg b/app/assets/images/icons/facebook.svg new file mode 100644 index 000000000..a11294f19 --- /dev/null +++ b/app/assets/images/icons/facebook.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/app/assets/images/icons/linkedin.svg b/app/assets/images/icons/linkedin.svg new file mode 100644 index 000000000..9b792e76a --- /dev/null +++ b/app/assets/images/icons/linkedin.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/app/assets/images/icons/medium.svg b/app/assets/images/icons/medium.svg new file mode 100644 index 000000000..cfc4e9964 --- /dev/null +++ b/app/assets/images/icons/medium.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/app/assets/javascripts/app/application/help_icon.js.coffee b/app/assets/javascripts/app/application/help_icon.js.coffee index dca3ac19b..a28e2b60d 100644 --- a/app/assets/javascripts/app/application/help_icon.js.coffee +++ b/app/assets/javascripts/app/application/help_icon.js.coffee @@ -9,10 +9,10 @@ class mconf.HelpIcon @bindIcon: (el) -> hintOptions = _.extend(mconf.Tooltip.defaultOptions, hintOptions) - unless $(el).children('.icon-mconf-help').length > 0 - help = $("") + unless $(el).children('.icon-help').length > 0 + help = $("") $(el).append(help) - $(el).find(".icon-mconf-help").tooltip(hintOptions) + $(el).find(".icon-help").tooltip(hintOptions) @bind: -> $(".form-group.has-hint > label").each -> diff --git a/app/assets/javascripts/app/events/index.js.coffee b/app/assets/javascripts/app/events/index.js.coffee index 2cc3c8ff8..5635a36c3 100644 --- a/app/assets/javascripts/app/events/index.js.coffee +++ b/app/assets/javascripts/app/events/index.js.coffee @@ -28,9 +28,9 @@ $ -> # how results are formatted in the search input format = (state) -> if state.public - r = "" + r = "" else - r = "" + r = "" "#{r}#{state.text}" # redirects to the space when an item is clicked in the search input diff --git a/app/assets/javascripts/templates/uploader/template.hbs b/app/assets/javascripts/templates/uploader/template.hbs index 3a5c17637..84450a62d 100644 --- a/app/assets/javascripts/templates/uploader/template.hbs +++ b/app/assets/javascripts/templates/uploader/template.hbs @@ -1,6 +1,6 @@

- {uploadButtonText} + {uploadButtonText}
{{#if dragAndDrop}}
diff --git a/app/assets/stylesheets/_mixins.scss b/app/assets/stylesheets/_mixins.scss index e5dace661..fa69245a6 100644 --- a/app/assets/stylesheets/_mixins.scss +++ b/app/assets/stylesheets/_mixins.scss @@ -285,7 +285,7 @@ @include transition(background-color 0.2s ease-in); } - .icon-awesome { + .icon { margin: 3px 3px 0px 0px; @include font-size($m-font-normal); @include link-colors($m-navbar-font-color, $m-navbar-font-color-hover, $m-navbar-font-color-hover); diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index a5818f33d..907c563b0 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -29,7 +29,7 @@ form { .webconf-join-group { // adjust make the 'fast start' icon - .btn i.icon-awesome { + .btn i.icon { float: none; margin: 0; padding: 0; @@ -37,7 +37,7 @@ form { color: white; &:hover { color: white; } } - .btn-small i.icon-awesome { + .btn-small i.icon { @include font-size($m-font-small); } } @@ -96,14 +96,14 @@ form { overflow: hidden; // usually seen inside .resource-visibility - .small > .icon-awesome { + .small > .icon { margin-right: 1px; } h2 { margin-bottom: 0; - .icon-awesome { + .icon { margin: 7px 6px 0 0; } } @@ -375,20 +375,33 @@ form { display: inline-block; @include border-radius($m-navbar-btn-size / 2); background: $m-navbar-btn-bg; - padding: ($m-navbar-btn-size - $imgsize) / 2; + padding: (($m-navbar-btn-size - $imgsize) / 2); float: left; - transition: all .3s ease-in-out; - color: $m-navbar-btn-color; - .icon-awesome { - color: $m-navbar-btn-color; - &:hover { color: $m-navbar-btn-color; } - } - img { - width: $imgsize; - height: $imgsize; + .icon { + color: #fff; + font-size: $imgsize; + line-height: 1; + margin: 0; + width: 100%; + text-align: center; + + &:hover { color: #fff; } + + &.icon-options { + $imgsize: $imgsize - 4; + font-size: $imgsize; + /* padding: (($m-navbar-btn-size - $imgsize) / 2) - 2; */ + padding: 1px 0; + } + &.icon-conference-invite { + $imgsize: $imgsize - 10; + font-size: $imgsize; + /* padding: (($m-navbar-btn-size - $imgsize) / 2) - 2; */ + padding: 6px 0; + } } &:hover { @@ -901,14 +914,14 @@ strong.highlight { display: block; font-weight: normal; - .icon-awesome { + .icon { float: none; } &.small { @include font-size($m-font-small); - .icon-awesome { + .icon { @include font-size($m-font-small); width: $m-font-small; height: $m-font-small; @@ -1129,7 +1142,7 @@ strong.highlight { margin: 19px 24px 0 0; float: right; - i.icon-awesome { + i.icon { color: #fff; &:active, &:hover { color: #fff; } } diff --git a/app/assets/stylesheets/app/application/copy-clipboard.scss b/app/assets/stylesheets/app/application/copy-clipboard.scss index 1c1a7d9a0..b14cbca6b 100644 --- a/app/assets/stylesheets/app/application/copy-clipboard.scss +++ b/app/assets/stylesheets/app/application/copy-clipboard.scss @@ -2,7 +2,7 @@ @import "definitions"; .copyable-field { - .icon-awesome { + .icon { margin-top: 0; } } diff --git a/app/assets/stylesheets/app/application/font-awesome.scss b/app/assets/stylesheets/app/application/icons.scss similarity index 62% rename from app/assets/stylesheets/app/application/font-awesome.scss rename to app/assets/stylesheets/app/application/icons.scss index 7425f8a91..8a38ba8ed 100644 --- a/app/assets/stylesheets/app/application/font-awesome.scss +++ b/app/assets/stylesheets/app/application/icons.scss @@ -9,27 +9,28 @@ $default-icon-color: #888; /* lighten($m-green-mconf, 10); */ $light-icon-color: #aaa; -.icon-awesome { +.icon { color: $default-icon-color; /* so all icons look similar even though they have different aspect ratios */ max-width: 13px; width: 13px; text-align: center; + display: inline-table; } -h2 .icon-awesome { +h2 .icon { @include font-size(16px); width: 16px; height: 16px; } -h3 .icon-awesome { +h3 .icon { // make it smaller than the default font size for normal text @include font-size($m-font-normal); } -a:not(.btn) .icon-awesome { +a:not(.btn) .icon { @include link-colors($default-icon-color, $m-link-color-hover, $m-link-color-active); cursor: pointer; text-decoration: none; @@ -41,12 +42,12 @@ a:not(.btn) .icon-awesome { /* The position of the icons changes slightly depending on where it is placed. Below we set this positions. */ -/* .btn .icon-awesome { */ +/* .btn .icon { */ /* float: none; */ /* } */ /* .btn.btn-small, .btn.btn-mini { */ -/* .icon-awesome { */ +/* .icon { */ /* float: none; */ /* @include font-size(12px); */ /* width: 12px; */ @@ -55,23 +56,23 @@ a:not(.btn) .icon-awesome { /* } */ /* #sidebar, .sidebar { */ -/* .content-block-header .icon-awesome { float: right; } */ +/* .content-block-header .icon { float: right; } */ /* } */ /* Icons in the title of sections everywhere in the website */ #content-middle .content-block-header { - .icon-awesome { + .icon { float: left; margin: 5px 5px 0px 4px; } - .btn .icon-awesome { + .btn .icon { margin: 3px 5px 0 0; } } /* Force the color on all icons when inside components that have a darker background. */ /* .btn-primary, .btn-success, .btn-danger, .btn-error, .btn-info { */ -/* .icon-awesome { */ +/* .icon { */ /* color: white; */ /* } */ /* } */ @@ -80,13 +81,13 @@ a:not(.btn) .icon-awesome { .label { &.label-default, &.label-primary, &.label-warning, &.label-info, &.label-success, &.label-danger { - .icon-awesome { + .icon { color: #fff; } } &.label-flat { - .icon-awesome { + .icon { color: $m-font-color-gray; } } @@ -101,119 +102,119 @@ a:not(.btn) .icon-awesome { /* Include this scope here so the colors have precedence over the other styles specified above. */ -.icon-awesome, a:not(.btn) .icon-awesome { +.icon, a:not(.btn) .icon { - &.icon-mconf-rss { + &.icon-rss { color: $m-orange; } - &.icon-mconf-help, &.icon-mconf-info { + &.icon-help, &.icon-info { color: $m-blue; } - &.icon-mconf-waiting-moderation { + &.icon-waiting-moderation { color: #e9b624; } - &.icon-mconf-superuser { + &.icon-superuser { color: $m-red; } - &.icon-mconf-in-progress, .icon-mconf-loading { + &.icon-in-progress, .icon-loading { color: $m-green; } - &.icon-mconf-delete { + &.icon-delete { color: $m-red; } - &.icon-mconf-disable { + &.icon-disable { color: $m-red; } - &.icon-mconf-confirm { + &.icon-confirm { color: $m-green; } - &.icon-mconf-enable { + &.icon-enable { color: $m-green; } - &.icon-mconf-new-tag { + &.icon-new-tag { color: $m-yellow; } - &.icon-mconf-download { + &.icon-download { color: $m-blue; } - &.icon-mconf-message { + &.icon-message { &.active { color: $m-alert-danger-font; } } - &.icon-mconf-mobile { + &.icon-mobile { color: $m-blue; } - &.icon-mconf-success { + &.icon-success { color: $m-green; } - &.icon-mconf-error { + &.icon-error { color: $m-red; } - &.icon-mconf-recording { + &.icon-recording { color: $light-icon-color; } - &.icon-mconf-meeting { + &.icon-meeting { color: $light-icon-color; } - &.icon-mconf-space-public { + &.icon-space-public { color: $m-alert-success-font; } - &.icon-mconf-space-private { + &.icon-space-private { color: $m-alert-danger-font; } - &.icon-mconf-approve { + &.icon-approve { color: $m-alert-success-font; } - &.icon-mconf-disapprove { + &.icon-disapprove { color: $m-yellow; } - &.icon-mconf-is-member { + &.icon-is-member { color: $m-yellow; } - &.icon-mconf-confirm-user { + &.icon-confirm-user { color: $m-green; } - &.icon-mconf-participant-confirmed { + &.icon-participant-confirmed { color: $green; } - &.icon-mconf-participant-not-confirmed { + &.icon-participant-not-confirmed { color: $red; } - &.icon-mconf-publish { + &.icon-publish { color: $m-green; } - &.icon-mconf-unpublish { + &.icon-unpublish { color: $m-yellow; } - &.icon-mconf-list { + &.icon-list { &.enabled { color: #888; } @@ -222,76 +223,76 @@ a:not(.btn) .icon-awesome { } } - &.icon-mconf-can-rec { + &.icon-can-rec { color: $red; } - &.icon-mconf-cant-rec { + &.icon-cant-rec { color: #CCC; } - &.icon-mconf-show { + &.icon-show { color: $m-green; } - &.icon-mconf-hide { + &.icon-hide { color: $m-yellow; } - &.icon-mconf-stack-superuser { + &.icon-stack-superuser { font-size: 18px; position: relative; left: 2px; color: $m-red; } - &.icon-mconf-stack-user { + &.icon-stack-user { font-size: 18px; position: relative; left: 4px; } - &.icon-mconf-stack-plus { + &.icon-stack-plus { position: absolute; right: 7px; bottom: 5px; font-size: 11px; } - &.icon-mconf-published { + &.icon-published { color: $m-green; font-size: $m-font-big; line-height: 1; } - &.icon-mconf-unpublished { + &.icon-unpublished { color: $m-red; font-size: $m-font-big; line-height: 1; } - &.icon-mconf-event {} - &.icon-mconf-logout {} - &.icon-mconf-logout {} - &.icon-mconf-account {} - &.icon-mconf-activity {} - &.icon-mconf-comment {} - &.icon-mconf-comments {} - &.icon-mconf-attachment {} - &.icon-mconf-users {} - &.icon-mconf-edit {} - &.icon-mconf-share {} - &.icon-mconf-order-number-asc {} - &.icon-mconf-order-number-desc {} - &.icon-mconf-check {} - &.icon-mconf-picture {} - &.icon-mconf-playback {} - &.icon-mconf-date {} - &.icon-mconf-user {} - &.icon-mconf-space {} - &.icon-mconf-profile {} - &.icon-mconf-options {} - &.icon-mconf-join-request {} - &.icon-mconf-list {} - &.icon-mconf-externa-link {} + &.icon-event {} + &.icon-logout {} + &.icon-logout {} + &.icon-account {} + &.icon-activity {} + &.icon-comment {} + &.icon-comments {} + &.icon-attachment {} + &.icon-users {} + &.icon-edit {} + &.icon-share {} + &.icon-order-number-asc {} + &.icon-order-number-desc {} + &.icon-check {} + &.icon-picture {} + &.icon-playback {} + &.icon-date {} + &.icon-user {} + &.icon-space {} + &.icon-profile {} + &.icon-options {} + &.icon-join-request {} + &.icon-list {} + &.icon-externa-link {} } diff --git a/app/assets/stylesheets/app/application/simple_form.scss b/app/assets/stylesheets/app/application/simple_form.scss index 7eaf23a65..9219ca16b 100644 --- a/app/assets/stylesheets/app/application/simple_form.scss +++ b/app/assets/stylesheets/app/application/simple_form.scss @@ -17,7 +17,7 @@ } &.has-hint, span.has-hint { - .icon-mconf-help { + .icon-help { margin-left: 4px; cursor: pointer; } diff --git a/app/assets/stylesheets/app/custom_bigbluebutton_rooms/invitation.scss b/app/assets/stylesheets/app/custom_bigbluebutton_rooms/invitation.scss index ba47da70c..ef3909ad9 100644 --- a/app/assets/stylesheets/app/custom_bigbluebutton_rooms/invitation.scss +++ b/app/assets/stylesheets/app/custom_bigbluebutton_rooms/invitation.scss @@ -11,7 +11,7 @@ background: $m-light-gray; padding: 4px; - .icon-mconf-info { + .icon-info { float: none; margin: 0 1px 0 0; } diff --git a/app/assets/stylesheets/app/manage/recordings.scss b/app/assets/stylesheets/app/manage/recordings.scss index 609594f81..171c23e5b 100644 --- a/app/assets/stylesheets/app/manage/recordings.scss +++ b/app/assets/stylesheets/app/manage/recordings.scss @@ -106,7 +106,7 @@ body.manage.recordings { /* } */ /* } */ -/* .icon-awesome { */ +/* .icon { */ /* display:inline-block; */ /* line-height: 27px; */ /* text-align: center; */ diff --git a/app/assets/stylesheets/app/registrations/new.scss b/app/assets/stylesheets/app/registrations/new.scss index ea0bdea8d..addbd16e4 100644 --- a/app/assets/stylesheets/app/registrations/new.scss +++ b/app/assets/stylesheets/app/registrations/new.scss @@ -63,7 +63,7 @@ body.registrations.new, body.registrations.create { background: $m-navbar-internal-border-color; color: $m-navbar-font-color; - .icon-mconf-info { + .icon-info { color: $m-yellow; &:hover, &:focus { color: $m-yellow; } } diff --git a/app/assets/stylesheets/app/space_events/index.scss b/app/assets/stylesheets/app/space_events/index.scss index d6aeb0969..f639b7f45 100644 --- a/app/assets/stylesheets/app/space_events/index.scss +++ b/app/assets/stylesheets/app/space_events/index.scss @@ -19,11 +19,11 @@ body.space_events.index { margin-top: 5px; } - .icon-awesome { + .icon { padding: 3px; } - .selected-ordering .icon-awesome { + .selected-ordering .icon { background: #666; color: white; @include border-radius($m-border-radius-base); diff --git a/app/assets/stylesheets/app/spaces/meetings.scss b/app/assets/stylesheets/app/spaces/meetings.scss index bc0c3e1b5..3fc3316c9 100644 --- a/app/assets/stylesheets/app/spaces/meetings.scss +++ b/app/assets/stylesheets/app/spaces/meetings.scss @@ -19,7 +19,7 @@ body.spaces.meetings { @include border-radius($m-border-radius-base); background: $m-red; color: white; - .icon-awesome { color: white; } + .icon { color: white; } } #space-meetings-success { @@ -27,7 +27,7 @@ body.spaces.meetings { @include border-radius($m-border-radius-base); background: $m-green; color: white; - .icon-awesome { color: white; } + .icon { color: white; } } #space-meetings-loading { @@ -42,7 +42,7 @@ body.spaces.meetings { display: none; } - .icon-awesome { + .icon { margin-top: 2px; float: none; } diff --git a/app/assets/stylesheets/app/spaces/user_permissions.scss b/app/assets/stylesheets/app/spaces/user_permissions.scss index c10e6baba..d0e47f4c2 100644 --- a/app/assets/stylesheets/app/spaces/user_permissions.scss +++ b/app/assets/stylesheets/app/spaces/user_permissions.scss @@ -60,7 +60,7 @@ body.spaces.user_permissions { float: right; margin: 0px 0 0 5px; - .icon-awesome { + .icon { margin: 0; } } diff --git a/app/assets/stylesheets/app/spaces/webconference.scss b/app/assets/stylesheets/app/spaces/webconference.scss index 8bc82683e..35f0df96c 100644 --- a/app/assets/stylesheets/app/spaces/webconference.scss +++ b/app/assets/stylesheets/app/spaces/webconference.scss @@ -52,7 +52,7 @@ body.spaces.webconference { } #webconference-all-users { - .icon-awesome { + .icon { float: none; margin-top: 1px; margin-right: -3px; diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 053ea8c7c..f26b36b42 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -9,13 +9,14 @@ *= require bootstrap/select2-bootstrap *= require bootstrap/bootstrap-datetimepicker *= require fineuploader + *= require mconf-web-font * * Note: the order matters! *= require ./app/application/typography *= require ./app/application/base * require ./app/application/sidebar-size * require ./app/application/set-max-width # disabled for now - *= require ./app/application/font-awesome + *= require ./app/application/icons *= require ./app/application/simple_form *= require ./app/application/dropdown-menu *= require ./app/application/notifications diff --git a/app/assets/stylesheets/mconf-web-font.css b/app/assets/stylesheets/mconf-web-font.css new file mode 100644 index 000000000..2831ceff9 --- /dev/null +++ b/app/assets/stylesheets/mconf-web-font.css @@ -0,0 +1,50 @@ +@font-face { + font-family: 'MconfWebFont'; + src: url('MconfWebFont.eot?xml3c3'); + src: url('MconfWebFont.eot?xml3c3#iefix') format('embedded-opentype'), + url('MconfWebFont.ttf?xml3c3') format('truetype'), + url('MconfWebFont.woff?xml3c3') format('woff'), + url('MconfWebFont.svg?xml3c3#MconfWebFont') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="icon-mw-"], [class*=" icon-mw-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'MconfWebFont' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-mw-conference-play:before { + content: "\e900"; +} +.icon-mw-options-dots:before { + content: "\e901"; +} +.icon-mw-calendar:before { + content: "\e902"; +} +.icon-mw-conference-invite:before { + content: "\e903"; +} +.icon-mw-clock:before { + content: "\e904"; +} +.icon-mw-rec-download:before { + content: "\e905"; +} +.icon-mw-link:before { + content: "\e906"; +} +.icon-mw-options:before { + content: "\e907"; +} diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 26b2c9d1c..25343e8c0 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -22,7 +22,7 @@ def clipboard_copy_field(id, content, opt={}) concat content_tag(:label, opt[:label]) if opt.has_key?(:label) concat text_field_tag(id, content, opt.except(:label).merge(class: input_class)) btn = content_tag :a, '', :class => 'input-group-addon btn clipboard-copy', 'data-clipboard-target': "##{id}" do - concat content_tag(:i, '', :class => "icon-awesome fa fa-paste") + concat content_tag(:i, '', :class => "icon fa fa-paste") end concat btn end diff --git a/app/helpers/custom_bigbluebutton_playback_types_helper.rb b/app/helpers/custom_bigbluebutton_playback_types_helper.rb index de7aba5cb..1ecec1f7d 100644 --- a/app/helpers/custom_bigbluebutton_playback_types_helper.rb +++ b/app/helpers/custom_bigbluebutton_playback_types_helper.rb @@ -7,6 +7,7 @@ require 'version' module CustomBigbluebuttonPlaybackTypesHelper + include IconsHelper def link_to_playback(recording, playback, options={}) link_params = { type: playback.format_type } @@ -21,7 +22,11 @@ def link_to_playback(recording, playback, options={}) link_params.merge!(name: name.parameterize('_')) end - playback_icon = image_tag image_path('icons/conference-play.svg'), class: 'icon-mconf-conference-play' + if playback.identifier == 'presentation_video' + playback_icon = icon_rec_download + else + playback_icon = icon_conference_play + end link_to playback_icon, play_bigbluebutton_recording_path(recording, link_params), options_for_tooltip(t("bigbluebutton_rails.playback_types.#{playback.identifier}.tip"), options) diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb index 3d15de34f..70177eeec 100644 --- a/app/helpers/icons_helper.rb +++ b/app/helpers/icons_helper.rb @@ -9,60 +9,60 @@ module IconsHelper # Default icon that shows a tooltip with help about something def icon_help(title=nil, options={}) - icon_constructor title, "fa fa-question-circle-o icon-awesome icon-mconf-help", options + icon_constructor title, "fa fa-question-circle-o icon icon-help", options end # Default icon that shows a tooltip with information about something def icon_info(title=nil, options={}) - icon_constructor title, "fa fa-info-circle icon-awesome icon-mconf-info", options + icon_constructor title, "fa fa-info-circle icon icon-info", options end # Default icon to a feed (rss) def icon_feed(options={}) options.merge!(:alt => t('RSS'), :title => t('RSS')) - icon_constructor t('RSS'), "fa fa-rss icon-awesome icon-mconf-rss", options + icon_constructor t('RSS'), "fa fa-rss icon icon-rss", options end def icon_attachment(title=nil, options={}) - icon_constructor title, "fa fa-paperclip icon-awesome iconf-mconf-attachment", options + icon_constructor title, "fa fa-paperclip icon iconf-mconf-attachment", options end def icon_comment(title=nil, options={}) - icon_constructor title, "fa fa-comment icon-awesome icon-mconf-comment", options + icon_constructor title, "fa fa-comment icon icon-comment", options end def icon_comments(title=nil, options={}) - icon_constructor title, "fa fa-comments-o icon-awesome icon-mconf-comments", options + icon_constructor title, "fa fa-comments-o icon icon-comments", options end def icon_event(title=nil, options={}) - icon_constructor title, "fa fa-calendar icon-awesome icon-mconf-event", options + icon_constructor title, "fa fa-calendar icon icon-event", options end # Admin red label/icon # Usually shown on top of an avatar. def icon_superuser(options={}) - icon_constructor nil, "fa fa-wrench icon-awesome icon-mconf-superuser", options + icon_constructor nil, "fa fa-wrench icon icon-superuser", options end def icon_guest(options={}) - icon_constructor nil, "fa fa-meh-o icon-awesome icon-mconf-guest", options + icon_constructor nil, "fa fa-meh-o icon icon-guest", options end # Conference "in progress" icon. def icon_in_progress(options={}) - icon_constructor nil, "fa fa-refresh fa-spin icon-awesome icon-mconf-in-progress", options + icon_constructor nil, "fa fa-refresh fa-spin icon icon-in-progress", options end def icon_loading(options={}) - icon_constructor nil, "fa-spin fa fa-refresh icon-awesome icon-mconf-loading", options + icon_constructor nil, "fa-spin fa fa-refresh icon icon-loading", options end def icon_message(options={}) if options.has_key?(:class) and options[:class].match(/active/) - icon_constructor nil, "fa fa-envelope icon-awesome icon-mconf-message", options + icon_constructor nil, "fa fa-envelope icon icon-message", options else - icon_constructor nil, "fa fa-envelope-o icon-awesome icon-mconf-message", options + icon_constructor nil, "fa fa-envelope-o icon icon-message", options end end @@ -73,225 +73,229 @@ def icon_unread_message(options={}) end def icon_logout(options={}) - icon_constructor nil, "fa fa-power-off icon-awesome icon-mconf-logout", options + icon_constructor nil, "fa fa-power-off icon icon-logout", options end def icon_profile(options={}) - icon_constructor nil, "fa fa-user icon-awesome icon-mconf-profile", options + icon_constructor nil, "fa fa-user icon icon-profile", options end def icon_account(options={}) - icon_constructor nil, "fa fa-wrench icon-awesome icon-mconf-account", options + icon_constructor nil, "fa fa-wrench icon icon-account", options end def icon_activity(options={}) - icon_constructor nil, "fa-list-alt icon-awesome icon-mconf-activity", options + icon_constructor nil, "fa-list-alt icon icon-activity", options end def icon_create(options={}) - icon_constructor nil, "fa fa-plus-square-o icon-awesome icon-mconf-create", options + icon_constructor nil, "fa fa-plus-square-o icon icon-create", options end def icon_delete(options={}) - icon_constructor nil, "fa fa-trash-o icon-awesome icon-mconf-delete", options + icon_constructor nil, "fa fa-trash-o icon icon-delete", options end def icon_disable(options={}) - icon_constructor nil, "fa fa-arrow-down icon-awesome icon-mconf-disable", options + icon_constructor nil, "fa fa-arrow-down icon icon-disable", options end def icon_enable(options={}) - icon_constructor nil, "fa fa-arrow-up icon-awesome icon-mconf-enable", options + icon_constructor nil, "fa fa-arrow-up icon icon-enable", options end def icon_confirm_user(options={}) - icon_constructor nil, "fa fa-check-circle icon-awesome icon-mconf-confirm-user", options + icon_constructor nil, "fa fa-check-circle icon icon-confirm-user", options end def icon_confirm(options={}) - icon_constructor nil, "fa fa-check-circle icon-awesome icon-mconf-confirm", options + icon_constructor nil, "fa fa-check-circle icon icon-confirm", options end def icon_users(options={}) - icon_constructor nil, "fa fa-users icon-awesome icon-mconf-users", options + icon_constructor nil, "fa fa-users icon icon-users", options end def icon_edit(options={}) - icon_constructor nil, "fa fa-edit icon-awesome icon-mconf-edit", options + icon_constructor nil, "fa fa-edit icon icon-edit", options end def icon_share(options={}) - icon_constructor nil, "fa fa-share-square-o icon-awesome icon-mconf-share", options + icon_constructor nil, "fa fa-share-square-o icon icon-share", options end def icon_download(options={}) - icon_constructor nil, "fa fa-download icon-awesome icon-mconf-download", options + icon_constructor nil, "fa fa-download icon icon-download", options end def icon_attachment_new_version(options={}) - icon_constructor nil, "fa fa-plus-circle icon-awesome icon-mconf-attachment-new-version", options + icon_constructor nil, "fa fa-plus-circle icon icon-attachment-new-version", options end def icon_space_private(options={}) - icon_constructor t('_other.space.private_space'), "fa fa-lock icon-awesome icon-mconf-space-private", options + icon_constructor t('_other.space.private_space'), "fa fa-lock icon icon-space-private", options end def icon_space_public(options={}) - icon_constructor t('_other.space.public_space'), "fa fa-globe icon-awesome icon-mconf-space-public", options + icon_constructor t('_other.space.public_space'), "fa fa-globe icon icon-space-public", options end def icon_publish(options={}) - icon_constructor nil, "fa fa-eye icon-awesome icon-mconf-publish", options + icon_constructor nil, "fa fa-eye icon icon-publish", options end def icon_unpublish(options={}) - icon_constructor nil, "fa fa-eye-slash icon-awesome icon-mconf-unpublish", options + icon_constructor nil, "fa fa-eye-slash icon icon-unpublish", options end def icon_mobile(options={}) - icon_constructor nil, "fa fa-mobile icon-awesome icon-mconf-mobile", options + icon_constructor nil, "fa fa-mobile icon icon-mobile", options end def icon_order_number_asc(options={}) - icon_constructor nil, "fa fa-sort-numeric-asc icon-awesome icon-mconf-order-number-asc", options + icon_constructor nil, "fa fa-sort-numeric-asc icon icon-order-number-asc", options end def icon_order_number_desc(options={}) - icon_constructor nil, "fa fa-sort-numeric-desc icon-awesome icon-mconf-order-number-desc", options + icon_constructor nil, "fa fa-sort-numeric-desc icon icon-order-number-desc", options end def icon_check(options={}) - icon_constructor nil, "fa fa-check-square-o icon-awesome icon-mconf-check", options + icon_constructor nil, "fa fa-check-square-o icon icon-check", options end def icon_picture(options={}) - icon_constructor nil, "fa fa-picture-o icon-awesome icon-mconf-picture", options + icon_constructor nil, "fa fa-picture-o icon icon-picture", options end def icon_playback(options={}) - icon_constructor nil, "fa fa-play-circle icon-awesome icon-mconf-playback", options + icon_constructor nil, "fa fa-play-circle icon icon-playback", options end def icon_date(options={}) - icon_constructor nil, "fa fa-calendar-o icon-awesome icon-mconf-date", options + icon_constructor nil, "fa fa-calendar-o icon icon-date", options end def icon_user(options={}) - icon_constructor nil, "fa fa-user icon-awesome icon-mconf-user", options + icon_constructor nil, "fa fa-user icon icon-user", options end def icon_space(options={}) - icon_constructor nil, "fa fa-group icon-awesome icon-mconf-space", options + icon_constructor nil, "fa fa-group icon icon-space", options end def icon_error(options={}) - icon_constructor nil, "fa fa-meh-o icon-awesome icon-mconf-error", options + icon_constructor nil, "fa fa-meh-o icon icon-error", options end def icon_success(options={}) - icon_constructor nil, "fa fa-check icon-awesome icon-mconf-success", options + icon_constructor nil, "fa fa-check icon icon-success", options end def icon_meeting(options={}) - icon_constructor nil, "fa fa-video-camera icon-awesome icon-mconf-meeting", options + icon_constructor nil, "fa fa-video-camera icon icon-meeting", options end def icon_recording(options={}) - icon_constructor nil, "fa fa-youtube-play icon-awesome icon-mconf-recording", options + icon_constructor nil, "fa fa-youtube-play icon icon-recording", options end def icon_approve(options={}) - icon_constructor nil, "fa fa-thumbs-o-up icon-awesome icon-mconf-approve", options + icon_constructor nil, "fa fa-thumbs-o-up icon icon-approve", options end def icon_waiting_moderation(options={}) - icon_constructor t("_other.not_approved.tooltip"), "fa fa-exclamation-circle icon-awesome icon-mconf-waiting-moderation", options + icon_constructor t("_other.not_approved.tooltip"), "fa fa-exclamation-circle icon icon-waiting-moderation", options end def icon_disapprove(options={}) - icon_constructor nil, "fa fa-thumbs-o-down icon-awesome icon-mconf-disapprove", options + icon_constructor nil, "fa fa-thumbs-o-down icon icon-disapprove", options end def icon_is_member(options={}) - icon_constructor nil, "fa fa-user-circle icon-awesome icon-mconf-is-member", options + icon_constructor nil, "fa fa-user-circle icon icon-is-member", options end def icon_options(options={}) - image_tag image_path('icons/config.svg'), class: 'icon-mconf-options' + icon_constructor nil, "icon icon-mw-options icon-options", options end def icon_join_request(options={}) - icon_constructor nil, "fa fa-hand-o-up icon-awesome icon-mconf-join-request", options + icon_constructor nil, "fa fa-hand-o-up icon icon-join-request", options end def icon_join_space(options={}) - icon_constructor nil, "fa fa-sign-in icon-awesome icon-mconf-join-space", options + icon_constructor nil, "fa fa-sign-in icon icon-join-space", options end def icon_leave_space(options={}) - icon_constructor nil, "fa fa-sign-out icon-awesome icon-mconf-leave-space", options + icon_constructor nil, "fa fa-sign-out icon icon-leave-space", options end def icon_invitation(options={}) - image_tag image_path('icons/conference-invite.svg'), class: 'icon-mconf-conference-invite' + icon_constructor nil, "icon icon-mw-conference-invite icon-conference-invite", options end def icon_list(options={}) - icon_constructor nil, "fa fa-list icon-awesome icon-mconf-list", options + icon_constructor nil, "fa fa-list icon icon-list", options end def icon_participant_confirmed(options={}) - icon_constructor nil, "fa fa-check icon-awesome icon-mconf-participant-confirmed", options + icon_constructor nil, "fa fa-check icon icon-participant-confirmed", options end def icon_participant_not_confirmed(options={}) - icon_constructor nil, "fa fa-remove icon-awesome icon-mconf-participant-not-confirmed", options + icon_constructor nil, "fa fa-remove icon icon-participant-not-confirmed", options end def icon_external_link(options={}) - icon_constructor nil, "fa fa-external-link icon-awesome icon-external-link", options + icon_constructor nil, "fa fa-external-link icon icon-external-link", options end def icon_can_rec(options={}) - icon_constructor nil, "fa fa-circle icon-awesome icon-mconf-can-rec", options + icon_constructor nil, "fa fa-circle icon icon-can-rec", options end def icon_cant_rec(options={}) - icon_constructor nil, "fa fa-circle-o icon-awesome icon-mconf-cant-rec", options + icon_constructor nil, "fa fa-circle-o icon icon-cant-rec", options end def icon_later(options={}) - icon_constructor nil, "fa fa-clock-o icon-awesome icon-mconf-later", options + icon_constructor nil, "fa fa-clock-o icon icon-later", options end def icon_add_admin(options={}) content_tag :div, :class => 'input-group' do - concat icon_constructor nil, "fa fa-wrench icon-awesome icon-mconf-stack-superuser", options.clone - concat icon_constructor nil, "fa fa-plus icon-awesome icon-mconf-stack-plus", options.clone + concat icon_constructor nil, "fa fa-wrench icon icon-stack-superuser", options.clone + concat icon_constructor nil, "fa fa-plus icon icon-stack-plus", options.clone end end def icon_add_user(options={}) content_tag :div, :class => 'input-group' do - concat icon_constructor nil, "fa fa-user icon-awesome icon-mconf-stack-user", options.clone - concat icon_constructor nil, "fa fa-plus icon-awesome icon-mconf-stack-plus", options.clone + concat icon_constructor nil, "fa fa-user icon icon-stack-user", options.clone + concat icon_constructor nil, "fa fa-plus icon icon-stack-plus", options.clone end end - def icon_conference_play - image_tag image_path('icons/conference-play.svg'), class: 'icon-mconf-conference-play' + def icon_conference_play(options={}) + icon_constructor nil, "icon icon-mw-conference-play icon-conference-play", options + end + + def icon_rec_download(options={}) + icon_constructor nil, "icon icon-mw-rec-download icon-rec-download", options end def icon_published(options={}) - content_tag :span, "•", class: "icon-awesome icon-mconf-published" + content_tag :span, "•", class: "icon icon-published" end def icon_unpublished(options={}) - content_tag :span, "•", class: "icon-awesome icon-mconf-unpublished" + content_tag :span, "•", class: "icon icon-unpublished" end def icon_options_dots(options={}) - icon_constructor nil, "fa fa-ellipsis-v icon-awesome icon-mconf-options-dots", options + icon_constructor nil, "icon icon-mw-options-dots icon-options-dots", options end private diff --git a/app/inputs/datetime_picker_input.rb b/app/inputs/datetime_picker_input.rb index 7747afdd3..fa919a279 100644 --- a/app/inputs/datetime_picker_input.rb +++ b/app/inputs/datetime_picker_input.rb @@ -11,7 +11,7 @@ def input(wrapper_options) options = merge_wrapper_options(input_html_options, wrapper_options) field = @builder.text_field(attribute_name, options) - ico1 = content_tag :i, nil, class: 'tooltipped fa fa-calendar-o icon-awesome icon-mconf-date' + ico1 = content_tag :i, nil, class: 'tooltipped fa fa-calendar-o icon icon-date' content_tag :div, "#{field}#{ico1}".html_safe, class: 'datetime-picker-input' end end diff --git a/app/inputs/showable_password_input.rb b/app/inputs/showable_password_input.rb index 648dfb5ea..673b896af 100644 --- a/app/inputs/showable_password_input.rb +++ b/app/inputs/showable_password_input.rb @@ -22,8 +22,8 @@ def input(wrapper_options) options[:class] << :"form-control" field = @builder.password_field(attribute_name, options) - ico1 = content_tag :i, nil, class: 'tooltipped fa fa-eye icon-awesome icon-mconf-show showable_password_show', title: I18n.t('_other.showable_password.show') - ico2 = content_tag :i, nil, class: 'tooltipped fa fa-eye-slash icon-awesome icon-mconf-hide showable_password_hide', title: I18n.t('_other.showable_password.hide') + ico1 = content_tag :i, nil, class: 'tooltipped fa fa-eye icon icon-show showable_password_show', title: I18n.t('_other.showable_password.show') + ico2 = content_tag :i, nil, class: 'tooltipped fa fa-eye-slash icon icon-hide showable_password_hide', title: I18n.t('_other.showable_password.hide') content_tag(:div, "#{field}#{ico1}#{ico2}".html_safe) end end diff --git a/spec/features/manage/admin_manages_recordings_spec.rb b/spec/features/manage/admin_manages_recordings_spec.rb index c1b527942..76aebcf81 100644 --- a/spec/features/manage/admin_manages_recordings_spec.rb +++ b/spec/features/manage/admin_manages_recordings_spec.rb @@ -37,15 +37,15 @@ before { visit manage_recordings_path } it { should have_css '.list-item', :count => 5 } - it { should have_css '.icon-mconf-delete', :count => 5 } + it { should have_css '.icon-delete', :count => 5 } it { should have_css '.recording-not-available-name', :count => 1 } - it { should have_css '.icon-mconf-edit', :count => 5 } - it { should have_css '.icon-mconf-publish', :count => 1 } - it { should have_css '.icon-mconf-unpublish', :count => 3 } - skip { should have_css '.icon-mconf-list.enabled', :count => 1 } # TODO: show playbacks icon - skip { should have_css '.icon-mconf-list.disabled', :count => 3 } # TODO: show playbacks icon + it { should have_css '.icon-edit', :count => 5 } + it { should have_css '.icon-publish', :count => 1 } + it { should have_css '.icon-unpublish', :count => 3 } + skip { should have_css '.icon-list.enabled', :count => 1 } # TODO: show playbacks icon + skip { should have_css '.icon-list.disabled', :count => 3 } # TODO: show playbacks icon context "recording with playback contains" do let(:recording) {@has_playback_rec} @@ -77,10 +77,10 @@ let(:recording) { @has_playback_rec } subject { page.find("#recording-#{recording.id}") } - it { should have_css '.icon-mconf-edit' } - it { should have_css '.icon-mconf-unpublish' } - it { should have_css '.icon-mconf-delete' } - it { should have_css '.icon-mconf-list.enabled' } + it { should have_css '.icon-edit' } + it { should have_css '.icon-unpublish' } + it { should have_css '.icon-delete' } + it { should have_css '.icon-list.enabled' } it { should have_link_to_edit_bigbluebutton_recording(recording) } it { should have_link_to_unpublish_bigbluebutton_recording(recording) } it { should have_link_to_delete_bigbluebutton_recording(recording) } @@ -96,10 +96,10 @@ let(:recording) { @no_playback_rec } subject { page.find("#recording-#{recording.recordid}") } - it { should have_css '.icon-mconf-edit' } - it { should have_css '.icon-mconf-unpublish' } - it { should have_css '.icon-mconf-delete' } - skip { should have_css '.icon-mconf-list.disabled' } # TODO + it { should have_css '.icon-edit' } + it { should have_css '.icon-unpublish' } + it { should have_css '.icon-delete' } + skip { should have_css '.icon-list.disabled' } # TODO it { should have_link_to_edit_bigbluebutton_recording(recording) } it { should have_link_to_unpublish_bigbluebutton_recording(recording) } it { should have_link_to_delete_bigbluebutton_recording(recording) } @@ -111,10 +111,10 @@ let(:recording) { @published_rec } subject { page.find("#recording-#{recording.recordid}") } - it { should have_css '.icon-mconf-edit' } - it { should have_css '.icon-mconf-unpublish' } - it { should have_css '.icon-mconf-delete' } - skip { should have_css '.icon-mconf-list.disabled' } # TODO + it { should have_css '.icon-edit' } + it { should have_css '.icon-unpublish' } + it { should have_css '.icon-delete' } + skip { should have_css '.icon-list.disabled' } # TODO it { should have_link_to_edit_bigbluebutton_recording(recording) } it { should have_link_to_unpublish_bigbluebutton_recording(recording) } it { should have_link_to_delete_bigbluebutton_recording(recording) } @@ -126,10 +126,10 @@ let(:recording) { @unpublished_rec } subject { page.find("#recording-#{recording.recordid}") } - it { should have_css '.icon-mconf-edit' } - it { should have_css '.icon-mconf-publish' } - it { should have_css '.icon-mconf-delete' } - skip { should have_css '.icon-mconf-list.disabled' } # TODO + it { should have_css '.icon-edit' } + it { should have_css '.icon-publish' } + it { should have_css '.icon-delete' } + skip { should have_css '.icon-list.disabled' } # TODO it { should have_link_to_edit_bigbluebutton_recording(recording) } it { should have_link_to_publish_bigbluebutton_recording(recording) } it { should have_link_to_delete_bigbluebutton_recording(recording) } @@ -141,9 +141,9 @@ let(:recording) { @unavailable_rec } subject { page.find("#recording-#{recording.recordid}") } - it { should have_css '.icon-mconf-edit' } - it { should have_css '.icon-mconf-delete' } - it { should_not have_css '.icon-mconf-list' } + it { should have_css '.icon-edit' } + it { should have_css '.icon-delete' } + it { should_not have_css '.icon-list' } it { should have_link_to_edit_bigbluebutton_recording(recording) } it { should have_link_to_delete_bigbluebutton_recording(recording) } skip { should_not have_link_to_showplayback_bigbluebutton_recording(recording) } # TODO diff --git a/spec/features/manage/admin_manages_spaces_spec.rb b/spec/features/manage/admin_manages_spaces_spec.rb index 0f1519994..a9e77d278 100644 --- a/spec/features/manage/admin_manages_spaces_spec.rb +++ b/spec/features/manage/admin_manages_spaces_spec.rb @@ -30,13 +30,13 @@ before { visit manage_spaces_path } it { should have_css '.list-item', :count => 4 } - it { should have_css '.icon-mconf-delete', :count => 4 } + it { should have_css '.icon-delete', :count => 4 } it { should have_css '.list-item-disabled', :count => 1 } - it { should have_css '.icon-mconf-enable', :count => 1 } + it { should have_css '.icon-enable', :count => 1 } - it { should have_css '.icon-mconf-edit', :count => 3 } - it { should have_css '.icon-mconf-disable', :count => 3 } + it { should have_css '.icon-edit', :count => 3 } + it { should have_css '.icon-disable', :count => 3 } skip { should have_css '.label.label-tag', :count => 3 } # TODO skip { should have_content "this one has a tag too"} # TODO @@ -84,7 +84,7 @@ it { should have_css 'img.logo-space' } it { should have_css '.management-links' } - it { should_not have_css '.icon-mconf-edit' } + it { should_not have_css '.icon-edit' } it { should_not have_content t('._other.not_approved.text') } it { should_not have_link_to_edit_space(space) } it { should have_link_to_destroy_space(space) } @@ -149,7 +149,7 @@ it { should have_css 'img.logo-space' } it { should have_css '.management-links' } - it { should_not have_css '.icon-mconf-edit' } + it { should_not have_css '.icon-edit' } it { should_not have_content t('._other.not_approved.text') } it { should_not have_link_to_edit_space(space) } it { should have_link_to_destroy_space(space) } @@ -188,11 +188,11 @@ } context 'no css should load and the page should 404' do it { should_not have_css '.list-item' } - it { should_not have_css '.icon-mconf-delete' } + it { should_not have_css '.icon-delete' } it { should_not have_css '.list-item-disabled' } - it { should_not have_css '.icon-mconf-enable' } - it { should_not have_css '.icon-mconf-edit' } - it { should_not have_css '.icon-mconf-disable'} + it { should_not have_css '.icon-enable' } + it { should_not have_css '.icon-edit' } + it { should_not have_css '.icon-disable'} it { page.status_code.should == 404 } end end diff --git a/spec/features/manage/admin_manages_users_spec.rb b/spec/features/manage/admin_manages_users_spec.rb index ba10f4d59..0f3799055 100644 --- a/spec/features/manage/admin_manages_users_spec.rb +++ b/spec/features/manage/admin_manages_users_spec.rb @@ -31,22 +31,22 @@ before { visit manage_users_path } it { should have_css '#users-list .list-item', count: 8 } - it { should have_css '#users-list .icon-mconf-delete', count: 7 } + it { should have_css '#users-list .icon-delete', count: 7 } it { should have_css '#users-list .list-item.list-item-disabled', count: 2 } - it { should have_css '#users-list .icon-mconf-enable', count: 2 } + it { should have_css '#users-list .icon-enable', count: 2 } - it { should have_css '#users-list .icon-mconf-confirm-user', count: 2 } - it { should have_css '#users-list .icon-mconf-approve', count: 2 } - it { should have_css '#users-list .icon-mconf-superuser', count: 2 } - it { should have_css '#users-list .icon-mconf-cant-rec', :count => 5 } - it { should have_css '#users-list .icon-mconf-can-rec', :count => 1 } + it { should have_css '#users-list .icon-confirm-user', count: 2 } + it { should have_css '#users-list .icon-approve', count: 2 } + it { should have_css '#users-list .icon-superuser', count: 2 } + it { should have_css '#users-list .icon-cant-rec', :count => 5 } + it { should have_css '#users-list .icon-can-rec', :count => 1 } context 'elements for the signed in user' do let(:user) { admin } subject { page.find("#user-#{user.permalink}") } - it { should have_css '.icon-mconf-superuser' } + it { should have_css '.icon-superuser' } it { should have_css '.management-links' } it { should have_content t('_other.user.administrator') } it { should have_link_to_edit_user(user) } @@ -64,7 +64,7 @@ let(:user) { @user1 } subject { page.find("#user-#{user.permalink}") } - it { should have_css '.icon-mconf-user' } + it { should have_css '.icon-user' } it { should have_css '.management-links' } it { should have_content t('_other.user.normal_user') } it { should have_link_to_edit_user(user) } @@ -80,7 +80,7 @@ let(:user) { @user_admin } subject { page.find("#user-#{user.permalink}") } - it { should have_css '.icon-mconf-superuser' } + it { should have_css '.icon-superuser' } it { should have_css '.management-links' } it { should have_content t('_other.user.administrator') } it { should have_link_to_edit_user(user) } @@ -178,7 +178,7 @@ it { should have_link_to_edit_user(user) } it { should have_link_to_destroy_user(user) } it { should have_link_to_disapprove_user(user) } - it { should have_css '.icon-mconf-superuser' } + it { should have_css '.icon-superuser' } it { should have_content t('_other.user.administrator') } it { should have_link_to_disable_user(user) } end @@ -213,8 +213,8 @@ before { visit manage_users_path } it { should have_css '.list-item', count: 7 } - it { should have_css '.icon-mconf-delete', count: 6 } - it { should have_css '.icon-mconf-superuser', count: 1 } + it { should have_css '.icon-delete', count: 6 } + it { should have_css '.icon-superuser', count: 1 } it { should have_content @user_local.full_name } it { should have_content @user_ldap.full_name } diff --git a/spec/features/spaces/creating_a_space_spec.rb b/spec/features/spaces/creating_a_space_spec.rb index 5cd6b44c8..e35ac65ba 100644 --- a/spec/features/spaces/creating_a_space_spec.rb +++ b/spec/features/spaces/creating_a_space_spec.rb @@ -150,7 +150,7 @@ def create_space_from_attrs attrs before { visit spaces_path(my_spaces: 'true', order: 'abc') } it { page.should have_content(attrs[:name]) } - it { page.should have_selector('.icon-mconf-waiting-moderation', count: 2)} + it { page.should have_selector('.icon-waiting-moderation', count: 2)} end end From 50cc83b4333b150cc9d2ec518956c024c8b45053 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Mon, 30 Oct 2017 12:56:21 -0200 Subject: [PATCH 18/75] Slight smaller navbar md better icons in the recording list --- app/assets/stylesheets/_definitions.scss | 5 ++-- app/assets/stylesheets/_mixins.scss | 2 +- .../stylesheets/app/application/base.scss | 4 ++-- .../app/application/dropdown-menu.scss | 6 +++++ .../stylesheets/app/application/icons.scss | 16 ++++++++----- .../app/application/lists-and-tables.scss | 6 ++++- .../app/shared/_recording_list.scss | 24 +++++++++++++++++++ ...tom_bigbluebutton_playback_types_helper.rb | 2 +- app/views/shared/_recording_list.html.haml | 15 ++++++------ .../shared/_recording_playback.html.haml | 4 ++-- config/locales/en/_bigbluebutton_rails.yml | 6 ++--- config/locales/pt-br/_bigbluebutton_rails.yml | 6 ++--- 12 files changed, 67 insertions(+), 29 deletions(-) diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index ef6937daa..4c0abb77d 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -12,7 +12,7 @@ // link colors $m-link-color: #2274A5; $m-link-color-hover: lighten($m-link-color, 15); -$m-link-color-active: darken($m-link-color-hover, 20); +$m-link-color-active: $m-link-color-hover; //darken($m-link-color-hover, 20); // standard colors $m-green-mconf: #004956; // #27535C @@ -163,7 +163,7 @@ $m-navbar-link-color: lighten($m-link-color, 15); $m-navbar-link-color-hover: lighten($m-navbar-link-color, 8); $m-navbar-link-color-active: $m-navbar-link-color; $m-navbar-height: 100px; -$m-navbar-btn-size: 64px; +$m-navbar-btn-size: 58px; /* $m-navbar-height: 90px; */ /* $m-navbar-btn-size: 46px; */ $m-navbar-btn-bg: $m-color-primary; @@ -292,6 +292,7 @@ $navbar-default-bg: $m-navbar-bg-color-dark; //$link-color: $m-link-color; //#1e9a50; //#187d41; $link-color: $m-link-color; //#1e9a50; //#187d41; $link-color-hover: $m-link-color-hover;//$m-bright-blue; //#2BDE73; +$link-color-active: $m-link-color-hover; $input-bg: $m-input-bg; $input-color: $m-input-color; $input-color-placeholder: $m-input-color-placeholder; diff --git a/app/assets/stylesheets/_mixins.scss b/app/assets/stylesheets/_mixins.scss index fa69245a6..8cde744da 100644 --- a/app/assets/stylesheets/_mixins.scss +++ b/app/assets/stylesheets/_mixins.scss @@ -279,7 +279,7 @@ // very specific selector se we don't mess with dropdowns and others > ul > li > a, > a { padding: (($m-navbar-height - $m-navbar-font)/2 - 2) 0; - margin: 0 18px; + margin: 0 14px; display: block; @include link-colors($m-navbar-font-color, $m-navbar-font-color-hover, $m-navbar-font-color); @include transition(background-color 0.2s ease-in); diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index 907c563b0..23295f3c9 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -364,11 +364,11 @@ form { .navbar-conf-panel { background: $m-navbar-conf-panel-bg; padding: ($m-navbar-height - $m-navbar-btn-size)/2 18px; - margin: 0 36px; + margin: 0 28px; } .btn-navbar { - $imgsize: 42px; + $imgsize: 36px; height: $m-navbar-btn-size; width: $m-navbar-btn-size; diff --git a/app/assets/stylesheets/app/application/dropdown-menu.scss b/app/assets/stylesheets/app/application/dropdown-menu.scss index 64752cc00..55c1cab90 100644 --- a/app/assets/stylesheets/app/application/dropdown-menu.scss +++ b/app/assets/stylesheets/app/application/dropdown-menu.scss @@ -19,6 +19,12 @@ $dropdown-bg-color: white; // show the menu when the dropdown is open &.open .dropdown-menu { display: block; } + + &.open a.dropdown-toggle { + &, i { + color: $m-link-color-active; + } + } } // the arrow in the top of the dropdown menu diff --git a/app/assets/stylesheets/app/application/icons.scss b/app/assets/stylesheets/app/application/icons.scss index 8a38ba8ed..2b0f29643 100644 --- a/app/assets/stylesheets/app/application/icons.scss +++ b/app/assets/stylesheets/app/application/icons.scss @@ -13,10 +13,12 @@ $light-icon-color: #aaa; color: $default-icon-color; /* so all icons look similar even though they have different aspect ratios */ - max-width: 13px; - width: 13px; + max-width: 16px; + width: 16px; text-align: center; display: inline-table; + font-size: 18px; + line-height: 1; } h2 .icon { @@ -261,14 +263,16 @@ a:not(.btn) .icon { &.icon-published { color: $m-green; - font-size: $m-font-big; - line-height: 1; + font-size: $m-font-bigger; + line-height: 0.5; + vertical-align: middle; } &.icon-unpublished { color: $m-red; - font-size: $m-font-big; - line-height: 1; + font-size: $m-font-bigger; + line-height: 0.5; + vertical-align: middle; } &.icon-event {} diff --git a/app/assets/stylesheets/app/application/lists-and-tables.scss b/app/assets/stylesheets/app/application/lists-and-tables.scss index ec72ddcb6..61f0cfd0a 100644 --- a/app/assets/stylesheets/app/application/lists-and-tables.scss +++ b/app/assets/stylesheets/app/application/lists-and-tables.scss @@ -87,7 +87,6 @@ table, .table { margin: 0; font-size: $m-font-medium; - font-weight: $m-font-weight-light; thead:first-child > tr:first-child > th { /* very specific to override bootstrap */ font-size: $m-font-small; @@ -107,6 +106,7 @@ table, .table { td { background: $m-site-bg-color; padding: 12px; + vertical-align: top; } &:last-child { @@ -127,6 +127,10 @@ table, .table { border-top-right-radius: $m-border-radius-large; border-bottom-right-radius: $m-border-radius-large; /* border-right: 30px solid $m-site-content-bg-color; */ + } + + td.thin { + font-weight: $m-font-weight-light; } } diff --git a/app/assets/stylesheets/app/shared/_recording_list.scss b/app/assets/stylesheets/app/shared/_recording_list.scss index 18e68b215..489f83733 100644 --- a/app/assets/stylesheets/app/shared/_recording_list.scss +++ b/app/assets/stylesheets/app/shared/_recording_list.scss @@ -7,6 +7,7 @@ .recording-playback-links { margin: 0; padding: 0; + float: right; } .rec-not-recorded-col { @@ -17,4 +18,27 @@ float: left; margin: 0 4px; } + + .rec-playback-col { + text-align: right; + + .recording-playback-options { + display: inline-block; + float: right; + } + } + + .recording-playback-links, .recording-playback-options { + i { + font-size: 20px; + color: #666; + width: 20px; + height: 20px; + margin: 0 3px; + } + } + + .recording-playback-options i { + color: #bbb; + } } diff --git a/app/helpers/custom_bigbluebutton_playback_types_helper.rb b/app/helpers/custom_bigbluebutton_playback_types_helper.rb index 1ecec1f7d..14f11c9b1 100644 --- a/app/helpers/custom_bigbluebutton_playback_types_helper.rb +++ b/app/helpers/custom_bigbluebutton_playback_types_helper.rb @@ -22,7 +22,7 @@ def link_to_playback(recording, playback, options={}) link_params.merge!(name: name.parameterize('_')) end - if playback.identifier == 'presentation_video' + if ['presentation_video', 'presentation_export'].include?(playback.identifier) playback_icon = icon_rec_download else playback_icon = icon_conference_play diff --git a/app/views/shared/_recording_list.html.haml b/app/views/shared/_recording_list.html.haml index 6d42d8214..21a5e0b4a 100644 --- a/app/views/shared/_recording_list.html.haml +++ b/app/views/shared/_recording_list.html.haml @@ -40,7 +40,7 @@ - cls = recording.present? ? '' : 'fadeout' %tr{ class: cls } - %td.meeting-date-col + %td.thin.meeting-date-col - m_create = format_date(meeting.create_time, :long) - if recording - rec_create = format_date(recording.start_time, :long) @@ -72,10 +72,10 @@ - else %span= recording.description - %td.rec-duration-col + %td.thin.rec-duration-col %span= distance_of_time_in_words_to_now(Time.now + recording.duration, include_seconds: false) - %td.rec-status-col + %td.thin.rec-status-col - if recording.available? .dropdown .dropdown-toggle{ data: { toggle: "dropdown" } } @@ -98,11 +98,9 @@ = t('.publish') %td.rec-playback-col - = render partial: 'shared/recording_playback', locals: { recording: recording } - - .dropdown - .dropdown-toggle{ data: { toggle: "dropdown" } }= icon_options_dots - %ul.dropdown-menu + .dropdown.recording-playback-options + %a.dropdown-toggle{ href: '#', data: { toggle: "dropdown" } }= icon_options_dots + %ul.dropdown-menu.dropdown-menu-right %li - if recording.room.owner_type == "User" - if can?(:user_edit, recording) @@ -118,6 +116,7 @@ = link_to bigbluebutton_recording_path(recording, redir_url: redir_to), data: { confirm: t('.destroy_confirm') }, method: :delete do = icon_delete(alt: t('.delete')) = t('.delete') + = render partial: 'shared/recording_playback', locals: { recording: recording } - else %td.rec-description-col= t('.not_recorded') diff --git a/app/views/shared/_recording_playback.html.haml b/app/views/shared/_recording_playback.html.haml index d3adb7518..0fb55eded 100644 --- a/app/views/shared/_recording_playback.html.haml +++ b/app/views/shared/_recording_playback.html.haml @@ -4,14 +4,14 @@ - show_invisible = set_default(local_assigns, "show_invisible", false) -- unless recording.available +- if !recording.available %ul.recording-playback-links %li %span.thread-playback-processing= '...' = icon_help(t('.processing_tip')) -# %span.playback-unavailable= t('.unavailable') -# = icon_help(t('.unavailable_tip')) -- else +- elsif recording.published? - if recording.playback_formats.size > 0 %ul.recording-playback-links - recording.playback_formats.ordered.each do |playback| diff --git a/config/locales/en/_bigbluebutton_rails.yml b/config/locales/en/_bigbluebutton_rails.yml index 134a4438a..02c58c04e 100644 --- a/config/locales/en/_bigbluebutton_rails.yml +++ b/config/locales/en/_bigbluebutton_rails.yml @@ -79,13 +79,13 @@ en: success: "The playback type was successfully updated." presentation: name: "Play" - tip: "Plays the recording in an HTML5 page. The recording is not downloaded to your computer and will require Internet to be reproduced." + tip: "Play the recording online" presentation_export: name: "Download HTML" - tip: "Downloads an HTML page that you can use to reproduce the recording offline using your browser. Has all the features of the HTML player online plus the advantage of also working offline. Currently can only be reproduced using the Firefox browser." + tip: "Download the recording for offline playback" presentation_video: name: "Download" - tip: "Downloads a vídeo file (uses the WebM format) with the recording. You can use this video file to watch the recording offline and to share this recording in other websites." + tip: "Download the recording as a video file" recordings: default: description: "Meeting held on %{time} (UTC)" diff --git a/config/locales/pt-br/_bigbluebutton_rails.yml b/config/locales/pt-br/_bigbluebutton_rails.yml index bedf07052..6cb6dff6d 100644 --- a/config/locales/pt-br/_bigbluebutton_rails.yml +++ b/config/locales/pt-br/_bigbluebutton_rails.yml @@ -79,13 +79,13 @@ pt-br: success: "Formato de reprodução atualizado com sucesso." presentation: name: "Reproduzir" - tip: "Reproduz a gravação em uma página HTML5. Não é feito download da gravação para o seu computador, portanto exige internet para a gravação ser reproduzida." + tip: "Reproduzir gravação online" presentation_export: name: "Download HTML" - tip: "Faz o download de uma página HTML que você pode usar para reproduzir a gravação usando o seu navegador mesmo sem conexão com a internet. Tem todas as características da versão online, mas com a vantagem de não exigir internet. Atualmente só pode ser reproduzida usando o navegador Firefox." + tip: "Download da gravação para reprodução offline" presentation_video: name: "Download" - tip: "Realiza o download da gravação em um arquivo de vídeo (no formato WebM). Você pode usar esse arquivo de vídeo para assistir a gravação offline e/ou compartilhar esta gravação em outros sites." + tip: "Download da gravação em arquivo de vídeo" recordings: default: description: "Reunião realizada em %{time} (UTC)" From 12d8208c425cfad1977cc07a0ad974ae5e962d71 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Mon, 30 Oct 2017 18:33:12 -0200 Subject: [PATCH 19/75] First pass on designing modals --- app/assets/stylesheets/_definitions.scss | 11 +++- .../app/application/bootstrap-custom.scss | 55 ------------------- .../app/application/lists-and-tables.scss | 2 +- .../stylesheets/app/application/modal.scss | 53 ++++++++++++++++++ .../app/application/simple_form.scss | 32 ++++++++++- app/assets/stylesheets/app/my/home.scss | 2 +- app/assets/stylesheets/app/my/meetings.scss | 2 +- app/assets/stylesheets/application.css | 1 + .../user_edit.html.haml | 20 +++---- config/locales/en/mconf.yml | 2 +- config/locales/pt-br/mconf.yml | 2 +- 11 files changed, 110 insertions(+), 72 deletions(-) create mode 100644 app/assets/stylesheets/app/application/modal.scss diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index 4c0abb77d..3103a1015 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -59,7 +59,7 @@ $m-font-h3-multiplier: 1.4; $m-font-h4-multiplier: 1.2; $m-font-h5-multiplier: 1; $m-font-h6-multiplier: 1; -$m-font-weight-light: 300; +$m-font-weight-thin: 300; $m-font-weight-normal: 400; $m-font-weight-bold: 700; $m-font-weight-bolder: 900; @@ -312,6 +312,15 @@ $tooltip-bg: $m-tooltip-bg; $tooltip-opacity: $m-tooltip-opacity; $tooltip-arrow-width: $m-tooltip-arrow-width; $tooltip-arrow-color: $m-tooltip-arrow-color; +$padding-base-vertical: 8px; +$padding-base-horizontal: 16px; +$padding-large-vertical: 12px; +$padding-large-horizontal: 18px; +$padding-small-vertical: 6px; +$padding-small-horizontal: 12px; +$font-size-base: $m-font-normal; +$font-size-large: $m-font-big; +$font-size-small: $m-font-small; // Themes: if using a theme, import it here! // @import "../themes/theme-name/stylesheets/variables"; diff --git a/app/assets/stylesheets/app/application/bootstrap-custom.scss b/app/assets/stylesheets/app/application/bootstrap-custom.scss index 79933fe50..39d53a801 100644 --- a/app/assets/stylesheets/app/application/bootstrap-custom.scss +++ b/app/assets/stylesheets/app/application/bootstrap-custom.scss @@ -14,38 +14,6 @@ * Customized styles */ -.modal .modal-header { - padding-top: 20px; - - h1, h2, h3, h4, h5 { - margin: 0; - } -} - - -// override a few things in inputs that we can't do with variables only -.form-control { - box-shadow: none; - padding: 12px; - height: 48px; - - &:focus { - background: $m-input-focus-bg; - } -} -.has-error .form-control:focus { - box-shadow: none; -} - -label { - font-weight: normal; - color: $m-font-strong; -} - -/* Align the checkbox with the text beside it */ -.checkbox input[type='checkbox'] { - margin-top: 3px; -} // the background on selected items in a pagination list is dark, so we have to make // the links bright @@ -57,29 +25,6 @@ label { } } -// make the background of modals darker -.modal-scrollable { - background: rgba(0,0,0,0.4); -} -.modal-open .modal { - background: none; -} - -// for modals that don't open, show an error -.modal .modal-error { - background: $m-alert-danger-font; - color: #fff; - @include font-size($m-font-double); - text-align: center; - padding: 40px; -} - -// for some reason it stays on top of modals if not resetting the z-index -.input-group .form-control { - z-index: auto; -} - - /* .form-inline { */ /* padding: 0; */ /* margin: 0; */ diff --git a/app/assets/stylesheets/app/application/lists-and-tables.scss b/app/assets/stylesheets/app/application/lists-and-tables.scss index 61f0cfd0a..873d7bf26 100644 --- a/app/assets/stylesheets/app/application/lists-and-tables.scss +++ b/app/assets/stylesheets/app/application/lists-and-tables.scss @@ -130,7 +130,7 @@ table, .table { } td.thin { - font-weight: $m-font-weight-light; + font-weight: $m-font-weight-thin; } } diff --git a/app/assets/stylesheets/app/application/modal.scss b/app/assets/stylesheets/app/application/modal.scss new file mode 100644 index 000000000..11b362eb0 --- /dev/null +++ b/app/assets/stylesheets/app/application/modal.scss @@ -0,0 +1,53 @@ +@import "definitions"; + +.modal .modal-header { + padding-top: 20px 15px; + border-bottom: 0; + + h1, h2, h3, h4, h5 { + margin: 0; + font-size: $m-font-normal * $m-font-h2-multiplier; + font-weight: $m-font-weight-bold; + line-height: 1; + } + + .close { + background: darken($m-site-bg-color, 20); + border: 1px solid #000; + padding: 0; + border-radius: 50%; + width: 24px; + height: 24px; + vertical-align: middle; + } +} + +// make the background of modals darker +.modal-scrollable { + background: rgba(0,0,0,0.4); +} +.modal-open .modal { + background: none; +} + +// for modals that don't open, show an error +.modal .modal-error { + background: $m-alert-danger-font; + color: #fff; + @include font-size($m-font-double); + text-align: center; + padding: 40px; +} + +// for some reason it stays on top of modals if not resetting the z-index +.input-group .form-control { + z-index: auto; +} + +.modal-content { + background: $m-site-bg-color; +} + +.modal-footer { + border-top: 0; +} diff --git a/app/assets/stylesheets/app/application/simple_form.scss b/app/assets/stylesheets/app/application/simple_form.scss index 9219ca16b..24907ae5d 100644 --- a/app/assets/stylesheets/app/application/simple_form.scss +++ b/app/assets/stylesheets/app/application/simple_form.scss @@ -53,7 +53,7 @@ clear: both; padding-top: 16px; margin-top: 16px; - border-top: 1px solid $m-border-color-normal; + /* border-top: 1px solid $m-border-color-normal; */ text-align: right; // wider space between form buttons and links @@ -101,6 +101,11 @@ padding-top: 6px; } } + + label { + font-size: $m-font-small; + font-weight: $m-font-weight-thin; + } } .modal .modal-footer .form-actions { @@ -164,3 +169,28 @@ padding: 8px; } } + +// override a few things in inputs that we can't do with variables only +.form-control { + box-shadow: none; + /* padding: 12px 18px; */ + height: auto; + font-size: $m-font-medium; + + &:focus { + background: $m-input-focus-bg; + } +} +.has-error .form-control:focus { + box-shadow: none; +} + +/* label { */ +/* font-weight: normal; */ +/* color: $m-font-strong; */ +/* } */ + +/* Align the checkbox with the text beside it */ +.checkbox input[type='checkbox'] { + margin-top: 3px; +} diff --git a/app/assets/stylesheets/app/my/home.scss b/app/assets/stylesheets/app/my/home.scss index 9112fd1bf..b3c21f60a 100644 --- a/app/assets/stylesheets/app/my/home.scss +++ b/app/assets/stylesheets/app/my/home.scss @@ -38,7 +38,7 @@ body.my.home, body.my.activity, body.my.meetings { } h2 { - font-weight: $m-font-weight-light; + font-weight: $m-font-weight-thin; text-align: center; max-width: 70%; margin: 0 auto; diff --git a/app/assets/stylesheets/app/my/meetings.scss b/app/assets/stylesheets/app/my/meetings.scss index e230981b7..3906baa28 100644 --- a/app/assets/stylesheets/app/my/meetings.scss +++ b/app/assets/stylesheets/app/my/meetings.scss @@ -12,7 +12,7 @@ body.my.meetings { &.empty { h2 { - font-weight: $m-font-weight-light; + font-weight: $m-font-weight-thin; text-align: center; max-width: 70%; margin: 0 auto; diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index f26b36b42..cfa6948dd 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -19,6 +19,7 @@ *= require ./app/application/icons *= require ./app/application/simple_form *= require ./app/application/dropdown-menu + *= require ./app/application/modal *= require ./app/application/notifications *= require ./app/application/tooltips *= require ./app/application/tags diff --git a/app/views/custom_bigbluebutton_rooms/user_edit.html.haml b/app/views/custom_bigbluebutton_rooms/user_edit.html.haml index a928ca439..018d66f0d 100644 --- a/app/views/custom_bigbluebutton_rooms/user_edit.html.haml +++ b/app/views/custom_bigbluebutton_rooms/user_edit.html.haml @@ -11,11 +11,11 @@ = disable_autocomplete_for('bigbluebutton_room[name]') = f.input :name, :as => :string, :hint => t('simple_form.hints.user.bigbluebutton_room.name') - - if can?(:change_url, @room) - = disable_autocomplete_for('bigbluebutton_room[param]') - = f.input :param, :as => :string, :hint => t('simple_form.hints.user.bigbluebutton_room.url'), :wrapper => :vertical_input_group do - = content_tag :span, webconf_url_prefix, class: "input-group-addon" - = f.input_field :param, class: "form-control" + -# - if can?(:change_url, @room) + -# = disable_autocomplete_for('bigbluebutton_room[param]') + -# = f.input :param, :as => :string, :hint => t('simple_form.hints.user.bigbluebutton_room.url'), :wrapper => :vertical_input_group do + -# = content_tag :span, webconf_url_prefix, class: "input-group-addon" + -# = f.input_field :param, class: "form-control" .form-group.room-visibility = f.input :private, hint: t('simple_form.hints.user.bigbluebutton_room.private'), wrapper: :label_only, label: t('.visibility') @@ -24,14 +24,14 @@ .btn-group{ 'data-toggle': "buttons" } - cls = !@room.private ? 'active' : nil - %label.btn.btn-default{ class: cls, 'data-attr-value': '0' } + .btn.btn-default{ class: cls, 'data-attr-value': '0' } - checked = !@room.private ? 'checked' : nil %input{ type: 'radio', checked: checked } = icon_space_public = t('.public') - cls = @room.private ? 'active' : nil - %label.btn.btn-default{ class: cls, 'data-attr-value': '1' } + .btn.btn-default{ class: cls, 'data-attr-value': '1' } - checked = @room.private ? 'checked' : nil %input{ type: 'radio', checked: checked } = icon_space_private @@ -39,13 +39,13 @@ = f.input :attendee_key, as: :showable_password, label: false + = f.input :default_layout do + = f.select :default_layout, @room.available_layouts_for_select, { :include_blank => t('.layout_empty_option') }, { :class => "form-control" } - unless @room.dial_number.blank? - = f.input :dial_number, as: :string, disabled: true + -# = f.input :dial_number, as: :string, disabled: true - welcome_msg = t("bigbluebutton_rails.rooms.default_welcome_msg_dial_number", :name => "%%CONFNAME%%", :voice_number => "%%DIALNUM%%") - else - welcome_msg = t("bigbluebutton_rails.rooms.default_welcome_msg", :name => "%%CONFNAME%%") = f.input :welcome_msg, :as => :text, :hint => t('simple_form.hints.user.bigbluebutton_room.welcome_msg'), :placeholder => welcome_msg - = f.input :default_layout do - = f.select :default_layout, @room.available_layouts_for_select, { :include_blank => t('.layout_empty_option') }, { :class => "form-control" } .modal-footer.form-actions = f.button :wrapped, t("save"), :class => "btn btn-primary", :cancel_modal => true diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index bcc81355e..7fe9cd45f 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -593,7 +593,7 @@ en: layout_empty_option: "" private: "Private" public: "Public" - subtitle: "Web conference room configurations" + subtitle: "Personalize your room" visibility: "Visibility" custom_bigbluebutton_recordings: edit: diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index 348395b73..f5f81a7da 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -601,7 +601,7 @@ pt-br: layout_empty_option: "" private: "Privada" public: "Pública" - subtitle: "Configurações da sala de conferência web" + subtitle: "Personalizar sala" visibility: "Visibilidade" custom_bigbluebutton_recordings: edit: From fc4520e75ea45fa158902170c5c9b86e43b92a1c Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Tue, 31 Oct 2017 16:37:41 -0200 Subject: [PATCH 20/75] Small adjustment in padding of inputs Makes inputs and btns more similar. --- app/assets/stylesheets/_definitions.scss | 2 +- app/assets/stylesheets/app/application/simple_form.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index 3103a1015..e1ceb6dda 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -48,7 +48,7 @@ $m-active-item-border: 4px solid $m-active-item-border-color; $m-font-normal: 14px; //0.85rem; /* 14px, base size for all fonts */ $m-font-mini: $m-font-normal * 0.8; $m-font-small: $m-font-normal * 0.9; -$m-font-medium: $m-font-normal * 1.2; +$m-font-medium: 16px; $m-font-big: $m-font-normal * 1.4; $m-font-bigger: $m-font-normal * 1.8; $m-font-double: $m-font-normal * 2; diff --git a/app/assets/stylesheets/app/application/simple_form.scss b/app/assets/stylesheets/app/application/simple_form.scss index 24907ae5d..60cf103c0 100644 --- a/app/assets/stylesheets/app/application/simple_form.scss +++ b/app/assets/stylesheets/app/application/simple_form.scss @@ -173,7 +173,7 @@ // override a few things in inputs that we can't do with variables only .form-control { box-shadow: none; - /* padding: 12px 18px; */ + padding: 7px 10px; height: auto; font-size: $m-font-medium; From 39a9ba85a5aadba2487b50018035d402b59e6926 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 1 Nov 2017 18:30:27 -0200 Subject: [PATCH 21/75] Fix a few tests after the design changes --- app/views/join_requests/show.html.haml | 14 +++++++------- spec/controllers/registrations_controller_spec.rb | 2 +- spec/support/feature_helpers.rb | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/views/join_requests/show.html.haml b/app/views/join_requests/show.html.haml index ca918f928..99c1c808a 100644 --- a/app/views/join_requests/show.html.haml +++ b/app/views/join_requests/show.html.haml @@ -4,13 +4,13 @@ - is_candidate = candidate == current_user - is_other = !is_introducer && !is_candidate -= content_for :sidebar do - - if @space.users.include?(current_user) - - spaces_menu_at :users - = render 'spaces/sidebar', space: @space, full: false - - else - - home_navbar_menu_at(:spaces) - = render "my/sidebar", user_spaces: @user_spaces +-# = content_for :sidebar do +-# - if @space.users.include?(current_user) +-# - spaces_menu_at :users +-# = render 'spaces/sidebar', space: @space, full: false +-# - else +-# - home_navbar_menu_at(:spaces) +-# = render "my/sidebar", user_spaces: @user_spaces #join-requests-show diff --git a/spec/controllers/registrations_controller_spec.rb b/spec/controllers/registrations_controller_spec.rb index d3f399059..7b0bcf821 100644 --- a/spec/controllers/registrations_controller_spec.rb +++ b/spec/controllers/registrations_controller_spec.rb @@ -15,7 +15,7 @@ describe "if registrations are enabled in the site" do before(:each) { get :new } it { should render_template(:new) } - it { should render_with_layout("navbar_bg") } + it { should render_with_layout("application") } end describe "if registrations are disabled in the site" do diff --git a/spec/support/feature_helpers.rb b/spec/support/feature_helpers.rb index 3d2846360..470be1587 100644 --- a/spec/support/feature_helpers.rb +++ b/spec/support/feature_helpers.rb @@ -76,7 +76,7 @@ def register_with(attrs, visit=true) find("#footer-languages [href='#{attrs[:different_locale]}']", match: :first).click if attrs[:different_locale] fill_in "user[email]", with: attrs[:email] fill_in "user[profile_attributes][full_name]", with: attrs[:profile_attributes][:full_name] if attrs[:profile_attributes] - fill_in "user[username]", with: attrs[:username] + # fill_in "user[username]", with: attrs[:username] fill_in "user[password]", with: attrs[:password] fill_in "user[password_confirmation]", with: attrs[:password_confirmation] || attrs[:password] click_button I18n.t("registrations.signup_form.register") From f377db888066009b756353462672f5b8c2813f5d Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Thu, 2 Nov 2017 20:12:26 -0200 Subject: [PATCH 22/75] Update FriendlyId and auto gen User#username and Space#permalink --- Gemfile | 2 +- Gemfile.lock | 6 +++--- app/models/space.rb | 2 +- app/models/user.rb | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index 1de29f027..9509c4407 100644 --- a/Gemfile +++ b/Gemfile @@ -30,7 +30,7 @@ gem 'chronic' gem 'rails_autolink', '~> 1.1.0' gem 'simple_form', '~> 3.4.0' gem 'acts_as_tree', '~> 2.0.0' -gem 'friendly_id', '~> 5.0.4' +gem 'friendly_id', '~> 5.0' gem 'i18n-js', '~> 3.0.0.rc12' gem 'rabl' gem 'yajl-ruby' # json parser for rabl diff --git a/Gemfile.lock b/Gemfile.lock index 3d0d8f4bb..2065f328c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -229,7 +229,7 @@ GEM railties (>= 3.2, < 5.1) fooldap (0.0.2) ruby-ldapserver - friendly_id (5.0.4) + friendly_id (5.2.3) activerecord (>= 4.0.0) geocoder (1.2.9) gravatar_image_tag (1.2.0) @@ -588,7 +588,7 @@ DEPENDENCIES font-awesome-rails (~> 4.0) fooldap forgery! - friendly_id (~> 5.0.4) + friendly_id (~> 5.0) geocoder gravatar_image_tag haml @@ -656,4 +656,4 @@ DEPENDENCIES zonebie BUNDLED WITH - 1.13.7 + 1.15.4 diff --git a/app/models/space.rb b/app/models/space.rb index 2dec85af6..22c83779e 100644 --- a/app/models/space.rb +++ b/app/models/space.rb @@ -90,7 +90,7 @@ class Space < ActiveRecord::Base # the friendly name / slug for the space extend FriendlyId - friendly_id :permalink + friendly_id :name, use: :slugged, slug_column: :permalink after_validation :check_errors_on_bigbluebutton_room diff --git a/app/models/user.rb b/app/models/user.rb index 00b864940..e98d600ef 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -45,7 +45,7 @@ def self.find_first_by_auth_conditions(warden_conditions) room_param_uniqueness: true extend FriendlyId - friendly_id :username + friendly_id :full_name, use: :slugged, slug_column: :username validates :email, uniqueness: true, presence: true, email: true From 6974961a0e8cb5616addfd9cddc46b6e73084d92 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Thu, 2 Nov 2017 20:53:54 -0200 Subject: [PATCH 23/75] Fix a few more tests after the new design changes --- app/views/devise/shared/_links.html.haml | 24 +++++----- app/views/registrations/new.html.haml | 1 + app/views/sessions/new.html.haml | 1 + spec/features/ldap/misconfiguration_spec.rb | 4 -- spec/features/ldap/user_signs_in_spec.rb | 10 ++++- .../manage/admin_manages_spaces_spec.rb | 16 +++---- .../features/shibboleth/user_signs_in_spec.rb | 45 +++++++++++++++---- 7 files changed, 66 insertions(+), 35 deletions(-) diff --git a/app/views/devise/shared/_links.html.haml b/app/views/devise/shared/_links.html.haml index 578468fcf..70d22c5ca 100644 --- a/app/views/devise/shared/_links.html.haml +++ b/app/views/devise/shared/_links.html.haml @@ -6,21 +6,21 @@ -# %h3= t('.other_options') %ul#login-extra-links - -# we show this even if local auth is disabled because admins can still sign in - - if controller_name != 'sessions' - %li= link_to t('.login.default'), login_path + -# -# we show this even if local auth is disabled because admins can still sign in + -# - if controller_name != 'sessions' + -# %li= link_to t('.login.default'), login_path - -# we show this even if local auth is disabled because admins can still sign in - - if devise_mapping.recoverable? && controller_name != 'passwords' - %li= link_to t('.lost_password'), new_password_path(resource_name) + -# -# we show this even if local auth is disabled because admins can still sign in + -# - if devise_mapping.recoverable? && controller_name != 'passwords' + -# %li= link_to t('.lost_password'), new_password_path(resource_name) - - if registration_enabled - - if devise_mapping.confirmable? && controller_name != 'confirmations' - %li= link_to t(".resend_confirmation_email"), new_confirmation_path(resource_name) + -# - if registration_enabled + -# - if devise_mapping.confirmable? && controller_name != 'confirmations' + -# %li= link_to t(".resend_confirmation_email"), new_confirmation_path(resource_name) - - if registration_enabled - - if devise_mapping.registerable? && controller_name != 'registrations' - %li= link_to t('.register'), register_path + -# - if registration_enabled + -# - if devise_mapping.registerable? && controller_name != 'registrations' + -# %li= link_to t('.register'), register_path - if shib_enabled %li= link_to t('.login.federation'), shibboleth_path diff --git a/app/views/registrations/new.html.haml b/app/views/registrations/new.html.haml index f710f060e..5d4456b7d 100644 --- a/app/views/registrations/new.html.haml +++ b/app/views/registrations/new.html.haml @@ -9,3 +9,4 @@ %h1= t('.title') = render partial: 'signup_form' = render partial: 'shared/social_login' + = render partial: 'devise/shared/links' diff --git a/app/views/sessions/new.html.haml b/app/views/sessions/new.html.haml index bc5847334..efb52e839 100644 --- a/app/views/sessions/new.html.haml +++ b/app/views/sessions/new.html.haml @@ -9,3 +9,4 @@ %h1= t('.title') = render partial: 'sessions/login_form' = render partial: 'shared/social_login' + = render partial: 'devise/shared/links' diff --git a/spec/features/ldap/misconfiguration_spec.rb b/spec/features/ldap/misconfiguration_spec.rb index df21e8394..29f3afa01 100644 --- a/spec/features/ldap/misconfiguration_spec.rb +++ b/spec/features/ldap/misconfiguration_spec.rb @@ -26,8 +26,6 @@ user = FactoryGirl.create(:user, username: 'user-1', password: 'password') sign_in_with user.email, user.password - expect(page).to have_title(I18n.t('home.my')) - expect(page).to have_content(I18n.t('home.my_spaces')) expect(current_path).to eq(my_home_path) end @@ -37,8 +35,6 @@ user = FactoryGirl.create(:user, username: 'user-1', password: 'password') sign_in_with user.email, user.password - expect(page).to have_title(I18n.t('home.my')) - expect(page).to have_content(I18n.t('home.my_spaces')) expect(current_path).to eq(my_home_path) end diff --git a/spec/features/ldap/user_signs_in_spec.rb b/spec/features/ldap/user_signs_in_spec.rb index 3a92fdb98..77d85e716 100644 --- a/spec/features/ldap/user_signs_in_spec.rb +++ b/spec/features/ldap/user_signs_in_spec.rb @@ -30,7 +30,10 @@ it { current_path.should eq(my_home_path) } it { should have_content @ldap_attrs[:username] } - it { should have_content @ldap_attrs[:email] } + it { + visit edit_user_path(User.last) + should have_content @ldap_attrs[:email] + } it("does not update local sign in date") { LdapToken.last.user.current_local_sign_in_at.should eq nil } @@ -48,7 +51,10 @@ it { current_path.should eq(my_home_path) } it { should have_content user.name } - it { should have_content user.email } + it { + visit edit_user_path(user) + should have_content user.email + } it("updates local sign in date") { user.reload.current_local_sign_in_at.to_i.should be >= @startedAt.to_i } diff --git a/spec/features/manage/admin_manages_spaces_spec.rb b/spec/features/manage/admin_manages_spaces_spec.rb index a9e77d278..97bb2c32b 100644 --- a/spec/features/manage/admin_manages_spaces_spec.rb +++ b/spec/features/manage/admin_manages_spaces_spec.rb @@ -54,7 +54,7 @@ let(:space) { @approved_space } subject { page.find("#space-#{space.permalink}") } - it { should have_css 'img.logo-space' } + it { should have_css '.logo-space' } it { should have_css '.management-links' } it { should_not have_content t('._other.not_approved.text') } it { should have_link_to_edit_space(space) } @@ -68,7 +68,7 @@ let(:space) { @not_approved_space } subject { page.find("#space-#{space.permalink}") } - it { should have_css 'img.logo-space' } + it { should have_css '.logo-space' } it { should have_css '.management-links' } it { should have_content t('._other.not_approved.text') } it { should have_link_to_edit_space(space) } @@ -82,7 +82,7 @@ let(:space) { @disabled_space } subject { page.find("#space-#{space.permalink}") } - it { should have_css 'img.logo-space' } + it { should have_css '.logo-space' } it { should have_css '.management-links' } it { should_not have_css '.icon-edit' } it { should_not have_content t('._other.not_approved.text') } @@ -98,7 +98,7 @@ let(:space) { @enabled_space } subject { page.find("#space-#{space.permalink}") } - it { should have_css 'img.logo-space' } + it { should have_css '.logo-space' } it { should have_css '.management-links' } it { should_not have_content t('._other.not_approved.text') } it { should have_link_to_edit_space(space) } @@ -119,7 +119,7 @@ let(:space) { @approved_space } subject { page.find("#space-#{space.permalink}") } - it { should have_css 'img.logo-space' } + it { should have_css '.logo-space' } it { should have_css '.management-links' } it { should_not have_content t('._other.not_approved.text') } it { should have_link_to_edit_space(space) } @@ -133,7 +133,7 @@ let(:space) { @not_approved_space } subject { page.find("#space-#{space.permalink}") } - it { should have_css 'img.logo-space' } + it { should have_css '.logo-space' } it { should have_css '.management-links' } it { should have_content t('._other.not_approved.text') } it { should have_link_to_edit_space(space) } @@ -147,7 +147,7 @@ let(:space) { @disabled_space } subject { page.find("#space-#{space.permalink}") } - it { should have_css 'img.logo-space' } + it { should have_css '.logo-space' } it { should have_css '.management-links' } it { should_not have_css '.icon-edit' } it { should_not have_content t('._other.not_approved.text') } @@ -163,7 +163,7 @@ let(:space) { @enabled_space } subject { page.find("#space-#{space.permalink}") } - it { should have_css 'img.logo-space' } + it { should have_css '.logo-space' } it { should have_css '.management-links' } it { should_not have_content t('._other.not_approved.text') } it { should have_link_to_edit_space(space) } diff --git a/spec/features/shibboleth/user_signs_in_spec.rb b/spec/features/shibboleth/user_signs_in_spec.rb index 4f84d8431..b92f56ee3 100644 --- a/spec/features/shibboleth/user_signs_in_spec.rb +++ b/spec/features/shibboleth/user_signs_in_spec.rb @@ -28,7 +28,10 @@ it { current_path.should eq(my_home_path) } it { should have_content @attrs[:profile_attributes][:full_name] } - it { should have_content @attrs[:email] } + it { + visit edit_user_path(User.last) + should have_content @attrs[:email] + } it { has_success_message strip_links(t('shibboleth.create_association.account_created', :url => new_user_password_path))} it { should_not have_content t('my.home.not_confirmed') } context "should generate a RecentActivity" do @@ -70,7 +73,10 @@ it { current_path.should eq(my_home_path) } it { should have_content @attrs[:profile_attributes][:full_name] } - it { should have_content @attrs[:email] } + it { + visit edit_user_path(User.last) + should have_content @attrs[:email] + } end context 'and the user already has another account' do @@ -213,7 +219,10 @@ it { current_path.should eq(my_home_path) } it { should have_content user.full_name } - it { should have_content user.email } + it { + visit edit_user_path(user) + should have_content user.email + } end context "if the site is set to update user information" do @@ -237,9 +246,15 @@ it { current_path.should eq(my_home_path) } it { should have_content new_name } - it { should have_content new_email } - it { should_not have_content @old_email } it { should_not have_content @old_name } + it { + visit edit_user_path(user) + should have_content new_email + } + it { + visit edit_user_path(user) + should_not have_content @old_email + } end context "and the user account was not created by shib" do @@ -260,9 +275,15 @@ it { current_path.should eq(my_home_path) } it { should_not have_content new_name } - it { should_not have_content new_email } - it { should have_content @old_email } it { should have_content @old_name } + it { + visit edit_user_path(user) + should_not have_content new_email + } + it { + visit edit_user_path(user) + should have_content @old_email + } end end @@ -287,9 +308,15 @@ it { current_path.should eq(my_home_path) } it { should_not have_content new_name } - it { should_not have_content new_email } - it { should have_content @old_email } it { should have_content @old_name } + it { + visit edit_user_path(user) + should_not have_content new_email + } + it { + visit edit_user_path(user) + should have_content @old_email + } end end From e7413b59e6e3b2b09fb60d74515b9b534c98b34a Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 3 Nov 2017 13:24:33 -0200 Subject: [PATCH 24/75] Fix tests after new design and a few code adjustments for it A few improvements in the FriendlyId configurations on User and Space to adapt to the new definitions (now slugs are auto-generated, not informed by the user anymore). --- .../stylesheets/app/application/base.scss | 5 +++ app/controllers/registrations_controller.rb | 2 +- app/models/space.rb | 5 ++- app/models/user.rb | 5 ++- app/views/devise/shared/_links.html.haml | 8 ++-- app/views/layouts/_navbar.html.haml | 37 ++++++++--------- config/locales/en/mconf.yml | 1 - config/locales/pt-br/mconf.yml | 1 - .../site/flag_local_auth_enabled_spec.rb | 8 ++-- .../site/flag_registration_enabled_spec.rb | 2 +- ...flag_require_registration_approval_spec.rb | 2 - .../spaces/visiting_spaces_path_spec.rb | 4 +- spec/features/users/new_user_spec.rb | 2 - spec/features/visitor_logs_in_spec.rb | 2 - spec/features/visitor_signs_up_spec.rb | 40 +++++++++---------- ...igbluebutton_playback_types_helper_spec.rb | 20 +++++++--- spec/helpers/logo_images_helper_spec.rb | 11 ++--- spec/lib/mconf/ldap_spec.rb | 5 --- spec/lib/mconf/shibboleth_spec.rb | 1 - spec/models/event_spec.rb | 1 - spec/models/space_spec.rb | 1 - spec/models/user_spec.rb | 1 - 22 files changed, 83 insertions(+), 81 deletions(-) diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index 23295f3c9..3cd5b2486 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -467,6 +467,11 @@ form { float: right; } +#navbar-left { + @include navbar-lists; + float: left; +} + #navbar-logo { white-space: nowrap; margin: ($m-navbar-height - 60px)/2 0; diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index 1fbb363f6..7c91c3c2c 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -43,7 +43,7 @@ def configure_permitted_parameters end def allowed_params - [ :locale, :email, :username, profile_attributes: [ :full_name ] ] + [ :locale, :email, profile_attributes: [ :full_name ] ] end private diff --git a/app/models/space.rb b/app/models/space.rb index 22c83779e..2fb6500df 100644 --- a/app/models/space.rb +++ b/app/models/space.rb @@ -90,7 +90,10 @@ class Space < ActiveRecord::Base # the friendly name / slug for the space extend FriendlyId - friendly_id :name, use: :slugged, slug_column: :permalink + friendly_id :slug_candidates, use: :slugged, slug_column: :permalink + def slug_candidates + [ Mconf::Identifier.unique_mconf_id(name) ] + end after_validation :check_errors_on_bigbluebutton_room diff --git a/app/models/user.rb b/app/models/user.rb index e98d600ef..4b01e44e9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -45,7 +45,10 @@ def self.find_first_by_auth_conditions(warden_conditions) room_param_uniqueness: true extend FriendlyId - friendly_id :full_name, use: :slugged, slug_column: :username + friendly_id :slug_candidates, use: :slugged, slug_column: :username + def slug_candidates + [ Mconf::Identifier.unique_mconf_id(full_name) ] + end validates :email, uniqueness: true, presence: true, email: true diff --git a/app/views/devise/shared/_links.html.haml b/app/views/devise/shared/_links.html.haml index 70d22c5ca..f097f4fbd 100644 --- a/app/views/devise/shared/_links.html.haml +++ b/app/views/devise/shared/_links.html.haml @@ -14,14 +14,14 @@ -# - if devise_mapping.recoverable? && controller_name != 'passwords' -# %li= link_to t('.lost_password'), new_password_path(resource_name) - -# - if registration_enabled - -# - if devise_mapping.confirmable? && controller_name != 'confirmations' - -# %li= link_to t(".resend_confirmation_email"), new_confirmation_path(resource_name) - -# - if registration_enabled -# - if devise_mapping.registerable? && controller_name != 'registrations' -# %li= link_to t('.register'), register_path + - if registration_enabled + - if devise_mapping.confirmable? && controller_name != 'confirmations' + %li= link_to t(".resend_confirmation_email"), new_confirmation_path(resource_name) + - if shib_enabled %li= link_to t('.login.federation'), shibboleth_path diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 0082115bb..26e2b7ff4 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -1,27 +1,24 @@ - url = user_signed_in? ? main_app.my_home_path : main_app.root_path %a#navbar-logo{:href => url} --# #navbar-left --# %ul --# - if user_signed_in? --# %li --# = link_to main_app.my_home_path do --# = t('home.my') --# - if mod_enabled?("spaces") --# %li= link_to t('space.all'), main_app.spaces_path --# - if mod_enabled?("events") --# %li= link_to t('.events'), events_path --# - if can?(:manage, @site) --# %li --# = link_to main_app.manage_path do --# = t('.manage') +#navbar-left + %ul + - if user_signed_in? + - if mod_enabled?("spaces") + %li= link_to t('space.all'), main_app.spaces_path + - if mod_enabled?("events") + %li= link_to t('.events'), events_path + - if can?(:manage, @site) + %li + = link_to main_app.manage_path do + = t('.manage') --# - else --# -# for anonymous users --# - if mod_enabled?("spaces") --# %li= link_to t('space.all'), main_app.spaces_path --# - if mod_enabled?("events") --# %li= link_to t('.events'), events_path + - else + -# for anonymous users + - if mod_enabled?("spaces") + %li= link_to t('space.all'), main_app.spaces_path + - if mod_enabled?("events") + %li= link_to t('.events'), events_path #navbar-right %ul#navbar-right-links diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 7fe9cd45f..346d5745f 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -1278,7 +1278,6 @@ en: and_participate: "Register To Participate" and_participate_description: "To participate in the event you should register" and_participate_description_with_login: "To participate in the event you should register or login" - confirmation: "After registering you will receive an email confirmation with the link to activate your account" one: Register or_choose: "or you can go" thank_you: "Welcome and thank you for registering in %{sitename}" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index f5f81a7da..bcb03e562 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -1306,7 +1306,6 @@ pt-br: and_participate: "Registre-se Para Participar" and_participate_description: "Para participar do evento você deve registar-se" and_participate_description_with_login: "Para participar do evento você deve efetuar o registro ou o login" - confirmation: "Após o registro você receberá uma confirmação por email com o link para ativar a sua conta" one: Registre-se or_choose: "ou você pode ir" thank_you: "Bem-vindo e obrigado por registrar-se no %{sitename}" diff --git a/spec/features/site/flag_local_auth_enabled_spec.rb b/spec/features/site/flag_local_auth_enabled_spec.rb index d5f58a846..4763b8c66 100644 --- a/spec/features/site/flag_local_auth_enabled_spec.rb +++ b/spec/features/site/flag_local_auth_enabled_spec.rb @@ -22,8 +22,8 @@ context "shows the 'recover password' link in the login page" do before { visit new_user_session_path } - it { page.should have_content(t('devise.shared.links.lost_password')) } - it { page.should have_css("input[type='submit'][value='Login']") } + it { page.should have_content(t('sessions.login_form.lost_password')) } + it { page.should have_css("input[type='submit'][value='#{t('sessions.login_form.login')}']") } it { page.should have_css("#navbar a[href='#{login_path}']") } end @@ -81,8 +81,8 @@ context "still shows login links in login page for admin" do before { visit admin_login_path } - it { page.should have_content(t('devise.shared.links.lost_password')) } - it { page.should have_css("input[type='submit'][value='Login']") } + it { page.should have_content(t('sessions.login_form.lost_password')) } + it { page.should have_css("input[type='submit'][value='#{t('sessions.login_form.login')}']") } it "hide 'login' link from navbar if ldap is not enabled" do page.should_not have_css("#navbar a[href='#{login_path}']") diff --git a/spec/features/site/flag_registration_enabled_spec.rb b/spec/features/site/flag_registration_enabled_spec.rb index b08bd6e1f..bf6c6332e 100644 --- a/spec/features/site/flag_registration_enabled_spec.rb +++ b/spec/features/site/flag_registration_enabled_spec.rb @@ -16,7 +16,7 @@ context "shows links on the login page" do before { visit new_user_session_path } - it { page.should have_content(t('devise.shared.links.register')) } + it { page.should have_content(t('layouts.navbar.register')) } it { page.should have_content(t('devise.shared.links.resend_confirmation_email')) } it { page.should have_css("#navbar a[href='#{register_path}']") } end diff --git a/spec/features/site/flag_require_registration_approval_spec.rb b/spec/features/site/flag_require_registration_approval_spec.rb index a9817f40f..62e5e64f2 100644 --- a/spec/features/site/flag_require_registration_approval_spec.rb +++ b/spec/features/site/flag_require_registration_approval_spec.rb @@ -71,9 +71,7 @@ context "shows the user registration page" do it { current_path.should eq (user_registration_path) } it { page.should have_link('', :href => login_path) } - it { page.should have_link('', :href => new_user_password_path) } it { page.should have_content('Register') } - it { page.should have_content(I18n.t("register.confirmation")) } context "registering with correct data to succed the second try" do before { diff --git a/spec/features/spaces/visiting_spaces_path_spec.rb b/spec/features/spaces/visiting_spaces_path_spec.rb index 31da8bbb7..6784e8e4d 100644 --- a/spec/features/spaces/visiting_spaces_path_spec.rb +++ b/spec/features/spaces/visiting_spaces_path_spec.rb @@ -19,11 +19,11 @@ context 'with default logo' do before { visit spaces_path } - it { should have_css '.space-container', :count => 1 } + it { should have_css '.space-container', count: 1 } it { should have_content space.name } it { should have_content space.tag_list.first } it { should have_content space.description } - it { should have_image default_logo84x64 } + it { should have_css '.logo-space.logo-initials', text: space.initials } end context 'and with valid logo' do diff --git a/spec/features/users/new_user_spec.rb b/spec/features/users/new_user_spec.rb index 731f366eb..562e3c364 100644 --- a/spec/features/users/new_user_spec.rb +++ b/spec/features/users/new_user_spec.rb @@ -9,7 +9,6 @@ def register_user(params) fill_in 'user[email]', with: params[:email] fill_in 'user[profile_attributes][full_name]', with: params[:profile_attributes][:full_name] - fill_in 'user[username]', with: params[:username] fill_in 'user[password]', with: params[:password] fill_in 'user[password_confirmation]', with: params[:password] @@ -73,7 +72,6 @@ def register_user(params) it { has_failure_message t('recaptcha.errors.verification_failed') } it { page.should have_css("input[name='user[email]'][value='#{params[:email]}']") } it { page.should have_css("input[name='user[profile_attributes][full_name]'][value='#{params[:profile_attributes][:full_name]}']") } - it { page.should have_css("input[name='user[username]'][value='#{params[:username]}']") } it { find_field('user[password]').value.should be_nil } it { find_field('user[password_confirmation]').value.should be_nil } end diff --git a/spec/features/visitor_logs_in_spec.rb b/spec/features/visitor_logs_in_spec.rb index d038472a8..1205e8de3 100644 --- a/spec/features/visitor_logs_in_spec.rb +++ b/spec/features/visitor_logs_in_spec.rb @@ -16,7 +16,6 @@ sign_in_with @user.email, @user.password expect(page).to have_title(I18n.t('home.my')) - expect(page).to have_content(I18n.t('home.my_spaces')) expect(current_path).to eq(my_home_path) end @@ -24,7 +23,6 @@ sign_in_with @user.username, @user.password expect(page).to have_title(I18n.t('home.my')) - expect(page).to have_content(I18n.t('home.my_spaces')) expect(current_path).to eq(my_home_path) end diff --git a/spec/features/visitor_signs_up_spec.rb b/spec/features/visitor_signs_up_spec.rb index 34fced187..994392ac5 100644 --- a/spec/features/visitor_signs_up_spec.rb +++ b/spec/features/visitor_signs_up_spec.rb @@ -85,43 +85,43 @@ end scenario 'with the username of another user' do - another_user = FactoryGirl.create(:user) - attrs = FactoryGirl.attributes_for(:user, username: another_user.username) - attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile) + another_user = FactoryGirl.create(:user, username: nil) + attrs = FactoryGirl.attributes_for(:user, username: nil) + attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile, full_name: another_user.full_name) register_with(attrs) - current_path.should eq(user_registration_path) - has_field_with_error "user_username" + current_path.should eq(my_home_path) + User.last.username.should eql(another_user.username + "-2") end scenario 'with the username of a disabled user' do - disabled_user = FactoryGirl.create(:user) - attrs = FactoryGirl.attributes_for(:user, username: disabled_user.username) - attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile) + disabled_user = FactoryGirl.create(:user, username: nil) + attrs = FactoryGirl.attributes_for(:user, username: nil) + attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile, full_name: disabled_user.full_name) register_with(attrs) - current_path.should eq(user_registration_path) - has_field_with_error "user_username" + current_path.should eq(my_home_path) + User.last.username.should eql(disabled_user.username + "-2") end scenario "with the username equal to some space's permalink" do - space = FactoryGirl.create(:space) - attrs = FactoryGirl.attributes_for(:user, username: space.permalink) - attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile) + space = FactoryGirl.create(:space, permalink: nil) + attrs = FactoryGirl.attributes_for(:user, username: nil) + attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile, full_name: space.name) register_with(attrs) - current_path.should eq(user_registration_path) - has_field_with_error "user_username" + current_path.should eq(my_home_path) + User.last.username.should eql(space.permalink + "-2") end scenario "with the username equal to some disabled space's permalink" do - disabled_space = FactoryGirl.create(:space, disabled: true) - attrs = FactoryGirl.attributes_for(:user, username: disabled_space.permalink) - attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile) + disabled_space = FactoryGirl.create(:space, disabled: true, permalink: nil) + attrs = FactoryGirl.attributes_for(:user, username: nil) + attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile, full_name: disabled_space.name) register_with(attrs) - current_path.should eq(user_registration_path) - has_field_with_error "user_username" + current_path.should eq(my_home_path) + User.last.username.should eql(disabled_space.permalink + "-2") end scenario "when the password confirmation doesn't match" do diff --git a/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb b/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb index f80598222..2dce7b05f 100644 --- a/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb +++ b/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb @@ -18,7 +18,9 @@ context "when the identifier was presentation" do let(:playback) { FactoryGirl.create(:bigbluebutton_playback_format, playback_type: presentation) } - let!(:link) { link_to playback.name, play_bigbluebutton_recording_path(recording, type: presentation.identifier), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation.tip")) } + let!(:link) { + link_to icon_conference_play, play_bigbluebutton_recording_path(recording, type: presentation.identifier), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation.tip")) + } subject { link_to_playback(recording, playback) } @@ -27,7 +29,9 @@ context "when the identifier was presentation_export" do let(:playback) { FactoryGirl.create(:bigbluebutton_playback_format, playback_type: presentation_export) } - let!(:link) { link_to playback.name, play_bigbluebutton_recording_path(recording, type: presentation_export.identifier), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_export.tip")) } + let!(:link) { + link_to icon_rec_download, play_bigbluebutton_recording_path(recording, type: presentation_export.identifier), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_export.tip")) + } subject { link_to_playback(recording, playback) } @@ -44,14 +48,18 @@ context 'and the description is set' do let(:name) { 'my_recording_description_1' } - let(:link) { link_to playback.name, play_bigbluebutton_recording_path(recording, { type: presentation_video.identifier, name: name }), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_video.tip"), { download: name }) } + let(:link) { + link_to icon_rec_download, play_bigbluebutton_recording_path(recording, { type: presentation_video.identifier, name: name }), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_video.tip"), { download: name }) + } it("returns the correctly link") { should eq(link) } end context 'and the description is not set' do let(:name) { 'my_recording_name_1' } - let(:link) { link_to playback.name, play_bigbluebutton_recording_path(recording, { type: presentation_video.identifier, name: name }), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_video.tip"), { download: name }) } + let(:link) { + link_to icon_rec_download, play_bigbluebutton_recording_path(recording, { type: presentation_video.identifier, name: name }), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_video.tip"), { download: name }) + } before { recording.update_attributes(description: nil) } @@ -60,7 +68,9 @@ context 'and the description is empty' do let(:name) { 'my_recording_name_1' } - let(:link) { link_to playback.name, play_bigbluebutton_recording_path(recording, { type: presentation_video.identifier, name: name }), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_video.tip"), { download: name }) } + let(:link) { + link_to icon_rec_download, play_bigbluebutton_recording_path(recording, { type: presentation_video.identifier, name: name }), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_video.tip"), { download: name }) + } before { recording.update_attributes(description: '') } diff --git a/spec/helpers/logo_images_helper_spec.rb b/spec/helpers/logo_images_helper_spec.rb index 49d86d036..29e6312cc 100644 --- a/spec/helpers/logo_images_helper_spec.rb +++ b/spec/helpers/logo_images_helper_spec.rb @@ -22,12 +22,13 @@ end describe "#logo_initials" do - it { logo_initials(:user, :size => '32').should eq(image_tag('default_logos/32/user.png', class: 'empty-logo')) } - it { logo_initials(:space, :size => '32').should eq(image_tag('default_logos/32/space.png', class: 'empty-logo')) } - it { logo_initials(:space, :size => '128').should eq(image_tag('default_logos/128/space.png', class: 'empty-logo')) } + let(:user) { FactoryGirl.create(:user) } + let(:space) { FactoryGirl.create(:space) } - # invalid logo sizes - it { logo_initials(:user, :size => '10').should eq(image_tag('default_logos/128/user.png', class: 'empty-logo')) } + it { logo_initials(user, size: '32').should eq(content_tag(:div, user.initials[0..1].upcase, class: "logo-initials #{logo_initials_class(user.name)}")) } + it { logo_initials(user, size: '10').should eq(content_tag(:div, user.initials[0..1].upcase, class: "logo-initials #{logo_initials_class(user.name)}")) } + it { logo_initials(space, size: '32').should eq(content_tag(:div, space.initials[0..1].upcase, class: "logo-initials #{logo_initials_class(space.name)}")) } + it { logo_initials(space, size: '128').should eq(content_tag(:div, space.initials[0..1].upcase, class: "logo-initials #{logo_initials_class(space.name)}")) } end describe "#logo_image" do diff --git a/spec/lib/mconf/ldap_spec.rb b/spec/lib/mconf/ldap_spec.rb index 59165dcaf..80bca2066 100644 --- a/spec/lib/mconf/ldap_spec.rb +++ b/spec/lib/mconf/ldap_spec.rb @@ -294,11 +294,6 @@ include_examples "fails to create account and RecentActivity" end - context "username not informed" do - let(:username) { '' } - include_examples "fails to create account and RecentActivity" - end - context "name not informed" do let(:name) { '' } include_examples "fails to create account and RecentActivity" diff --git a/spec/lib/mconf/shibboleth_spec.rb b/spec/lib/mconf/shibboleth_spec.rb index 9b51b18ad..fc5cf324b 100644 --- a/spec/lib/mconf/shibboleth_spec.rb +++ b/spec/lib/mconf/shibboleth_spec.rb @@ -713,7 +713,6 @@ it("user should not be saved") { subject.new_record?.should be(true) } it("user should not be valid") { subject.valid?.should be(false) } it("expects errors on email") { subject.errors.should have_key(:email) } - it("expects errors on username") { subject.errors.should have_key(:username) } it("expects errors on profile.full_name") { subject.errors.should have_key(:'profile.full_name') } end end diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb index 3836a787f..c0114c7d2 100644 --- a/spec/models/event_spec.rb +++ b/spec/models/event_spec.rb @@ -24,7 +24,6 @@ end it { should validate_presence_of(:name) } - it { should validate_presence_of(:permalink) } it { should validate_length_of(:summary).is_at_most(140) } it { should have_many(:participants).dependent(:destroy) } diff --git a/spec/models/space_spec.rb b/spec/models/space_spec.rb index c9e478746..f75228e67 100644 --- a/spec/models/space_spec.rb +++ b/spec/models/space_spec.rb @@ -47,7 +47,6 @@ describe "#permalink" do it { should validate_uniqueness_of(:permalink).case_insensitive } - it { should validate_presence_of(:permalink) } it { should validate_length_of(:permalink).is_at_least(3) } it { should_not allow_value("123 321").for(:permalink) } it { should_not allow_value("").for(:permalink) } diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 97ceec572..cb3bc57df 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -255,7 +255,6 @@ end describe "#username" do - it { should validate_presence_of(:username) } it { should validate_uniqueness_of(:username).case_insensitive } it { should validate_length_of(:username).is_at_least(1) } it { should_not allow_value("123 321").for(:username) } From e45012da34b5877446032ed7396f57052d353285 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 3 Nov 2017 13:41:20 -0200 Subject: [PATCH 25/75] Adjust the navbar and extra sign in links for the new design Some links in the navbar and some sign in links (e.g. shibboleth) are not yet defined for the new layout. Now they are at least accessible, even though their layout will certainly change later. --- .../stylesheets/app/application/base.scss | 3 +- app/assets/stylesheets/app/sessions/new.scss | 2 + .../stylesheets/app/shared/_social_login.scss | 2 + app/views/devise/shared/_links.html.haml | 4 -- app/views/layouts/_navbar.html.haml | 38 +++++++++---------- app/views/sessions/_login_form.html.haml | 5 ++- config/locales/en/mconf.yml | 2 +- config/locales/pt-br/mconf.yml | 2 +- 8 files changed, 31 insertions(+), 27 deletions(-) diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index 3cd5b2486..ebd679e1b 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -469,7 +469,8 @@ form { #navbar-left { @include navbar-lists; - float: left; + float: right; + margin-right: 28px; } #navbar-logo { diff --git a/app/assets/stylesheets/app/sessions/new.scss b/app/assets/stylesheets/app/sessions/new.scss index 057bf4650..862ddcf2b 100644 --- a/app/assets/stylesheets/app/sessions/new.scss +++ b/app/assets/stylesheets/app/sessions/new.scss @@ -60,6 +60,8 @@ body.sessions.new, body.sessions.create { .forgot-password { float: right; margin: 10px 0; + + a { display: block; } } .form-actions { diff --git a/app/assets/stylesheets/app/shared/_social_login.scss b/app/assets/stylesheets/app/shared/_social_login.scss index 6c89a1c8d..5986f65d2 100644 --- a/app/assets/stylesheets/app/shared/_social_login.scss +++ b/app/assets/stylesheets/app/shared/_social_login.scss @@ -16,6 +16,8 @@ } .social-btns { + @include mconf-clearfix; + .btn { width: 48%; font-size: $m-font-big; diff --git a/app/views/devise/shared/_links.html.haml b/app/views/devise/shared/_links.html.haml index f097f4fbd..c6973d0cb 100644 --- a/app/views/devise/shared/_links.html.haml +++ b/app/views/devise/shared/_links.html.haml @@ -18,10 +18,6 @@ -# - if devise_mapping.registerable? && controller_name != 'registrations' -# %li= link_to t('.register'), register_path - - if registration_enabled - - if devise_mapping.confirmable? && controller_name != 'confirmations' - %li= link_to t(".resend_confirmation_email"), new_confirmation_path(resource_name) - - if shib_enabled %li= link_to t('.login.federation'), shibboleth_path diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 26e2b7ff4..a74e6f688 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -1,25 +1,6 @@ - url = user_signed_in? ? main_app.my_home_path : main_app.root_path %a#navbar-logo{:href => url} -#navbar-left - %ul - - if user_signed_in? - - if mod_enabled?("spaces") - %li= link_to t('space.all'), main_app.spaces_path - - if mod_enabled?("events") - %li= link_to t('.events'), events_path - - if can?(:manage, @site) - %li - = link_to main_app.manage_path do - = t('.manage') - - - else - -# for anonymous users - - if mod_enabled?("spaces") - %li= link_to t('space.all'), main_app.spaces_path - - if mod_enabled?("events") - %li= link_to t('.events'), events_path - #navbar-right %ul#navbar-right-links - if user_signed_in? @@ -55,6 +36,25 @@ - if current_site.registration_enabled? %li{ sessions_menu_select_if(:register) }= link_to t('.register'), main_app.register_path +#navbar-left + %ul + - if user_signed_in? + - if mod_enabled?("spaces") + %li= link_to t('space.all'), main_app.spaces_path + - if mod_enabled?("events") + %li= link_to t('.events'), events_path + - if can?(:manage, @site) + %li + = link_to main_app.manage_path do + = t('.manage') + + - else + -# for anonymous users + - if mod_enabled?("spaces") + %li= link_to t('space.all'), main_app.spaces_path + - if mod_enabled?("events") + %li= link_to t('.events'), events_path + - if content_for?(:navbar_menu) #navbar-menu = yield :navbar_menu diff --git a/app/views/sessions/_login_form.html.haml b/app/views/sessions/_login_form.html.haml index 3b0e8c3a8..0343ad205 100644 --- a/app/views/sessions/_login_form.html.haml +++ b/app/views/sessions/_login_form.html.haml @@ -2,6 +2,9 @@ = f.input :login, label: false, required: true, autofocus: true = f.input :password, label: false, required: true - if devise_mapping.rememberable? - .forgot-password= link_to t('.lost_password'), new_password_path(resource_name) + .forgot-password + = link_to t('.lost_password'), new_password_path(resource_name) + - if current_site.registration_enabled? + = link_to t(".resend_confirmation_email"), new_confirmation_path(resource_name) .remember-me= f.input :remember_me, as: :boolean = f.button :wrapped, value: t(".login") diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 346d5745f..727e081b3 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -690,7 +690,6 @@ en: lost_password: "Lost your password?" other_options: "Other options" register: "Create a new account" - resend_confirmation_email: "Resend confirmation email" strategies: ldap_authenticatable: create_failed: "Unable to create internal structures for your LDAP account, please contact an administrator" @@ -1347,6 +1346,7 @@ en: ldap_authentication: "Authenticate via LDAP" login: "Sign in" lost_password: "Forgot my password" + resend_confirmation_email: "Resend confirmation email" new: headline: "Web Conference Platform" headline2: "focused on distance learning and remote meetings" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index bcb03e562..b4fab8aa8 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -698,7 +698,6 @@ pt-br: lost_password: "Esqueceu sua senha?" other_options: "Outras opções" register: "Criar uma nova conta" - resend_confirmation_email: "Reenviar e-mail de confirmação" strategies: ldap_authenticatable: create_failed: "Não foi possĩvel criar as estruturas internas para sua conta do LDAP, por favor contate um administrador" @@ -1375,6 +1374,7 @@ pt-br: ldap_authentication: "Autenticar via LDAP" login: "Entrar" lost_password: "Esqueci minha senha" + resend_confirmation_email: "Reenviar e-mail de confirmação" new: headline: "Plataforma de webconferência" headline2: "com foco em educação a distância e reuniões remotas" From 8eca5bda28f0093f48c9b549b413b28b01cf2e68 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 3 Nov 2017 13:49:23 -0200 Subject: [PATCH 26/75] Add disclaimer that we'll never post to social networks --- app/assets/stylesheets/app/shared/_social_login.scss | 6 ++++++ app/views/shared/_social_login.html.haml | 1 + config/locales/en/mconf.yml | 1 + config/locales/pt-br/mconf.yml | 1 + 4 files changed, 9 insertions(+) diff --git a/app/assets/stylesheets/app/shared/_social_login.scss b/app/assets/stylesheets/app/shared/_social_login.scss index 5986f65d2..5d47bfe4b 100644 --- a/app/assets/stylesheets/app/shared/_social_login.scss +++ b/app/assets/stylesheets/app/shared/_social_login.scss @@ -42,4 +42,10 @@ } } } + + .disclaimer { + font-size: $m-font-small; + font-weight: $m-font-weight-thin; + margin-top: 8px; + } } diff --git a/app/views/shared/_social_login.html.haml b/app/views/shared/_social_login.html.haml index dd97334d5..5b81d891c 100644 --- a/app/views/shared/_social_login.html.haml +++ b/app/views/shared/_social_login.html.haml @@ -3,3 +3,4 @@ .social-btns .btn.btn-large.btn-danger.btn-google= t('.google') .btn.btn-large.btn-info.btn-facebook= t('.facebook') + .disclaimer= t('.disclaimer') diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 727e081b3..1f17641d6 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -1387,6 +1387,7 @@ en: unavailable: "The recording is unavailable" unavailable_tip: "This recording is not available anymore in the server where it was stored and so it can't be accessed. This can be a temporary problem, check again later to see if it's available." social_login: + disclaimer: "We will never post anything without your permission" facebook: "Facebook" google: "Google" or_connect_with: "or connect with" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index b4fab8aa8..1e6764711 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -1415,6 +1415,7 @@ pt-br: unavailable: "A gravação não está disponível" unavailable_tip: "A gravação não está mais disponível no servidor onde ela estava armazenada e então não pode ser acessada." social_login: + disclaimer: "Nunca postaremos nada sem a sua permissão" facebook: "Facebook" google: "Google" or_connect_with: "ou conecte-se com" From 659443e6b29dfff590b9db34689520e704646cfb Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 3 Nov 2017 15:43:18 -0200 Subject: [PATCH 27/75] Add proper icons to the facebook and google social login btns --- app/assets/images/icons/facebook.svg | 14 -------- app/assets/images/icons/login-facebook.svg | 11 +++++++ app/assets/images/icons/login-google.svg | 10 ++++++ .../stylesheets/app/shared/_social_login.scss | 33 +++++++++++++++---- app/helpers/icons_helper.rb | 8 +++++ app/views/shared/_social_login.html.haml | 8 +++-- .../site/flag_registration_enabled_spec.rb | 2 +- 7 files changed, 62 insertions(+), 24 deletions(-) delete mode 100644 app/assets/images/icons/facebook.svg create mode 100644 app/assets/images/icons/login-facebook.svg create mode 100644 app/assets/images/icons/login-google.svg diff --git a/app/assets/images/icons/facebook.svg b/app/assets/images/icons/facebook.svg deleted file mode 100644 index a11294f19..000000000 --- a/app/assets/images/icons/facebook.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/app/assets/images/icons/login-facebook.svg b/app/assets/images/icons/login-facebook.svg new file mode 100644 index 000000000..92c038751 --- /dev/null +++ b/app/assets/images/icons/login-facebook.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/app/assets/images/icons/login-google.svg b/app/assets/images/icons/login-google.svg new file mode 100644 index 000000000..97e24a745 --- /dev/null +++ b/app/assets/images/icons/login-google.svg @@ -0,0 +1,10 @@ + + + + + + diff --git a/app/assets/stylesheets/app/shared/_social_login.scss b/app/assets/stylesheets/app/shared/_social_login.scss index 5d47bfe4b..e58f77f59 100644 --- a/app/assets/stylesheets/app/shared/_social_login.scss +++ b/app/assets/stylesheets/app/shared/_social_login.scss @@ -24,21 +24,40 @@ padding: 12px; } - .btn-google { + .btn-google, .btn-facebook { + $bg-normal: #df4a32; + $bg-hover: lighten(#702519, 5); + float: left; - background: #df4a32; + background: $bg-normal; + padding: 0; + border: 0; + &:hover { - background: #e56e5b; - border-color: #e56e5b; + background: $bg-hover; + } + + img { + float: left; + border-right: 1px solid $m-site-bg-color; + height: 51px; + width: 51px; + } + + span { + padding: 12px; + display: block; } } .btn-facebook { + $bg-normal: #3b579d; + $bg-hover: lighten(#0e0132, 5); + float: right; - background: #3b579d; + background: $bg-normal; &:hover { - background: #6279b1; - border-color: #6279b1; + background: $bg-hover; } } } diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb index 70177eeec..44b6aafae 100644 --- a/app/helpers/icons_helper.rb +++ b/app/helpers/icons_helper.rb @@ -298,6 +298,14 @@ def icon_options_dots(options={}) icon_constructor nil, "icon icon-mw-options-dots icon-options-dots", options end + def icon_login_facebook(options={}) + image_tag 'icons/login-facebook.svg', size: "46x46", class: "" + end + + def icon_login_google(options={}) + image_tag 'icons/login-google.svg', size: "46x46", class: "" + end + private # Base method for most of the methods above diff --git a/app/views/shared/_social_login.html.haml b/app/views/shared/_social_login.html.haml index 5b81d891c..9d850a1a8 100644 --- a/app/views/shared/_social_login.html.haml +++ b/app/views/shared/_social_login.html.haml @@ -1,6 +1,10 @@ #social-login-btns .social-call= t('.or_connect_with') .social-btns - .btn.btn-large.btn-danger.btn-google= t('.google') - .btn.btn-large.btn-info.btn-facebook= t('.facebook') + .btn.btn-large.btn-danger.btn-google + = icon_login_google + %span= t('.google') + .btn.btn-large.btn-info.btn-facebook + = icon_login_facebook + %span= t('.facebook') .disclaimer= t('.disclaimer') diff --git a/spec/features/site/flag_registration_enabled_spec.rb b/spec/features/site/flag_registration_enabled_spec.rb index bf6c6332e..0c5a9ea52 100644 --- a/spec/features/site/flag_registration_enabled_spec.rb +++ b/spec/features/site/flag_registration_enabled_spec.rb @@ -17,7 +17,7 @@ before { visit new_user_session_path } it { page.should have_content(t('layouts.navbar.register')) } - it { page.should have_content(t('devise.shared.links.resend_confirmation_email')) } + it { page.should have_content(t('sessions.login_form.resend_confirmation_email')) } it { page.should have_css("#navbar a[href='#{register_path}']") } end From d3b8ac3e7d0e849b8544d24c65961c24ba497faa Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 3 Nov 2017 16:39:17 -0200 Subject: [PATCH 28/75] Use country_select to list countries in a user's profile --- Gemfile | 3 ++- Gemfile.lock | 16 ++++++++++++++++ app/views/users/edit.html.haml | 4 +++- config/application.rb | 1 + config/initializers/country_select.rb | 14 ++++++++++++++ 5 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 config/initializers/country_select.rb diff --git a/Gemfile b/Gemfile index 9509c4407..b63876e9d 100644 --- a/Gemfile +++ b/Gemfile @@ -37,7 +37,8 @@ gem 'yajl-ruby' # json parser for rabl gem 'valid_email', '~> 0.0.10'#, :git => 'https://github.com/Fire-Dragon-DoL/valid_email.git' gem 'public_activity', '~> 1.5.0' gem 'acts-as-taggable-on', '~> 4.0' # tags for spaces -gem "awesome_print", require:"ap" # better visualization for query results +gem 'awesome_print', require: 'ap' # better visualization for query results +gem 'country_select' # For queues gem 'resque', '~> 1.25.2', :require => 'resque/server' diff --git a/Gemfile.lock b/Gemfile.lock index 2065f328c..54780b0b1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -178,6 +178,14 @@ GEM sass-rails (< 5.1) sprockets (< 4.0) concurrent-ruby (1.0.5) + countries (2.1.2) + i18n_data (~> 0.8.0) + money (~> 6.9) + sixarm_ruby_unaccent (~> 1.1) + unicode_utils (~> 1.4) + country_select (3.1.1) + countries (~> 2.0) + sort_alphabetical (~> 1.0) crack (0.4.2) safe_yaml (~> 1.0.0) css_parser (1.3.5) @@ -257,6 +265,7 @@ GEM i18n (0.7.0) i18n-js (3.0.0.rc15) i18n (~> 0.6, >= 0.6.6) + i18n_data (0.8.0) icalendar (2.1.1) inherited_resources (1.6.0) actionpack (>= 3.2, < 5) @@ -310,6 +319,8 @@ GEM mixlib-shellout (2.0.1) momentjs-rails (2.8.3) railties (>= 3.1) + money (6.9.0) + i18n (>= 0.6.4, < 0.9) mono_logger (1.1.0) multi_json (1.12.0) multi_xml (0.5.5) @@ -480,6 +491,7 @@ GEM rack (~> 1.4) rack-protection (~> 1.4) tilt (~> 1.3, >= 1.3.4) + sixarm_ruby_unaccent (1.2.0) skinny (0.2.3) eventmachine (~> 1.0.0) thin (~> 1.5.0) @@ -488,6 +500,8 @@ GEM tilt (>= 1.3.3, < 2.1) slop (3.6.0) socksify (1.7.0) + sort_alphabetical (1.1.0) + unicode_utils (>= 1.2.2) spring (1.3.4) sprockets (3.7.1) concurrent-ruby (~> 1.0) @@ -518,6 +532,7 @@ GEM thread_safe (~> 0.1) uglifier (3.0.0) execjs (>= 0.3.0, < 3) + unicode_utils (1.4.0) uuidtools (2.1.5) valid_email (0.0.11) activemodel @@ -574,6 +589,7 @@ DEPENDENCIES codeclimate-test-reporter coffee-rails (~> 4.0.0) compass-rails (~> 3.0.0) + country_select database_cleaner devise (~> 3.5.4) devise-async diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml index a46723ce6..31be25902 100644 --- a/app/views/users/edit.html.haml +++ b/app/views/users/edit.html.haml @@ -51,10 +51,12 @@ #user-address %h3= t('.address') = f.simple_fields_for :profile do |p| + .form-group.select.optional.user_profile_country + = p.input :country, wrapper: :label_only + = p.country_select :country, { priority_countries: ["BR", "US"], include_blank: true }, { class: 'form-control' } = p.input :address = p.input :city = p.input :province - = p.input :country, as: :string = p.input :zipcode = p.input :phone = f.input :timezone, required: false do diff --git a/config/application.rb b/config/application.rb index 2dc5ac275..1e144e995 100644 --- a/config/application.rb +++ b/config/application.rb @@ -51,6 +51,7 @@ class Application < Rails::Application config.i18n.fallbacks = true config.i18n.enforce_available_locales = true config.i18n.available_locales = [:bg, :de, :en, :"es-419", :"pt-br", :ru] + config.available_locales_countries = [:bg, :de, :en, :es, :pt, :ru] # for the countries gem config.i18n.default_locale = :en config.generators do |g| diff --git a/config/initializers/country_select.rb b/config/initializers/country_select.rb new file mode 100644 index 000000000..1fd034f6b --- /dev/null +++ b/config/initializers/country_select.rb @@ -0,0 +1,14 @@ +Rails.application.config.to_prepare do + # CountrySelect::FORMATS[:with_alpha3] = lambda do |country| + # loc = case I18n.locale.to_s + # when 'pt-br' then 'pt' + # when 'es-419' then 'es' + # else I18n.locale.to_s + # end + # "#{country.translations[loc] || country.name} (#{country.alpha3})" + # end + + ISO3166.configure do |config| + config.locales = Rails.application.config.available_locales_countries + end +end From 5bcc5a46d2e10219cf50367e66dcd9d6ed540344 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 3 Nov 2017 17:51:06 -0200 Subject: [PATCH 29/75] Hide social login btns when social auth is disabled --- .../registrations/_signup_form.html.haml | 4 +- app/views/shared/_social_login.html.haml | 23 +++++---- .../site/flag_local_auth_enabled_spec.rb | 48 +++++++++++++++++++ 3 files changed, 63 insertions(+), 12 deletions(-) diff --git a/app/views/registrations/_signup_form.html.haml b/app/views/registrations/_signup_form.html.haml index d6cbdebaf..0d5527c0c 100644 --- a/app/views/registrations/_signup_form.html.haml +++ b/app/views/registrations/_signup_form.html.haml @@ -7,8 +7,8 @@ = disable_autocomplete_for('user[password]', 'password') = f.hidden_field :locale, value: I18n.locale = f.fields_for :profile do |p| - = p.input :full_name, required: true, label: false - = f.input :email, required: true, autofocus: true, label: false + = p.input :full_name, autofocus: true, required: true, label: false + = f.input :email, required: true, label: false -# = f.input :username, label: false, required: true, wrapper: :horizontal_input_group do -# - if webconf_url_prefix.length <= 35 -# - prepend_text = webconf_url_prefix diff --git a/app/views/shared/_social_login.html.haml b/app/views/shared/_social_login.html.haml index 9d850a1a8..c4ec5daf2 100644 --- a/app/views/shared/_social_login.html.haml +++ b/app/views/shared/_social_login.html.haml @@ -1,10 +1,13 @@ -#social-login-btns - .social-call= t('.or_connect_with') - .social-btns - .btn.btn-large.btn-danger.btn-google - = icon_login_google - %span= t('.google') - .btn.btn-large.btn-info.btn-facebook - = icon_login_facebook - %span= t('.facebook') - .disclaimer= t('.disclaimer') +- if current_site.social_login_enabled? + #social-login-btns + .social-call= t('.or_connect_with') + .social-btns + - if current_site.social_login_enabled?("google") + = link_to user_omniauth_authorize_path(:google_oauth2), class: 'btn btn-large btn-google' do + = icon_login_google + %span= t('.google') + - if current_site.social_login_enabled?("facebook") + = link_to user_omniauth_authorize_path(:facebook), class: 'btn btn-large btn-facebook' do + = icon_login_facebook + %span= t('.facebook') + .disclaimer= t('.disclaimer') diff --git a/spec/features/site/flag_local_auth_enabled_spec.rb b/spec/features/site/flag_local_auth_enabled_spec.rb index 4763b8c66..fb8fcf4d5 100644 --- a/spec/features/site/flag_local_auth_enabled_spec.rb +++ b/spec/features/site/flag_local_auth_enabled_spec.rb @@ -19,6 +19,30 @@ expect(current_path).to eq(my_home_path) end + context 'allows facebook authentication for normal users' do + before { + Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:facebook] + visit login_path + } + + it { + page.find(:css, ".btn-facebook").click + expect(current_path).to eq(my_home_path) + } + end + + context 'allows google authentication for normal users' do + before { + Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:google_oauth2] + visit login_path + } + + it { + page.find(:css, ".btn-google").click + expect(current_path).to eq(my_home_path) + } + end + context "shows the 'recover password' link in the login page" do before { visit new_user_session_path } @@ -65,6 +89,30 @@ expect(current_path).to eq(root_path) end + context 'allows facebook authentication for normal users' do + before { + Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:facebook] + visit register_path + } + + it { + page.find(:css, ".btn-facebook").click + expect(current_path).to eq(my_home_path) + } + end + + context 'allows google authentication for normal users' do + before { + Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:google_oauth2] + visit register_path + } + + it { + page.find(:css, ".btn-google").click + expect(current_path).to eq(my_home_path) + } + end + context "accessing from the admin sign in page" do scenario 'blocks sign in for normal users' do visit admin_login_path From ab956fb3cbf968610b85ffea2933156860f170f0 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Mon, 6 Nov 2017 12:19:28 -0200 Subject: [PATCH 30/75] Small social login fixes for the new design --- app/assets/stylesheets/app/shared/_social_login.scss | 1 + app/views/frontpage/show.html.haml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/app/shared/_social_login.scss b/app/assets/stylesheets/app/shared/_social_login.scss index e58f77f59..9602edb8b 100644 --- a/app/assets/stylesheets/app/shared/_social_login.scss +++ b/app/assets/stylesheets/app/shared/_social_login.scss @@ -32,6 +32,7 @@ background: $bg-normal; padding: 0; border: 0; + @include link-colors(#fff, #fff, #fff, #fff); &:hover { background: $bg-hover; diff --git a/app/views/frontpage/show.html.haml b/app/views/frontpage/show.html.haml index 61a5a95f6..6e458415b 100644 --- a/app/views/frontpage/show.html.haml +++ b/app/views/frontpage/show.html.haml @@ -21,7 +21,6 @@ %span= t('.or') - if show_login = link_to t('.login.title'), login_path, class: 'btn btn-primary btn-lg' - = render "devise/shared/social_login" %ul#action-links-extra - if current_site.local_auth_enabled? From 99280e2a808d9de7f109357593979c35ed4de635 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 10 Nov 2017 16:50:27 -0200 Subject: [PATCH 31/75] Lighter tables, new sidebar and smaller navbar for the new design --- app/assets/stylesheets/_definitions.scss | 24 +- app/assets/stylesheets/_mixins.scss | 19 +- .../stylesheets/app/application/base.scss | 216 ++++++++++-------- .../stylesheets/app/application/icons.scss | 27 ++- .../app/application/lists-and-tables.scss | 68 +++--- .../stylesheets/app/application/modal.scss | 6 +- .../app/application/sidebar-size.scss | 21 +- app/assets/stylesheets/app/my/meetings.scss | 8 +- app/assets/stylesheets/application.css | 2 +- ...tom_bigbluebutton_playback_types_helper.rb | 2 +- app/helpers/icons_helper.rb | 8 +- app/views/my/meetings.html.haml | 13 +- app/views/users/edit.html.haml | 16 +- ...igbluebutton_playback_types_helper_spec.rb | 2 +- 14 files changed, 247 insertions(+), 185 deletions(-) diff --git a/app/assets/stylesheets/_definitions.scss b/app/assets/stylesheets/_definitions.scss index e1ceb6dda..9ef18f2f3 100644 --- a/app/assets/stylesheets/_definitions.scss +++ b/app/assets/stylesheets/_definitions.scss @@ -25,7 +25,7 @@ $m-cyan: #00ffff; $m-gray: #ccc; $m-dark-gray: #666; $m-light-gray: #f6f6f6; -$m-very-light-gray: #fcfcfc; +$m-very-light-gray: #fafafa; $m-bright-blue: #49afcd; $m-transparent: rgba(255,255,255,0); @@ -40,9 +40,11 @@ $m-focus-border-color: $m-color-secondary; $m-logo-initials-bg: red blue yellow green orange purple magenta $m-color-primary $m-color-secondary; $m-logo-bg: lighten($m-color-primary, 15); $m-logo-border: $m-color-primary; -$m-site-horizontal-padding: 120px; +$m-site-horizontal-padding: 60px; +$m-content-vertical-padding: 60px; $m-active-item-border-color: $m-color-primary; $m-active-item-border: 4px solid $m-active-item-border-color; +$m-active-item-border-off: 4px solid $m-transparent; // fonts $m-font-normal: 14px; //0.85rem; /* 14px, base size for all fonts */ @@ -120,12 +122,12 @@ $m-contents-max-width: 1280px; $m-contents-width: 1080px; // TODO: deprecated now that the site is responsive // sidebar -$m-sidebar-width-lg: 350px; +$m-sidebar-width-lg: 300px; $m-sidebar-width-md: 300px; -$m-sidebar-width-sm: 300px; +$m-sidebar-width-sm: 250px; $m-sidebar-padding: 25px; $m-sidebar-border: $m-border-color-normal; -$m-sidebar-bg-color: #fafafa; //#f3f6f9; +$m-sidebar-bg-color: #fff; //#fafafa; //#f3f6f9; // sidebar menu $m-sidebar-menu-hover-bg: darken($m-sidebar-bg-color, 5); @@ -154,16 +156,16 @@ $m-navbar-bg-color-dark: #fff; //$m-navbar-bg-color-light; //darken($m-green-mco $m-navbar-border-width: 0px; $m-navbar-border-color: darken($m-navbar-bg-color-dark, 5); $m-navbar-internal-border-color: $m-border-color-normal; //lighten($m-navbar-bg-color-dark, 3); -$m-navbar-font: $m-font-bigger; +$m-navbar-font: $m-font-big; $m-navbar-font-color: $m-font-color; -$m-navbar-font-color-hover: $m-link-color-hover; +$m-navbar-font-color-hover: $m-active-item-border-color; $m-navbar-font-highlight: #fff; //lighten($m-navbar-bg-color-dark, 8); $m-navbar-font-family: $m-font-family-h; $m-navbar-link-color: lighten($m-link-color, 15); -$m-navbar-link-color-hover: lighten($m-navbar-link-color, 8); -$m-navbar-link-color-active: $m-navbar-link-color; -$m-navbar-height: 100px; -$m-navbar-btn-size: 58px; +$m-navbar-link-color-hover: $m-active-item-border-color; +$m-navbar-link-color-active: $m-navbar-link-color-hover; +$m-navbar-height: 80px; +$m-navbar-btn-size: 48px; /* $m-navbar-height: 90px; */ /* $m-navbar-btn-size: 46px; */ $m-navbar-btn-bg: $m-color-primary; diff --git a/app/assets/stylesheets/_mixins.scss b/app/assets/stylesheets/_mixins.scss index 8cde744da..800dee951 100644 --- a/app/assets/stylesheets/_mixins.scss +++ b/app/assets/stylesheets/_mixins.scss @@ -264,13 +264,12 @@ } } - &.active a { + &.active > a { font-weight: $m-font-weight-bold; - border-bottom: $m-active-item-border; - color: $m-active-item-border-color; + color: $m-navbar-font-color-hover; - &:hover { - color: $m-active-item-border-color; + &:hover, &:focus { + color: $m-navbar-font-color-hover; } } } @@ -278,11 +277,15 @@ // very specific selector se we don't mess with dropdowns and others > ul > li > a, > a { - padding: (($m-navbar-height - $m-navbar-font)/2 - 2) 0; + padding: (($m-navbar-height - $m-navbar-font)/2) 0; margin: 0 14px; display: block; - @include link-colors($m-navbar-font-color, $m-navbar-font-color-hover, $m-navbar-font-color); - @include transition(background-color 0.2s ease-in); + @include link-colors($m-navbar-font-color, $m-navbar-font-color-hover, $m-navbar-font-color-hover); + @include transition(border-color 0.2s ease-in); + + &:hover { + border-bottom: $m-active-item-border; + } } .icon { diff --git a/app/assets/stylesheets/app/application/base.scss b/app/assets/stylesheets/app/application/base.scss index e71fa270a..8abd04303 100644 --- a/app/assets/stylesheets/app/application/base.scss +++ b/app/assets/stylesheets/app/application/base.scss @@ -368,7 +368,7 @@ form { } .btn-navbar { - $imgsize: 36px; + $imgsize: $m-navbar-btn-size * 0.65; height: $m-navbar-btn-size; width: $m-navbar-btn-size; @@ -470,7 +470,6 @@ form { #navbar-left { @include navbar-lists; float: right; - margin-right: 28px; } #navbar-logo { @@ -588,6 +587,10 @@ form { border-right: 1px solid $m-sidebar-border; padding: $m-sidebar-padding; + margin: $m-content-vertical-padding 0 0 $m-content-vertical-padding; + border-radius: 4px; + border: 0; + .sidebar-title { font-size: $m-font-double; line-height: 1.1; @@ -610,36 +613,36 @@ form { text-align: center; } - .content-block-container { - margin-bottom: 10px; - clear: both; - } - - .content-block { - clear: both; - padding: 10px; - } - - .content-block-middle { - clear: both; - } - - .content-block-footer { - text-align: right; - margin-top: 10px; - padding-top: 2px; - padding-right: 5px; - clear: both; - } - - .content-block-header { - @include mconf-clearfix; - h3, h4 { - float: left; - margin-top: 0; - img { margin-bottom: -3px; } - } - } + /* .content-block-container { */ + /* margin-bottom: 10px; */ + /* clear: both; */ + /* } */ + + /* .content-block { */ + /* clear: both; */ + /* padding: 10px; */ + /* } */ + + /* .content-block-middle { */ + /* clear: both; */ + /* } */ + + /* .content-block-footer { */ + /* text-align: right; */ + /* margin-top: 10px; */ + /* padding-top: 2px; */ + /* padding-right: 5px; */ + /* clear: both; */ + /* } */ + + /* .content-block-header { */ + /* @include mconf-clearfix; */ + /* h3, h4 { */ + /* float: left; */ + /* margin-top: 0; */ + /* img { margin-bottom: -3px; } */ + /* } */ + /* } */ .sidebar-top-action-button { @include mconf-clearfix; @@ -697,46 +700,56 @@ form { } #sidebar-menu { - margin: 0 -26px; - padding: 0; + font-size: $m-font-medium; + @include mconf-clearfix; + text-align: right; ul { - margin: 0 0 0 24px; + margin: 0; padding: 0; } li { - @include font-size($m-sidebar-menu-font); - border-left: 1px solid $m-transparent; - border-bottom: 1px solid $m-transparent; - border-top: 1px solid $m-transparent; + margin: 20px 0; + display: block; a { + @include link-colors($m-font-color, $m-link-color-hover, $m-link-color-hover, $m-font-color); + white-space: nowrap; display: block; - @include mconf-clearfix; - transition: all .3s ease; - margin: 2px 0; - padding: 16px; - text-decoration: none; - color: $m-sidebar-menu-active-color; - @include link-colors($m-sidebar-menu-color, $m-sidebar-menu-color-hover, $m-sidebar-menu-color-hover, $m-sidebar-menu-color); - - &:hover, - &:active { - background: $m-sidebar-menu-hover-bg; + border-right: $m-active-item-border-off; + padding: 5px 15px; + position: relative; + padding-right: 30px; + + &::after { + content: ''; + border-bottom: 4px solid transparent; + border-top: 4px solid transparent; + border-left: 4px solid $m-border-color-normal; + display: inline-block; + height: 0; + /* opacity: 0.3; */ + vertical-align: top; + width: 0; + top: 12px; + right: 5px; + position: absolute; } - } - &.active a { - background: $m-sidebar-menu-active-bg; - @include link-colors($m-sidebar-menu-active-color, $m-sidebar-menu-active-color-hover, $m-sidebar-menu-active-color-hover, $m-sidebar-menu-active-color); - border-bottom: 1px solid $m-sidebar-menu-active-border; - border-top: 1px solid $m-sidebar-menu-active-border; - border-left: 1px solid $m-sidebar-menu-active-border; + &:hover, &:focus, &.active { + text-decoration: none; + color: $m-active-item-border-color; + &::after { + border-left-color: $m-active-item-border-color; + } + } - &:hover, - &:active { - background: $m-sidebar-menu-active-hover-bg; + &.active { + font-weight: $m-font-weight-bold; + /* &:hover { */ + /* color: $m-active-item-border-color; */ + /* } */ } } } @@ -746,7 +759,13 @@ form { background-color: $m-site-bg-color; @include mconf-clearfix; overflow: visible; - padding: 60px $m-site-horizontal-padding; + padding: $m-content-vertical-padding $m-site-horizontal-padding; + + h1 { + text-align: center; + margin-top: 30px; + margin-bottom: 50px; + } h3 { margin-bottom: 8px; @@ -786,48 +805,48 @@ form { } } - .content-block-container { - @include block-wrapper-active; - } + /* .content-block-container { */ + /* @include block-wrapper-active; */ + /* } */ - .content-block { - clear: both; - margin: 10px 0 30px 0; - } + /* .content-block { */ + /* clear: both; */ + /* margin: 10px 0 30px 0; */ + /* } */ - .content-block-footer { - text-align: center; - clear: both; - margin: 5px 0; - color: $m-color-primary; - font-weight: bold; - font-size: $m-font-small; - @include content-block-pagination; - } + /* .content-block-footer { */ + /* text-align: center; */ + /* clear: both; */ + /* margin: 5px 0; */ + /* color: $m-color-primary; */ + /* font-weight: bold; */ + /* font-size: $m-font-small; */ + /* @include content-block-pagination; */ + /* } */ - .content-block-middle { - padding: 5px 0; - clear: both; - } + /* .content-block-middle { */ + /* padding: 5px 0; */ + /* clear: both; */ + /* } */ - .content-block-header { - @include mconf-clearfix; - margin: 5px 0; + /* .content-block-header { */ + /* @include mconf-clearfix; */ + /* margin: 5px 0; */ - img { float: left; } - h3, h4 { - float: left; - margin: 0; - } + /* img { float: left; } */ + /* h3, h4 { */ + /* float: left; */ + /* margin: 0; */ + /* } */ - .toolbar { - float: right; + /* .toolbar { */ + /* float: right; */ - a { margin-right: 10px; } - } + /* a { margin-right: 10px; } */ + /* } */ - @include content-block-pagination; - } + /* @include content-block-pagination; */ + /* } */ } #page-menu { @@ -1184,11 +1203,10 @@ strong.highlight { #login-extra-links { margin: 32px auto 0 auto; padding: 0; - border-top: 1px solid $m-navbar-internal-border-color; text-align: center; li { - border-bottom: 1px solid $m-navbar-internal-border-color; + border-top: 1px solid $m-navbar-internal-border-color; font-size: $m-font-medium; a { @@ -1196,6 +1214,10 @@ strong.highlight { padding: 16px; @include link-colors($m-navbar-font-color, $m-link-color-hover, $m-link-color-active); } + + &:last-child { + border-bottom: 1px solid $m-navbar-internal-border-color; + } } } diff --git a/app/assets/stylesheets/app/application/icons.scss b/app/assets/stylesheets/app/application/icons.scss index 27230ed39..bea6b0dc5 100644 --- a/app/assets/stylesheets/app/application/icons.scss +++ b/app/assets/stylesheets/app/application/icons.scss @@ -262,17 +262,28 @@ a:not(.btn) .icon { } &.icon-published { - color: $m-green; - font-size: $m-font-bigger; - line-height: 0.5; - vertical-align: middle; + background: $m-green; + border-radius: 50%; + width: 11px; + height: 11px; + max-width: auto; } &.icon-unpublished { - color: $m-red; - font-size: $m-font-bigger; - line-height: 0.5; - vertical-align: middle; + background: $m-red; + border-radius: 50%; + width: 11px; + height: 11px; + max-width: auto; + } + + &.icon-rec-play { + color: $m-green; + } + + &.icon-rec-download { + color: $m-orange; + font-size: 18px; } &.icon-mconf-google { diff --git a/app/assets/stylesheets/app/application/lists-and-tables.scss b/app/assets/stylesheets/app/application/lists-and-tables.scss index 873d7bf26..20cc7d594 100644 --- a/app/assets/stylesheets/app/application/lists-and-tables.scss +++ b/app/assets/stylesheets/app/application/lists-and-tables.scss @@ -24,7 +24,7 @@ } &:hover, &.active { - background-color: #f6f6f6; + background-color: $m-light-gray; } &.list-item-disabled { @@ -82,6 +82,7 @@ background: $m-site-content-bg-color; @include border-radius($m-border-radius-large); padding: 40px 30px 30px 30px; + /* border: 1px solid $m-border-color-normal; */ } table, .table { @@ -95,18 +96,29 @@ table, .table { tbody { tr { - background: $m-site-content-bg-color; + /* background: $m-site-content-bg-color; */ padding: 12px 0; - border-top: 12px solid $m-site-content-bg-color; + /* border-top: 12px solid $m-site-content-bg-color; */ + border: 0; + + &:nth-child(even) { + background: $m-very-light-gray; + } + /* tr:nth-child(odd) {background: #FFF} */ /* &.fadeout { */ /* opacity: 0.6; */ /* } */ td { - background: $m-site-bg-color; - padding: 12px; + /* background: $m-site-bg-color; */ + padding: 20px 12px; vertical-align: top; + border: 0; + } + + &:hover { + background: $m-light-gray; } &:last-child { @@ -134,33 +146,19 @@ table, .table { } } -.table-tabs { - font-size: $m-font-medium; - margin: 0; - padding: 0; - @include mconf-clearfix; - margin-bottom: 20px; - - li { - float: left; - - a { - padding: 20px; - @include link-colors($m-font-color, $m-link-color-hover, $m-link-color-hover, $m-font-color); - - &.active { - font-weight: $m-font-weight-bold; - border-bottom: $m-active-item-border; - color: $m-active-item-border-color; - - &:hover { - color: $m-active-item-border-color; - } - } - - &:hover, &:focus { - text-decoration: none; - } - } - } -} +/* .table-wrapper { */ +/* background: transparent; */ +/* } */ + +/* table, .table { */ +/* tbody { */ +/* tr { */ +/* background: $m-very-light-gray; */ +/* border-radius: 10%; */ +/* } */ + +/* tr { */ +/* border-top: 12px solid $m-site-bg-color; */ +/* } */ +/* } */ +/* } */ diff --git a/app/assets/stylesheets/app/application/modal.scss b/app/assets/stylesheets/app/application/modal.scss index 11b362eb0..0385268a6 100644 --- a/app/assets/stylesheets/app/application/modal.scss +++ b/app/assets/stylesheets/app/application/modal.scss @@ -1,7 +1,7 @@ @import "definitions"; .modal .modal-header { - padding-top: 20px 15px; + padding: 20px; border-bottom: 0; h1, h2, h3, h4, h5 { @@ -22,6 +22,10 @@ } } +.modal-body { + padding: 0 20px; +} + // make the background of modals darker .modal-scrollable { background: rgba(0,0,0,0.4); diff --git a/app/assets/stylesheets/app/application/sidebar-size.scss b/app/assets/stylesheets/app/application/sidebar-size.scss index 3a1c48b3e..cac9941ca 100644 --- a/app/assets/stylesheets/app/application/sidebar-size.scss +++ b/app/assets/stylesheets/app/application/sidebar-size.scss @@ -15,18 +15,27 @@ $sidebar-sm: $m-sidebar-width-sm; body { background: linear-gradient( to right, - $m-sidebar-bg-color 0%, - $m-sidebar-bg-color $size - 1, - $m-sidebar-border $size - 1, - $m-sidebar-border $size, + $m-site-bg-color 0%, + $m-site-bg-color $size - 1, + $m-site-bg-color $size - 1, + $m-site-bg-color $size, $m-site-bg-color $size, $m-site-bg-color 100% ); + /* background: linear-gradient( */ + /* to right, */ + /* $m-sidebar-bg-color 0%, */ + /* $m-sidebar-bg-color $size - 1, */ + /* $m-sidebar-border $size - 1, */ + /* $m-sidebar-border $size, */ + /* $m-site-bg-color $size, */ + /* $m-site-bg-color 100% */ + /* ); */ } #sidebar, .sidebar { float: left; - width: $size; + width: $size - $m-content-vertical-padding; } #content-middle { @@ -49,7 +58,7 @@ $sidebar-sm: $m-sidebar-width-sm; @include breakpoint(xs) { body { - background-color: $m-site-bg-color; + /* background-color: $m-site-bg-color; */ } #sidebar, .sidebar { diff --git a/app/assets/stylesheets/app/my/meetings.scss b/app/assets/stylesheets/app/my/meetings.scss index 3906baa28..34436002e 100644 --- a/app/assets/stylesheets/app/my/meetings.scss +++ b/app/assets/stylesheets/app/my/meetings.scss @@ -5,11 +5,11 @@ body.my.meetings { - #my-meetings { - h1 { - margin-bottom: 90px; - } + #sidebar { + margin-top: $m-content-vertical-padding + 50px + 30px + ($m-font-normal * $m-font-h1-multiplier) + 5px; + } + #my-meetings { &.empty { h2 { font-weight: $m-font-weight-thin; diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 8ebaaa593..a8571c208 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -14,7 +14,7 @@ * Note: the order matters! *= require ./app/application/typography *= require ./app/application/base - * require ./app/application/sidebar-size + *= require ./app/application/sidebar-size * require ./app/application/set-max-width # disabled for now *= require ./app/application/icons *= require ./app/application/simple_form diff --git a/app/helpers/custom_bigbluebutton_playback_types_helper.rb b/app/helpers/custom_bigbluebutton_playback_types_helper.rb index 14f11c9b1..ff4d28630 100644 --- a/app/helpers/custom_bigbluebutton_playback_types_helper.rb +++ b/app/helpers/custom_bigbluebutton_playback_types_helper.rb @@ -25,7 +25,7 @@ def link_to_playback(recording, playback, options={}) if ['presentation_video', 'presentation_export'].include?(playback.identifier) playback_icon = icon_rec_download else - playback_icon = icon_conference_play + playback_icon = icon_rec_play end link_to playback_icon, play_bigbluebutton_recording_path(recording, link_params), diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb index 44b6aafae..749439ac5 100644 --- a/app/helpers/icons_helper.rb +++ b/app/helpers/icons_helper.rb @@ -282,16 +282,20 @@ def icon_conference_play(options={}) icon_constructor nil, "icon icon-mw-conference-play icon-conference-play", options end + def icon_rec_play(options={}) + icon_constructor nil, "icon icon-mw-conference-play icon-rec-play", options + end + def icon_rec_download(options={}) icon_constructor nil, "icon icon-mw-rec-download icon-rec-download", options end def icon_published(options={}) - content_tag :span, "•", class: "icon icon-published" + content_tag :div, "", class: "icon icon-published" end def icon_unpublished(options={}) - content_tag :span, "•", class: "icon icon-unpublished" + content_tag :div, "", class: "icon icon-unpublished" end def icon_options_dots(options={}) diff --git a/app/views/my/meetings.html.haml b/app/views/my/meetings.html.haml index 76cd31a36..22b5b9276 100644 --- a/app/views/my/meetings.html.haml +++ b/app/views/my/meetings.html.haml @@ -4,15 +4,20 @@ = content_for :navbar_menu do = render "my/navbar_menu", user_spaces: @user_spaces +-# = content_for :sidebar do +-# = render "my/navbar_menu", user_spaces: @user_spaces +-# = render "my/sidebar", user_spaces: @user_spaces + += content_for :sidebar_menu do + %ul + %li= link_to t(".recordedonly_true"), my_meetings_path, class: "#{'active' if params[:recordedonly].nil? }" + %li= link_to t(".recordedonly_false"), my_meetings_path(recordedonly: 'false'), class: "#{'active' if params[:recordedonly] == 'false' }" + - cls = @meetings.count <= 0 ? 'empty' : '' #my-meetings{ class: cls } - if @meetings.count > 0 %h1= t('.subtitle') - %ul.table-tabs - %li= link_to t(".recordedonly_false"), my_meetings_path(recordedonly: 'false'), class: "#{'active' if params[:recordedonly] == 'false' }" - %li= link_to t(".recordedonly_true"), my_meetings_path, class: "#{'active' if params[:recordedonly].nil? }" - #my-meetings-list = render partial: 'shared/recording_list', locals: { meetings: @meetings, show_authors: false, redir_to: my_meetings_path } diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml index ed4672393..b5456ace5 100644 --- a/app/views/users/edit.html.haml +++ b/app/views/users/edit.html.haml @@ -8,13 +8,17 @@ = page_title title = content_for :sidebar do - .sidebar-title= title - = render 'shared/user_card', user: @user, editing: true - - - if current_user == @user - #user-cancel-account - = link_to t('.cancel_account'), disable_user_path(current_user), data: { confirm: t('.cancel_confirm').html_safe }, method: :delete, class: 'btn btn-danger btn-sm' += content_for :sidebar_menu do + %ul + %li= link_to "Perfil", my_meetings_path(recordedonly: 'false') + %li= link_to "Segurança", my_meetings_path + %li= link_to "Dados da assinatura", my_meetings_path + %li= link_to "Pagamentos", my_meetings_path + -# .sidebar-title= title + -# - if current_user == @user + -# #user-cancel-account + -# = link_to t('.cancel_account'), disable_user_path(current_user), data: { confirm: t('.cancel_confirm').html_safe }, method: :delete, class: 'btn btn-danger btn-sm' - unless @user.confirmed? #user-not-confirmed.alert.alert-warning diff --git a/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb b/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb index 2dce7b05f..7ba93012f 100644 --- a/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb +++ b/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb @@ -19,7 +19,7 @@ context "when the identifier was presentation" do let(:playback) { FactoryGirl.create(:bigbluebutton_playback_format, playback_type: presentation) } let!(:link) { - link_to icon_conference_play, play_bigbluebutton_recording_path(recording, type: presentation.identifier), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation.tip")) + link_to icon_rec_play, play_bigbluebutton_recording_path(recording, type: presentation.identifier), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation.tip")) } subject { link_to_playback(recording, playback) } From 66f83e1092fa5612bef46d22691db5a92abaf71f Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 10 Nov 2017 18:32:55 -0200 Subject: [PATCH 32/75] Generate unique IDs also considering blacklisted words --- app/models/profile.rb | 3 +- lib/mconf/identifier.rb | 7 ++- spec/features/visitor_signs_up_spec.rb | 2 +- spec/lib/mconf/identifier_spec.rb | 8 ++++ spec/models/space_spec.rb | 64 ++++++++++++++++++++++++++ spec/models/user_spec.rb | 56 ++++++++++++++++++++++ 6 files changed, 137 insertions(+), 3 deletions(-) diff --git a/app/models/profile.rb b/app/models/profile.rb index 5430d1fe9..d4d63ded6 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -13,6 +13,7 @@ class Profile < ActiveRecord::Base # BigbluebuttonRoom requires an identifier with 3 chars generated from :name # So we'll require :full_name to have length >= 3 validates :full_name, presence: true, length: { minimum: 3 }, on: :create + alias_attribute :name, :full_name after_update :crop_avatar @@ -23,7 +24,7 @@ def crop_avatar after_update :update_webconf_room def update_webconf_room - if self.full_name_changed? + if self.full_name_changed? && self.user.bigbluebutton_room if self.full_name_was == self.user.bigbluebutton_room.name params = { :name => self.full_name diff --git a/lib/mconf/identifier.rb b/lib/mconf/identifier.rb index 71e48a3b0..7c48fbf97 100644 --- a/lib/mconf/identifier.rb +++ b/lib/mconf/identifier.rb @@ -28,7 +28,12 @@ def self.unique_mconf_id(base_value) users = User.with_disabled.where(username: new_value).count spaces = Space.with_disabled.where(permalink: new_value).count rooms = BigbluebuttonRoom.where(param: new_value).count - break if users == 0 && spaces == 0 && rooms == 0 + + # blacklisted words + file = File.join(::Rails.root, "config", "reserved_words.yml") + words = YAML.load_file(file)['words'] + + break if users == 0 && spaces == 0 && rooms == 0 && !words.include?(new_value) new_value = "#{base}-#{num}" num += 1 diff --git a/spec/features/visitor_signs_up_spec.rb b/spec/features/visitor_signs_up_spec.rb index 994392ac5..df8ccb8f5 100644 --- a/spec/features/visitor_signs_up_spec.rb +++ b/spec/features/visitor_signs_up_spec.rb @@ -95,7 +95,7 @@ end scenario 'with the username of a disabled user' do - disabled_user = FactoryGirl.create(:user, username: nil) + disabled_user = FactoryGirl.create(:user, username: nil, disabled: true) attrs = FactoryGirl.attributes_for(:user, username: nil) attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile, full_name: disabled_user.full_name) register_with(attrs) diff --git a/spec/lib/mconf/identifier_spec.rb b/spec/lib/mconf/identifier_spec.rb index ea59af817..a64c9e41e 100644 --- a/spec/lib/mconf/identifier_spec.rb +++ b/spec/lib/mconf/identifier_spec.rb @@ -51,6 +51,14 @@ it { target.unique_mconf_id("My Name").should eql("my-name-4") } end + it "considers blacklisted words" do + file = File.join(::Rails.root, "config", "reserved_words.yml") + words = YAML.load_file(file)['words'] + words.each do |word| + target.unique_mconf_id(word).should eql("#{word}-2") + end + end + context "ignores case when checking if it's unique" do before { FactoryGirl.create(:user, username: "my-namE") diff --git a/spec/models/space_spec.rb b/spec/models/space_spec.rb index f75228e67..d241d42e6 100644 --- a/spec/models/space_spec.rb +++ b/spec/models/space_spec.rb @@ -252,6 +252,70 @@ end end + describe "generates a unique permalink when creating without setting a permalink" do + + context "conflicting with a user" do + let(:user) { FactoryGirl.create(:user, username: nil) } + let(:space) { + FactoryGirl.create(:space, permalink: nil, name: user.name) + } + it { space.permalink.should eql(user.username + "-2") } + end + + context "conflicting with a disabled user" do + let(:user) { FactoryGirl.create(:user, username: nil, disabled: true) } + let(:space) { + FactoryGirl.create(:space, permalink: nil, name: user.name) + } + it { space.permalink.should eql(user.username + "-2") } + end + + context "conflicting with another space" do + let(:another_space) { + s = FactoryGirl.create(:space, permalink: nil) + s.update_attributes(name: s.name + "-other") # so it won't give a conflict on #name + s + } + let(:space) { + FactoryGirl.create(:space, permalink: nil, name: another_space.permalink) + } + it { space.permalink.should eql(another_space.permalink + "-2") } + end + + context "conflicting with a disabled space" do + let(:another_space) { + s = FactoryGirl.create(:space, permalink: nil, disabled: true) + s.update_attributes(name: s.name + "-other") # so it won't give a conflict on #name + s + } + let(:space) { + FactoryGirl.create(:space, permalink: nil, name: another_space.permalink) + } + it { space.permalink.should eql(another_space.permalink + "-2") } + end + + context "conflicting with a room" do + let!(:user) { + u = FactoryGirl.create(:user) + u.bigbluebutton_room.update_attributes(param: 'anything') + u + } + let(:space) { + FactoryGirl.create(:space, permalink: nil, name: 'anything') + } + it { space.permalink.should eql("anything-2") } + end + + context "conflicting with a blacklisted word" do + let(:space) { + FactoryGirl.create(:space, permalink: nil, name: 'Users') + } + it { space.permalink.should eql("users-2") } + end + + # TODO: if setting the permalink, should not generate but show a conflict + + end end it "#check_errors_on_bigbluebutton_room" diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 9e3a6f6b5..adc7a59bb 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -461,6 +461,62 @@ end end + describe "generates a unique username when creating without setting a username" do + + context "conflicting with another user" do + let(:another_user) { FactoryGirl.create(:user, username: nil) } + let(:user) { + FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: another_user.name }) + } + it { user.username.should eql(another_user.username + "-2") } + end + + context "conflicting with a disabled user" do + let(:another_user) { FactoryGirl.create(:user, username: nil, disabled: true) } + let(:user) { + FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: another_user.name }) + } + it { user.username.should eql(another_user.username + "-2") } + end + + context "conflicting with a space" do + let(:space) { FactoryGirl.create(:space, permalink: nil) } + let(:user) { + FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: space.name }) + } + it { user.username.should eql(space.permalink + "-2") } + end + + context "conflicting with a disabled space" do + let(:space) { FactoryGirl.create(:space, permalink: nil, disabled: false) } + let(:user) { + FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: space.name }) + } + it { user.username.should eql(space.permalink + "-2") } + end + + context "conflicting with a room" do + let!(:another_user) { + u = FactoryGirl.create(:user) + u.bigbluebutton_room.update_attributes(param: 'anything') + u + } + let(:user) { + FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: 'anything' }) + } + it { user.username.should eql("anything-2") } + end + + context "conflicting with a blacklisted word" do + let(:user) { + FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: 'Spaces' }) + } + it { user.username.should eql("spaces-2") } + end + + ## TODO CONFLICTING ROOM ONLY + + end end describe "on update" do From 7ac1e81099a5b3db5f4239d040b1c77221ff458c Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Tue, 14 Nov 2017 11:01:00 -0200 Subject: [PATCH 33/75] Rename Space's and Event's #permalink to #slug --- .../javascripts/app/spaces/new.js.coffee | 14 +- app/controllers/attachments_controller.rb | 2 +- app/controllers/events_controller.rb | 6 +- app/controllers/join_requests_controller.rb | 2 +- app/controllers/logo_images_controller.rb | 2 +- app/controllers/participants_controller.rb | 4 +- app/controllers/posts_controller.rb | 4 +- app/controllers/space_events_controller.rb | 4 +- app/controllers/spaces_controller.rb | 12 +- app/controllers/users_controller.rb | 4 +- app/mailers/event_mailer.rb | 2 +- app/models/event.rb | 4 +- app/models/space.rb | 12 +- app/models/user.rb | 2 +- .../identifier_uniqueness_validator.rb | 4 +- app/views/events/_list_view.html.haml | 2 +- app/views/events/_unified_event.html.haml | 2 +- app/views/events/index.html.haml | 2 +- app/views/events/select.rabl | 2 +- app/views/manage/_space_item.html.haml | 2 +- app/views/manage/_user_item.html.haml | 2 +- app/views/spaces/_card_item.html.haml | 2 +- app/views/spaces/_list_item.html.haml | 2 +- app/views/spaces/edit.html.haml | 2 +- app/views/spaces/index.html.haml | 2 +- app/views/spaces/index.rabl | 2 +- app/views/spaces/new.html.haml | 2 +- app/views/spaces/select.rabl | 2 +- app/views/spaces/show.rabl | 2 +- config/application.rb | 2 +- config/locales/bg/_simple_form.yml | 2 +- config/locales/bg/mconf.yml | 4 +- config/locales/de/_simple_form.yml | 2 +- config/locales/de/mconf.yml | 4 +- config/locales/en/_simple_form.yml | 2 +- config/locales/en/mconf.yml | 4 +- config/locales/es-419/_simple_form.yml | 2 +- config/locales/es-419/mconf.yml | 4 +- config/locales/pt-br/_simple_form.yml | 2 +- config/locales/pt-br/mconf.yml | 4 +- config/locales/ru/_simple_form.yml | 2 +- config/locales/ru/mconf.yml | 4 +- ...20171114124112_rename_permalink_to_slug.rb | 6 + db/schema.rb | 71 +++++--- lib/forgery/forgeries/internet.rb | 2 +- lib/mconf/identifier.rb | 2 +- spec/controllers/events_controller_spec.rb | 2 +- .../controllers/shibboleth_controller_spec.rb | 12 +- spec/controllers/spaces_controller_spec.rb | 8 +- spec/factories/definitions.rb | 2 +- spec/factories/space.rb | 2 +- spec/features/ldap/user_signs_in_spec.rb | 2 +- .../manage/admin_manages_spaces_spec.rb | 16 +- .../manage/admin_manages_users_spec.rb | 34 ++-- .../features/shibboleth/user_signs_in_spec.rb | 2 +- spec/features/spaces/creating_a_space_spec.rb | 28 +-- spec/features/spaces/not_found_errors_spec.rb | 2 +- spec/features/visitor_signs_up_spec.rb | 12 +- spec/lib/mconf/identifier_spec.rb | 12 +- spec/lib/mconf/ldap_spec.rb | 2 +- spec/lib/mconf/shibboleth_spec.rb | 4 +- ...sure_one_and_onlyone_room_to_users_spec.rb | 4 +- ..._in_user_login_and_space_permalink_spec.rb | 22 +-- spec/models/space_spec.rb | 168 +++++++++--------- spec/models/user_spec.rb | 22 +-- .../identifier_uniqueness_validator_spec.rb | 52 +++--- .../room_param_uniqueness_validator_spec.rb | 20 +-- 67 files changed, 339 insertions(+), 314 deletions(-) create mode 100644 db/migrate/20171114124112_rename_permalink_to_slug.rb diff --git a/app/assets/javascripts/app/spaces/new.js.coffee b/app/assets/javascripts/app/spaces/new.js.coffee index 92a6868ee..3c577adc6 100644 --- a/app/assets/javascripts/app/spaces/new.js.coffee +++ b/app/assets/javascripts/app/spaces/new.js.coffee @@ -1,14 +1,14 @@ class mconf.NewSpaceForm @setup: -> $name = $("#space_name") - $permalink = $("#space_permalink") - $permalink.attr "value", mconf.Base.stringToSlug($permalink.val(), true) - $permalink.on "input", () -> - $permalink.val(mconf.Base.stringToSlug($permalink.val(), true)) - $permalink.on "blur", () -> - $permalink.val(mconf.Base.stringToSlug($permalink.val(), false)) + $slug = $("#space_slug") + $slug.attr "value", mconf.Base.stringToSlug($slug.val(), true) + $slug.on "input", () -> + $slug.val(mconf.Base.stringToSlug($slug.val(), true)) + $slug.on "blur", () -> + $slug.val(mconf.Base.stringToSlug($slug.val(), false)) $name.on "input keyup", () -> - $permalink.attr "value", mconf.Base.stringToSlug($name.val()) + $slug.attr "value", mconf.Base.stringToSlug($name.val()) $ -> if isOnPage 'spaces', 'new|create' diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index 238d3e4d8..2f10a622c 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -12,7 +12,7 @@ class AttachmentsController < ApplicationController # anonymous users can view and download attachments before_filter :authenticate_user!, except: [:index, :show] - load_and_authorize_resource :space, :find_by => :permalink + load_and_authorize_resource :space, :find_by => :slug before_filter :check_repository_enabled # note: delete_collection is authorized internally diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index cea48eaf6..9a86260c3 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -10,8 +10,8 @@ class EventsController < InheritedResources::Base before_filter :concat_datetimes, :only => [:create, :update] - defaults finder: :find_by_permalink! - load_and_authorize_resource find_by: :permalink + defaults finder: :find_by_slug! + load_and_authorize_resource find_by: :slug before_filter :find_or_create_participant, only: [:show] @@ -36,7 +36,7 @@ class EventsController < InheritedResources::Base def new if params[:space_id].present? - @event.owner = Space.find_by_permalink!(params[:space_id]) + @event.owner = Space.find_by!(slug: params[:space_id]) else @event.owner = current_user end diff --git a/app/controllers/join_requests_controller.rb b/app/controllers/join_requests_controller.rb index c9cd0c156..096e82981 100644 --- a/app/controllers/join_requests_controller.rb +++ b/app/controllers/join_requests_controller.rb @@ -13,7 +13,7 @@ class JoinRequestsController < ApplicationController @join_request.new_activity(params[:action]) if !@join_request.errors.any? && @join_request.persisted? end - load_resource :space, :find_by => :permalink + load_resource :space, :find_by => :slug load_and_authorize_resource :join_request, :find_by => :secret_token, :through => :space, :except => [:admissions, :invite] load_resource :join_request, :through => :space, :only => [:admissions, :invite] # these are authenticated via space parent diff --git a/app/controllers/logo_images_controller.rb b/app/controllers/logo_images_controller.rb index aa3ac7eae..4aa5719cb 100644 --- a/app/controllers/logo_images_controller.rb +++ b/app/controllers/logo_images_controller.rb @@ -18,7 +18,7 @@ def crop @circular = true @width = 100 elsif params[:model_type] == 'space' - @space = Space.find_by(permalink: params[:model_id]) + @space = Space.find_by(slug: params[:model_id]) @model = @space @url = space_path(@space) @page = t('logo.crop') diff --git a/app/controllers/participants_controller.rb b/app/controllers/participants_controller.rb index f3f3dc4b4..d6151b50e 100644 --- a/app/controllers/participants_controller.rb +++ b/app/controllers/participants_controller.rb @@ -12,10 +12,10 @@ class ParticipantsController < InheritedResources::Base layout "no_sidebar", only: [:new, :create] - load_and_authorize_resource :event, find_by: :permalink + load_and_authorize_resource :event, find_by: :slug load_and_authorize_resource :participant, :through => :event - belongs_to :event, finder: :find_by_permalink + belongs_to :event, finder: :find_by_slug before_filter :custom_loading, only: [:index] before_filter only: [:create] do diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 8fdef0d18..b7f17e85d 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -8,9 +8,9 @@ class PostsController < InheritedResources::Base before_filter :require_spaces_mod - belongs_to :space, finder: :find_by_permalink + belongs_to :space, finder: :find_by_slug - load_and_authorize_resource :space, :find_by => :permalink + load_and_authorize_resource :space, :find_by => :slug before_filter :get_posts, :only => [:index] load_and_authorize_resource :through => :space diff --git a/app/controllers/space_events_controller.rb b/app/controllers/space_events_controller.rb index f44dbf823..7138ce814 100644 --- a/app/controllers/space_events_controller.rb +++ b/app/controllers/space_events_controller.rb @@ -11,8 +11,8 @@ class SpaceEventsController < ApplicationController before_filter :require_spaces_mod before_filter :require_events_mod - load_and_authorize_resource :space, :find_by => :permalink - load_and_authorize_resource :find_by => :permalink, :class => Event + load_and_authorize_resource :space, :find_by => :slug + load_and_authorize_resource :find_by => :slug, :class => Event # need it to show info in the sidebar before_filter :webconf_room! diff --git a/app/controllers/spaces_controller.rb b/app/controllers/spaces_controller.rb index 5c63ad984..b0f79c475 100644 --- a/app/controllers/spaces_controller.rb +++ b/app/controllers/spaces_controller.rb @@ -22,10 +22,10 @@ class SpacesController < InheritedResources::Base rescue_from ActiveRecord::RecordNotFound, :with => :handle_record_not_found # Cancan and inherited resources load - defaults finder: :find_by_permalink! + defaults finder: :find_by_slug! before_filter :load_space_via_space_id, only: [:edit_recording] before_filter :load_spaces_index, only: [:index, :select] - load_and_authorize_resource :find_by => :permalink, :except => [:enable, :disable, :destroy] + load_and_authorize_resource :find_by => :slug, :except => [:enable, :disable, :destroy] before_filter :load_and_authorize_with_disabled, :only => [:enable, :disable, :destroy] # all actions that render the web conference room snippet @@ -238,7 +238,7 @@ def set_menu_tab end def load_and_authorize_with_disabled - @space = Space.with_disabled.find_by_permalink(params[:id]) + @space = Space.with_disabled.find_by(slug: params[:id]) authorize! action_name.to_sym, @space end @@ -254,11 +254,11 @@ def load_events # For edit_recording def load_space_via_space_id - @space = Space.find_by_permalink(params[:space_id]) + @space = Space.find_by(slug: params[:space_id]) end def handle_record_not_found(exception) - @error_message = t("spaces.error.not_found", :permalink => params[:id], :path => spaces_path) + @error_message = t("spaces.error.not_found", :slug => params[:id], :path => spaces_path) render_404 exception end @@ -309,7 +309,7 @@ def require_approval? allow_params_for :space def allowed_params - [ :name, :description, :logo_image, :public, :permalink, :disabled, :repository, + [ :name, :description, :logo_image, :public, :slug, :disabled, :repository, :crop_x, :crop_y, :crop_w, :crop_h, :crop_img_w, :crop_img_h, :tag_list, :bigbluebutton_room_attributes => [ :id, :attendee_key, :moderator_key, :default_layout, :private, :welcome_msg ] diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 9140086af..c065f9295 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -16,7 +16,7 @@ class UsersController < InheritedResources::Base respond_to :json, only: [:select, :current, :fellows] respond_to :xml, only: [:current] - defaults finder: :find_by_permalink! + defaults finder: :find_by_slug! load_and_authorize_resource :find_by => :username, :except => [:enable, :index, :destroy] before_filter :load_and_authorize_with_disabled, :only => [:enable, :destroy] @@ -40,7 +40,7 @@ def determine_layout end def index - @space = Space.find_by_permalink!(params[:space_id]) + @space = Space.find_by!(slug: params[:space_id]) webconf_room! authorize! :show, @space diff --git a/app/mailers/event_mailer.rb b/app/mailers/event_mailer.rb index 8c9c5f7f8..bbe215b52 100644 --- a/app/mailers/event_mailer.rb +++ b/app/mailers/event_mailer.rb @@ -42,7 +42,7 @@ def invitation_email(invitation) @event.time_zone = time_zone subject = t('event_mailer.invitation_email.subject', :event => @event.name) - attachments["#{@event.permalink}.ics"] = { :mime_type => 'text/calendar', :content => @invitation.to_ical } + attachments["#{@event.slug}.ics"] = { :mime_type => 'text/calendar', :content => @invitation.to_ical } if to.is_a?(User) create_email(to.email, @invitation.sender.email, subject) diff --git a/app/models/event.rb b/app/models/event.rb index a6680b6d7..cef77f1e8 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -36,8 +36,8 @@ def public validates :summary, length: {:maximum => 140} validates :owner, presence: true - friendly_id :name, use: :slugged, :slug_column => :permalink - validates :permalink, :presence => true + friendly_id :name, use: :slugged, :slug_column => :slug + validates :slug, :presence => true # If the event has no ending date, use a day from start date before_save :check_end_on diff --git a/app/models/space.rb b/app/models/space.rb index 2fb6500df..9ed657a86 100644 --- a/app/models/space.rb +++ b/app/models/space.rb @@ -15,7 +15,7 @@ # # == Attributes # * +name+ : String with a human friendly name of the space -# * +permalink+ : The string used to identify the space in URLs +# * +slug+ : The string used to identify the space in URLs # * +description+ : Text with a human friendly description of the space # * +public+ : A boolean value denoting whether the space is public # * +disabled+: A boolean value denoting whether the space has been disabled @@ -77,10 +77,10 @@ class Space < ActiveRecord::Base :length => { :minimum => 3 } # BigbluebuttonRoom requires an identifier with 3 chars generated from - # 'permalink', so we require it to have have length >= 3 + # 'slug', so we require it to have have length >= 3 # TODO: improve the format matcher, check specs for some values that are allowed today # but are not really recommended (e.g. '---') - validates :permalink, + validates :slug, presence: true, format: /\A[A-Za-z0-9\-_]*\z/, length: { minimum: 3 }, @@ -90,7 +90,7 @@ class Space < ActiveRecord::Base # the friendly name / slug for the space extend FriendlyId - friendly_id :slug_candidates, use: :slugged, slug_column: :permalink + friendly_id :slug_candidates, use: :slugged, slug_column: :slug def slug_candidates [ Mconf::Identifier.unique_mconf_id(name) ] end @@ -349,7 +349,7 @@ def initials def create_webconf_room params = { owner: self, - param: self.permalink, + param: self.slug, name: self.name, private: false, moderator_key: SecureRandom.hex(8), @@ -376,7 +376,7 @@ def update_webconf_room # TODO: Check for any error, not only on :param; test it better; do it for users too. def check_errors_on_bigbluebutton_room if self.bigbluebutton_room and self.bigbluebutton_room.errors[:param].size > 0 - self.errors.add :permalink, I18n.t('activerecord.errors.messages.invalid_identifier', :id => self.bigbluebutton_room.param) + self.errors.add :slug, I18n.t('activerecord.errors.messages.invalid_identifier', :id => self.bigbluebutton_room.param) end end diff --git a/app/models/user.rb b/app/models/user.rb index e8d5e0544..e3728b1be 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -158,7 +158,7 @@ def slug_candidates alias_attribute :name, :full_name alias_attribute :title, :full_name - alias_attribute :permalink, :username + alias_attribute :slug, :username delegate :full_name, :first_name, :organization, :city, :country, :logo, :logo_image, :logo_image_url, diff --git a/app/validators/identifier_uniqueness_validator.rb b/app/validators/identifier_uniqueness_validator.rb index ddd655bf2..0e61519cb 100644 --- a/app/validators/identifier_uniqueness_validator.rb +++ b/app/validators/identifier_uniqueness_validator.rb @@ -6,14 +6,14 @@ # 3 or later. See the LICENSE file. # Validates the value of an attribute against the identifiers in the application: -# * Space#permalinks +# * Space#slugs # * User#username. # Invalidates the record if the value is already taken. # Uses case-insensitive comparisons. class IdentifierUniquenessValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) unless value.blank? - spaces = Space.with_disabled.where("lower(permalink) = ?", value.downcase) + spaces = Space.with_disabled.where("lower(slug) = ?", value.downcase) if record.is_a?(Space) && !record.new_record? spaces = spaces.where("id != ?", record.id) end diff --git a/app/views/events/_list_view.html.haml b/app/views/events/_list_view.html.haml index 86cc7ec48..157ed7cdb 100644 --- a/app/views/events/_list_view.html.haml +++ b/app/views/events/_list_view.html.haml @@ -8,7 +8,7 @@ - if events.count > 0 - events.each do |event| - is_participant = user_events.include?(event) - %li.list-text{:name => event.permalink} + %li.list-text{:name => event.slug} = render "unified_event", :event => event, :is_participant => is_participant - else = t(".no_events") diff --git a/app/views/events/_unified_event.html.haml b/app/views/events/_unified_event.html.haml index 23f20e91e..219a0f278 100644 --- a/app/views/events/_unified_event.html.haml +++ b/app/views/events/_unified_event.html.haml @@ -3,7 +3,7 @@ -# is_participant (boolean): Whether the current user is a participant in the event or not - unless event.nil? - = content_tag(:div, :name => event.permalink, :class => "thread thread-event #{cycle("thread-even" , "thread-odd")} unified-event") do + = content_tag(:div, :name => event.slug, :class => "thread thread-event #{cycle("thread-even" , "thread-odd")} unified-event") do .logo-in-thread = event_logo_link(event, :title => sanitize(event.name), :class => "logo logo-event") diff --git a/app/views/events/index.html.haml b/app/views/events/index.html.haml index 5fbcee626..945b5fa5f 100644 --- a/app/views/events/index.html.haml +++ b/app/views/events/index.html.haml @@ -20,7 +20,7 @@ - @events.each do |event| -# TODO: everybody has access? - has_access = true - .content-block-middle{ :id => "#{event.permalink}-description", :style => "display:none;" } + .content-block-middle{ :id => "#{event.slug}-description", :style => "display:none;" } .event-logo-wrapper = event_logo_link(event, :class => "logo logo-event") - if has_access diff --git a/app/views/events/select.rabl b/app/views/events/select.rabl index b97b7d98b..4beedb385 100644 --- a/app/views/events/select.rabl +++ b/app/views/events/select.rabl @@ -1,5 +1,5 @@ object @events => :events -attributes :id, :permalink, :public +attributes :id, :slug, :public node(:name) { |event| html_escape(event.name) } node(:text) { |event| html_escape(event.name) } node(:url) { |event| event_url(event) } diff --git a/app/views/manage/_space_item.html.haml b/app/views/manage/_space_item.html.haml index 91fe04102..a7703c54f 100644 --- a/app/views/manage/_space_item.html.haml +++ b/app/views/manage/_space_item.html.haml @@ -1,5 +1,5 @@ - cls = space.disabled? ? "list-item-disabled" : "" -.list-item.container-fluid{ id: "space-#{space.permalink}", class: cls } +.list-item.container-fluid{ id: "space-#{space.slug}", class: cls } .col-xs-12.col-sm-1 .list-item-logo = link_logo_image(space, options_for_tooltip(sanitize(space.name), :size => '84x64', :class => "logo logo-space")) diff --git a/app/views/manage/_user_item.html.haml b/app/views/manage/_user_item.html.haml index 9d4802e8e..3bf4eb107 100644 --- a/app/views/manage/_user_item.html.haml +++ b/app/views/manage/_user_item.html.haml @@ -1,5 +1,5 @@ - cls = user.disabled? ? "list-item-disabled" : "" -.list-item.container-fluid{ id: "user-#{user.permalink}", class: cls } +.list-item.container-fluid{ id: "user-#{user.slug}", class: cls } .col-xs-12.col-sm-1 .list-item-logo = raw logo_image(user, :size => '128', :title => user.name, :class => 'logo logo-user') diff --git a/app/views/spaces/_card_item.html.haml b/app/views/spaces/_card_item.html.haml index b257a3886..2b84bcc8c 100644 --- a/app/views/spaces/_card_item.html.haml +++ b/app/views/spaces/_card_item.html.haml @@ -1,7 +1,7 @@ -# Locals: -# space (Space): the target model -.card-item.card-item-space{ name: space.permalink } +.card-item.card-item-space{ name: space.slug } = link_logo_image(space, :size => '84x64', :"data-placement" => 'bottom', :class => "logo logo-space") diff --git a/app/views/spaces/_list_item.html.haml b/app/views/spaces/_list_item.html.haml index 07dc97212..684c8363b 100644 --- a/app/views/spaces/_list_item.html.haml +++ b/app/views/spaces/_list_item.html.haml @@ -8,7 +8,7 @@ - show_join_request ||= false - cls = space.disabled? ? "list-item-disabled" : "" -.list-item.list-item-space.space-container.container-fluid{ name: space.permalink, class: cls } +.list-item.list-item-space.space-container.container-fluid{ name: space.slug, class: cls } .col-1 .list-item-logo diff --git a/app/views/spaces/edit.html.haml b/app/views/spaces/edit.html.haml index 08a73f107..def9978d0 100644 --- a/app/views/spaces/edit.html.haml +++ b/app/views/spaces/edit.html.haml @@ -9,7 +9,7 @@ #edit-space-options = simple_form_for @space, html: { method: :put, class: 'single-column' } do |f| - = f.input :permalink , disabled: true + = f.input :slug , disabled: true = f.input :name = f.input :description, as: :text, input_html: { rows: 5 } = f.input :tag_list, input_html: { value: @space.tag_list.join(ActsAsTaggableOn.delimiter), data: { sep: ActsAsTaggableOn.delimiter } } diff --git a/app/views/spaces/index.html.haml b/app/views/spaces/index.html.haml index dbb54ada9..9f25ebcb9 100644 --- a/app/views/spaces/index.html.haml +++ b/app/views/spaces/index.html.haml @@ -17,7 +17,7 @@ - @spaces.each do |space| - has_access = user_signed_in? || space.public - .space-description{ id: "#{space.permalink}-description" } + .space-description{ id: "#{space.slug}-description" } .space-logo-wrapper - if has_access = link_logo_image(space, :size => '336x256', :title => space.name, :class => "logo logo-space") diff --git a/app/views/spaces/index.rabl b/app/views/spaces/index.rabl index c9b5e5917..cdce614bb 100644 --- a/app/views/spaces/index.rabl +++ b/app/views/spaces/index.rabl @@ -1,5 +1,5 @@ object @spaces => :spaces -attributes :permalink, :name +attributes :slug, :name node(:logo) do |space| { :width => 168, :height => 128, :logo_image_path => space.logo_image_url('logo168x128') } end diff --git a/app/views/spaces/new.html.haml b/app/views/spaces/new.html.haml index e4a06a130..bb2749266 100644 --- a/app/views/spaces/new.html.haml +++ b/app/views/spaces/new.html.haml @@ -5,7 +5,7 @@ = simple_form_for @space, :html => { :method => :post }, :url => spaces_path, wrapper: :horizontal_form, html: { class: "form-horizontal" } do |f| #new-space-basic-info = f.input :name, :autofocus => true - = f.input :permalink + = f.input :slug = f.input :description, :as => :text = f.input :public = f.button :wrapped, :value => t("_other.create") diff --git a/app/views/spaces/select.rabl b/app/views/spaces/select.rabl index 6c8efe37f..c7b50a548 100644 --- a/app/views/spaces/select.rabl +++ b/app/views/spaces/select.rabl @@ -1,4 +1,4 @@ object @spaces => :spaces -attributes :id, :permalink, :name, :public +attributes :id, :slug, :name, :public node(:text) { |space| html_escape(space.name) } node(:url) { |space| space_url(space) } diff --git a/app/views/spaces/show.rabl b/app/views/spaces/show.rabl index bf8b164e0..3dbc46583 100644 --- a/app/views/spaces/show.rabl +++ b/app/views/spaces/show.rabl @@ -1,5 +1,5 @@ object @space => :space -attributes :permalink, :name +attributes :slug, :name node(:logo) do |space| { :width => 168, :height => 128, :logo_image_path => space.logo_image_url('logo168x128') } end diff --git a/config/application.rb b/config/application.rb index 9875b8f51..8f6a95205 100644 --- a/config/application.rb +++ b/config/application.rb @@ -29,7 +29,7 @@ class Application < Rails::Application # Only load the plugins named here, in the order given (default is alphabetical). # :all can be used as a placeholder for all plugins not explicitly named. # config.plugins = [ :exception_notification, :ssl_requirement, :all ] - # config.plugins = [ :simple_captcha, :permalink_fu, :all ] + # config.plugins = [ :simple_captcha, :slug_fu, :all ] config.plugins = [:all] # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. diff --git a/config/locales/bg/_simple_form.yml b/config/locales/bg/_simple_form.yml index 30b81108f..efd150fb1 100644 --- a/config/locales/bg/_simple_form.yml +++ b/config/locales/bg/_simple_form.yml @@ -71,7 +71,7 @@ bg: presenter_share_only: "Разрешено е да се използва камерата и микрофона само от водещия. Препоръчително за конференции от типа един-към-много. " private: "В затворените стаи е необходимо да влезете с парола. В откритите стаи може да влезе всеки желаещ като използва линка. Само участниците могат да започнат конференцията независимо дали е в открита или затворена стая." welcome_msg: "Това съобщение ще бъде показано на потребителя в чата, когато той влиза в конференцията. Оставете празно, за да използвате съобщението по подразбиране. Можете да използвате конкретна информация за срещата с помощта на променливи величини %%CONFNAME%%, %%DIALNUM%% и %%CONFNUM%%" - permalink: "Атрибутът се използва за идентифициране на адреса на групата, включително и неговата конферентна зала. Използвайте само малки букви, цифри и тирета." + slug: "Атрибутът се използва за идентифициране на адреса на групата, включително и неговата конферентна зала. Използвайте само малки букви, цифри и тирета." public: "Групите могат д бъдат открити и всички потребители могат да наблюдават дейностите в тях, както и закрити, когато достъп до групата имат само участниците в нея." repository: "Хринилище на документи - място, което потребителите могат да Хранилище документов - место, в которое пользователи могут да качват и обменят документи и ресурси от всякакъв тип." user: diff --git a/config/locales/bg/mconf.yml b/config/locales/bg/mconf.yml index 216161303..9dffb677b 100644 --- a/config/locales/bg/mconf.yml +++ b/config/locales/bg/mconf.yml @@ -202,7 +202,7 @@ bg: description: "Описание" moderator_key: "Парола за модератори" name: "Име" - permalink: "Идентификатор" + slug: "Идентификатор" public: "Публичен" repository: "Хранилище за документи" user: @@ -1446,7 +1446,7 @@ bg: already_invited: "Вие вече бяхте поканени в тази общност, моля, приемете или откажете поканата" creation_forbidden: "Вие не можете да създавате общност" need_join_to_access: "За достъп до общността е необходимо да се присъедините към нея. Изпратете заявката до администратор." - not_found: "Общност \"%{permalink}\" не е намерена.
Опитайте да потърсите тук всички общности ?" + not_found: "Общност \"%{slug}\" не е намерена.
Опитайте да потърсите тук всички общности ?" unapproved: "Общността още не е одобрена от администратор." index: create_new_space: "Създаване на нова общност" diff --git a/config/locales/de/_simple_form.yml b/config/locales/de/_simple_form.yml index ea951ad77..32721039e 100644 --- a/config/locales/de/_simple_form.yml +++ b/config/locales/de/_simple_form.yml @@ -65,7 +65,7 @@ de: presenter_share_only: "Wenn diese Option gesetzt ist, ist nur der Präsentator berechtigt, seine Kamera und sein Mikrofon zu teilen. Das ist geeignet für one-to-many Konferenzen." private: "Private Räume benötigen ein Passwort für Benutzer, um teilzunehmen. Öffentliche Räume können von jedem mit diesem Link betreten werden. Nur Mitglieder können eine Konferenz in einem Raum einer Gruppe beginnen, unhabhängig davon ob der Raum privat oder öffentlich ist." welcome_msg: "Diese Nachricht wird im Chat gezeigt wenn ein Benutzer an der Konferenz teilnimmt. Wenn Sie nichts eingeben, wird die Standardmitteilung angezeigt. Sie können meetingspezifische Informationen mit den Variablen %%CONFNAME%%, %%DIALNUM%% und %%CONFNUM%% angeben." - permalink: "Dieses Attribut wird verwendet, um Ihre Gruppe in URLs, inklusive der URL des Konferenzraums, zu identifizieren. Erlaubt sind Kleinbuchstaben, Nummern und Bindestriche." + slug: "Dieses Attribut wird verwendet, um Ihre Gruppe in URLs, inklusive der URL des Konferenzraums, zu identifizieren. Erlaubt sind Kleinbuchstaben, Nummern und Bindestriche." public: "Gruppen können öffentlich sein, damit Jeder sehen kann, was darin passiert, oder privat, sodass nur Mitglieder die Aktivitäten der Gruppe sehen können" repository: "Die Dokumentenablage ist ein Ort, an dem Benutzer einer Gruppe Dokumente jeder Art hochladen und teilen können" user: diff --git a/config/locales/de/mconf.yml b/config/locales/de/mconf.yml index 65c47bf62..5c7bfeb6a 100644 --- a/config/locales/de/mconf.yml +++ b/config/locales/de/mconf.yml @@ -182,7 +182,7 @@ de: description: "Beschreibung" moderator_key: "Schlüssel für Moderatoren" name: "Name" - permalink: "Bezeichnung" + slug: "Bezeichnung" public: "Öffentlich" repository: "Dokumentenablage" user: @@ -1405,7 +1405,7 @@ de: already_invited: "Sie wurden bereits zu dieser Gruppe eingeladen, bitte folgen Sie der Einladung oder lehnen Sie sie ab" creation_forbidden: "Sie sind nicht berechtigt, Gruppen zu erstellen" need_join_to_access: "Sie müssen der Gruppe beitreten, um weiter zu kommen. Senden Sie eine Betrittsanfrage an einen der Administratoren" - not_found: "Die Gruppe \"%{permalink}\" wurde nicht gefunden.
Möchten sie nach ihm in allen Gruppen suchen?" + not_found: "Die Gruppe \"%{slug}\" wurde nicht gefunden.
Möchten sie nach ihm in allen Gruppen suchen?" unapproved: "Die Gruppe wurde noch nicht von einem Administrator freigeschalten." index: create_new_space: "Neue Gruppe erstellen" diff --git a/config/locales/en/_simple_form.yml b/config/locales/en/_simple_form.yml index 2e875824b..07f6a8d3d 100644 --- a/config/locales/en/_simple_form.yml +++ b/config/locales/en/_simple_form.yml @@ -81,7 +81,7 @@ en: presenter_share_only: "When set to true only the presenter is allowed to share his webcam and microphone. This is great for one-to-many conferences." private: "Private rooms require a password for users to join. Public rooms can be accessed by anyone with its link. Only members can start a conference in a space's room, regardless of if it's private or public." welcome_msg: "This message will be shown on the chat when a user joins the conference. Leave it empty to use the default message. You can include meeting specific information with the variables %%CONFNAME%%, %%DIALNUM%% and %%CONFNUM%%" - permalink: "This attribute is used to identify your space in URLs, including the URL of its conference room. Use only lowercase letters, numbers or dashes." + slug: "This attribute is used to identify your space in URLs, including the URL of its conference room. Use only lowercase letters, numbers or dashes." public: "Collaborative spaces can be public, for anybody to watch what happens in them, or private, where members only have access to the activities of the space" repository: "The document repository is a place where users of this space can upload and share documents of any type" tag_list: "Write a tag name and select it on the list or type a comma (',') to create it" diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index ece19ae3c..43cc25e87 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -262,7 +262,7 @@ en: description: "Description" moderator_key: "Key for moderators" name: "Name" - permalink: "Identifier" + slug: "Identifier" public: "Public" repository: "Document repository" tag_list: "Tags" @@ -1594,7 +1594,7 @@ en: creation_forbidden: "You are not allowed to create spaces" last_admin_cant_leave: "You can't leave this space because you're the last administrator" need_join_to_access: "You need to join this space to access it. Send a join request to the administrators." - not_found: "The space \"%{permalink}\" was not found.
Would you like to search for it in all spaces?" + not_found: "The space \"%{slug}\" was not found.
Would you like to search for it in all spaces?" unapproved: "This space was not yet approved by an administrator." index: create_new_space: "Create a new space" diff --git a/config/locales/es-419/_simple_form.yml b/config/locales/es-419/_simple_form.yml index cc926e5cc..b1236e3a4 100644 --- a/config/locales/es-419/_simple_form.yml +++ b/config/locales/es-419/_simple_form.yml @@ -69,7 +69,7 @@ es-419: presenter_share_only: "Cuando se activa, sólo se le permite al presentador compartir su webcam y micrófono. Esto es ideal para conferencias uno a muchos." private: "Salas privadas requieren una contraseña para que los usuarios puedan unirse. Las salas públicas son accesibles por cualquier persona con su enlace. Sólo los miembros pueden iniciar una conferencia en la sala de un espacio, sin importar si es privada o pública." welcome_msg: "Este mensaje se mostrará en el chat cuando un usuario se una a la conferencia. Déjelo vacío para usar el mensaje predeterminado. Puede incluir información específica de la reunión utilizando las variables %%CONFNAME%%, %%DIALNUM%% y %%CONFNUM%%" - permalink: "Este atributo es utilizado para identificar su espacio en la URL, incluso la URL de su sala de conferencias. Utilice sólo letras minúsculas, números o guiones." + slug: "Este atributo es utilizado para identificar su espacio en la URL, incluso la URL de su sala de conferencias. Utilice sólo letras minúsculas, números o guiones." public: "Los espacios colaborativos pueden ser públicos, para que cualquier persona pueda acceder a ellos, o privados, donde sólo los miembros tienen acceso a las actividades del espacio" repository: "El repositorio de documentos es un lugar donde los usuarios de este espacio pueden subir y compartir documentos de cualquier tipo" user: diff --git a/config/locales/es-419/mconf.yml b/config/locales/es-419/mconf.yml index e9a7dcfd1..99ba4ca6a 100644 --- a/config/locales/es-419/mconf.yml +++ b/config/locales/es-419/mconf.yml @@ -202,7 +202,7 @@ es-419: description: "Descripcion " moderator_key: "Clave para moderadores" name: "Nombre" - permalink: "Identificador" + slug: "Identificador" public: "Público" repository: "Repositorio de documentos" user: @@ -1444,7 +1444,7 @@ es-419: already_invited: "Ya ha sido invitado a unirse a este espacio. Por favor, acepte o rechace la invitación" creation_forbidden: "No está autorizado a crear espacios" need_join_to_access: "Necesita unirse a este espacio para acceder. Envíe una solicitud a los administradores." - not_found: "El espacio \"%{permalink}\" no fue encontrado.
¿Le gustaría buscarlo en todos los espacios?" + not_found: "El espacio \"%{slug}\" no fue encontrado.
¿Le gustaría buscarlo en todos los espacios?" unapproved: "Este espacio aún no ha sido aprobado por un administrador." index: create_new_space: "Crear un nuevo espacio" diff --git a/config/locales/pt-br/_simple_form.yml b/config/locales/pt-br/_simple_form.yml index 5bef08d37..fd814161b 100644 --- a/config/locales/pt-br/_simple_form.yml +++ b/config/locales/pt-br/_simple_form.yml @@ -90,7 +90,7 @@ pt-br: presenter_share_only: "Habilite para que somente o apresentador possa compartilhar sua câmera e microfone. Utilizado em conferências \"um para muitos\"." private: "Salas privadas requerem uma senha de acesso. Salas públicas podem ser acessadas por qualquer pessoa com acesso ao link. Apenas membros pode iniciar uma conferência na sala da comunidade, seja ela pública ou privada." welcome_msg: "Essa mensagem é exibida no bate-papo quando um usuário entrar na conferência. Deixe em branco para usar a mensagem padrão. Você pode incluir informações específicas à conferência usando as variáveis %%CONFNAME%%, %%DIALNUM%% e %%CONFNUM%%" - permalink: "Este atributo é utilizado para identificar a sua comunidade em endereços web, incluindo o endereço da sala de webconferência desta comunidade. Use apenas letras minúsculas, números ou hifens." + slug: "Este atributo é utilizado para identificar a sua comunidade em endereços web, incluindo o endereço da sala de webconferência desta comunidade. Use apenas letras minúsculas, números ou hifens." public: "Comunidades colaborativas podem ser públicas, para que qualquer pessoa possa ver o que acontece nelas, ou privadas, onde apenas os membros têm acesso às atividades da comunidade" repository: "O repositório de documentos é um espaço onde os usuários deste espaço podem compartilhar documentos de qualquer tipo" tag_list: "Digite uma tag e selecione-a na lista ou digite uma vírgula (',') para criá-la" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index 5d4f4bb65..597a49db7 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -258,7 +258,7 @@ pt-br: description: "Descrição" moderator_key: "Chave para moderadores" name: "Nome" - permalink: "Identificador" + slug: "Identificador" public: "Pública" repository: "Repositório de documentos" tag_list: "Tags" @@ -1626,7 +1626,7 @@ pt-br: creation_forbidden: "Você não possui permissão para criar comunidades" last_admin_cant_leave: "Você não pode sair desta comunidade pois você é o último administrador" need_join_to_access: "Você precisa participar desta comunidade para acessá-la. Envie um pedido de adesão aos administradores." - not_found: "A comunidade \"%{permalink}\" não existe.
Gostaria de buscar em todas comunidades?" + not_found: "A comunidade \"%{slug}\" não existe.
Gostaria de buscar em todas comunidades?" unapproved: "Esta comunidade ainda não foi aprovada por um administrador." index: create_new_space: "Criar uma comunidade" diff --git a/config/locales/ru/_simple_form.yml b/config/locales/ru/_simple_form.yml index 98a42b1e1..3c3288e7a 100644 --- a/config/locales/ru/_simple_form.yml +++ b/config/locales/ru/_simple_form.yml @@ -65,7 +65,7 @@ ru: presenter_share_only: "Разрешить использовать камеру и микрофон только ведущему. Предпочтительно для конференций типа один-ко-многим." private: "В закрытых комнатах требуется ввод пароля. В открытую комнату может войти каждый желающий, используя эту ссылку. Только участники могут начать конференцию, независимо от того закрытая комната или открытая." welcome_msg: "Это сообщение будет показано пользователю в чате, когда он входит в конференцию. Оставьте пустым, чтобы использовать стандартное сообщение. Вы можете использовать специфическую информацию о встрече используя переменные %%CONFNAME%%, %%DIALNUM%% и %%CONFNUM%%" - permalink: "Атрибут используется для идентификации адреса сообщества, включая адрес его конференц комнаты. Используйте только буквы в нижнем регистре, числа и тире." + slug: "Атрибут используется для идентификации адреса сообщества, включая адрес его конференц комнаты. Используйте только буквы в нижнем регистре, числа и тире." public: "Сообщества могут быть открытыми, и все пользователи смогут просматривать активность сообщества или закрытыми, когда доступ к активности сообщества имеют только его участники" repository: "Хранилище документов - место, в которое пользователи могут загружать и обмениваться документами любого типа" user: diff --git a/config/locales/ru/mconf.yml b/config/locales/ru/mconf.yml index 2b8c98bc5..d5aa316d4 100644 --- a/config/locales/ru/mconf.yml +++ b/config/locales/ru/mconf.yml @@ -206,7 +206,7 @@ ru: description: "Описание" moderator_key: "Пароль для модераторов" name: "Имя" - permalink: "Идентификатор" + slug: "Идентификатор" public: "Публичный" repository: "Хранилище документов" user: @@ -1452,7 +1452,7 @@ ru: already_invited: "Вы уже были приглашены в это сообщество, пожалуйста примите или отклоните приглашение" creation_forbidden: "Вы не можете создавать сообщества" need_join_to_access: "Для доступа к сообществу Вам необходимо к нему присоединиться. Отправьте заявку администраторам." - not_found: "Сообщество \"%{permalink}\" не найдно.
Попробуйте поискать на странице все сообщества?" + not_found: "Сообщество \"%{slug}\" не найдно.
Попробуйте поискать на странице все сообщества?" unapproved: "Сообщество еще не было одобрено администратором." index: create_new_space: "Создать новое сообщество" diff --git a/db/migrate/20171114124112_rename_permalink_to_slug.rb b/db/migrate/20171114124112_rename_permalink_to_slug.rb new file mode 100644 index 000000000..1a3c00633 --- /dev/null +++ b/db/migrate/20171114124112_rename_permalink_to_slug.rb @@ -0,0 +1,6 @@ +class RenamePermalinkToSlug < ActiveRecord::Migration + def change + rename_column :spaces, :permalink, :slug + rename_column :events, :permalink, :slug + end +end diff --git a/db/schema.rb b/db/schema.rb index a7221f77a..e2f7eecd8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170531162723) do +ActiveRecord::Schema.define(version: 20171114124112) do create_table "activities", force: true do |t| t.integer "trackable_id" @@ -22,8 +22,8 @@ t.text "parameters" t.integer "recipient_id" t.string "recipient_type" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.boolean "notified" end @@ -74,8 +74,8 @@ t.string "name" t.boolean "running", default: false t.boolean "recorded", default: false - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.integer "creator_id" t.string "creator_name" t.string "server_url" @@ -137,8 +137,8 @@ create_table "bigbluebutton_room_options", force: true do |t| t.integer "room_id" t.string "default_layout" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.boolean "presenter_share_only" t.boolean "auto_start_video" t.boolean "auto_start_audio" @@ -226,12 +226,29 @@ t.string "address" t.float "latitude", limit: 24 t.float "longitude", limit: 24 - t.string "permalink" - t.datetime "created_at" - t.datetime "updated_at" + t.string "slug" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end - add_index "events", ["permalink"], name: "index_events_on_permalink", using: :btree + add_index "events", ["slug"], name: "index_events_on_slug", using: :btree + + create_table "institutions", force: true do |t| + t.string "name" + t.string "acronym" + t.string "permalink" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "user_limit" + t.integer "can_record_limit" + t.text "identifier" + t.boolean "force_shib_login", default: false + t.boolean "require_space_approval", default: true + t.boolean "forbid_user_space_creation", default: true + t.integer "recordings_disk_used", limit: 8, default: 0 + t.integer "recordings_disk_quota", limit: 8, default: 0 + t.string "secret" + end create_table "invitations", force: true do |t| t.integer "target_id" @@ -266,8 +283,8 @@ t.integer "role_id" t.string "email" t.boolean "accepted" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.datetime "processed_at" t.string "secret_token" end @@ -276,8 +293,8 @@ t.integer "user_id" t.string "identifier" t.text "data" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.boolean "new_account", default: false t.datetime "current_sign_in_at" end @@ -299,8 +316,8 @@ t.string "owner_type" t.integer "event_id" t.string "email" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end create_table "permissions", force: true do |t| @@ -308,8 +325,8 @@ t.integer "subject_id", null: false t.string "subject_type", null: false t.integer "role_id", null: false - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end create_table "posts", force: true do |t| @@ -384,11 +401,11 @@ t.string "smtp_domain" t.string "smtp_auth_type" t.string "smtp_sender" - t.string "xmpp_server" t.text "shib_env_variables" t.string "shib_login_field" t.string "timezone", default: "UTC" t.string "external_help" + t.string "xmpp_server" t.boolean "ldap_enabled" t.string "ldap_host" t.integer "ldap_port" @@ -405,18 +422,19 @@ t.string "ldap_filter" t.boolean "shib_always_new_account", default: false t.boolean "local_auth_enabled", default: true + t.string "ldap_principal_name_field" t.string "visible_locales", default: "---\n- en\n- pt-br\n" t.string "room_dial_number_pattern" - t.boolean "captcha_enabled", default: false - t.string "recaptcha_public_key" - t.string "recaptcha_private_key" t.boolean "require_space_approval", default: false t.boolean "forbid_user_space_creation", default: false - t.string "max_upload_size", default: "15000000" t.boolean "shib_update_users", default: false + t.string "max_upload_size", default: "15000000" + t.boolean "captcha_enabled", default: false + t.string "recaptcha_public_key" + t.string "recaptcha_private_key" t.boolean "use_gravatar", default: false - t.boolean "spaces_enabled", default: true t.string "smtp_receiver" + t.boolean "spaces_enabled", default: true t.boolean "unauth_access_to_conferences", default: true t.boolean "certificate_login_enabled" t.string "certificate_id_field" @@ -431,10 +449,11 @@ t.datetime "created_at" t.datetime "updated_at" t.text "description" - t.string "permalink" + t.string "slug" t.boolean "disabled", default: false t.boolean "repository", default: false t.string "logo_image" + t.integer "institution_id" t.boolean "approved", default: false t.datetime "last_activity" t.integer "last_activity_count" diff --git a/lib/forgery/forgeries/internet.rb b/lib/forgery/forgeries/internet.rb index 58615af76..5db214147 100644 --- a/lib/forgery/forgeries/internet.rb +++ b/lib/forgery/forgeries/internet.rb @@ -13,7 +13,7 @@ def self.unique_user_name(n) "#{self.user_name}-#{n}" end - def self.unique_permalink(p) + def self.unique_slug(p) unique_user_name(p) end end diff --git a/lib/mconf/identifier.rb b/lib/mconf/identifier.rb index 7c48fbf97..e475f05fd 100644 --- a/lib/mconf/identifier.rb +++ b/lib/mconf/identifier.rb @@ -26,7 +26,7 @@ def self.unique_mconf_id(base_value) loop do # have to consider both users and spaces, including disabled ones users = User.with_disabled.where(username: new_value).count - spaces = Space.with_disabled.where(permalink: new_value).count + spaces = Space.with_disabled.where(slug: new_value).count rooms = BigbluebuttonRoom.where(param: new_value).count # blacklisted words diff --git a/spec/controllers/events_controller_spec.rb b/spec/controllers/events_controller_spec.rb index 84e1b06c0..158ec31eb 100644 --- a/spec/controllers/events_controller_spec.rb +++ b/spec/controllers/events_controller_spec.rb @@ -224,7 +224,7 @@ context ".json" do let(:expected) { @events.map do |e| - { :id => e.id, :permalink => e.permalink, :public => true, + { :id => e.id, :slug => e.slug, :public => true, :name => e.name, :text => e.name, :url => event_url(e) } end } diff --git a/spec/controllers/shibboleth_controller_spec.rb b/spec/controllers/shibboleth_controller_spec.rb index c0f47837b..792cc89db 100644 --- a/spec/controllers/shibboleth_controller_spec.rb +++ b/spec/controllers/shibboleth_controller_spec.rb @@ -218,7 +218,7 @@ @old_name = ShibToken.last.user.name @old_email = ShibToken.last.user.email - @old_permalink = ShibToken.last.user.permalink + @old_slug = ShibToken.last.user.slug # login with different federation data setup_shib(new_name, new_email, attrs[:email]) @@ -230,7 +230,7 @@ it { ShibToken.last.user.confirmed?.should be(true) } it { @old_email.should_not eq(new_email) } it { @old_name.should_not eq(new_name) } - it { ShibToken.last.user.permalink.should eq(@old_permalink) } + it { ShibToken.last.user.slug.should eq(@old_slug) } it("does not update local sign in date") { ShibToken.last.user.reload.current_local_sign_in_at.to_i.should eq(old_current_local_sign_in_at.to_i) } @@ -258,7 +258,7 @@ @old_name = ShibToken.last.user.name @old_email = ShibToken.last.user.email - @old_permalink = ShibToken.last.user.permalink + @old_slug = ShibToken.last.user.slug ShibToken.last.update_attributes(new_account: false) @@ -271,7 +271,7 @@ it { ShibToken.last.user.email.should_not eq(new_email) } it { ShibToken.last.user.name.should eq(@old_name) } it { ShibToken.last.user.email.should eq(@old_email) } - it { ShibToken.last.user.permalink.should eq(@old_permalink) } + it { ShibToken.last.user.slug.should eq(@old_slug) } it("does not update local sign in date") { ShibToken.last.user.reload.current_local_sign_in_at.to_i.should eq(old_current_local_sign_in_at.to_i) } @@ -303,7 +303,7 @@ @old_name = ShibToken.last.user.name @old_email = ShibToken.last.user.email - @old_permalink = ShibToken.last.user.permalink + @old_slug = ShibToken.last.user.slug # login with different federation data setup_shib(new_name, new_email, attrs[:email]) @@ -314,7 +314,7 @@ it { ShibToken.last.user.email.should_not eq(new_email) } it { ShibToken.last.user.name.should eq(@old_name) } it { ShibToken.last.user.email.should eq(@old_email) } - it { ShibToken.last.user.permalink.should eq(@old_permalink) } + it { ShibToken.last.user.slug.should eq(@old_slug) } it("does not update local sign in date") { ShibToken.last.user.reload.current_local_sign_in_at.to_i.should eq(old_current_local_sign_in_at.to_i) } diff --git a/spec/controllers/spaces_controller_spec.rb b/spec/controllers/spaces_controller_spec.rb index afb321175..b893ae96d 100644 --- a/spec/controllers/spaces_controller_spec.rb +++ b/spec/controllers/spaces_controller_spec.rb @@ -337,7 +337,7 @@ let(:space_attributes) { FactoryGirl.attributes_for(:space) } let(:params) { { - :id => space.permalink, + :id => space.slug, :controller => "spaces", :action => "update", :space => space_attributes @@ -345,7 +345,7 @@ } let(:space_allowed_params) { - [ :name, :description, :logo_image, :public, :permalink, :disabled, + [ :name, :description, :logo_image, :public, :slug, :disabled, :repository, :crop_x, :crop_y, :crop_w, :crop_h, :crop_img_w, :crop_img_h, :tag_list, :bigbluebutton_room_attributes => [ :id, :attendee_key, :moderator_key, :default_layout, :private, :welcome_msg ] @@ -500,7 +500,7 @@ login_as(FactoryGirl.create(:superuser)) } - context "loads the space by permalink" do + context "loads the space by slug" do let(:space) { FactoryGirl.create(:space) } before(:each) { post :enable, :id => space.to_param } it { assigns(:space).should eql(space) } @@ -711,7 +711,7 @@ context ".json" do let(:expected) { @spaces.map do |s| - { :id => s.id, :permalink => s.permalink, :name => s.name, + { :id => s.id, :slug => s.slug, :name => s.name, :public => s.public, :text => s.name, :url => space_url(s) } end } diff --git a/spec/factories/definitions.rb b/spec/factories/definitions.rb index 35d54d5c7..6244acc22 100644 --- a/spec/factories/definitions.rb +++ b/spec/factories/definitions.rb @@ -7,6 +7,6 @@ FactoryGirl.define do sequence(:email) { |n| Forgery::Internet.unique_email_address(n) } sequence(:username) { |n| Forgery::Internet.unique_user_name(n) } - sequence(:permalink) { |n| Forgery::Internet.unique_permalink(n) } + sequence(:slug) { |n| Forgery::Internet.unique_slug(n) } sequence(:timezone) { |n| Forgery::Time.zone } end diff --git a/spec/factories/space.rb b/spec/factories/space.rb index c5b9266bf..b0aa73269 100644 --- a/spec/factories/space.rb +++ b/spec/factories/space.rb @@ -6,7 +6,7 @@ FactoryGirl.define do factory :space do |s| - s.permalink + s.slug s.sequence(:name) { |n| Forgery::Name.unique_space_name(n) } s.description { Forgery::Basic.text } s.public false diff --git a/spec/features/ldap/user_signs_in_spec.rb b/spec/features/ldap/user_signs_in_spec.rb index 77d85e716..6c4fd77b5 100644 --- a/spec/features/ldap/user_signs_in_spec.rb +++ b/spec/features/ldap/user_signs_in_spec.rb @@ -147,7 +147,7 @@ context "and there's a conflict on the user's username with a space" do before { - FactoryGirl.create(:space, permalink: @ldap_attrs[:username]) + FactoryGirl.create(:space, slug: @ldap_attrs[:username]) expect { sign_in_with @ldap_attrs[:username], @ldap_attrs[:password] }.to change{ User.count } diff --git a/spec/features/manage/admin_manages_spaces_spec.rb b/spec/features/manage/admin_manages_spaces_spec.rb index 97bb2c32b..517ddfa8f 100644 --- a/spec/features/manage/admin_manages_spaces_spec.rb +++ b/spec/features/manage/admin_manages_spaces_spec.rb @@ -52,7 +52,7 @@ context 'elements for an approved space' do let(:space) { @approved_space } - subject { page.find("#space-#{space.permalink}") } + subject { page.find("#space-#{space.slug}") } it { should have_css '.logo-space' } it { should have_css '.management-links' } @@ -66,7 +66,7 @@ context 'elements for a not approved space' do let(:space) { @not_approved_space } - subject { page.find("#space-#{space.permalink}") } + subject { page.find("#space-#{space.slug}") } it { should have_css '.logo-space' } it { should have_css '.management-links' } @@ -80,7 +80,7 @@ context 'elements for a disabled space' do let(:space) { @disabled_space } - subject { page.find("#space-#{space.permalink}") } + subject { page.find("#space-#{space.slug}") } it { should have_css '.logo-space' } it { should have_css '.management-links' } @@ -96,7 +96,7 @@ context 'elements for an enabled space' do let(:space) { @enabled_space } - subject { page.find("#space-#{space.permalink}") } + subject { page.find("#space-#{space.slug}") } it { should have_css '.logo-space' } it { should have_css '.management-links' } @@ -117,7 +117,7 @@ context 'elements for an approved space' do let(:space) { @approved_space } - subject { page.find("#space-#{space.permalink}") } + subject { page.find("#space-#{space.slug}") } it { should have_css '.logo-space' } it { should have_css '.management-links' } @@ -131,7 +131,7 @@ context 'elements for a not approved space' do let(:space) { @not_approved_space } - subject { page.find("#space-#{space.permalink}") } + subject { page.find("#space-#{space.slug}") } it { should have_css '.logo-space' } it { should have_css '.management-links' } @@ -145,7 +145,7 @@ context 'elements for a disabled space' do let(:space) { @disabled_space } - subject { page.find("#space-#{space.permalink}") } + subject { page.find("#space-#{space.slug}") } it { should have_css '.logo-space' } it { should have_css '.management-links' } @@ -161,7 +161,7 @@ context 'elements for an enabled space' do let(:space) { @enabled_space } - subject { page.find("#space-#{space.permalink}") } + subject { page.find("#space-#{space.slug}") } it { should have_css '.logo-space' } it { should have_css '.management-links' } diff --git a/spec/features/manage/admin_manages_users_spec.rb b/spec/features/manage/admin_manages_users_spec.rb index 0f3799055..58bf5ae01 100644 --- a/spec/features/manage/admin_manages_users_spec.rb +++ b/spec/features/manage/admin_manages_users_spec.rb @@ -44,7 +44,7 @@ context 'elements for the signed in user' do let(:user) { admin } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { should have_css '.icon-superuser' } it { should have_css '.management-links' } @@ -62,7 +62,7 @@ context 'elements for a normal user' do let(:user) { @user1 } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { should have_css '.icon-user' } it { should have_css '.management-links' } @@ -78,7 +78,7 @@ context 'elements for an admin' do let(:user) { @user_admin } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { should have_css '.icon-superuser' } it { should have_css '.management-links' } @@ -94,7 +94,7 @@ context 'elements for a disabled user' do let(:user) { @disabled_user1 } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { should have_css '.management-links' } it { should have_link_to_enable_user(user) } @@ -109,7 +109,7 @@ context 'elements for an unconfirmed normal user' do let!(:user) { @unconfirmed_user } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { should have_link_to_edit_user(user) } it { should have_link_to_destroy_user(user) } @@ -141,7 +141,7 @@ context 'elements for a normal approved user' do let(:user) { @user1 } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { should have_css '.management-links' } it { should have_link_to_disapprove_user(user) } @@ -150,7 +150,7 @@ context 'elements for an approved admin user' do let(:user) { User.first } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { should have_css '.management-links' } it { should_not have_link_to_disapprove_user(user) } @@ -159,7 +159,7 @@ context 'elements for a unapproved user' do let(:user) { @unapproved_user } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { should have_css '.management-links' } it { should have_link_to_edit_user(user) } @@ -172,7 +172,7 @@ context 'elements for a second approved admin user' do let(:user) { @user_admin } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { should have_css '.management-links' } it { should have_link_to_edit_user(user) } @@ -185,7 +185,7 @@ context 'elements for an unapproved and unconfirmed user' do let!(:user) { @unconfirmed_unapproved_user } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { should have_link_to_edit_user(user) } it { should have_link_to_destroy_user(user) } @@ -225,7 +225,7 @@ context 'elements for admin' do let(:user) { User.first } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { should have_content user.last_sign_in_method } it { should have_content I18n.l(user.current_sign_in_at.in_time_zone, format: :numeric) } @@ -233,7 +233,7 @@ context 'elements for a local user' do let(:user) { @user_local } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { subject.find(".user-login").should have_content User.last.sign_in_method_name } it { should have_css "[title='#{t('.manage.user_item.never_sign_in')}']" } @@ -241,7 +241,7 @@ context 'elements for a shib user' do let(:user) { @user_shib } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { subject.find(".user-login").should_not have_content User.last.sign_in_method_name } it { subject.find(".user-login").should have_content ShibToken.last.sign_in_method_name } @@ -253,7 +253,7 @@ context 'elements for a ldap user' do let(:user) { @user_ldap } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { subject.find(".user-login").should_not have_content User.last.sign_in_method_name } it { subject.find(".user-login").should_not have_content ShibToken.last.sign_in_method_name } @@ -263,7 +263,7 @@ context 'elements for a shib and local user' do let(:user) { @user_shib_local } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { subject.find(".user-login").should have_content User.last.sign_in_method_name } it { subject.find(".user-login").should have_content ShibToken.last.sign_in_method_name } @@ -273,7 +273,7 @@ context 'elements for a ldap and local user' do let(:user) { @user_ldap_local } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { subject.find(".user-login").should have_content User.last.sign_in_method_name } it { subject.find(".user-login").should_not have_content ShibToken.last.sign_in_method_name } @@ -283,7 +283,7 @@ context 'elements for a shib and ldap and local user' do let(:user) { @user_ldap_shib_local } - subject { page.find("#user-#{user.permalink}") } + subject { page.find("#user-#{user.slug}") } it { subject.find(".user-login").should have_content User.last.sign_in_method_name } it { subject.find(".user-login").should have_content ShibToken.last.sign_in_method_name } diff --git a/spec/features/shibboleth/user_signs_in_spec.rb b/spec/features/shibboleth/user_signs_in_spec.rb index b92f56ee3..783cb2fc5 100644 --- a/spec/features/shibboleth/user_signs_in_spec.rb +++ b/spec/features/shibboleth/user_signs_in_spec.rb @@ -161,7 +161,7 @@ context "and there's a conflict on the user's username with a space" do before { - FactoryGirl.create(:space, permalink: @attrs[:profile_attributes][:full_name].parameterize) + FactoryGirl.create(:space, slug: @attrs[:profile_attributes][:full_name].parameterize) expect { click_button t('shibboleth.associate.new_account.create_new_account') }.to change{ User.count }.by(1) diff --git a/spec/features/spaces/creating_a_space_spec.rb b/spec/features/spaces/creating_a_space_spec.rb index e35ac65ba..39693d2e8 100644 --- a/spec/features/spaces/creating_a_space_spec.rb +++ b/spec/features/spaces/creating_a_space_spec.rb @@ -11,7 +11,7 @@ def create_space_from_attrs attrs visit new_space_path fill_in "space[name]", with: attrs[:name] - fill_in "space[permalink]", with: attrs[:permalink] + fill_in "space[slug]", with: attrs[:slug] fill_in "space[description]", with: attrs[:description] if attrs[:public] == true @@ -69,15 +69,15 @@ def create_space_from_attrs attrs it { has_field_with_error "space_name" } end - context "with the permalink of an existing space" do + context "with the slug of an existing space" do before { login_as(user, :scope => :user) - attrs[:permalink] = space.permalink + attrs[:slug] = space.slug create_space_from_attrs(attrs) } it { current_path.should eq(spaces_path) } - it { has_field_with_error "space_permalink" } + it { has_field_with_error "space_slug" } end context "with the name of a disabled space" do @@ -93,42 +93,42 @@ def create_space_from_attrs attrs it { has_field_with_error "space_name" } end - context "with the permalink of a disabled space" do + context "with the slug of a disabled space" do before { disabled_space = FactoryGirl.create(:space, disabled: true) login_as(user, :scope => :user) - attrs[:permalink] = disabled_space.permalink + attrs[:slug] = disabled_space.slug create_space_from_attrs(attrs) } it { current_path.should eq(spaces_path) } - it { has_field_with_error "space_permalink" } + it { has_field_with_error "space_slug" } end - context "with the permalink equal to some user's username" do + context "with the slug equal to some user's username" do before { login_as(user, :scope => :user) - attrs[:permalink] = user.username + attrs[:slug] = user.username create_space_from_attrs(attrs) } it { current_path.should eq(spaces_path) } - it { has_field_with_error "space_permalink" } + it { has_field_with_error "space_slug" } end - context "with the permalink equal to some disabled user's username" do + context "with the slug equal to some disabled user's username" do before { disabled_user = FactoryGirl.create(:user, disabled: true) login_as(user, :scope => :user) - attrs[:permalink] = disabled_user.username + attrs[:slug] = disabled_user.username create_space_from_attrs(attrs) } it { current_path.should eq(spaces_path) } - it { has_field_with_error "space_permalink" } + it { has_field_with_error "space_slug" } end end @@ -209,7 +209,7 @@ def create_space_from_attrs attrs fill_in "space[name]", with: "Mr. Pink-man's #1 (5% of tries = WIN, \"haha\"): áéíôü" expected = "mr-pink-mans-1-5-of-tries-win-haha-aeiou" - find_field('space[permalink]').value.should eql(expected) + find_field('space[slug]').value.should eql(expected) end end diff --git a/spec/features/spaces/not_found_errors_spec.rb b/spec/features/spaces/not_found_errors_spec.rb index e67ebd6a1..312365092 100644 --- a/spec/features/spaces/not_found_errors_spec.rb +++ b/spec/features/spaces/not_found_errors_spec.rb @@ -29,7 +29,7 @@ it { should have_title(t('error.e404.title')) } it { should have_content(t('error.e404.title')) } it { should have_content( - strip_tags(t('spaces.error.not_found', :permalink => 'nonexistent', :path => spaces_path)) + strip_tags(t('spaces.error.not_found', :slug => 'nonexistent', :path => spaces_path)) ) } it { should have_link('', :href => spaces_path) } diff --git a/spec/features/visitor_signs_up_spec.rb b/spec/features/visitor_signs_up_spec.rb index df8ccb8f5..9863f336f 100644 --- a/spec/features/visitor_signs_up_spec.rb +++ b/spec/features/visitor_signs_up_spec.rb @@ -104,24 +104,24 @@ User.last.username.should eql(disabled_user.username + "-2") end - scenario "with the username equal to some space's permalink" do - space = FactoryGirl.create(:space, permalink: nil) + scenario "with the username equal to some space's slug" do + space = FactoryGirl.create(:space, slug: nil) attrs = FactoryGirl.attributes_for(:user, username: nil) attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile, full_name: space.name) register_with(attrs) current_path.should eq(my_home_path) - User.last.username.should eql(space.permalink + "-2") + User.last.username.should eql(space.slug + "-2") end - scenario "with the username equal to some disabled space's permalink" do - disabled_space = FactoryGirl.create(:space, disabled: true, permalink: nil) + scenario "with the username equal to some disabled space's slug" do + disabled_space = FactoryGirl.create(:space, disabled: true, slug: nil) attrs = FactoryGirl.attributes_for(:user, username: nil) attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile, full_name: disabled_space.name) register_with(attrs) current_path.should eq(my_home_path) - User.last.username.should eql(disabled_space.permalink + "-2") + User.last.username.should eql(disabled_space.slug + "-2") end scenario "when the password confirmation doesn't match" do diff --git a/spec/lib/mconf/identifier_spec.rb b/spec/lib/mconf/identifier_spec.rb index a64c9e41e..aa4d26a10 100644 --- a/spec/lib/mconf/identifier_spec.rb +++ b/spec/lib/mconf/identifier_spec.rb @@ -28,8 +28,8 @@ context "makes sure the id is unique among spaces" do before { - FactoryGirl.create(:space, permalink: "my-name") - FactoryGirl.create(:space, permalink: "my-name-2") + FactoryGirl.create(:space, slug: "my-name") + FactoryGirl.create(:space, slug: "my-name-2") } it { target.unique_mconf_id("My Name").should eql("my-name-3") } end @@ -45,7 +45,7 @@ context "makes sure the id is unique among users, spaces and rooms" do before { FactoryGirl.create(:user, username: "my-name") - FactoryGirl.create(:space, permalink: "my-name-2") + FactoryGirl.create(:space, slug: "my-name-2") FactoryGirl.create(:bigbluebutton_room, param: "my-name-3") } it { target.unique_mconf_id("My Name").should eql("my-name-4") } @@ -72,9 +72,9 @@ FactoryGirl.create(:user, username: "my-name") FactoryGirl.create(:user, username: "my-name-2", disabled: true) FactoryGirl.create(:user, username: "my-name-3", approved: false) - FactoryGirl.create(:space, permalink: "my-name-4") - FactoryGirl.create(:space, permalink: "my-name-5", disabled: true) - FactoryGirl.create(:space, permalink: "my-name-6", approved: false) + FactoryGirl.create(:space, slug: "my-name-4") + FactoryGirl.create(:space, slug: "my-name-5", disabled: true) + FactoryGirl.create(:space, slug: "my-name-6", approved: false) } it { target.unique_mconf_id("My Name").should eql("my-name-7") } end diff --git a/spec/lib/mconf/ldap_spec.rb b/spec/lib/mconf/ldap_spec.rb index 80bca2066..c33818813 100644 --- a/spec/lib/mconf/ldap_spec.rb +++ b/spec/lib/mconf/ldap_spec.rb @@ -262,7 +262,7 @@ context "doesn't fail if the username is already the identifier of a space" do let(:token) { LdapToken.create!(identifier: 'any@email.com') } before { - FactoryGirl.create(:space, permalink: "any-username") + FactoryGirl.create(:space, slug: "any-username") } it { expect { diff --git a/spec/lib/mconf/shibboleth_spec.rb b/spec/lib/mconf/shibboleth_spec.rb index fc5cf324b..622aaf553 100644 --- a/spec/lib/mconf/shibboleth_spec.rb +++ b/spec/lib/mconf/shibboleth_spec.rb @@ -684,10 +684,10 @@ } end - context "doesn't fail if the login is already used as the permalink of a space" do + context "doesn't fail if the login is already used as the slug of a space" do let(:token) { ShibToken.new(identifier: 'any@email.com') } before { - FactoryGirl.create(:space, permalink: 'any-name') + FactoryGirl.create(:space, slug: 'any-name') shibboleth.should_receive(:get_email).at_least(:once).and_return('any@email.com') shibboleth.should_receive(:get_login).and_return('Any Name') shibboleth.should_receive(:get_name).and_return('Any Name') diff --git a/spec/migrations/assure_one_and_onlyone_room_to_users_spec.rb b/spec/migrations/assure_one_and_onlyone_room_to_users_spec.rb index 27f49df5a..03c9338ee 100644 --- a/spec/migrations/assure_one_and_onlyone_room_to_users_spec.rb +++ b/spec/migrations/assure_one_and_onlyone_room_to_users_spec.rb @@ -28,9 +28,9 @@ end end - it 'all space rooms need to have the param matching the space\'s permalink' do + it 'all space rooms need to have the param matching the space\'s slug' do Space.all.each do |space| - space.bigbluebutton_room.param.should =~ /^((#{space.permalink})|(#{space.permalink}-.*))$/ + space.bigbluebutton_room.param.should =~ /^((#{space.slug})|(#{space.slug}-.*))$/ end end diff --git a/spec/migrations/assure_uniqueness_in_user_login_and_space_permalink_spec.rb b/spec/migrations/assure_uniqueness_in_user_login_and_space_permalink_spec.rb index 1676a4ccd..7ddbff430 100644 --- a/spec/migrations/assure_uniqueness_in_user_login_and_space_permalink_spec.rb +++ b/spec/migrations/assure_uniqueness_in_user_login_and_space_permalink_spec.rb @@ -14,7 +14,7 @@ describe ".up" do - context "makes User.login's and Space.permalink's unique" do + context "makes User.login's and Space.slug's unique" do context "using with test data" do let(:users) { @@ -33,10 +33,10 @@ before do TestMigrator.migrate_to_previous(@target_migration) - # two spaces with permalink duplicated (equal users' logins) - spaces[0].update_attribute(:permalink, users[0].login) - spaces[1].update_attribute(:permalink, users[1].login) - # to conflict with spaces[0] default permalink "space-one" + # two spaces with slug duplicated (equal users' logins) + spaces[0].update_attribute(:slug, users[0].login) + spaces[1].update_attribute(:slug, users[1].login) + # to conflict with spaces[0] default slug "space-one" users[2].update_attribute(:login, "space-one") AssureUniquenessInUserLoginAndSpacePermalink.up @@ -48,10 +48,10 @@ it { User.find(users[2].id).login.should == users[2].login } end - context "changing spaces' permalinks" do - it { Space.find(spaces[0].id).permalink.should_not == users[0].login } - it { Space.find(spaces[1].id).permalink.should_not == users[1].login } - it { Space.find(spaces[2].id).permalink.should == spaces[2].permalink } + context "changing spaces' slugs" do + it { Space.find(spaces[0].id).slug.should_not == users[0].login } + it { Space.find(spaces[1].id).slug.should_not == users[1].login } + it { Space.find(spaces[2].id).slug.should == spaces[2].slug } end end @@ -76,9 +76,9 @@ end def check_unique_attribute(model) - attribute = model.class == Space ? model.permalink : model.login + attribute = model.class == Space ? model.slug : model.login - spaces = Space.where(:permalink => attribute) + spaces = Space.where(:slug => attribute) spaces.select!{ |s| s.id != model.id } if model.class == Space users = User.where(:login => attribute) users.select!{ |u| u.id != model.id } if model.class == User diff --git a/spec/models/space_spec.rb b/spec/models/space_spec.rb index d241d42e6..bf7489bde 100644 --- a/spec/models/space_spec.rb +++ b/spec/models/space_spec.rb @@ -45,34 +45,34 @@ it { should validate_uniqueness_of(:name).case_insensitive } it { should validate_length_of(:name).is_at_least(3) } - describe "#permalink" do - it { should validate_uniqueness_of(:permalink).case_insensitive } - it { should validate_length_of(:permalink).is_at_least(3) } - it { should_not allow_value("123 321").for(:permalink) } - it { should_not allow_value("").for(:permalink) } - it { should_not allow_value("ab@c").for(:permalink) } - it { should_not allow_value("ab#c").for(:permalink) } - it { should_not allow_value("ab$c").for(:permalink) } - it { should_not allow_value("ab%c").for(:permalink) } - it { should_not allow_value("ábcd").for(:permalink) } - it { should allow_value("---").for(:permalink) } - it { should allow_value("-abc").for(:permalink) } - it { should allow_value("abc-").for(:permalink) } - it { should allow_value("_abc").for(:permalink) } - it { should allow_value("abc_").for(:permalink) } - it { should allow_value("abc").for(:permalink) } - it { should allow_value("123").for(:permalink) } - it { should allow_value("111").for(:permalink) } - it { should allow_value("aaa").for(:permalink) } - it { should allow_value("___").for(:permalink) } - it { should allow_value("abc-123_d5").for(:permalink) } - - shared_examples "invalid space with permalink not unique" do + describe "#slug" do + it { should validate_uniqueness_of(:slug).case_insensitive } + it { should validate_length_of(:slug).is_at_least(3) } + it { should_not allow_value("123 321").for(:slug) } + it { should_not allow_value("").for(:slug) } + it { should_not allow_value("ab@c").for(:slug) } + it { should_not allow_value("ab#c").for(:slug) } + it { should_not allow_value("ab$c").for(:slug) } + it { should_not allow_value("ab%c").for(:slug) } + it { should_not allow_value("ábcd").for(:slug) } + it { should allow_value("---").for(:slug) } + it { should allow_value("-abc").for(:slug) } + it { should allow_value("abc-").for(:slug) } + it { should allow_value("_abc").for(:slug) } + it { should allow_value("abc_").for(:slug) } + it { should allow_value("abc").for(:slug) } + it { should allow_value("123").for(:slug) } + it { should allow_value("111").for(:slug) } + it { should allow_value("aaa").for(:slug) } + it { should allow_value("___").for(:slug) } + it { should allow_value("abc-123_d5").for(:slug) } + + shared_examples "invalid space with slug not unique" do it { subject.should_not be_valid } it { subject.save.should be(false) - subject.errors.should have_key(:permalink) - subject.errors.messages[:permalink].should include(message) + subject.errors.should have_key(:slug) + subject.errors.messages[:slug].should include(message) } end @@ -84,8 +84,8 @@ describe "on create" do words.each do |word| context "word: #{word}" do - subject { FactoryGirl.build(:space, permalink: word) } - include_examples "invalid space with permalink not unique" + subject { FactoryGirl.build(:space, slug: word) } + include_examples "invalid space with slug not unique" end end end @@ -95,34 +95,34 @@ context "word: #{word}" do let(:subject) { FactoryGirl.create(:space) } before(:each) { - subject.permalink = word + subject.slug = word } - include_examples "invalid space with permalink not unique" + include_examples "invalid space with slug not unique" end end end end - describe "validates uniqueness against Space#permalink" do + describe "validates uniqueness against Space#slug" do let(:message) { "has already been taken" } describe "on create" do context "with an enabled space" do let(:space) { FactoryGirl.create(:space) } - subject { FactoryGirl.build(:space, permalink: space.permalink) } - include_examples "invalid space with permalink not unique" + subject { FactoryGirl.build(:space, slug: space.slug) } + include_examples "invalid space with slug not unique" end context "with a disabled space" do let(:disabled_space) { FactoryGirl.create(:space, disabled: true) } - subject { FactoryGirl.build(:space, permalink: disabled_space.permalink) } - include_examples "invalid space with permalink not unique" + subject { FactoryGirl.build(:space, slug: disabled_space.slug) } + include_examples "invalid space with slug not unique" end context "uses case-insensitive comparisons" do - let!(:space) { FactoryGirl.create(:space, permalink: "My-Weird-Name") } - subject { FactoryGirl.build(:space, permalink: "mY-weiRD-NAMe") } - include_examples "invalid space with permalink not unique" + let!(:space) { FactoryGirl.create(:space, slug: "My-Weird-Name") } + subject { FactoryGirl.build(:space, slug: "mY-weiRD-NAMe") } + include_examples "invalid space with slug not unique" end end @@ -131,27 +131,27 @@ let(:subject) { FactoryGirl.create(:space) } let(:space) { FactoryGirl.create(:space) } before(:each) { - subject.permalink = space.permalink + subject.slug = space.slug } - include_examples "invalid space with permalink not unique" + include_examples "invalid space with slug not unique" end context "with a disabled space" do let(:subject) { FactoryGirl.create(:space) } let(:disabled_space) { FactoryGirl.create(:space, :disabled => true) } before(:each) { - subject.permalink = disabled_space.permalink + subject.slug = disabled_space.slug } - include_examples "invalid space with permalink not unique" + include_examples "invalid space with slug not unique" end context "uses case-insensitive comparisons" do let(:subject) { FactoryGirl.create(:space) } - let!(:space) { FactoryGirl.create(:space, permalink: "My-Weird-Name") } + let!(:space) { FactoryGirl.create(:space, slug: "My-Weird-Name") } before(:each) { - subject.permalink = "mY-weiRD-NAMe" + subject.slug = "mY-weiRD-NAMe" } - include_examples "invalid space with permalink not unique" + include_examples "invalid space with slug not unique" end end end @@ -162,20 +162,20 @@ describe "on create" do context "with an enabled user" do let(:user) { FactoryGirl.create(:user) } - subject { FactoryGirl.build(:space, permalink: user.username) } - include_examples "invalid space with permalink not unique" + subject { FactoryGirl.build(:space, slug: user.username) } + include_examples "invalid space with slug not unique" end context "with a disabled user" do let(:disabled_user) { FactoryGirl.create(:user, disabled: true) } - subject { FactoryGirl.build(:space, permalink: disabled_user.username) } - include_examples "invalid space with permalink not unique" + subject { FactoryGirl.build(:space, slug: disabled_user.username) } + include_examples "invalid space with slug not unique" end context "uses case-insensitive comparisons" do let!(:user) { FactoryGirl.create(:user, username: "My-Weird-Name") } - subject { FactoryGirl.build(:space, permalink: "mY-weiRD-NAMe") } - include_examples "invalid space with permalink not unique" + subject { FactoryGirl.build(:space, slug: "mY-weiRD-NAMe") } + include_examples "invalid space with slug not unique" end end @@ -184,27 +184,27 @@ let(:subject) { FactoryGirl.create(:space) } let(:other_user) { FactoryGirl.create(:user) } before(:each) { - subject.permalink = other_user.username + subject.slug = other_user.username } - include_examples "invalid space with permalink not unique" + include_examples "invalid space with slug not unique" end context "with a disabled space" do let(:subject) { FactoryGirl.create(:space) } let(:disabled_user) { FactoryGirl.create(:user, :disabled => true) } before(:each) { - subject.permalink = disabled_user.username + subject.slug = disabled_user.username } - include_examples "invalid space with permalink not unique" + include_examples "invalid space with slug not unique" end context "uses case-insensitive comparisons" do let(:subject) { FactoryGirl.create(:space) } let!(:other_user) { FactoryGirl.create(:user, username: "My-Weird-Name") } before(:each) { - subject.permalink = "mY-weiRD-NAMe" + subject.slug = "mY-weiRD-NAMe" } - include_examples "invalid space with permalink not unique" + include_examples "invalid space with slug not unique" end end end @@ -215,14 +215,14 @@ describe "on create" do context "with an exact match" do let(:room) { FactoryGirl.create(:bigbluebutton_room) } - subject { FactoryGirl.build(:space_with_associations, permalink: room.param) } - include_examples "invalid space with permalink not unique" + subject { FactoryGirl.build(:space_with_associations, slug: room.param) } + include_examples "invalid space with slug not unique" end context "uses case-insensitive comparisons" do let!(:room) { FactoryGirl.create(:bigbluebutton_room, param: "My-Weird-Name") } - subject { FactoryGirl.build(:space_with_associations, permalink: "mY-weiRD-NAMe") } - include_examples "invalid space with permalink not unique" + subject { FactoryGirl.build(:space_with_associations, slug: "mY-weiRD-NAMe") } + include_examples "invalid space with slug not unique" end end @@ -231,67 +231,67 @@ let(:subject) { FactoryGirl.create(:space) } let(:other_room) { FactoryGirl.create(:bigbluebutton_room) } before(:each) { - subject.permalink = other_room.param + subject.slug = other_room.param } - include_examples "invalid space with permalink not unique" + include_examples "invalid space with slug not unique" end context "uses case-insensitive comparisons" do let(:subject) { FactoryGirl.create(:space) } let!(:other_room) { FactoryGirl.create(:bigbluebutton_room, param: "My-Weird-Name") } before(:each) { - subject.permalink = "mY-weiRD-NAMe" + subject.slug = "mY-weiRD-NAMe" } - include_examples "invalid space with permalink not unique" + include_examples "invalid space with slug not unique" end context "doesn't validate against its own room" do let!(:space) { FactoryGirl.create(:space) } - it { space.update_attributes(permalink: space.permalink).should be(true) } + it { space.update_attributes(slug: space.slug).should be(true) } end end end - describe "generates a unique permalink when creating without setting a permalink" do + describe "generates a unique slug when creating without setting a slug" do context "conflicting with a user" do let(:user) { FactoryGirl.create(:user, username: nil) } let(:space) { - FactoryGirl.create(:space, permalink: nil, name: user.name) + FactoryGirl.create(:space, slug: nil, name: user.name) } - it { space.permalink.should eql(user.username + "-2") } + it { space.slug.should eql(user.username + "-2") } end context "conflicting with a disabled user" do let(:user) { FactoryGirl.create(:user, username: nil, disabled: true) } let(:space) { - FactoryGirl.create(:space, permalink: nil, name: user.name) + FactoryGirl.create(:space, slug: nil, name: user.name) } - it { space.permalink.should eql(user.username + "-2") } + it { space.slug.should eql(user.username + "-2") } end context "conflicting with another space" do let(:another_space) { - s = FactoryGirl.create(:space, permalink: nil) + s = FactoryGirl.create(:space, slug: nil) s.update_attributes(name: s.name + "-other") # so it won't give a conflict on #name s } let(:space) { - FactoryGirl.create(:space, permalink: nil, name: another_space.permalink) + FactoryGirl.create(:space, slug: nil, name: another_space.slug) } - it { space.permalink.should eql(another_space.permalink + "-2") } + it { space.slug.should eql(another_space.slug + "-2") } end context "conflicting with a disabled space" do let(:another_space) { - s = FactoryGirl.create(:space, permalink: nil, disabled: true) + s = FactoryGirl.create(:space, slug: nil, disabled: true) s.update_attributes(name: s.name + "-other") # so it won't give a conflict on #name s } let(:space) { - FactoryGirl.create(:space, permalink: nil, name: another_space.permalink) + FactoryGirl.create(:space, slug: nil, name: another_space.slug) } - it { space.permalink.should eql(another_space.permalink + "-2") } + it { space.slug.should eql(another_space.slug + "-2") } end context "conflicting with a room" do @@ -301,19 +301,19 @@ u } let(:space) { - FactoryGirl.create(:space, permalink: nil, name: 'anything') + FactoryGirl.create(:space, slug: nil, name: 'anything') } - it { space.permalink.should eql("anything-2") } + it { space.slug.should eql("anything-2") } end context "conflicting with a blacklisted word" do let(:space) { - FactoryGirl.create(:space, permalink: nil, name: 'Users') + FactoryGirl.create(:space, slug: nil, name: 'Users') } - it { space.permalink.should eql("users-2") } + it { space.slug.should eql("users-2") } end - # TODO: if setting the permalink, should not generate but show a conflict + # TODO: if setting the slug, should not generate but show a conflict end end @@ -1062,8 +1062,8 @@ space.bigbluebutton_room.owner.should be(space) end - it "with param and name equal the space's permalink" do - space.bigbluebutton_room.param.should eql(space.permalink) + it "with param and name equal the space's slug" do + space.bigbluebutton_room.param.should eql(space.slug) space.bigbluebutton_room.name.should eql(space.name) end @@ -1093,7 +1093,7 @@ let(:space) { FactoryGirl.create(:space_with_associations, :name => "Old Name", :public => true) } before(:each) { space.update_attributes(:name => "New Name", :public => false) } - it { space.bigbluebutton_room.param.should be(space.permalink) } + it { space.bigbluebutton_room.param.should be(space.slug) } it { space.bigbluebutton_room.name.should be(space.name) } it { space.bigbluebutton_room.private.should be(false) } end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index adc7a59bb..a7bf36e8f 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -312,24 +312,24 @@ end end - describe "validates uniqueness against Space#permalink" do + describe "validates uniqueness against Space#slug" do let(:message) { "has already been taken" } describe "on create" do context "with an enabled space" do let(:space) { FactoryGirl.create(:space) } - subject { FactoryGirl.build(:user, username: space.permalink) } + subject { FactoryGirl.build(:user, username: space.slug) } include_examples "invalid user with username not unique" end context "with a disabled space" do let(:disabled_space) { FactoryGirl.create(:space, disabled: true) } - subject { FactoryGirl.build(:user, username: disabled_space.permalink) } + subject { FactoryGirl.build(:user, username: disabled_space.slug) } include_examples "invalid user with username not unique" end context "uses case-insensitive comparisons" do - let!(:space) { FactoryGirl.create(:space, permalink: "My-Weird-Name") } + let!(:space) { FactoryGirl.create(:space, slug: "My-Weird-Name") } subject { FactoryGirl.build(:user, username: "mY-weiRD-NAMe") } include_examples "invalid user with username not unique" end @@ -340,7 +340,7 @@ let(:subject) { FactoryGirl.create(:user) } let(:space) { FactoryGirl.create(:space) } before(:each) { - subject.username = space.permalink + subject.username = space.slug } include_examples "invalid user with username not unique" end @@ -349,14 +349,14 @@ let(:subject) { FactoryGirl.create(:user) } let(:disabled_space) { FactoryGirl.create(:space, :disabled => true) } before(:each) { - subject.username = disabled_space.permalink + subject.username = disabled_space.slug } include_examples "invalid user with username not unique" end context "uses case-insensitive comparisons" do let(:subject) { FactoryGirl.create(:user) } - let!(:space) { FactoryGirl.create(:space, permalink: "My-Weird-Name") } + let!(:space) { FactoryGirl.create(:space, slug: "My-Weird-Name") } before(:each) { subject.username = "mY-weiRD-NAMe" } @@ -480,19 +480,19 @@ end context "conflicting with a space" do - let(:space) { FactoryGirl.create(:space, permalink: nil) } + let(:space) { FactoryGirl.create(:space, slug: nil) } let(:user) { FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: space.name }) } - it { user.username.should eql(space.permalink + "-2") } + it { user.username.should eql(space.slug + "-2") } end context "conflicting with a disabled space" do - let(:space) { FactoryGirl.create(:space, permalink: nil, disabled: false) } + let(:space) { FactoryGirl.create(:space, slug: nil, disabled: false) } let(:user) { FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: space.name }) } - it { user.username.should eql(space.permalink + "-2") } + it { user.username.should eql(space.slug + "-2") } end context "conflicting with a room" do diff --git a/spec/validators/identifier_uniqueness_validator_spec.rb b/spec/validators/identifier_uniqueness_validator_spec.rb index daca69bb5..6651d7e46 100644 --- a/spec/validators/identifier_uniqueness_validator_spec.rb +++ b/spec/validators/identifier_uniqueness_validator_spec.rb @@ -75,7 +75,7 @@ context "when there's a conflict with a space" do let!(:space) { FactoryGirl.create(:space) } it { - target.validate_each(user, "username", space.permalink) + target.validate_each(user, "username", space.slug) user.errors.should have_key(:username) user.errors.messages[:username].should include(message) } @@ -84,14 +84,14 @@ context "when there's a conflict with a disabled space" do let!(:space) { FactoryGirl.create(:space, disabled: true) } it { - target.validate_each(user, "username", space.permalink) + target.validate_each(user, "username", space.slug) user.errors.should have_key(:username) user.errors.messages[:username].should include(message) } end context "when there's a conflict with a space ignoring case" do - let!(:space) { FactoryGirl.create(:space, permalink: "ANY-username") } + let!(:space) { FactoryGirl.create(:space, slug: "ANY-username") } it { target.validate_each(user, "username", "any-USERnaME") user.errors.should have_key(:username) @@ -112,76 +112,76 @@ before { space.valid? } it "when the value is empty" do - target.validate_each(space, "permalink", "") + target.validate_each(space, "slug", "") space.errors.should be_empty end it "when the value is nil" do - target.validate_each(space, "permalink", nil) + target.validate_each(space, "slug", nil) space.errors.should be_empty end it "when there's no conflict" do - target.validate_each(space, "permalink", "new-value") + target.validate_each(space, "slug", "new-value") space.errors.should be_empty end context "when there's a conflict with another space" do let!(:another_space) { FactoryGirl.create(:space) } it { - target.validate_each(space, "permalink", another_space.permalink) - space.errors.should have_key(:permalink) - space.errors.messages[:permalink].should include(message) + target.validate_each(space, "slug", another_space.slug) + space.errors.should have_key(:slug) + space.errors.messages[:slug].should include(message) } end context "when there's a conflict with a disabled space" do let!(:another_space) { FactoryGirl.create(:space, disabled: true) } it { - target.validate_each(space, "permalink", another_space.permalink) - space.errors.should have_key(:permalink) - space.errors.messages[:permalink].should include(message) + target.validate_each(space, "slug", another_space.slug) + space.errors.should have_key(:slug) + space.errors.messages[:slug].should include(message) } end context "when there's a conflict with another space ignoring case" do - let!(:another_space) { FactoryGirl.create(:space, permalink: "ANY-username") } + let!(:another_space) { FactoryGirl.create(:space, slug: "ANY-username") } it { - target.validate_each(space, "permalink", "any-USERnaME") - space.errors.should have_key(:permalink) - space.errors.messages[:permalink].should include(message) + target.validate_each(space, "slug", "any-USERnaME") + space.errors.should have_key(:slug) + space.errors.messages[:slug].should include(message) } end context "when there's a conflict with a user" do let!(:user) { FactoryGirl.create(:user) } it { - target.validate_each(space, "permalink", user.username) - space.errors.should have_key(:permalink) - space.errors.messages[:permalink].should include(message) + target.validate_each(space, "slug", user.username) + space.errors.should have_key(:slug) + space.errors.messages[:slug].should include(message) } end context "when there's a conflict with a disabled user" do let!(:user) { FactoryGirl.create(:user, disabled: true) } it { - target.validate_each(space, "permalink", user.username) - space.errors.should have_key(:permalink) - space.errors.messages[:permalink].should include(message) + target.validate_each(space, "slug", user.username) + space.errors.should have_key(:slug) + space.errors.messages[:slug].should include(message) } end context "when there's a conflict with a user ignoring case" do let!(:user) { FactoryGirl.create(:user, username: "ANY-username") } it { - target.validate_each(space, "permalink", "any-USERnaME") - space.errors.should have_key(:permalink) - space.errors.messages[:permalink].should include(message) + target.validate_each(space, "slug", "any-USERnaME") + space.errors.should have_key(:slug) + space.errors.messages[:slug].should include(message) } end it "ignores the space itself" do - target.validate_each(space, "permalink", space.permalink) + target.validate_each(space, "slug", space.slug) space.errors.should be_empty end end diff --git a/spec/validators/room_param_uniqueness_validator_spec.rb b/spec/validators/room_param_uniqueness_validator_spec.rb index 1c0bc127d..01533da84 100644 --- a/spec/validators/room_param_uniqueness_validator_spec.rb +++ b/spec/validators/room_param_uniqueness_validator_spec.rb @@ -79,41 +79,41 @@ before { space.valid? } it "when the value is empty" do - target.validate_each(space, "permalink", "") + target.validate_each(space, "slug", "") space.errors.should be_empty end it "when the value is nil" do - target.validate_each(space, "permalink", nil) + target.validate_each(space, "slug", nil) space.errors.should be_empty end it "when there's no conflict" do - target.validate_each(space, "permalink", "new-value") + target.validate_each(space, "slug", "new-value") space.errors.should be_empty end context "when there's a conflict" do let!(:room) { FactoryGirl.create(:bigbluebutton_room) } it { - target.validate_each(space, "permalink", room.param) - space.errors.should have_key(:permalink) - space.errors.messages[:permalink].should include(message) + target.validate_each(space, "slug", room.param) + space.errors.should have_key(:slug) + space.errors.messages[:slug].should include(message) } end ['rooms', 'servers', 'recordings', 'playback_types'].each do |word| context "when using the reserved word '#{word}'" do it { - target.validate_each(space, "permalink", word) - space.errors.should have_key(:permalink) - space.errors.messages[:permalink].should include(message) + target.validate_each(space, "slug", word) + space.errors.should have_key(:slug) + space.errors.messages[:slug].should include(message) } end end it "ignores the space's own room" do - target.validate_each(space, "permalink", space.bigbluebutton_room.param) + target.validate_each(space, "slug", space.bigbluebutton_room.param) space.errors.should be_empty end end From 2d46703bb0b221004b5efd9d552df96b0eb24c97 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Tue, 14 Nov 2017 13:43:51 -0200 Subject: [PATCH 34/75] Update BigbluebuttonRails, renames #param to #slug --- Gemfile.lock | 4 +- .../user_edit.js.coffee | 12 +++--- .../custom_bigbluebutton_rooms_controller.rb | 4 +- app/models/space.rb | 10 ++--- app/models/user.rb | 8 ++-- ...r.rb => room_slug_uniqueness_validator.rb} | 10 ++--- .../_form.html.haml | 4 +- .../user_edit.html.haml | 6 +-- .../_form.html.haml | 2 +- config/initializers/bigbluebutton_rails.rb | 2 +- config/locales/en/_bigbluebutton_rails.yml | 37 ++++++++++++++----- config/locales/en/mconf.yml | 2 +- config/locales/pt-br/_bigbluebutton_rails.yml | 17 ++++----- config/locales/pt-br/mconf.yml | 2 +- ...0171114142537_bigbluebutton_rails_to230.rb | 11 ++++++ db/schema.rb | 6 +-- lib/mconf/identifier.rb | 2 +- ...tom_bigbluebutton_rooms_controller_spec.rb | 6 +-- spec/factories/bigbluebutton_room.rb | 2 +- spec/factories/bigbluebutton_server.rb | 2 +- spec/features/ldap/user_signs_in_spec.rb | 2 +- .../features/shibboleth/user_signs_in_spec.rb | 2 +- spec/features/visitor_logs_in_spec.rb | 4 +- spec/lib/bigbluebutton_rails.rb | 4 +- spec/lib/mconf/identifier_spec.rb | 6 +-- spec/models/space_spec.rb | 16 ++++---- spec/models/user_spec.rb | 16 ++++---- ...=> room_slug_uniqueness_validator_spec.rb} | 16 ++++---- 28 files changed, 122 insertions(+), 93 deletions(-) rename app/validators/{room_param_uniqueness_validator.rb => room_slug_uniqueness_validator.rb} (84%) create mode 100644 db/migrate/20171114142537_bigbluebutton_rails_to230.rb rename spec/validators/{room_param_uniqueness_validator_spec.rb => room_slug_uniqueness_validator_spec.rb} (89%) diff --git a/Gemfile.lock b/Gemfile.lock index 4959a50b1..10aa77bac 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,10 +8,10 @@ GIT GIT remote: https://github.com/mconf/bigbluebutton_rails.git - revision: 5444ec51f44bfb66d7d580f831eb3b24ab1d41a5 + revision: 2512a3b3104f7878ce1b13d2e4ec417bc8b049dd branch: master specs: - bigbluebutton_rails (2.1.0) + bigbluebutton_rails (2.2.0) bigbluebutton-api-ruby (~> 1.6) browser (~> 0.8.0) rails (>= 4.0.0) diff --git a/app/assets/javascripts/app/custom_bigbluebutton_rooms/user_edit.js.coffee b/app/assets/javascripts/app/custom_bigbluebutton_rooms/user_edit.js.coffee index 99fb6bf9b..f194027f5 100644 --- a/app/assets/javascripts/app/custom_bigbluebutton_rooms/user_edit.js.coffee +++ b/app/assets/javascripts/app/custom_bigbluebutton_rooms/user_edit.js.coffee @@ -1,11 +1,11 @@ class mconf.UserEdit @setup: -> - $param = $("#bigbluebutton_room_param:not(.disabled)") - $param.attr "value", mconf.Base.stringToSlug($param.val(), true) - $param.on "input", () -> - $param.val(mconf.Base.stringToSlug($param.val(), true)) - $param.on "blur", () -> - $param.val(mconf.Base.stringToSlug($param.val(), false)) + $slug = $("#bigbluebutton_room_slug:not(.disabled)") + $slug.attr "value", mconf.Base.stringToSlug($slug.val(), true) + $slug.on "input", () -> + $slug.val(mconf.Base.stringToSlug($slug.val(), true)) + $slug.on "blur", () -> + $slug.val(mconf.Base.stringToSlug($slug.val(), false)) visibilityChanged() $('.room-visibility .btn-group .btn').on 'click', -> diff --git a/app/controllers/custom_bigbluebutton_rooms_controller.rb b/app/controllers/custom_bigbluebutton_rooms_controller.rb index 1b348aff9..4c753058f 100644 --- a/app/controllers/custom_bigbluebutton_rooms_controller.rb +++ b/app/controllers/custom_bigbluebutton_rooms_controller.rb @@ -13,7 +13,7 @@ class CustomBigbluebuttonRoomsController < Bigbluebutton::RoomsController # For :join and :end we need information from the web conference server, so we have to fetch it. # This has to run before any kind of authorization because some methods need this extra # information, see `ApplicationController.bigbluebutton_role`. - load_resource find_by: :param, class: "BigbluebuttonRoom", + load_resource find_by: :slug, class: "BigbluebuttonRoom", instance_name: "room", except: [:join, :end] prepend_before_action :load_and_fetch_room_info, only: [:join, :end] @@ -132,7 +132,7 @@ def user_edit # Loads the room and fetches information from the web conference server. def load_and_fetch_room_info - @room = BigbluebuttonRoom.find_by!(param: params[:id]) + @room = BigbluebuttonRoom.find_by!(slug: params[:id]) @room.fetch_is_running? @room.fetch_meeting_info if @room.is_running? end diff --git a/app/models/space.rb b/app/models/space.rb index 9ed657a86..daa99a296 100644 --- a/app/models/space.rb +++ b/app/models/space.rb @@ -86,7 +86,7 @@ class Space < ActiveRecord::Base length: { minimum: 3 }, identifier_uniqueness: true, blacklist: true, - room_param_uniqueness: true + room_slug_uniqueness: true # the friendly name / slug for the space extend FriendlyId @@ -349,7 +349,7 @@ def initials def create_webconf_room params = { owner: self, - param: self.slug, + slug: self.slug, name: self.name, private: false, moderator_key: SecureRandom.hex(8), @@ -373,10 +373,10 @@ def update_webconf_room # Checks if an error happened when creating the associated 'bigbluebutton_room' # and sets this error in an attribute that can be seen by the user in the views. - # TODO: Check for any error, not only on :param; test it better; do it for users too. + # TODO: Check for any error, not only on :slug; test it better; do it for users too. def check_errors_on_bigbluebutton_room - if self.bigbluebutton_room and self.bigbluebutton_room.errors[:param].size > 0 - self.errors.add :slug, I18n.t('activerecord.errors.messages.invalid_identifier', :id => self.bigbluebutton_room.param) + if self.bigbluebutton_room and self.bigbluebutton_room.errors[:slug].size > 0 + self.errors.add :slug, I18n.t('activerecord.errors.messages.invalid_identifier', id: self.bigbluebutton_room.slug) end end diff --git a/app/models/user.rb b/app/models/user.rb index e3728b1be..bec6ff044 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -42,7 +42,7 @@ def self.find_first_by_auth_conditions(warden_conditions) length: { minimum: 1 }, identifier_uniqueness: true, blacklist: true, - room_param_uniqueness: true + room_slug_uniqueness: true extend FriendlyId friendly_id :slug_candidates, use: :slugged, slug_column: :username @@ -214,7 +214,7 @@ def require_approval? def create_webconf_room params = { owner: self, - param: self.username, + slug: self.username, name: self.name, logout_url: "/feedback/webconf/", moderator_key: SecureRandom.hex(8), @@ -443,11 +443,11 @@ def modify_user_after_disabled(disabled=true) if disabled self.username = disabled_rename(self.username) self.email = disabled_rename(self.email) - self.bigbluebutton_room.param = disabled_rename(self.bigbluebutton_room.param) + self.bigbluebutton_room.slug = disabled_rename(self.bigbluebutton_room.slug) else self.username = enabled_rename(self.username) self.email = enabled_rename(self.email) - self.bigbluebutton_room.param = enabled_rename(self.bigbluebutton_room.param) + self.bigbluebutton_room.slug = enabled_rename(self.bigbluebutton_room.slug) end self.skip_confirmation_notification! self.save diff --git a/app/validators/room_param_uniqueness_validator.rb b/app/validators/room_slug_uniqueness_validator.rb similarity index 84% rename from app/validators/room_param_uniqueness_validator.rb rename to app/validators/room_slug_uniqueness_validator.rb index 697621314..7acd43766 100644 --- a/app/validators/room_param_uniqueness_validator.rb +++ b/app/validators/room_slug_uniqueness_validator.rb @@ -5,17 +5,17 @@ # This file is licensed under the Affero General Public License version # 3 or later. See the LICENSE file. -# Validates the value of an attribute against BigbluebuttonRoom's param. Used +# Validates the value of an attribute against BigbluebuttonRoom's slug. Used # for models that have a room and use one of its attributes to generate the -# param of this room. +# slug of this room. # Invalidates the record if the value is already taken. # Uses case-insensitive comparisons. -class RoomParamUniquenessValidator < ActiveModel::EachValidator +class RoomSlugUniquenessValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) unless value.blank? - # all rooms with the same param - rooms = BigbluebuttonRoom.where("lower(param) = ?", value.downcase) + # all rooms with the same slug + rooms = BigbluebuttonRoom.where("lower(slug) = ?", value.downcase) if record.is_a?(User) || record.is_a?(Space) || record.is_a?(BigbluebuttonRoom) my_room = record.try(:bigbluebutton_room) ? record.bigbluebutton_room : record rooms = rooms.where.not(id: my_room.id) if my_room.present? diff --git a/app/views/custom_bigbluebutton_rooms/_form.html.haml b/app/views/custom_bigbluebutton_rooms/_form.html.haml index 5b6d07715..c0b014a11 100644 --- a/app/views/custom_bigbluebutton_rooms/_form.html.haml +++ b/app/views/custom_bigbluebutton_rooms/_form.html.haml @@ -26,9 +26,9 @@ = f.input :record_meeting, :disabled => !editing = f.input :duration, :disabled => !editing = f.input :max_participants, :disabled => !editing - = f.input :param, :as => :string, :hint => t('simple_form.hints.user.bigbluebutton_room.url'), :wrapper => :vertical_input_group do + = f.input :slug, :as => :string, :hint => t('simple_form.hints.user.bigbluebutton_room.url'), :wrapper => :vertical_input_group do = content_tag :span, webconf_url_prefix, class: "input-group-addon" - = f.input_field :param, class: "form-control", :disabled => !editing + = f.input_field :slug, class: "form-control", :disabled => !editing = f.input :moderator_only_message, :disabled => !editing = f.input :auto_start_recording, :disabled => !editing = f.input :allow_start_stop_recording, :disabled => !editing diff --git a/app/views/custom_bigbluebutton_rooms/user_edit.html.haml b/app/views/custom_bigbluebutton_rooms/user_edit.html.haml index 018d66f0d..ccbd43477 100644 --- a/app/views/custom_bigbluebutton_rooms/user_edit.html.haml +++ b/app/views/custom_bigbluebutton_rooms/user_edit.html.haml @@ -12,10 +12,10 @@ = f.input :name, :as => :string, :hint => t('simple_form.hints.user.bigbluebutton_room.name') -# - if can?(:change_url, @room) - -# = disable_autocomplete_for('bigbluebutton_room[param]') - -# = f.input :param, :as => :string, :hint => t('simple_form.hints.user.bigbluebutton_room.url'), :wrapper => :vertical_input_group do + -# = disable_autocomplete_for('bigbluebutton_room[slug]') + -# = f.input :slug, :as => :string, :hint => t('simple_form.hints.user.bigbluebutton_room.url'), :wrapper => :vertical_input_group do -# = content_tag :span, webconf_url_prefix, class: "input-group-addon" - -# = f.input_field :param, class: "form-control" + -# = f.input_field :slug, class: "form-control" .form-group.room-visibility = f.input :private, hint: t('simple_form.hints.user.bigbluebutton_room.private'), wrapper: :label_only, label: t('.visibility') diff --git a/app/views/custom_bigbluebutton_servers/_form.html.haml b/app/views/custom_bigbluebutton_servers/_form.html.haml index 7c2b820c7..9c8af0c1a 100644 --- a/app/views/custom_bigbluebutton_servers/_form.html.haml +++ b/app/views/custom_bigbluebutton_servers/_form.html.haml @@ -9,7 +9,7 @@ = f.input :url, :disabled => !editing = f.input :secret, :disabled => !editing = f.input :version, :disabled => true - = f.input :param, :disabled => !editing + = f.input :slug, :disabled => !editing - if editing - if server.new_record? - cancel_route = nil diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index dd0942620..ef38470a3 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -29,7 +29,7 @@ BigbluebuttonRoom.class_eval do # prevent duplicates and rooms with blacklisted names - validates :param, blacklist: true, room_param_uniqueness: true + validates :slug, blacklist: true, room_slug_uniqueness: true # Returns whether the `user` created the current meeting on this room # or not. Has to be called after a `fetch_meeting_info`, otherwise will always diff --git a/config/locales/en/_bigbluebutton_rails.yml b/config/locales/en/_bigbluebutton_rails.yml index 02c58c04e..97c2e71af 100644 --- a/config/locales/en/_bigbluebutton_rails.yml +++ b/config/locales/en/_bigbluebutton_rails.yml @@ -46,17 +46,16 @@ en: moderator_key: "Key for moderators" moderator_only_message: "Message to be shown to moderators only" name: Name - param: "String ID" private: Private presenter_share_only: "Only presenter shares audio and video" record: Record - server_id: "Server ID" + slug: "String ID" voice_bridge: "Voice Bridge" welcome_msg: "Welcome Message" bigbluebutton_server: name: Name - param: "String ID" secret: "Shared Secret" + slug: "String ID" url: URL version: Version bigbluebutton_server_config: @@ -69,6 +68,26 @@ en: bigbluebutton_server: "Web Conference Server" bigbluebutton_server_config: "Web Conference Server Configurations" bigbluebutton_rails: + api: + errors: + forbidden: + msg: "You are not authorized to make this API call" + title: "Forbidden" + invalid_pagination: + msg: "One or more pagination parameters are wrong" + title: "Invalid pagination parameters" + invalid_key: + msg: "The key informed is not valid for this room" + title: "Invalid key" + missing_params: + msg: "You did not inform one or more required parameters" + title: "Missing parameters" + room_not_found: + msg: "Could not find the target room" + title: "Resource not found" + room_not_running: + msg: "There's no meeting currently running in this room" + title: "Meeting not running" bigbluebutton: BigBlueButton metadata: errors: @@ -79,13 +98,13 @@ en: success: "The playback type was successfully updated." presentation: name: "Play" - tip: "Play the recording online" + tip: "Plays the recording in an HTML5 page. The recording is not downloaded to your computer and will require Internet to be reproduced." presentation_export: name: "Download HTML" - tip: "Download the recording for offline playback" + tip: "Downloads an HTML page that you can use to reproduce the recording offline using your browser. Has all the features of the HTML player online plus the advantage of also working offline. Currently can only be reproduced using the Firefox browser." presentation_video: name: "Download" - tip: "Download the recording as a video file" + tip: "Downloads a vídeo file (uses the WebM format) with the recording. You can use this video file to watch the recording offline and to share this recording in other websites." recordings: default: description: "Meeting held on %{time} (UTC)" @@ -106,7 +125,7 @@ en: success: "Your recording was successfully updated." rooms: default_welcome_msg: "Welcome to %%CONFNAME%%!

To join the audio bridge click the headset icon (upper-left hand corner). Use a headset to avoid causing background noise for others.
" - default_welcome_msg_dial_number: "Welcome to %%CONFNAME%%!

To join the audio bridge click the headset icon (upper-left hand corner). Use a headset to avoid causing background noise for others.
You can call into this conference with a regular phone using the number \"%%DIALNUM%%\".
" + default_welcome_msg_dial_number: "
You can call into this conference with a regular phone using the number \"%%DIALNUM%%\".
" errors: fetch_recordings: no_server: "There's no server associated with this room." @@ -117,9 +136,9 @@ en: wrong_params: "Wrong params in your request." generate_dial_number: not_unique: "We're sorry, but it wasn't possible to generate a unique dial number for this room. You can either try again or manually set a dial number." - param_format: "can only use letters, numbers and the symbols \"-\" or \"_\" (not at the begin or end)" server: nil: "Your room must be associated to a server to execute this operation." + slug_format: "can only use letters, numbers and the symbols \"-\" or \"_\" (not at the begin or end)" notice: create: failure: "Your room could not be created." @@ -139,7 +158,7 @@ en: success: "Your room was successfully updated." servers: errors: - param_format: "you can only use letters, numbers and the symbols \"-\" or \"_\" (not at the begin or end)" + slug_format: "you can only use letters, numbers and the symbols \"-\" or \"_\" (not at the begin or end)" url_format: "should use the pattern http:///bigbluebutton/api" notice: create: diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 43cc25e87..5642cc84b 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -154,7 +154,7 @@ en: attributes: bigbluebutton_room: name: "Name" - param: "Address" + slug: "Address" invitation: duration_values: 5m: "5 minutes" diff --git a/config/locales/pt-br/_bigbluebutton_rails.yml b/config/locales/pt-br/_bigbluebutton_rails.yml index 6cb6dff6d..e0d7efc7b 100644 --- a/config/locales/pt-br/_bigbluebutton_rails.yml +++ b/config/locales/pt-br/_bigbluebutton_rails.yml @@ -46,17 +46,16 @@ pt-br: moderator_key: "Chave para moderadores" moderator_only_message: "Mensagem mostrada somente aos moderadores" name: Nome - param: Identificador private: Privada presenter_share_only: "Somente apresentador compartilha áudio e vídeo" record: Gravar - server_id: "ID do Servidor" + slug: Identificador voice_bridge: "Voice Bridge" welcome_msg: "Mensagem de boas-vindas" bigbluebutton_server: name: Nome - param: Identificador secret: "Chave de segurança" + slug: Identificador url: URL version: Versão bigbluebutton_server_config: @@ -79,13 +78,13 @@ pt-br: success: "Formato de reprodução atualizado com sucesso." presentation: name: "Reproduzir" - tip: "Reproduzir gravação online" + tip: "Reproduz a gravação em uma página HTML5. Não é feito download da gravação para o seu computador, portanto exige internet para a gravação ser reproduzida." presentation_export: name: "Download HTML" - tip: "Download da gravação para reprodução offline" + tip: "Faz o download de uma página HTML que você pode usar para reproduzir a gravação usando o seu navegador mesmo sem conexão com a internet. Tem todas as características da versão online, mas com a vantagem de não exigir internet. Atualmente só pode ser reproduzida usando o navegador Firefox." presentation_video: name: "Download" - tip: "Download da gravação em arquivo de vídeo" + tip: "Realiza o download da gravação em um arquivo de vídeo (no formato WebM). Você pode usar esse arquivo de vídeo para assistir a gravação offline e/ou compartilhar esta gravação em outros sites." recordings: default: description: "Reunião realizada em %{time} (UTC)" @@ -106,7 +105,7 @@ pt-br: success: "Sua gravação foi atualizada com sucesso." rooms: default_welcome_msg: "Bem-vindo(a) a %%CONFNAME%%!

Para compartilhar o seu microfone, clique no botão com um headset (à esquerda da barra superior). Use um headset para ter uma melhor experiência de áudio com menos ruídos.
" - default_welcome_msg_dial_number: "Bem-vindo(a) a %%CONFNAME%%!

Para compartilhar o seu microfone, clique no botão com um headset (à esquerda da barra superior). Use um headset para ter uma melhor experiência de áudio com menos ruídos.
Você pode discar para esta conferência através de um telefone usando o número \"%%DIALNUM%%\".
" + default_welcome_msg_dial_number: "
Você pode discar para esta conferência através de um telefone usando o número \"%%DIALNUM%%\".
" errors: fetch_recordings: no_server: "Não há nenhum servidor associado a esta sala." @@ -117,9 +116,9 @@ pt-br: wrong_params: "Parâmetros errados na sua requisição." generate_dial_number: not_unique: "Desculpe, mas não foi possível gerar um número de discagem único. Você pode tentar novamente ou então atribuir um número manualmente." - param_format: "você pode usar apenas letras, números e os símbolos \"-\" ou \"_\" (não no começo ou fim)" server: nil: "Sua sala deve ser associada a um servidor para executar esta operação." + slug_format: "você pode usar apenas letras, números e os símbolos \"-\" ou \"_\" (não no começo ou fim)" notice: create: failure: "Sua sala não pôde ser criada." @@ -139,7 +138,7 @@ pt-br: success: "Sua sala foi atualizada com sucesso." servers: errors: - param_format: "você pode usar apenas letras, números e os símbolos \"-\" ou \"_\" (não no começo ou fim)" + slug_format: "você pode usar apenas letras, números e os símbolos \"-\" ou \"_\" (não no começo ou fim)" url_format: "deve utilizar o padrão http:///bigbluebutton/api" notice: create: diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index 597a49db7..1daed5b68 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -149,7 +149,7 @@ pt-br: attributes: bigbluebutton_room: name: "Nome" - param: "Endereço" + slug: "Endereço" invitation: duration_values: 5m: "5 minutos" diff --git a/db/migrate/20171114142537_bigbluebutton_rails_to230.rb b/db/migrate/20171114142537_bigbluebutton_rails_to230.rb new file mode 100644 index 000000000..1706c25d1 --- /dev/null +++ b/db/migrate/20171114142537_bigbluebutton_rails_to230.rb @@ -0,0 +1,11 @@ +class BigbluebuttonRailsTo230 < ActiveRecord::Migration + def up + rename_column :bigbluebutton_rooms, :param, :slug + rename_column :bigbluebutton_servers, :param, :slug + end + + def down + rename_column :bigbluebutton_servers, :slug, :param + rename_column :bigbluebutton_rooms, :slug, :param + end +end diff --git a/db/schema.rb b/db/schema.rb index e2f7eecd8..e05db77eb 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171114124112) do +ActiveRecord::Schema.define(version: 20171114142537) do create_table "activities", force: true do |t| t.integer "trackable_id" @@ -164,7 +164,7 @@ t.datetime "created_at" t.datetime "updated_at" t.boolean "external", default: false - t.string "param" + t.string "slug" t.boolean "record_meeting", default: false t.integer "duration", default: 0 t.string "moderator_api_password" @@ -192,7 +192,7 @@ t.string "version" t.datetime "created_at" t.datetime "updated_at" - t.string "param" + t.string "slug" end create_table "certificate_tokens", force: true do |t| diff --git a/lib/mconf/identifier.rb b/lib/mconf/identifier.rb index e475f05fd..80fab9422 100644 --- a/lib/mconf/identifier.rb +++ b/lib/mconf/identifier.rb @@ -27,7 +27,7 @@ def self.unique_mconf_id(base_value) # have to consider both users and spaces, including disabled ones users = User.with_disabled.where(username: new_value).count spaces = Space.with_disabled.where(slug: new_value).count - rooms = BigbluebuttonRoom.where(param: new_value).count + rooms = BigbluebuttonRoom.where(slug: new_value).count # blacklisted words file = File.join(::Rails.root, "config", "reserved_words.yml") diff --git a/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb b/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb index 90a597fc7..e7f66f0a5 100644 --- a/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb +++ b/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb @@ -397,13 +397,13 @@ let(:allowed_params) { [ :name, :meetingid, :attendee_key, :moderator_key, :welcome_msg, :private, :logout_url, :dial_number, :voice_bridge, :max_participants, :owner_id, - :owner_type, :external, :param, :record_meeting, :duration, :default_layout, :presenter_share_only, + :owner_type, :external, :slug, :record_meeting, :duration, :default_layout, :presenter_share_only, :auto_start_video, :auto_start_audio, :background, :moderator_only_message, :auto_start_recording, :allow_start_stop_recording, :metadata_attributes => [ :id, :name, :content, :_destroy, :owner_id ] ] } it { - BigbluebuttonRoom.stub(:find_by_param).and_return(room) + BigbluebuttonRoom.stub(:find_by).and_return(room) room.stub(:update_attributes).and_return(true) attrs.stub(:permit).and_return(attrs) controller.stub(:params).and_return(params) @@ -426,7 +426,7 @@ :welcome_msg, :metadata_attributes => [ :id, :name, :content, :_destroy, :owner_id ] ] } it { - BigbluebuttonRoom.stub(:find_by_param).and_return(room) + BigbluebuttonRoom.stub(:find_by).and_return(room) room.stub(:update_attributes).and_return(true) attrs.stub(:permit).and_return(attrs) controller.stub(:params).and_return(params) diff --git a/spec/factories/bigbluebutton_room.rb b/spec/factories/bigbluebutton_room.rb index 1992c8150..39f40f2f4 100644 --- a/spec/factories/bigbluebutton_room.rb +++ b/spec/factories/bigbluebutton_room.rb @@ -16,7 +16,7 @@ r.moderator_api_password { SecureRandom.uuid } r.welcome_msg { Forgery(:lorem_ipsum).sentences(2) } r.private false - r.sequence(:param) { |n| "meeting-#{n}" } + r.sequence(:slug) { |n| "meeting-#{n}" } r.external false r.record_meeting false r.duration 0 diff --git a/spec/factories/bigbluebutton_server.rb b/spec/factories/bigbluebutton_server.rb index 8a2b762ee..7246a3c4a 100644 --- a/spec/factories/bigbluebutton_server.rb +++ b/spec/factories/bigbluebutton_server.rb @@ -10,6 +10,6 @@ s.sequence(:url) { |n| "http://bigbluebutton#{n}.test.com/bigbluebutton/api" } s.secret { Forgery(:basic).password :at_least => 30, :at_most => 40 } s.version '0.9' - s.sequence(:param) { |n| "server-#{n}" } + s.sequence(:slug) { |n| "server-#{n}" } end end diff --git a/spec/features/ldap/user_signs_in_spec.rb b/spec/features/ldap/user_signs_in_spec.rb index 6c4fd77b5..0623f5f71 100644 --- a/spec/features/ldap/user_signs_in_spec.rb +++ b/spec/features/ldap/user_signs_in_spec.rb @@ -159,7 +159,7 @@ context "and there's a conflict on the user's username with a room" do before { - FactoryGirl.create(:bigbluebutton_room, param: @ldap_attrs[:username]) + FactoryGirl.create(:bigbluebutton_room, slug: @ldap_attrs[:username]) expect { sign_in_with @ldap_attrs[:username], @ldap_attrs[:password] }.to change{ User.count } diff --git a/spec/features/shibboleth/user_signs_in_spec.rb b/spec/features/shibboleth/user_signs_in_spec.rb index 783cb2fc5..392cc80f8 100644 --- a/spec/features/shibboleth/user_signs_in_spec.rb +++ b/spec/features/shibboleth/user_signs_in_spec.rb @@ -174,7 +174,7 @@ context "and there's a conflict on the user's username with a room" do before { - FactoryGirl.create(:bigbluebutton_room, param: @attrs[:profile_attributes][:full_name].parameterize) + FactoryGirl.create(:bigbluebutton_room, slug: @attrs[:profile_attributes][:full_name].parameterize) expect { click_button t('shibboleth.associate.new_account.create_new_account') }.to change{ User.count }.by(1) diff --git a/spec/features/visitor_logs_in_spec.rb b/spec/features/visitor_logs_in_spec.rb index 1c61e292c..e41c63c98 100644 --- a/spec/features/visitor_logs_in_spec.rb +++ b/spec/features/visitor_logs_in_spec.rb @@ -50,7 +50,7 @@ scenario 'from /webconf/:id' do user = FactoryGirl.create(:user) - room = FactoryGirl.create(:bigbluebutton_room, :param => "test", :owner => user) + room = FactoryGirl.create(:bigbluebutton_room, slug: "test", owner: user) visit invite_bigbluebutton_room_path(room) sign_in_with @user.username, @user.password, false @@ -84,7 +84,7 @@ Site.current.update_attributes(ssl: true) user = FactoryGirl.create(:user) - room = FactoryGirl.create(:bigbluebutton_room, :param => "test", :owner => user) + room = FactoryGirl.create(:bigbluebutton_room, slug: "test", owner: user) visit invite_bigbluebutton_room_path(room) sign_in_with @user.username, @user.password diff --git a/spec/lib/bigbluebutton_rails.rb b/spec/lib/bigbluebutton_rails.rb index 5c68cf1cb..32db1f992 100644 --- a/spec/lib/bigbluebutton_rails.rb +++ b/spec/lib/bigbluebutton_rails.rb @@ -17,14 +17,14 @@ it { target.should respond_to(:get_invitation_url) } it { target.get_invitation_url.should be_a(Proc) } - it { target.get_invitation_url.call(room).should eql("http://#{Site.current.domain}/webconf/#{room.param}") } + it { target.get_invitation_url.call(room).should eql("http://#{Site.current.domain}/webconf/#{room.slug}") } context "works with HTTPS" do before { Site.current.update_attributes(ssl: true) } - it { target.get_invitation_url.call(room).should eql("https://#{Site.current.domain}/webconf/#{room.param}") } + it { target.get_invitation_url.call(room).should eql("https://#{Site.current.domain}/webconf/#{room.slug}") } end end diff --git a/spec/lib/mconf/identifier_spec.rb b/spec/lib/mconf/identifier_spec.rb index aa4d26a10..a7f4b6bfd 100644 --- a/spec/lib/mconf/identifier_spec.rb +++ b/spec/lib/mconf/identifier_spec.rb @@ -36,8 +36,8 @@ context "makes sure the id is unique among rooms" do before { - FactoryGirl.create(:bigbluebutton_room, param: "my-name") - FactoryGirl.create(:bigbluebutton_room, param: "my-name-2") + FactoryGirl.create(:bigbluebutton_room, slug: "my-name") + FactoryGirl.create(:bigbluebutton_room, slug: "my-name-2") } it { target.unique_mconf_id("My Name").should eql("my-name-3") } end @@ -46,7 +46,7 @@ before { FactoryGirl.create(:user, username: "my-name") FactoryGirl.create(:space, slug: "my-name-2") - FactoryGirl.create(:bigbluebutton_room, param: "my-name-3") + FactoryGirl.create(:bigbluebutton_room, slug: "my-name-3") } it { target.unique_mconf_id("My Name").should eql("my-name-4") } end diff --git a/spec/models/space_spec.rb b/spec/models/space_spec.rb index bf7489bde..0a67b69d2 100644 --- a/spec/models/space_spec.rb +++ b/spec/models/space_spec.rb @@ -215,12 +215,12 @@ describe "on create" do context "with an exact match" do let(:room) { FactoryGirl.create(:bigbluebutton_room) } - subject { FactoryGirl.build(:space_with_associations, slug: room.param) } + subject { FactoryGirl.build(:space_with_associations, slug: room.slug) } include_examples "invalid space with slug not unique" end context "uses case-insensitive comparisons" do - let!(:room) { FactoryGirl.create(:bigbluebutton_room, param: "My-Weird-Name") } + let!(:room) { FactoryGirl.create(:bigbluebutton_room, slug: "My-Weird-Name") } subject { FactoryGirl.build(:space_with_associations, slug: "mY-weiRD-NAMe") } include_examples "invalid space with slug not unique" end @@ -231,14 +231,14 @@ let(:subject) { FactoryGirl.create(:space) } let(:other_room) { FactoryGirl.create(:bigbluebutton_room) } before(:each) { - subject.slug = other_room.param + subject.slug = other_room.slug } include_examples "invalid space with slug not unique" end context "uses case-insensitive comparisons" do let(:subject) { FactoryGirl.create(:space) } - let!(:other_room) { FactoryGirl.create(:bigbluebutton_room, param: "My-Weird-Name") } + let!(:other_room) { FactoryGirl.create(:bigbluebutton_room, slug: "My-Weird-Name") } before(:each) { subject.slug = "mY-weiRD-NAMe" } @@ -297,7 +297,7 @@ context "conflicting with a room" do let!(:user) { u = FactoryGirl.create(:user) - u.bigbluebutton_room.update_attributes(param: 'anything') + u.bigbluebutton_room.update_attributes(slug: 'anything') u } let(:space) { @@ -1062,8 +1062,8 @@ space.bigbluebutton_room.owner.should be(space) end - it "with param and name equal the space's slug" do - space.bigbluebutton_room.param.should eql(space.slug) + it "with slug and name equal the space's slug" do + space.bigbluebutton_room.slug.should eql(space.slug) space.bigbluebutton_room.name.should eql(space.name) end @@ -1093,7 +1093,7 @@ let(:space) { FactoryGirl.create(:space_with_associations, :name => "Old Name", :public => true) } before(:each) { space.update_attributes(:name => "New Name", :public => false) } - it { space.bigbluebutton_room.param.should be(space.slug) } + it { space.bigbluebutton_room.slug.should be(space.slug) } it { space.bigbluebutton_room.name.should be(space.name) } it { space.bigbluebutton_room.private.should be(false) } end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index a7bf36e8f..8fb3e2012 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -235,8 +235,8 @@ user.bigbluebutton_room.owner.should eq(user) end - it "has param and name equal the user's username" do - user.bigbluebutton_room.param.should eql(user.username) + it "has slug and name equal the user's username" do + user.bigbluebutton_room.slug.should eql(user.username) user.bigbluebutton_room.name.should eql(user.name) end @@ -424,12 +424,12 @@ describe "on create" do context "with an exact match" do let(:room) { FactoryGirl.create(:bigbluebutton_room) } - subject { FactoryGirl.build(:user, username: room.param) } + subject { FactoryGirl.build(:user, username: room.slug) } include_examples "invalid user with username not unique" end context "uses case-insensitive comparisons" do - let!(:room) { FactoryGirl.create(:bigbluebutton_room, param: "My-Weird-Name") } + let!(:room) { FactoryGirl.create(:bigbluebutton_room, slug: "My-Weird-Name") } subject { FactoryGirl.build(:user, username: "mY-weiRD-NAMe") } include_examples "invalid user with username not unique" end @@ -440,14 +440,14 @@ let(:subject) { FactoryGirl.create(:user) } let(:other_room) { FactoryGirl.create(:bigbluebutton_room) } before(:each) { - subject.username = other_room.param + subject.username = other_room.slug } include_examples "invalid user with username not unique" end context "uses case-insensitive comparisons" do let(:subject) { FactoryGirl.create(:user) } - let!(:other_room) { FactoryGirl.create(:bigbluebutton_room, param: "My-Weird-Name") } + let!(:other_room) { FactoryGirl.create(:bigbluebutton_room, slug: "My-Weird-Name") } before(:each) { subject.username = "mY-weiRD-NAMe" } @@ -498,7 +498,7 @@ context "conflicting with a room" do let!(:another_user) { u = FactoryGirl.create(:user) - u.bigbluebutton_room.update_attributes(param: 'anything') + u.bigbluebutton_room.update_attributes(slug: 'anything') u } let(:user) { @@ -523,7 +523,7 @@ context "updates the webconf room" do let(:user) { FactoryGirl.create(:user, :username => "old-user-name") } before(:each) { user.update_attributes(:username => "new-user-name") } - it { user.bigbluebutton_room.param.should_not be(user.username) } + it { user.bigbluebutton_room.slug.should_not be(user.username) } it { user.bigbluebutton_room.name.should_not be(user.username) } end end diff --git a/spec/validators/room_param_uniqueness_validator_spec.rb b/spec/validators/room_slug_uniqueness_validator_spec.rb similarity index 89% rename from spec/validators/room_param_uniqueness_validator_spec.rb rename to spec/validators/room_slug_uniqueness_validator_spec.rb index 01533da84..6cbcdd2d7 100644 --- a/spec/validators/room_param_uniqueness_validator_spec.rb +++ b/spec/validators/room_slug_uniqueness_validator_spec.rb @@ -7,18 +7,18 @@ require "spec_helper" -describe RoomParamUniquenessValidator do - let!(:target) { RoomParamUniquenessValidator.new({ attributes: { any: 1 } }) } +describe RoomSlugUniquenessValidator do + let!(:target) { RoomSlugUniquenessValidator.new({ attributes: { any: 1 } }) } let(:message) { "has already been taken" } context "accepts a custom message in the options" do let(:user) { FactoryGirl.create(:user) } let(:room) { FactoryGirl.create(:bigbluebutton_room) } let(:custom_error) { "my custom error message" } - let(:target) { RoomParamUniquenessValidator.new({ attributes: { any: 1 }, message: custom_error }) } + let(:target) { RoomSlugUniquenessValidator.new({ attributes: { any: 1 }, message: custom_error }) } it { - target.validate_each(user, "my_attribute", room.param) + target.validate_each(user, "my_attribute", room.slug) user.errors.should have_key(:my_attribute) user.errors[:my_attribute].should include(custom_error) } @@ -49,7 +49,7 @@ context "when there's a conflict" do let!(:room) { FactoryGirl.create(:bigbluebutton_room) } it { - target.validate_each(user, "username", room.param) + target.validate_each(user, "username", room.slug) user.errors.should have_key(:username) user.errors.messages[:username].should include(message) } @@ -66,7 +66,7 @@ end it "ignores the user's own room" do - target.validate_each(user, "username", user.bigbluebutton_room.param) + target.validate_each(user, "username", user.bigbluebutton_room.slug) user.errors.should be_empty end end @@ -96,7 +96,7 @@ context "when there's a conflict" do let!(:room) { FactoryGirl.create(:bigbluebutton_room) } it { - target.validate_each(space, "slug", room.param) + target.validate_each(space, "slug", room.slug) space.errors.should have_key(:slug) space.errors.messages[:slug].should include(message) } @@ -113,7 +113,7 @@ end it "ignores the space's own room" do - target.validate_each(space, "slug", space.bigbluebutton_room.param) + target.validate_each(space, "slug", space.bigbluebutton_room.slug) space.errors.should be_empty end end From 121e6c64928b0f71125b7c99e679585664e0221c Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Tue, 14 Nov 2017 14:41:18 -0200 Subject: [PATCH 35/75] Se User#slug instead of #username, but keep #username as alias Just made it by default as #slug in the db database, the same way is done for all other models now. We'll still use #username most of the time, though. --- app/models/user.rb | 15 +- .../identifier_uniqueness_validator.rb | 6 +- .../20171114154853_rename_username_to_slug.rb | 5 + db/schema.rb | 4 +- lib/mconf/identifier.rb | 2 +- spec/lib/mconf/identifier_spec.rb | 16 +- spec/models/user_spec.rb | 387 +++++++++--------- .../identifier_uniqueness_validator_spec.rb | 54 +-- .../room_slug_uniqueness_validator_spec.rb | 20 +- 9 files changed, 257 insertions(+), 252 deletions(-) create mode 100644 db/migrate/20171114154853_rename_username_to_slug.rb diff --git a/app/models/user.rb b/app/models/user.rb index bec6ff044..3f0b5c418 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -14,8 +14,6 @@ class User < ActiveRecord::Base include Mconf::ApprovalModule include Mconf::DisableModule - # TODO: block :username from being modified after registration - ## Devise setup # Other available devise modules are: # :token_authenticatable, :lockable, :timeoutable and :omniauthable @@ -29,13 +27,15 @@ def self.find_first_by_auth_conditions(warden_conditions) conditions = warden_conditions.dup if login = conditions.delete(:login) hash = { :value => login.downcase } - where_clause = ["lower(username) = :value OR lower(email) = :value", hash] + where_clause = ["lower(slug) = :value OR lower(email) = :value", hash] where(conditions).where(where_clause).first else where(conditions).first end end + alias_attribute :username, :slug + validates :username, presence: true, format: /\A[A-Za-z0-9\-_]*\z/, @@ -45,7 +45,7 @@ def self.find_first_by_auth_conditions(warden_conditions) room_slug_uniqueness: true extend FriendlyId - friendly_id :slug_candidates, use: :slugged, slug_column: :username + friendly_id :slug_candidates, use: :slugged, slug_column: :slug def slug_candidates [ Mconf::Identifier.unique_mconf_id(full_name) ] end @@ -96,14 +96,14 @@ def slug_candidates query_orders = [] words.reject(&:blank?).each do |word| - str = "profiles.full_name LIKE ? OR users.username LIKE ?" + str = "profiles.full_name LIKE ? OR users.slug LIKE ?" str += " OR users.email LIKE ?" if include_private query_strs << str query_params += ["%#{word}%", "%#{word}%"] query_params += ["%#{word}%"] if include_private query_orders += [ "CASE WHEN profiles.full_name LIKE '%#{word}%' THEN 1 ELSE 0 END + \ - CASE WHEN users.username LIKE '%#{word}%' THEN 1 ELSE 0 END + \ + CASE WHEN users.slug LIKE '%#{word}%' THEN 1 ELSE 0 END + \ CASE WHEN users.email LIKE '%#{word}%' THEN 1 ELSE 0 END" ] end @@ -158,7 +158,6 @@ def slug_candidates alias_attribute :name, :full_name alias_attribute :title, :full_name - alias_attribute :slug, :username delegate :full_name, :first_name, :organization, :city, :country, :logo, :logo_image, :logo_image_url, @@ -214,7 +213,7 @@ def require_approval? def create_webconf_room params = { owner: self, - slug: self.username, + slug: self.slug, name: self.name, logout_url: "/feedback/webconf/", moderator_key: SecureRandom.hex(8), diff --git a/app/validators/identifier_uniqueness_validator.rb b/app/validators/identifier_uniqueness_validator.rb index 0e61519cb..ba2cbfab6 100644 --- a/app/validators/identifier_uniqueness_validator.rb +++ b/app/validators/identifier_uniqueness_validator.rb @@ -6,8 +6,8 @@ # 3 or later. See the LICENSE file. # Validates the value of an attribute against the identifiers in the application: -# * Space#slugs -# * User#username. +# * Space#slug +# * User#slug # Invalidates the record if the value is already taken. # Uses case-insensitive comparisons. class IdentifierUniquenessValidator < ActiveModel::EachValidator @@ -18,7 +18,7 @@ def validate_each(record, attribute, value) spaces = spaces.where("id != ?", record.id) end - users = User.with_disabled.where("lower(username) = ?", value.downcase) + users = User.with_disabled.where("lower(slug) = ?", value.downcase) if record.is_a?(User) && !record.new_record? users = users.where("id != ?", record.id) end diff --git a/db/migrate/20171114154853_rename_username_to_slug.rb b/db/migrate/20171114154853_rename_username_to_slug.rb new file mode 100644 index 000000000..0c0b02cf5 --- /dev/null +++ b/db/migrate/20171114154853_rename_username_to_slug.rb @@ -0,0 +1,5 @@ +class RenameUsernameToSlug < ActiveRecord::Migration + def change + rename_column :users, :username, :slug + end +end diff --git a/db/schema.rb b/db/schema.rb index e05db77eb..48735f1f2 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171114142537) do +ActiveRecord::Schema.define(version: 20171114154853) do create_table "activities", force: true do |t| t.integer "trackable_id" @@ -490,7 +490,7 @@ add_index "tags", ["name"], name: "index_tags_on_name", unique: true, using: :btree create_table "users", force: true do |t| - t.string "username" + t.string "slug" t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "password_salt", limit: 40 diff --git a/lib/mconf/identifier.rb b/lib/mconf/identifier.rb index 80fab9422..ffc7b38fa 100644 --- a/lib/mconf/identifier.rb +++ b/lib/mconf/identifier.rb @@ -25,7 +25,7 @@ def self.unique_mconf_id(base_value) loop do # have to consider both users and spaces, including disabled ones - users = User.with_disabled.where(username: new_value).count + users = User.with_disabled.where(slug: new_value).count spaces = Space.with_disabled.where(slug: new_value).count rooms = BigbluebuttonRoom.where(slug: new_value).count diff --git a/spec/lib/mconf/identifier_spec.rb b/spec/lib/mconf/identifier_spec.rb index a7f4b6bfd..41d7941e6 100644 --- a/spec/lib/mconf/identifier_spec.rb +++ b/spec/lib/mconf/identifier_spec.rb @@ -20,8 +20,8 @@ context "makes sure the id is unique among users" do before { - FactoryGirl.create(:user, username: "my-name") - FactoryGirl.create(:user, username: "my-name-2") + FactoryGirl.create(:user, slug: "my-name") + FactoryGirl.create(:user, slug: "my-name-2") } it { target.unique_mconf_id("My Name").should eql("my-name-3") } end @@ -44,7 +44,7 @@ context "makes sure the id is unique among users, spaces and rooms" do before { - FactoryGirl.create(:user, username: "my-name") + FactoryGirl.create(:user, slug: "my-name") FactoryGirl.create(:space, slug: "my-name-2") FactoryGirl.create(:bigbluebutton_room, slug: "my-name-3") } @@ -61,17 +61,17 @@ context "ignores case when checking if it's unique" do before { - FactoryGirl.create(:user, username: "my-namE") - FactoryGirl.create(:user, username: "MY-Name-2") + FactoryGirl.create(:user, slug: "my-namE") + FactoryGirl.create(:user, slug: "MY-Name-2") } it { target.unique_mconf_id("My Name").should eql("my-name-3") } end context "considers disabled and unapproved users and spaces" do before { - FactoryGirl.create(:user, username: "my-name") - FactoryGirl.create(:user, username: "my-name-2", disabled: true) - FactoryGirl.create(:user, username: "my-name-3", approved: false) + FactoryGirl.create(:user, slug: "my-name") + FactoryGirl.create(:user, slug: "my-name-2", disabled: true) + FactoryGirl.create(:user, slug: "my-name-3", approved: false) FactoryGirl.create(:space, slug: "my-name-4") FactoryGirl.create(:space, slug: "my-name-5", disabled: true) FactoryGirl.create(:space, slug: "my-name-6", approved: false) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 8fb3e2012..e79ffaf54 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -275,248 +275,249 @@ it { should allow_value("a").for(:username) } it { should allow_value("_").for(:username) } it { should allow_value("abc-123_d5").for(:username) } + end - shared_examples "invalid user with username not unique" do - it { subject.should_not be_valid } - it { - subject.save.should be(false) - subject.errors.should have_key(:username) - subject.errors.messages[:username].should include(message) - } - end + %w[username slug].each do |method_name| + describe "##{method_name}" do + shared_examples "invalid user with username not unique" do + it { subject.should_not be_valid } + it { + subject.save.should be(false) + subject.errors.should have_key(:username) + subject.errors.messages[:username].should include(message) + } + end - describe "blocks reserved words" do - let(:message) { "has already been taken" } - file = File.join(::Rails.root, "config", "reserved_words.yml") - words = YAML.load_file(file)['words'] + describe "blocks reserved words" do + let(:message) { "has already been taken" } + file = File.join(::Rails.root, "config", "reserved_words.yml") + words = YAML.load_file(file)['words'] + + describe "on create" do + words.each do |word| + context "word: #{word}" do + subject { FactoryGirl.build(:user, "#{method_name}": word) } + include_examples "invalid user with username not unique" + end + end + end - describe "on create" do - words.each do |word| - context "word: #{word}" do - subject { FactoryGirl.build(:user, username: word) } - include_examples "invalid user with username not unique" + describe "on update" do + words.each do |word| + context "word: #{word}" do + let(:subject) { FactoryGirl.create(:user) } + before(:each) { + subject.send("#{method_name}=", word) + } + include_examples "invalid user with username not unique" + end end end end - describe "on update" do - words.each do |word| - context "word: #{word}" do + describe "validates uniqueness against Space#slug" do + let(:message) { "has already been taken" } + + describe "on create" do + context "with an enabled space" do + let(:space) { FactoryGirl.create(:space) } + subject { FactoryGirl.build(:user, "#{method_name}": space.slug) } + include_examples "invalid user with username not unique" + end + + context "with a disabled space" do + let(:disabled_space) { FactoryGirl.create(:space, disabled: true) } + subject { FactoryGirl.build(:user, "#{method_name}": disabled_space.slug) } + include_examples "invalid user with username not unique" + end + + context "uses case-insensitive comparisons" do + let!(:space) { FactoryGirl.create(:space, slug: "My-Weird-Name") } + subject { FactoryGirl.build(:user, "#{method_name}": "mY-weiRD-NAMe") } + include_examples "invalid user with username not unique" + end + end + + describe "on update" do + context "with an enabled space" do + let(:subject) { FactoryGirl.create(:user) } + let(:space) { FactoryGirl.create(:space) } + before(:each) { + subject.send("#{method_name}=", space.slug) + } + include_examples "invalid user with username not unique" + end + + context "with a disabled space" do + let(:subject) { FactoryGirl.create(:user) } + let(:disabled_space) { FactoryGirl.create(:space, :disabled => true) } + before(:each) { + subject.send("#{method_name}=", disabled_space.slug) + } + include_examples "invalid user with username not unique" + end + + context "uses case-insensitive comparisons" do let(:subject) { FactoryGirl.create(:user) } + let!(:space) { FactoryGirl.create(:space, slug: "My-Weird-Name") } before(:each) { - subject.username = word + subject.send("#{method_name}=", "mY-weiRD-NAMe") } include_examples "invalid user with username not unique" end end end - end - describe "validates uniqueness against Space#slug" do - let(:message) { "has already been taken" } + describe "validates uniqueness against User##{method_name}" do + let(:message) { "has already been taken" } - describe "on create" do - context "with an enabled space" do - let(:space) { FactoryGirl.create(:space) } - subject { FactoryGirl.build(:user, username: space.slug) } - include_examples "invalid user with username not unique" - end + describe "on create" do + context "with an enabled user" do + let(:user) { FactoryGirl.create(:user) } + subject { FactoryGirl.build(:user, "#{method_name}": user.username) } + include_examples "invalid user with username not unique" + end - context "with a disabled space" do - let(:disabled_space) { FactoryGirl.create(:space, disabled: true) } - subject { FactoryGirl.build(:user, username: disabled_space.slug) } - include_examples "invalid user with username not unique" - end + context "with a disabled user" do + let(:disabled_user) { FactoryGirl.create(:user, disabled: true) } + subject { FactoryGirl.build(:user, "#{method_name}": disabled_user.username) } + include_examples "invalid user with username not unique" + end - context "uses case-insensitive comparisons" do - let!(:space) { FactoryGirl.create(:space, slug: "My-Weird-Name") } - subject { FactoryGirl.build(:user, username: "mY-weiRD-NAMe") } - include_examples "invalid user with username not unique" + context "uses case-insensitive comparisons" do + let!(:user) { FactoryGirl.create(:user, "#{method_name}": "My-Weird-Name") } + subject { FactoryGirl.build(:user, "#{method_name}": "mY-weiRD-NAMe") } + include_examples "invalid user with username not unique" + end end - end - describe "on update" do - context "with an enabled space" do - let(:subject) { FactoryGirl.create(:user) } - let(:space) { FactoryGirl.create(:space) } - before(:each) { - subject.username = space.slug - } - include_examples "invalid user with username not unique" - end + describe "on update" do + context "with an enabled space" do + let(:subject) { FactoryGirl.create(:user) } + let(:other_user) { FactoryGirl.create(:user) } + before(:each) { + subject.send("#{method_name}=", other_user.username) + } + include_examples "invalid user with username not unique" + end - context "with a disabled space" do - let(:subject) { FactoryGirl.create(:user) } - let(:disabled_space) { FactoryGirl.create(:space, :disabled => true) } - before(:each) { - subject.username = disabled_space.slug - } - include_examples "invalid user with username not unique" - end + context "with a disabled space" do + let(:subject) { FactoryGirl.create(:user) } + let(:disabled_user) { FactoryGirl.create(:user, :disabled => true) } + before(:each) { + subject.send("#{method_name}=", disabled_user.username) + } + include_examples "invalid user with username not unique" + end - context "uses case-insensitive comparisons" do - let(:subject) { FactoryGirl.create(:user) } - let!(:space) { FactoryGirl.create(:space, slug: "My-Weird-Name") } - before(:each) { - subject.username = "mY-weiRD-NAMe" - } - include_examples "invalid user with username not unique" + context "uses case-insensitive comparisons" do + let(:subject) { FactoryGirl.create(:user) } + let!(:other_user) { FactoryGirl.create(:user, username: "My-Weird-Name") } + before(:each) { + subject.send("#{method_name}=", "mY-weiRD-NAMe") + } + include_examples "invalid user with username not unique" + end end end - end - describe "validates uniqueness against User#username" do - let(:message) { "has already been taken" } + context "validates against webconf room params" do + let(:message) { "has already been taken" } - describe "on create" do - context "with an enabled user" do - let(:user) { FactoryGirl.create(:user) } - subject { FactoryGirl.build(:user, username: user.username) } - include_examples "invalid user with username not unique" - end + describe "on create" do + context "with an exact match" do + let(:room) { FactoryGirl.create(:bigbluebutton_room) } + subject { FactoryGirl.build(:user, "#{method_name}": room.slug) } + include_examples "invalid user with username not unique" + end - context "with a disabled user" do - let(:disabled_user) { FactoryGirl.create(:user, disabled: true) } - subject { FactoryGirl.build(:user, username: disabled_user.username) } - include_examples "invalid user with username not unique" + context "uses case-insensitive comparisons" do + let!(:room) { FactoryGirl.create(:bigbluebutton_room, slug: "My-Weird-Name") } + subject { FactoryGirl.build(:user, "#{method_name}": "mY-weiRD-NAMe") } + include_examples "invalid user with username not unique" + end end - context "uses case-insensitive comparisons" do - let!(:user) { FactoryGirl.create(:user, username: "My-Weird-Name") } - subject { FactoryGirl.build(:user, username: "mY-weiRD-NAMe") } - include_examples "invalid user with username not unique" + describe "on update" do + context "with an exact match" do + let(:subject) { FactoryGirl.create(:user) } + let(:other_room) { FactoryGirl.create(:bigbluebutton_room) } + before(:each) { + subject.send("#{method_name}=", other_room.slug) + } + include_examples "invalid user with username not unique" + end + + context "uses case-insensitive comparisons" do + let(:subject) { FactoryGirl.create(:user) } + let!(:other_room) { FactoryGirl.create(:bigbluebutton_room, slug: "My-Weird-Name") } + before(:each) { + subject.send("#{method_name}=", "mY-weiRD-NAMe") + } + include_examples "invalid user with username not unique" + end + + context "doesn't validate against its own room" do + let!(:user) { FactoryGirl.create(:user) } + it { user.update_attributes("#{method_name}": user.send(method_name)).should be(true) } + end end end - describe "on update" do - context "with an enabled space" do - let(:subject) { FactoryGirl.create(:user) } - let(:other_user) { FactoryGirl.create(:user) } - before(:each) { - subject.username = other_user.username - } - include_examples "invalid user with username not unique" - end + describe "generates a unique username when creating without setting a username" do - context "with a disabled space" do - let(:subject) { FactoryGirl.create(:user) } - let(:disabled_user) { FactoryGirl.create(:user, :disabled => true) } - before(:each) { - subject.username = disabled_user.username + context "conflicting with another user" do + let(:another_user) { FactoryGirl.create(:user, "#{method_name}": nil) } + let(:user) { + FactoryGirl.create(:user, "#{method_name}": nil, profile_attributes: { full_name: another_user.name }) } - include_examples "invalid user with username not unique" + it { user.send(method_name).should eql(another_user.username + "-2") } end - context "uses case-insensitive comparisons" do - let(:subject) { FactoryGirl.create(:user) } - let!(:other_user) { FactoryGirl.create(:user, username: "My-Weird-Name") } - before(:each) { - subject.username = "mY-weiRD-NAMe" + context "conflicting with a disabled user" do + let(:another_user) { FactoryGirl.create(:user, "#{method_name}": nil, disabled: true) } + let(:user) { + FactoryGirl.create(:user, "#{method_name}": nil, profile_attributes: { full_name: another_user.name }) } - include_examples "invalid user with username not unique" + it { user.send(method_name).should eql(another_user.send(method_name) + "-2") } end - end - end - - context "validates against webconf room params" do - let(:message) { "has already been taken" } - describe "on create" do - context "with an exact match" do - let(:room) { FactoryGirl.create(:bigbluebutton_room) } - subject { FactoryGirl.build(:user, username: room.slug) } - include_examples "invalid user with username not unique" - end - - context "uses case-insensitive comparisons" do - let!(:room) { FactoryGirl.create(:bigbluebutton_room, slug: "My-Weird-Name") } - subject { FactoryGirl.build(:user, username: "mY-weiRD-NAMe") } - include_examples "invalid user with username not unique" + context "conflicting with a space" do + let(:space) { FactoryGirl.create(:space, slug: nil) } + let(:user) { + FactoryGirl.create(:user, "#{method_name}": nil, profile_attributes: { full_name: space.name }) + } + it { user.send(method_name).should eql(space.slug + "-2") } end - end - describe "on update" do - context "with an exact match" do - let(:subject) { FactoryGirl.create(:user) } - let(:other_room) { FactoryGirl.create(:bigbluebutton_room) } - before(:each) { - subject.username = other_room.slug + context "conflicting with a disabled space" do + let(:space) { FactoryGirl.create(:space, slug: nil, disabled: false) } + let(:user) { + FactoryGirl.create(:user, "#{method_name}": nil, profile_attributes: { full_name: space.name }) } - include_examples "invalid user with username not unique" + it { user.send(method_name).should eql(space.slug + "-2") } end - context "uses case-insensitive comparisons" do - let(:subject) { FactoryGirl.create(:user) } - let!(:other_room) { FactoryGirl.create(:bigbluebutton_room, slug: "My-Weird-Name") } - before(:each) { - subject.username = "mY-weiRD-NAMe" + context "conflicting with a room" do + let!(:another_user) { + u = FactoryGirl.create(:user) + u.bigbluebutton_room.update_attributes(slug: 'anything') + u + } + let(:user) { + FactoryGirl.create(:user, "#{method_name}": nil, profile_attributes: { full_name: 'anything' }) } - include_examples "invalid user with username not unique" + it { user.send(method_name).should eql("anything-2") } end - context "doesn't validate against its own room" do - let!(:user) { FactoryGirl.create(:user) } - it { user.update_attributes(username: user.username).should be(true) } + context "conflicting with a blacklisted word" do + let(:user) { + FactoryGirl.create(:user, "#{method_name}": nil, profile_attributes: { full_name: 'Spaces' }) + } + it { user.send(method_name).should eql("spaces-2") } end end end - - describe "generates a unique username when creating without setting a username" do - - context "conflicting with another user" do - let(:another_user) { FactoryGirl.create(:user, username: nil) } - let(:user) { - FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: another_user.name }) - } - it { user.username.should eql(another_user.username + "-2") } - end - - context "conflicting with a disabled user" do - let(:another_user) { FactoryGirl.create(:user, username: nil, disabled: true) } - let(:user) { - FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: another_user.name }) - } - it { user.username.should eql(another_user.username + "-2") } - end - - context "conflicting with a space" do - let(:space) { FactoryGirl.create(:space, slug: nil) } - let(:user) { - FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: space.name }) - } - it { user.username.should eql(space.slug + "-2") } - end - - context "conflicting with a disabled space" do - let(:space) { FactoryGirl.create(:space, slug: nil, disabled: false) } - let(:user) { - FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: space.name }) - } - it { user.username.should eql(space.slug + "-2") } - end - - context "conflicting with a room" do - let!(:another_user) { - u = FactoryGirl.create(:user) - u.bigbluebutton_room.update_attributes(slug: 'anything') - u - } - let(:user) { - FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: 'anything' }) - } - it { user.username.should eql("anything-2") } - end - - context "conflicting with a blacklisted word" do - let(:user) { - FactoryGirl.create(:user, username: nil, profile_attributes: { full_name: 'Spaces' }) - } - it { user.username.should eql("spaces-2") } - end - - ## TODO CONFLICTING ROOM ONLY - - end end describe "on update" do @@ -899,7 +900,7 @@ let!(:user2) { FactoryGirl.create(:user, can_record: true, username: "def") } let!(:user3) { FactoryGirl.create(:user, can_record: false, username: "abc-2") } let!(:user4) { FactoryGirl.create(:user, can_record: false, username: "def-2") } - subject { User.where(can_record: true).with_disabled.where('users.username LIKE ?', '%abc%') } + subject { User.where(can_record: true).with_disabled.where('users.slug LIKE ?', '%abc%') } it { subject.count.should eq(1) } end end diff --git a/spec/validators/identifier_uniqueness_validator_spec.rb b/spec/validators/identifier_uniqueness_validator_spec.rb index 6651d7e46..e84caec5f 100644 --- a/spec/validators/identifier_uniqueness_validator_spec.rb +++ b/spec/validators/identifier_uniqueness_validator_spec.rb @@ -18,7 +18,7 @@ let(:target) { IdentifierUniquenessValidator.new({ attributes: { any: 1 }, message: custom_error }) } it { - target.validate_each(user, "my_attribute", other_user.username) + target.validate_each(user, "my_attribute", other_user.slug) user.errors.should have_key(:my_attribute) user.errors[:my_attribute].should include(custom_error) } @@ -31,76 +31,76 @@ before { user.valid? } it "when the value is empty" do - target.validate_each(user, "username", "") + target.validate_each(user, "slug", "") user.errors.should be_empty end it "when the value is nil" do - target.validate_each(user, "username", nil) + target.validate_each(user, "slug", nil) user.errors.should be_empty end it "when there's no conflict" do - target.validate_each(user, "username", "new-value") + target.validate_each(user, "slug", "new-value") user.errors.should be_empty end context "when there's a conflict with another user" do let!(:other_user) { FactoryGirl.create(:user) } it { - target.validate_each(user, "username", other_user.username) - user.errors.should have_key(:username) - user.errors.messages[:username].should include(message) + target.validate_each(user, "slug", other_user.slug) + user.errors.should have_key(:slug) + user.errors.messages[:slug].should include(message) } end context "when there's a conflict with a disabled user" do let!(:other_user) { FactoryGirl.create(:user, disabled: true) } it { - target.validate_each(user, "username", other_user.username) - user.errors.should have_key(:username) - user.errors.messages[:username].should include(message) + target.validate_each(user, "slug", other_user.slug) + user.errors.should have_key(:slug) + user.errors.messages[:slug].should include(message) } end context "when there's a conflict with another user ignoring case" do - let!(:other_user) { FactoryGirl.create(:user, username: "ANY-username") } + let!(:other_user) { FactoryGirl.create(:user, slug: "ANY-username") } it { - target.validate_each(user, "username", "any-USERnaME") - user.errors.should have_key(:username) - user.errors.messages[:username].should include(message) + target.validate_each(user, "slug", "any-USERnaME") + user.errors.should have_key(:slug) + user.errors.messages[:slug].should include(message) } end context "when there's a conflict with a space" do let!(:space) { FactoryGirl.create(:space) } it { - target.validate_each(user, "username", space.slug) - user.errors.should have_key(:username) - user.errors.messages[:username].should include(message) + target.validate_each(user, "slug", space.slug) + user.errors.should have_key(:slug) + user.errors.messages[:slug].should include(message) } end context "when there's a conflict with a disabled space" do let!(:space) { FactoryGirl.create(:space, disabled: true) } it { - target.validate_each(user, "username", space.slug) - user.errors.should have_key(:username) - user.errors.messages[:username].should include(message) + target.validate_each(user, "slug", space.slug) + user.errors.should have_key(:slug) + user.errors.messages[:slug].should include(message) } end context "when there's a conflict with a space ignoring case" do let!(:space) { FactoryGirl.create(:space, slug: "ANY-username") } it { - target.validate_each(user, "username", "any-USERnaME") - user.errors.should have_key(:username) - user.errors.messages[:username].should include(message) + target.validate_each(user, "slug", "any-USERnaME") + user.errors.should have_key(:slug) + user.errors.messages[:slug].should include(message) } end it "ignores the user himself" do - target.validate_each(user, "username", user.username) + target.validate_each(user, "slug", user.slug) user.errors.should be_empty end end @@ -156,7 +156,7 @@ context "when there's a conflict with a user" do let!(:user) { FactoryGirl.create(:user) } it { - target.validate_each(space, "slug", user.username) + target.validate_each(space, "slug", user.slug) space.errors.should have_key(:slug) space.errors.messages[:slug].should include(message) } @@ -165,14 +165,14 @@ context "when there's a conflict with a disabled user" do let!(:user) { FactoryGirl.create(:user, disabled: true) } it { - target.validate_each(space, "slug", user.username) + target.validate_each(space, "slug", user.slug) space.errors.should have_key(:slug) space.errors.messages[:slug].should include(message) } end context "when there's a conflict with a user ignoring case" do - let!(:user) { FactoryGirl.create(:user, username: "ANY-username") } + let!(:user) { FactoryGirl.create(:user, slug: "ANY-username") } it { target.validate_each(space, "slug", "any-USERnaME") space.errors.should have_key(:slug) diff --git a/spec/validators/room_slug_uniqueness_validator_spec.rb b/spec/validators/room_slug_uniqueness_validator_spec.rb index 6cbcdd2d7..5323b154a 100644 --- a/spec/validators/room_slug_uniqueness_validator_spec.rb +++ b/spec/validators/room_slug_uniqueness_validator_spec.rb @@ -32,41 +32,41 @@ before { user.valid? } it "when the value is empty" do - target.validate_each(user, "username", "") + target.validate_each(user, "slug", "") user.errors.should be_empty end it "when the value is nil" do - target.validate_each(user, "username", nil) + target.validate_each(user, "slug", nil) user.errors.should be_empty end it "when there's no conflict" do - target.validate_each(user, "username", "new-value") + target.validate_each(user, "slug", "new-value") user.errors.should be_empty end context "when there's a conflict" do let!(:room) { FactoryGirl.create(:bigbluebutton_room) } it { - target.validate_each(user, "username", room.slug) - user.errors.should have_key(:username) - user.errors.messages[:username].should include(message) + target.validate_each(user, "slug", room.slug) + user.errors.should have_key(:slug) + user.errors.messages[:slug].should include(message) } end ['rooms', 'servers', 'recordings', 'playback_types'].each do |word| context "when using the reserved word '#{word}'" do it { - target.validate_each(user, "username", word) - user.errors.should have_key(:username) - user.errors.messages[:username].should include(message) + target.validate_each(user, "slug", word) + user.errors.should have_key(:slug) + user.errors.messages[:slug].should include(message) } end end it "ignores the user's own room" do - target.validate_each(user, "username", user.bigbluebutton_room.slug) + target.validate_each(user, "slug", user.bigbluebutton_room.slug) user.errors.should be_empty end end From 3f68d00790a6684b14810e8b181617affa79d0cc Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Thu, 16 Nov 2017 18:39:39 -0200 Subject: [PATCH 36/75] Auto update the slug of rooms when updating users and spaces --- app/models/profile.rb | 4 +- app/models/space.rb | 12 ++-- app/models/user.rb | 10 ++++ .../identifier_uniqueness_validator.rb | 4 +- spec/models/profile_spec.rb | 60 +++++++++++-------- spec/models/space_spec.rb | 46 ++++++++++++-- spec/models/user_spec.rb | 33 ++++++++-- 7 files changed, 120 insertions(+), 49 deletions(-) diff --git a/app/models/profile.rb b/app/models/profile.rb index d4d63ded6..f04fe39c0 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -26,9 +26,7 @@ def crop_avatar def update_webconf_room if self.full_name_changed? && self.user.bigbluebutton_room if self.full_name_was == self.user.bigbluebutton_room.name - params = { - :name => self.full_name - } + params = { name: self.full_name } self.user.bigbluebutton_room.update_attributes(params) end end diff --git a/app/models/space.rb b/app/models/space.rb index daa99a296..1d1eddeb4 100644 --- a/app/models/space.rb +++ b/app/models/space.rb @@ -362,12 +362,12 @@ def create_webconf_room # Updates the webconf room after updating the space def update_webconf_room if self.bigbluebutton_room - if self.name_was == self.bigbluebutton_room.name - params = { - :name => self.name - } - bigbluebutton_room.update_attributes(params) - end + params = { slug: self.slug } + + # update the name only if it was unchanged + params[:name] = self.name if self.name_was == self.bigbluebutton_room.name + + bigbluebutton_room.update_attributes(params) end end diff --git a/app/models/user.rb b/app/models/user.rb index 3f0b5c418..2fb25c5a5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -78,6 +78,7 @@ def slug_candidates accepts_nested_attributes_for :bigbluebutton_room after_create :create_webconf_room + after_update :update_webconf_room after_create :new_activity_user_created before_destroy :before_disable_and_destroy, prepend: true @@ -210,6 +211,7 @@ def require_approval? Site.current.require_registration_approval end + # Creates the webconf room after creating the user def create_webconf_room params = { owner: self, @@ -222,6 +224,14 @@ def create_webconf_room create_bigbluebutton_room(params) end + # Updates the webconf room after updating the user + def update_webconf_room + if self.bigbluebutton_room + params = { slug: self.slug } + bigbluebutton_room.update_attributes(params) + end + end + # Full location: city + country def location [ self.city.presence, self.country.presence ].compact.join(', ') diff --git a/app/validators/identifier_uniqueness_validator.rb b/app/validators/identifier_uniqueness_validator.rb index ba2cbfab6..1a26d9c7f 100644 --- a/app/validators/identifier_uniqueness_validator.rb +++ b/app/validators/identifier_uniqueness_validator.rb @@ -15,12 +15,12 @@ def validate_each(record, attribute, value) unless value.blank? spaces = Space.with_disabled.where("lower(slug) = ?", value.downcase) if record.is_a?(Space) && !record.new_record? - spaces = spaces.where("id != ?", record.id) + spaces = spaces.where.not(id: record.id) end users = User.with_disabled.where("lower(slug) = ?", value.downcase) if record.is_a?(User) && !record.new_record? - users = users.where("id != ?", record.id) + users = users.where.not(id: record.id) end if spaces.count > 0 || users.count > 0 diff --git a/spec/models/profile_spec.rb b/spec/models/profile_spec.rb index cf9c8d957..4b3a0aca0 100644 --- a/spec/models/profile_spec.rb +++ b/spec/models/profile_spec.rb @@ -22,6 +22,40 @@ it { should respond_to(:crop_img_h) } it { should respond_to(:"crop_img_h=") } + context "after_update" do + let(:user) { FactoryGirl.create(:user) } + let(:profile) { user.profile } + + it("calls #update_webconf_room") { + profile.should_receive(:update_webconf_room) + profile.update_attributes(full_name: "New Name") + } + end + + describe "#update_webconf_room" do + let(:user) { FactoryGirl.create(:user) } + let(:profile) { user.profile } + + context "updates the name" do + before(:each) { + profile.update_attributes(full_name: "Old Name") + profile.update_attributes(full_name: "New Name") + } + it { profile.full_name.should eql("New Name") } + it { user.bigbluebutton_room.name.should eql("New Name") } + end + + context "doesn't update the name if the name was already changed directly before" do + before(:each) { + profile.update_attributes(full_name: "Old Name") + user.bigbluebutton_room.update_attributes(name: "Custom Room Name") + profile.update_attributes(full_name: "New Name") + } + it { profile.full_name.should eql("New Name") } + it { user.bigbluebutton_room.name.should eql("Custom Room Name") } + end + end + describe "#linkable_url" do let(:profile) { FactoryGirl.create(:profile) } @@ -85,30 +119,4 @@ it { FactoryGirl.build(:profile, url: "lala@gmail.com").valid_url?.should be(false) } it { FactoryGirl.build(:profile, url: "https://mconf.org").valid_url?.should be(true) } end - - context "after_update" do - let(:user) { FactoryGirl.create(:user) } - let(:profile) { user.profile } - - context "updates the name of the user's web conference room if both were equal" do - before(:each) { - profile.update_attributes(full_name: "name before") - profile.user.bigbluebutton_room.update_attribute(:name, "name before") - profile.update_attributes(full_name: "name after") - } - - it { profile.user.bigbluebutton_room.name.should eq("name after") } - end - - context "does not update the name of the user's web conference room if both were different" do - before(:each) { - profile.update_attributes(full_name: "name before") - profile.user.bigbluebutton_room.update_attribute(:name, "other name") - profile.update_attributes(full_name: "name after") - } - - it { profile.user.bigbluebutton_room.name.should eq("other name") } - end - end - end diff --git a/spec/models/space_spec.rb b/spec/models/space_spec.rb index 0a67b69d2..df999f540 100644 --- a/spec/models/space_spec.rb +++ b/spec/models/space_spec.rb @@ -367,6 +367,15 @@ it { Space.unscoped.should include(@s3) } end + context "on update" do + let(:space) { FactoryGirl.create(:space) } + + it("calls #update_webconf_room") { + space.should_receive(:update_webconf_room) + space.update_attributes(slug: "new-slug") + } + end + describe ".public_spaces" do before { @public1 = FactoryGirl.create(:public_space) @@ -1089,13 +1098,38 @@ describe "#update_webconf_room" do let(:space) { FactoryGirl.create(:space_with_associations) } - context "updates the webconf room" do - let(:space) { FactoryGirl.create(:space_with_associations, :name => "Old Name", :public => true) } - before(:each) { space.update_attributes(:name => "New Name", :public => false) } + context "updates the name" do + let(:space) { FactoryGirl.create(:space_with_associations, name: "Old Name") } + before(:each) { space.update_attributes(name: "New Name") } + it { space.name.should eql("New Name") } + it { space.bigbluebutton_room.name.should eql("New Name") } + end - it { space.bigbluebutton_room.slug.should be(space.slug) } - it { space.bigbluebutton_room.name.should be(space.name) } - it { space.bigbluebutton_room.private.should be(false) } + context "doesn't update the name if the name was already changed directly before" do + let(:space) { FactoryGirl.create(:space_with_associations, name: "Old Name") } + before(:each) { + space.bigbluebutton_room.update_attributes(name: "Custom Room Name") + space.update_attributes(name: "New Name") + } + it { space.name.should eql("New Name") } + it { space.bigbluebutton_room.name.should eql("Custom Room Name") } + end + + context "updates the slug" do + let(:space) { FactoryGirl.create(:space_with_associations, slug: "old-slug") } + before(:each) { space.update_attributes(slug: "new-slug") } + it { space.slug.should eql("new-slug") } + it { space.bigbluebutton_room.slug.should eql("new-slug") } + end + + context "updates the slug even if it was already changed directly before" do + let(:space) { FactoryGirl.create(:space_with_associations, slug: "old-slug") } + before(:each) { + space.bigbluebutton_room.update_attributes(slug: "custom-slug") + space.update_attributes(slug: "new-slug") + } + it { space.slug.should eql("new-slug") } + it { space.bigbluebutton_room.slug.should eql("new-slug") } end # Space visibility is not linked to webconf visibility anymore diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index e79ffaf54..767540159 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -521,12 +521,12 @@ end describe "on update" do - context "updates the webconf room" do - let(:user) { FactoryGirl.create(:user, :username => "old-user-name") } - before(:each) { user.update_attributes(:username => "new-user-name") } - it { user.bigbluebutton_room.slug.should_not be(user.username) } - it { user.bigbluebutton_room.name.should_not be(user.username) } - end + let(:user) { FactoryGirl.create(:user) } + + it("calls #update_webconf_room") { + user.should_receive(:update_webconf_room) + user.update_attributes(slug: "new-slug") + } end describe "on create" do @@ -1255,6 +1255,27 @@ end end + describe "#update_webconf_room" do + let(:user) { FactoryGirl.create(:user) } + + context "updates the slug" do + let(:user) { FactoryGirl.create(:user, slug: "old-slug") } + before(:each) { user.update_attributes(slug: "new-slug") } + it { user.slug.should eql("new-slug") } + it { user.bigbluebutton_room.slug.should eql("new-slug") } + end + + context "updates the slug even if it was already changed directly before" do + let(:user) { FactoryGirl.create(:user, slug: "old-slug") } + before(:each) { + user.bigbluebutton_room.update_attributes(slug: "custom-slug") + user.update_attributes(slug: "new-slug") + } + it { user.slug.should eql("new-slug") } + it { user.bigbluebutton_room.slug.should eql("new-slug") } + end + end + describe "#location" do context "returns the city + country" do let(:user) { FactoryGirl.create(:user) } From 2b7681bec8c885680d195568c0b764e51531bb13 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 17 Nov 2017 13:33:37 -0200 Subject: [PATCH 37/75] Clean Site#ldap_filter when setting up the test LDAP server --- spec/support/mconf_ldap_server.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/support/mconf_ldap_server.rb b/spec/support/mconf_ldap_server.rb index dff6c9889..620608c1f 100644 --- a/spec/support/mconf_ldap_server.rb +++ b/spec/support/mconf_ldap_server.rb @@ -56,7 +56,8 @@ def self.default_ldap_configs ldap_user_treebase: "ou=USERS,dc=example,dc=com", ldap_username_field: 'uid', ldap_name_field: 'cn', - ldap_email_field: 'mail' + ldap_email_field: 'mail', + ldap_filter: '' } end From 2f3a338ddfa6037f397e3467b327e49cbeb75c4b Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 17 Nov 2017 14:42:31 -0200 Subject: [PATCH 38/75] Recreate db/schema, mistakenly changed by 7ac1e81 --- db/schema.rb | 63 ++++++++++++++++++---------------------------------- 1 file changed, 22 insertions(+), 41 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index 48735f1f2..10e6047e2 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -22,8 +22,8 @@ t.text "parameters" t.integer "recipient_id" t.string "recipient_type" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "notified" end @@ -74,8 +74,8 @@ t.string "name" t.boolean "running", default: false t.boolean "recorded", default: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.integer "creator_id" t.string "creator_name" t.string "server_url" @@ -137,8 +137,8 @@ create_table "bigbluebutton_room_options", force: true do |t| t.integer "room_id" t.string "default_layout" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "presenter_share_only" t.boolean "auto_start_video" t.boolean "auto_start_audio" @@ -227,29 +227,12 @@ t.float "latitude", limit: 24 t.float "longitude", limit: 24 t.string "slug" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" end add_index "events", ["slug"], name: "index_events_on_slug", using: :btree - create_table "institutions", force: true do |t| - t.string "name" - t.string "acronym" - t.string "permalink" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "user_limit" - t.integer "can_record_limit" - t.text "identifier" - t.boolean "force_shib_login", default: false - t.boolean "require_space_approval", default: true - t.boolean "forbid_user_space_creation", default: true - t.integer "recordings_disk_used", limit: 8, default: 0 - t.integer "recordings_disk_quota", limit: 8, default: 0 - t.string "secret" - end - create_table "invitations", force: true do |t| t.integer "target_id" t.string "target_type" @@ -283,8 +266,8 @@ t.integer "role_id" t.string "email" t.boolean "accepted" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.datetime "processed_at" t.string "secret_token" end @@ -293,8 +276,8 @@ t.integer "user_id" t.string "identifier" t.text "data" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "new_account", default: false t.datetime "current_sign_in_at" end @@ -316,8 +299,8 @@ t.string "owner_type" t.integer "event_id" t.string "email" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" end create_table "permissions", force: true do |t| @@ -325,8 +308,8 @@ t.integer "subject_id", null: false t.string "subject_type", null: false t.integer "role_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" end create_table "posts", force: true do |t| @@ -401,11 +384,11 @@ t.string "smtp_domain" t.string "smtp_auth_type" t.string "smtp_sender" + t.string "xmpp_server" t.text "shib_env_variables" t.string "shib_login_field" t.string "timezone", default: "UTC" t.string "external_help" - t.string "xmpp_server" t.boolean "ldap_enabled" t.string "ldap_host" t.integer "ldap_port" @@ -422,19 +405,18 @@ t.string "ldap_filter" t.boolean "shib_always_new_account", default: false t.boolean "local_auth_enabled", default: true - t.string "ldap_principal_name_field" t.string "visible_locales", default: "---\n- en\n- pt-br\n" t.string "room_dial_number_pattern" - t.boolean "require_space_approval", default: false - t.boolean "forbid_user_space_creation", default: false - t.boolean "shib_update_users", default: false - t.string "max_upload_size", default: "15000000" t.boolean "captcha_enabled", default: false t.string "recaptcha_public_key" t.string "recaptcha_private_key" + t.boolean "require_space_approval", default: false + t.boolean "forbid_user_space_creation", default: false + t.string "max_upload_size", default: "15000000" + t.boolean "shib_update_users", default: false t.boolean "use_gravatar", default: false - t.string "smtp_receiver" t.boolean "spaces_enabled", default: true + t.string "smtp_receiver" t.boolean "unauth_access_to_conferences", default: true t.boolean "certificate_login_enabled" t.string "certificate_id_field" @@ -453,7 +435,6 @@ t.boolean "disabled", default: false t.boolean "repository", default: false t.string "logo_image" - t.integer "institution_id" t.boolean "approved", default: false t.datetime "last_activity" t.integer "last_activity_count" From fb9c1634d23d030f8beb7de55e73a0249c091fbe Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 17 Nov 2017 14:43:25 -0200 Subject: [PATCH 39/75] Upgrade bigbluebutton_rails --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 10aa77bac..21cef6fd7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,7 +8,7 @@ GIT GIT remote: https://github.com/mconf/bigbluebutton_rails.git - revision: 2512a3b3104f7878ce1b13d2e4ec417bc8b049dd + revision: f9c6b2f76b95166e7560b79f05467a1a4e600138 branch: master specs: bigbluebutton_rails (2.2.0) From 1f869987bf273844b6cf0f4f27c599d14837a9b7 Mon Sep 17 00:00:00 2001 From: rafafp Date: Tue, 21 Nov 2017 16:01:26 -0200 Subject: [PATCH 40/75] Adding the confirmation without notificiation to social login created users --- app/models/user.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/user.rb b/app/models/user.rb index 2fb25c5a5..7b5aadc49 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -179,6 +179,7 @@ def self.from_omniauth(access_token) profile_attributes: { full_name: data['name'] }, password: Devise.friendly_token[0,20] ) + skip_confirmation! end user From b77383644d74219655e05ca9b1cec89c82c4b2da Mon Sep 17 00:00:00 2001 From: rafafp Date: Tue, 21 Nov 2017 17:25:10 -0200 Subject: [PATCH 41/75] Added spec to check social login user is created and is confirmed --- app/models/user.rb | 2 +- spec/models/user_spec.rb | 42 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 7b5aadc49..4c66c441d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -179,7 +179,7 @@ def self.from_omniauth(access_token) profile_attributes: { full_name: data['name'] }, password: Devise.friendly_token[0,20] ) - skip_confirmation! + user.skip_confirmation! end user diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 767540159..d5a3ff85c 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1103,6 +1103,48 @@ end end + describe "created by social_login" do + context "check that the google login is confirmed" do + let(:omniauth_data) { OmniAuth::AuthHash.new({ + :provider => "google_oauth2", + :uid => "123456789", + :info => { + :name => "Google User", + :email => "googleuser@gmail.com" + }, + :credentials => { + :token => "token", + :refresh_token => "refresh token" + } + } + ) + } + + let!(:google_user) { User.from_omniauth(omniauth_data) } + it { google_user.confirmed?.should eql(true) } + end + + context "check that the facebook login is confirmed" do + let(:omniauth_data) { OmniAuth::AuthHash.new({ + :provider => "facebook", + :uid => "123456789", + :info => { + :name => "Face User", + :email => "faceuser@face.com" + }, + :credentials => { + :token => "token", + :refresh_token => "refresh token" + } + } + ) + } + + let!(:facebook_user) { User.from_omniauth(omniauth_data) } + it { facebook_user.confirmed?.should eql(true) } + end + end + describe "#local_auth?" do it "false if has LDAP auth" it "false if has shibboleth auth" From 18a20b47d394e1b79122ae2923488d9881ceae3f Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 24 Nov 2017 15:44:24 -0200 Subject: [PATCH 42/75] Improve tests of the RoomSlug validator --- .../room_slug_uniqueness_validator_spec.rb | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/spec/validators/room_slug_uniqueness_validator_spec.rb b/spec/validators/room_slug_uniqueness_validator_spec.rb index 5323b154a..0a68f7977 100644 --- a/spec/validators/room_slug_uniqueness_validator_spec.rb +++ b/spec/validators/room_slug_uniqueness_validator_spec.rb @@ -49,13 +49,20 @@ context "when there's a conflict" do let!(:room) { FactoryGirl.create(:bigbluebutton_room) } it { - target.validate_each(user, "slug", room.slug) - user.errors.should have_key(:slug) - user.errors.messages[:slug].should include(message) + target.validate_each(user, "username", room.slug) + user.errors.should have_key(:username) + user.errors.messages[:username].should include(message) } end ['rooms', 'servers', 'recordings', 'playback_types'].each do |word| + before { + @previous_scope = Rails.application.config.conf_scope_rooms + Rails.application.config.conf_scope_rooms = Rails.application.config.conf_scope + } + after { + Rails.application.config.conf_scope_rooms = @previous_scope + } context "when using the reserved word '#{word}'" do it { target.validate_each(user, "slug", word) @@ -103,6 +110,13 @@ end ['rooms', 'servers', 'recordings', 'playback_types'].each do |word| + before { + @previous_scope = Rails.application.config.conf_scope_rooms + Rails.application.config.conf_scope_rooms = Rails.application.config.conf_scope + } + after { + Rails.application.config.conf_scope_rooms = @previous_scope + } context "when using the reserved word '#{word}'" do it { target.validate_each(space, "slug", word) From 946e3eff336d4dba9a86c3e3b6cf4f06ed95ab0d Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Mon, 27 Nov 2017 13:26:47 -0200 Subject: [PATCH 43/75] Add test helper to configure config.conf_scope_rooms --- spec/helpers/application_helper_spec.rb | 10 +--------- spec/lib/bigbluebutton_rails.rb | 1 + ...custom_bigbluebutton_rooms_routing_spec.rb | 20 ++----------------- spec/support/helpers.rb | 12 +++++++++++ .../room_slug_uniqueness_validator_spec.rb | 16 ++------------- 5 files changed, 18 insertions(+), 41 deletions(-) diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 62b2c42e8..3043238e9 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -73,15 +73,7 @@ end context "doesn't return duplicated / when conf_scope_rooms=nil" do - before { - @previous = Rails.application.config.conf_scope_rooms - Rails.application.config.conf_scope_rooms = nil - Helpers.reload_routes! - } - after { - Rails.application.config.conf_scope_rooms = @previous - Rails.application.reload_routes! - } + set_conf_scope_rooms(nil) it { webconf_url_prefix.should eq("https://test.com/") } end end diff --git a/spec/lib/bigbluebutton_rails.rb b/spec/lib/bigbluebutton_rails.rb index 32db1f992..69b4baee1 100644 --- a/spec/lib/bigbluebutton_rails.rb +++ b/spec/lib/bigbluebutton_rails.rb @@ -14,6 +14,7 @@ before { Site.current.update_attributes(domain: "localhost:4000") } + set_conf_scope_rooms('webconf') it { target.should respond_to(:get_invitation_url) } it { target.get_invitation_url.should be_a(Proc) } diff --git a/spec/routing/custom_bigbluebutton_rooms_routing_spec.rb b/spec/routing/custom_bigbluebutton_rooms_routing_spec.rb index 7728a5eea..428334e9b 100644 --- a/spec/routing/custom_bigbluebutton_rooms_routing_spec.rb +++ b/spec/routing/custom_bigbluebutton_rooms_routing_spec.rb @@ -21,28 +21,12 @@ it { should route(:get, "/#{Rails.application.config.conf_scope}/rooms/my-room/user_edit").to(action: :user_edit, id: "my-room") } context "with a scope for rooms" do - before { - @previous = Rails.application.config.conf_scope_rooms - Rails.application.config.conf_scope_rooms = 'webconf' - Helpers.reload_routes! - } - after { - Rails.application.config.conf_scope_rooms = @previous - Rails.application.reload_routes! - } + set_conf_scope_rooms('webconf') it { should route(:get, "/webconf/my-room").to(action: :invite_userid, id: "my-room") } end context "with an empty scope for rooms" do - before { - @previous = Rails.application.config.conf_scope_rooms - Rails.application.config.conf_scope_rooms = '' - Helpers.reload_routes! - } - after { - Rails.application.config.conf_scope_rooms = @previous - Rails.application.reload_routes! - } + set_conf_scope_rooms('') it { should route(:get, "/my-room").to(action: :invite_userid, id: "my-room") } end diff --git a/spec/support/helpers.rb b/spec/support/helpers.rb index 603e4bec9..39eeb59e4 100644 --- a/spec/support/helpers.rb +++ b/spec/support/helpers.rb @@ -90,6 +90,18 @@ def mail_content(mail) content end end + + def set_conf_scope_rooms(value) + before { + @previous_conf_scope_rooms = Rails.application.config.conf_scope_rooms + Rails.application.config.conf_scope_rooms = value + Helpers.reload_routes! + } + after { + Rails.application.config.conf_scope_rooms = @previous_conf_scope_rooms + Rails.application.reload_routes! + } + end end end diff --git a/spec/validators/room_slug_uniqueness_validator_spec.rb b/spec/validators/room_slug_uniqueness_validator_spec.rb index 0a68f7977..666b5ded5 100644 --- a/spec/validators/room_slug_uniqueness_validator_spec.rb +++ b/spec/validators/room_slug_uniqueness_validator_spec.rb @@ -56,13 +56,7 @@ end ['rooms', 'servers', 'recordings', 'playback_types'].each do |word| - before { - @previous_scope = Rails.application.config.conf_scope_rooms - Rails.application.config.conf_scope_rooms = Rails.application.config.conf_scope - } - after { - Rails.application.config.conf_scope_rooms = @previous_scope - } + set_conf_scope_rooms(Rails.application.config.conf_scope) context "when using the reserved word '#{word}'" do it { target.validate_each(user, "slug", word) @@ -110,13 +104,7 @@ end ['rooms', 'servers', 'recordings', 'playback_types'].each do |word| - before { - @previous_scope = Rails.application.config.conf_scope_rooms - Rails.application.config.conf_scope_rooms = Rails.application.config.conf_scope - } - after { - Rails.application.config.conf_scope_rooms = @previous_scope - } + set_conf_scope_rooms(Rails.application.config.conf_scope) context "when using the reserved word '#{word}'" do it { target.validate_each(space, "slug", word) From 1dd0920c448d52acbc36a40a07c58b477ef7692d Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Mon, 27 Nov 2017 13:34:35 -0200 Subject: [PATCH 44/75] Fix Timecop.freeze calls on Mconf::Timezone tests Needed to call Timecop.return after all calls to .freeze otherwise the effects would spread to all other tests. --- spec/lib/mconf/timezone_spec.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/spec/lib/mconf/timezone_spec.rb b/spec/lib/mconf/timezone_spec.rb index 507d62967..96a739392 100644 --- a/spec/lib/mconf/timezone_spec.rb +++ b/spec/lib/mconf/timezone_spec.rb @@ -9,8 +9,14 @@ describe Mconf::Timezone do describe '#parse_in_timezone' do - # Run tests with the date format I wrote them in - before { Time::DATE_FORMATS[:default] = '%d/%m/%Y %H:%M' } + # custom format to use in the tests + before { + @previous_format = Time::DATE_FORMATS[:default] + Time::DATE_FORMATS[:default] = '%d/%m/%Y %H:%M' + } + after { + Time::DATE_FORMATS[:default] = @previous_format + } context 'normal timezone (UTC)' do subject { Mconf::Timezone.parse_in_timezone('31/07/2015 16:00', 'UTC') } @@ -185,6 +191,7 @@ context "in August" do let(:date) { DateTime.strptime('05/08/2015 12:00', "%d/%m/%Y %H:%M") } before { Timecop.freeze(date) } + after { Timecop.return } context "southern hemisphere: Brasilia" do let(:tz) { ActiveSupport::TimeZone.new("Brasilia") } @@ -202,6 +209,7 @@ context "in January" do let(:date) { DateTime.strptime('02/01/2015 12:00', "%d/%m/%Y %H:%M") } before { Timecop.freeze(date) } + after { Timecop.return } context "southern hemisphere: Brasilia" do let(:tz) { ActiveSupport::TimeZone.new("Brasilia") } @@ -221,6 +229,7 @@ context "in August" do let(:date) { DateTime.strptime('05/08/2015 12:00', "%d/%m/%Y %H:%M") } before { Timecop.freeze(date) } + after { Timecop.return } context "southern hemisphere: Brasilia" do let(:tz) { ActiveSupport::TimeZone.new("Brasilia") } @@ -238,6 +247,7 @@ context "in January" do let(:date) { DateTime.strptime('02/01/2015 12:00', "%d/%m/%Y %H:%M") } before { Timecop.freeze(date) } + after { Timecop.return } context "southern hemisphere: Brasilia" do let(:tz) { ActiveSupport::TimeZone.new("Brasilia") } From 02199465e0dfa778b5443f07c3270b776284e736 Mon Sep 17 00:00:00 2001 From: rafafp Date: Mon, 27 Nov 2017 15:35:37 -0200 Subject: [PATCH 45/75] Changing the populate task to use updated models' column names --- lib/tasks/db/populate.rake | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/tasks/db/populate.rake b/lib/tasks/db/populate.rake index b04cc63d3..5b49b4ed6 100644 --- a/lib/tasks/db/populate.rake +++ b/lib/tasks/db/populate.rake @@ -39,11 +39,11 @@ namespace :db do User.populate 15 do |user| if username_offset < reserved_usernames.size # Use some fixed usernames and always approve them - user.username = reserved_usernames[username_offset] + user.slug = reserved_usernames[username_offset] user.approved = true - puts "* Create users: default user '#{user.username}'" + puts "* Create users: default user '#{user.slug}'" else # Create user as normal - user.username = "#{Populator.words(1)}-#{username_offset}" + user.slug = "#{Populator.words(1)}-#{username_offset}" user.approved = rand(0) < 0.8 # ~20% marked as not approved end username_offset += 1 @@ -71,7 +71,7 @@ namespace :db do User.find_each do |user| if user.bigbluebutton_room.nil? user.create_bigbluebutton_room :owner => user, - :param => user.username, + :slug => user.slug, :name => user.full_name end # set the password this way so that devise makes the encryption @@ -91,7 +91,7 @@ namespace :db do space.public = [ true, false ] space.disabled = false space.approved = true - space.permalink = name.parameterize + space.slug = name.parameterize space.repository = [ true, false ] Post.populate 10..50 do |post| @@ -116,7 +116,7 @@ namespace :db do room.private = !space.public room.logout_url = "/feedback/webconf" room.external = false - room.param = space.name.parameterize.downcase + room.slug = space.name.parameterize.downcase room.duration = 0 room.record_meeting = false end @@ -161,7 +161,7 @@ namespace :db do event.owner_id = available_spaces.sample.id event.owner_type = 'Space' event.name = Populator.words(1..3).titleize - event.permalink = Populator.words(1..3).split.join('-') + event.slug = Populator.words(1..3).split.join('-') event.time_zone = Forgery::Time.zone event.location = Populator.words(1..3) event.address = Forgery::Address.street_address @@ -180,7 +180,7 @@ namespace :db do event.owner_id = available_users event.owner_type = 'User' event.name = Populator.words(1..3).titleize - event.permalink = Populator.words(1..3).split.join('-') + event.slug = Populator.words(1..3).split.join('-') event.time_zone = Forgery::Time.zone event.location = Populator.words(1..3) event.address = Forgery::Address.street_address @@ -414,7 +414,7 @@ namespace :db do ids = ids.sample(Space.count/5) # 1/5th disabled Space.where(:id => ids).map(&:disable) - users_without_admin = User.where("username NOT IN (?)", reserved_usernames + ['admin']) + users_without_admin = User.where("slug NOT IN (?)", reserved_usernames + ['admin']) ids = users_without_admin.sample(users_without_admin.count/5) # 1/5th disabled User.where(:id => ids).map(&:disable) @@ -433,9 +433,9 @@ namespace :db do :url, :full_name] # Create 2 insecure users - u = FactoryGirl.create(:user, username: 'insecure1', password: '123456') + u = FactoryGirl.create(:user, slug: 'insecure1', password: '123456') u.profile.update_attributes(attrs_to_hash(Profile, profile_attrs)) - u2 = FactoryGirl.create(:user, username: 'insecure2', password: '123456') + u2 = FactoryGirl.create(:user, slug: 'insecure2', password: '123456') u2.profile.update_attributes(attrs_to_hash(Profile, profile_attrs)) space_attrs = [:name, :description] From 1fcd4fe39049e6684bd2b9ea800f5ac11a355994 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Mon, 4 Dec 2017 13:36:10 -0200 Subject: [PATCH 46/75] Update bigbluebutton_rails and adapt the code to its changes --- Gemfile.lock | 2 +- config/initializers/bigbluebutton_rails.rb | 86 ++++++++++--------- .../bigbluebutton_rails_controller_module.rb | 11 --- .../application_controller_spec.rb | 64 -------------- ...tom_bigbluebutton_rooms_controller_spec.rb | 6 +- ...n_rails.rb => bigbluebutton_rails_spec.rb} | 33 ++++--- 6 files changed, 63 insertions(+), 139 deletions(-) rename spec/lib/{bigbluebutton_rails.rb => bigbluebutton_rails_spec.rb} (57%) diff --git a/Gemfile.lock b/Gemfile.lock index 21cef6fd7..746c43261 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,7 +8,7 @@ GIT GIT remote: https://github.com/mconf/bigbluebutton_rails.git - revision: f9c6b2f76b95166e7560b79f05467a1a4e600138 + revision: 820bfeb38ca23de2a89b6cc37f850d626f67e527 branch: master specs: bigbluebutton_rails (2.2.0) diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index ef38470a3..049c7dddf 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -14,13 +14,15 @@ end # Add custom metadata to all create calls - config.get_dynamic_metadata = Proc.new do |room| + config.get_create_options = Proc.new do |room, user| host = Site.current.domain_with_protocol - meta = { - "mconfweb-url" => Rails.application.routes.url_helpers.root_url(host: host), - "mconfweb-room-type" => room.try(:owner).try(:class).try(:name) + ability = Abilities.ability_for(user) + + { + "meta_mconfweb-url" => Rails.application.routes.url_helpers.root_url(host: host), + "meta_mconfweb-room-type" => room.try(:owner).try(:class).try(:name), + record: ability.can?(:record_meeting, room) } - meta end end @@ -53,43 +55,6 @@ def short_path end end - BigbluebuttonMeeting.instance_eval do - include PublicActivity::Model - - tracked only: [:create], owner: :room, - recipient: -> (ctrl, model) { model.room.owner }, - params: { - creator_id: -> (ctrl, model) { - model.try(:creator_id) - }, - creator_username: -> (ctrl, model) { - id = model.try(:creator_id) - user = User.find_by(id: id) - user.try(:username) - } - } - - scope :newest, -> (count=0) { - ordered = order("create_time DESC") - if count > 0 - ordered.first(count) - else - ordered - end - } - end - - BigbluebuttonServer.instance_eval do - - # When the URL of the default server changes, change the URL of all institution servers. - after_update if: :url_changed? do - if BigbluebuttonServer.default.id == self.id - BigbluebuttonServer.where.not(id: self.id).update_all(url: self.url) - end - end - - end - BigbluebuttonMeeting.class_eval do # Fetches also the recordings associated with the meetings. Returns meetings even if they do not # have a recording. @@ -165,4 +130,41 @@ def duration end end end + + BigbluebuttonMeeting.instance_eval do + include PublicActivity::Model + + tracked only: [:create], owner: :room, + recipient: -> (ctrl, model) { model.room.owner }, + params: { + creator_id: -> (ctrl, model) { + model.try(:creator_id) + }, + creator_username: -> (ctrl, model) { + id = model.try(:creator_id) + user = User.find_by(id: id) + user.try(:username) + } + } + + scope :newest, -> (count=0) { + ordered = order("create_time DESC") + if count > 0 + ordered.first(count) + else + ordered + end + } + end + + BigbluebuttonServer.instance_eval do + + # When the URL of the default server changes, change the URL of all institution servers. + after_update if: :url_changed? do + if BigbluebuttonServer.default.id == self.id + BigbluebuttonServer.where.not(id: self.id).update_all(url: self.url) + end + end + + end end diff --git a/lib/mconf/bigbluebutton_rails_controller_module.rb b/lib/mconf/bigbluebutton_rails_controller_module.rb index b9c1a2f78..49e493ddb 100644 --- a/lib/mconf/bigbluebutton_rails_controller_module.rb +++ b/lib/mconf/bigbluebutton_rails_controller_module.rb @@ -80,17 +80,6 @@ def bigbluebutton_can_create?(room, role) ability.can?(:create_meeting, room) end - # This method is called from BigbluebuttonRails. - # Returns a hash with options to override the options used when making the API call to - # create a meeting in the room 'room'. The parameters returned are used directly in the - # API, so the keys should match the attributes used in the API and not the columns saved - # in the database (e.g. :attendeePW instead of :attendee_key)! - def bigbluebutton_create_options(room) - ability = Abilities.ability_for(current_user) - # show the record button if the user has permissions to record - { record: ability.can?(:record_meeting, room) } - end - # loads the web conference room for the current space into `@webconf_room` and fetches information # about it from the web conference server (`getMeetingInfo`) def webconf_room! diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index fe719237b..aaf1e4d7c 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -425,70 +425,6 @@ def index end end - # TODO: We are comparing the results with hashes using string keys, even though - # the method returns keys using symbols. Using `assigns()` automatically converts - # the symbols to strings, so we can't check it exactly as we should. See: - # http://stackoverflow.com/questions/4348195/unwanted-symbol-to-string-conversion-of-hash-key - describe "#bigbluebutton_create_options" do - controller do - def index - room = BigbluebuttonRoom.find(params[:room_id]) - @result = bigbluebutton_create_options(room).freeze - render :nothing => true - end - end - - context "if there's no user logged returns false" do - let(:room) { FactoryGirl.create(:bigbluebutton_room) } - before(:each) { get :index, :room_id => room.id } - it { assigns(:result).should eql({ record: false }) } - end - - context "if there's a user logged" do - let(:user) { FactoryGirl.create(:user) } - let(:room) { FactoryGirl.create(:bigbluebutton_room) } - before { - # a custom ability to control what the user can do - @ability = Object.new - @ability.extend(CanCan::Ability) - Abilities.stub(:ability_for).and_return(@ability) - } - - context "when the user can record" do - before { @ability.can :record_meeting, room } - - context "and the room is set to record" do - before { room.update_attributes(record_meeting: true) } - before(:each) { get :index, :room_id => room.id } - it { assigns(:result).should eql({ record: true }) } - end - - context "and the room is not set to record" do - before { room.update_attributes(record_meeting: false) } - before(:each) { get :index, :room_id => room.id } - # uses the user's permission only, ignores that the room is not set to record - it { assigns(:result).should eql({ record: true }) } - end - end - - context "when the user cannot record" do - before { @ability.cannot :record_meeting, room } - - context "and the room is set to record" do - before { room.update_attributes(record_meeting: true) } - before(:each) { get :index, :room_id => room.id } - it { assigns(:result).should eql({ record: false }) } - end - - context "and the room is not set to record" do - before { room.update_attributes(record_meeting: false) } - before(:each) { get :index, :room_id => room.id } - it { assigns(:result).should eql({ record: false }) } - end - end - end - end - context "rescue from exceptions" do skip "if consider_all_requests_local is true" diff --git a/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb b/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb index e7f66f0a5..584881364 100644 --- a/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb +++ b/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb @@ -603,7 +603,7 @@ # to guide the behavior of #join, copied from the tests in BigbluebuttonRails room.should_receive(:fetch_is_running?).at_least(:once).and_return(false) - room.should_receive(:create_meeting).with(user, anything, anything) + room.should_receive(:create_meeting).with(user, anything) room.should_receive(:fetch_new_token) room.should_receive(:join_url).and_return("http://test.com/attendee/join") end @@ -674,7 +674,7 @@ room.update_attributes({ max_participants: 0 }) room.stub(:fetch_is_running?).and_return(false) room.stub(:is_running?).and_return(false) - room.should_receive(:create_meeting).at_most(:once).with(user, anything, anything) + room.should_receive(:create_meeting).at_most(:once).with(user, anything) room.should_receive(:join_url).at_most(:once).and_return(join_url) end before(:each) { @@ -753,7 +753,7 @@ room.update_attributes({ max_participants: 0 }) room.stub(:fetch_is_running?).and_return(false) room.stub(:is_running?).and_return(false) - room.should_receive(:create_meeting).at_most(:once).with(user, anything, anything) + room.should_receive(:create_meeting).at_most(:once).with(user, anything) room.should_receive(:join_url).at_most(:once).and_return(join_url) end before(:each) { diff --git a/spec/lib/bigbluebutton_rails.rb b/spec/lib/bigbluebutton_rails_spec.rb similarity index 57% rename from spec/lib/bigbluebutton_rails.rb rename to spec/lib/bigbluebutton_rails_spec.rb index 69b4baee1..ca85ba5e4 100644 --- a/spec/lib/bigbluebutton_rails.rb +++ b/spec/lib/bigbluebutton_rails_spec.rb @@ -29,15 +29,15 @@ end end - describe "#dynamic_metadata" do + describe "#get_create_options" do let(:target) { BigbluebuttonRails.configuration } let(:room) { FactoryGirl.create(:bigbluebutton_room) } before { Site.current.update_attributes(domain: "localhost:4000") } - it { target.should respond_to(:get_dynamic_metadata) } - it { target.get_dynamic_metadata.should be_a(Proc) } + it { target.should respond_to(:get_create_options) } + it { target.get_create_options.should be_a(Proc) } context "for a user room" do before { @@ -45,11 +45,10 @@ } it { - expected = { - "mconfweb-url" => "http://#{Site.current.domain}/", - "mconfweb-room-type" => "User" - } - target.get_dynamic_metadata.call(room).should eql(expected) + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("User") } end @@ -59,11 +58,10 @@ } it { - expected = { - "mconfweb-url" => "http://#{Site.current.domain}/", - "mconfweb-room-type" => "Space" - } - target.get_dynamic_metadata.call(room).should eql(expected) + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") } end @@ -74,11 +72,10 @@ } it { - expected = { - "mconfweb-url" => "https://#{Site.current.domain}/", - "mconfweb-room-type" => "Space" - } - target.get_dynamic_metadata.call(room).should eql(expected) + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("https://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") } end end From a0b0b519768fd175569be6f1ebaef7e014ab4c37 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Mon, 4 Dec 2017 14:51:00 -0200 Subject: [PATCH 47/75] Add a few more tests for BigbluebuttonRails' .get_create_options --- spec/lib/bigbluebutton_rails_spec.rb | 128 ++++++++++++++++++++------- 1 file changed, 96 insertions(+), 32 deletions(-) diff --git a/spec/lib/bigbluebutton_rails_spec.rb b/spec/lib/bigbluebutton_rails_spec.rb index ca85ba5e4..a1e26000f 100644 --- a/spec/lib/bigbluebutton_rails_spec.rb +++ b/spec/lib/bigbluebutton_rails_spec.rb @@ -39,44 +39,108 @@ it { target.should respond_to(:get_create_options) } it { target.get_create_options.should be_a(Proc) } - context "for a user room" do - before { - room.update_attributes(owner: FactoryGirl.create(:user)) - } + context "sets the metadata" do + context "for a user room" do + before { + room.update_attributes(owner: FactoryGirl.create(:user)) + } - it { - target.get_create_options.call(room).should have_key("meta_mconfweb-url") - target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") - target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") - target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("User") - } - end + it { + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("User") + } + end - context "for a space room" do - before { - room.update_attributes(owner: FactoryGirl.create(:space)) - } + context "for a space room" do + before { + room.update_attributes(owner: FactoryGirl.create(:space)) + } - it { - target.get_create_options.call(room).should have_key("meta_mconfweb-url") - target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") - target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") - target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") - } + it { + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") + } + end + + context "works with HTTPS" do + before { + Site.current.update_attributes(ssl: true) + room.update_attributes(owner: FactoryGirl.create(:space)) + } + + it { + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("https://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") + } + end end - context "works with HTTPS" do - before { - Site.current.update_attributes(ssl: true) - room.update_attributes(owner: FactoryGirl.create(:space)) - } + context "sets the record flag" do + context "if there's no user logged" do + it { + target.get_create_options.call(room, nil).should have_key(:record) + target.get_create_options.call(room, nil)[:record].should be(false) + } + end - it { - target.get_create_options.call(room).should have_key("meta_mconfweb-url") - target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") - target.get_create_options.call(room)["meta_mconfweb-url"].should eql("https://#{Site.current.domain}/") - target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") - } + context "if there's a user logged" do + let(:user) { FactoryGirl.create(:user) } + before { + # a custom ability to control what the user can do + @ability = Object.new + @ability.extend(CanCan::Ability) + Abilities.stub(:ability_for).and_return(@ability) + } + + context "sets the record option" do + context "when the user can record" do + before { @ability.can :record_meeting, room } + + context "and the room is set to record" do + before { room.update_attributes(record_meeting: true) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(true) + } + end + + context "and the room is not set to record" do + before { room.update_attributes(record_meeting: false) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(true) + } + end + end + + context "when the user cannot record" do + before { @ability.cannot :record_meeting, room } + + context "and the room is set to record" do + before { room.update_attributes(record_meeting: true) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(false) + } + end + + context "and the room is not set to record" do + before { room.update_attributes(record_meeting: false) } + it { + target.get_create_options.call(room, nil).should have_key(:record) + target.get_create_options.call(room, nil)[:record].should be(false) + } + end + end + end + + end end end end From 608336c7ea75caa8910530f024918b0ad2ed9e62 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Tue, 5 Dec 2017 17:46:08 -0200 Subject: [PATCH 48/75] Set a metadata on meetings to indicate when a user can't record Pulling content from https://github.com/mconftec/mconf-web-rnp/pull/10 --- app/models/user.rb | 13 ++++++++++++ config/initializers/bigbluebutton_rails.rb | 7 ++++++- config/locales/en/mconf.yml | 2 ++ config/locales/pt-br/mconf.yml | 2 ++ spec/lib/bigbluebutton_rails_spec.rb | 23 ++++++++++++++++++++++ 5 files changed, 46 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 4c66c441d..aa46a8f35 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -406,6 +406,19 @@ def initials self.name.split(' ').collect{ |w| w[0] }.join('') end + # Returns a string describing why the user cannot record meetings in the `room`. If + # the user *can* record, returns nil. + def cant_record_reason(room) + ability = Abilities.ability_for(self) + can = ability.can?(:record_meeting, room) + + if !can + if !self.can_record + I18n.t('users.cant_record_reason.user_cannot_record') + end + end + end + protected def before_disable_and_destroy diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index 049c7dddf..80dabb641 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -18,11 +18,16 @@ host = Site.current.domain_with_protocol ability = Abilities.ability_for(user) - { + opts = { "meta_mconfweb-url" => Rails.application.routes.url_helpers.root_url(host: host), "meta_mconfweb-room-type" => room.try(:owner).try(:class).try(:name), record: ability.can?(:record_meeting, room) } + + reason = user.try(:cant_record_reason, room) + opts["meta_mconf-live-wont-record-message"] = reason if reason.present? + + opts end end diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 5642cc84b..603728dcc 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -1809,6 +1809,8 @@ en: approve: approved: "The user %{name} was approved to access the website!" not_enabled: "Approval of users is not enabled in this website or the user is already approved" + cant_record_reason: + user_cannot_record: "The user that created this meeting has no permission to record meetings." create: error: "Errors creating the user: %{errors}" success: "User created successfully" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index 1daed5b68..2b224f37d 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -1837,6 +1837,8 @@ pt-br: approve: approved: "O usuário %{name} foi aprovado para acessar este site!" not_enabled: "A aprovação de registros não está habilitada neste site ou o usuário já está aprovado" + cant_record_reason: + user_cannot_record: "O usuário que criou esta reunião não tem permissão para gravar reuniões." confirm: confirmed: "O usuário %{username} foi confirmado" create: diff --git a/spec/lib/bigbluebutton_rails_spec.rb b/spec/lib/bigbluebutton_rails_spec.rb index a1e26000f..60a802018 100644 --- a/spec/lib/bigbluebutton_rails_spec.rb +++ b/spec/lib/bigbluebutton_rails_spec.rb @@ -142,5 +142,28 @@ end end + + context "sets the 'wont record' message" do + let(:user) { FactoryGirl.create(:user) } + + context "if the user doesn't have permission to record meetings" do + let(:msg) { I18n.t('users.cant_record_reason.user_cannot_record') } + before { user.update_attributes(can_record: false) } + + it { + target.get_create_options.call(room, user).should have_key("meta_mconf-live-wont-record-message") + target.get_create_options.call(room, user)["meta_mconf-live-wont-record-message"].should eql(msg) + } + end + + context "if the user has permission to record meetings" do + before { user.update_attributes(can_record: true) } + + it { + target.get_create_options.call(room, user).should_not have_key("meta_mconf-live-wont-record-message") + } + end + end + end end From 852d459dc9c046102ae560590f15f9441fd9d885 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 6 Dec 2017 16:41:18 -0200 Subject: [PATCH 49/75] Update bigbluebutton_rails and adapt the code to its changes # Conflicts: # Gemfile.lock # config/initializers/bigbluebutton_rails.rb # lib/mconf/bigbluebutton_rails_controller_module.rb --- Gemfile | 2 +- Gemfile.lock | 6 +- app/controllers/application_controller.rb | 11 ---- config/initializers/bigbluebutton_rails.rb | 12 ++-- .../application_controller_spec.rb | 64 ------------------- ...tom_bigbluebutton_rooms_controller_spec.rb | 6 +- ...n_rails.rb => bigbluebutton_rails_spec.rb} | 33 +++++----- 7 files changed, 29 insertions(+), 105 deletions(-) rename spec/lib/{bigbluebutton_rails.rb => bigbluebutton_rails_spec.rb} (64%) diff --git a/Gemfile b/Gemfile index 29052c87b..fa2baf127 100644 --- a/Gemfile +++ b/Gemfile @@ -54,7 +54,7 @@ gem 'net-ldap' # BigBlueButton integration gem 'bigbluebutton-api-ruby', :git => 'https://github.com/mconf/bigbluebutton-api-ruby.git', :branch => 'master' -gem 'bigbluebutton_rails', :git => 'https://github.com/mconf/bigbluebutton_rails.git', :branch => 'master' +gem 'bigbluebutton_rails', :git => 'https://github.com/mconf/bigbluebutton_rails.git', :branch => 'release-2.3' # Used on Profile to generate a vcard gem 'vpim', '~> 13.11.11' diff --git a/Gemfile.lock b/Gemfile.lock index f55e8a0fa..a18f7fa89 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,10 +8,10 @@ GIT GIT remote: https://github.com/mconf/bigbluebutton_rails.git - revision: 24d83a7d46b99b2445640f1f0ecebad6b82de587 - branch: master + revision: fa4bfcd59a33af300d0882bd852609219a7b3d9b + branch: release-2.3 specs: - bigbluebutton_rails (2.1.0) + bigbluebutton_rails (2.2.0) bigbluebutton-api-ruby (~> 1.6) browser (~> 0.8.0) rails (>= 4.0.0) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 2a09742b5..1228e0e56 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -171,17 +171,6 @@ def bigbluebutton_can_create?(room, role) ability.can?(:create_meeting, room) end - # This method is called from BigbluebuttonRails. - # Returns a hash with options to override the options used when making the API call to - # create a meeting in the room 'room'. The parameters returned are used directly in the - # API, so the keys should match the attributes used in the API and not the columns saved - # in the database (e.g. :attendeePW instead of :attendee_key)! - def bigbluebutton_create_options(room) - ability = Abilities.ability_for(current_user) - # show the record button if the user has permissions to record - { record: ability.can?(:record_meeting, room) } - end - # loads the web conference room for the current space into `@webconf_room` and fetches information # about it from the web conference server (`getMeetingInfo`) def webconf_room! diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index 69326ddb4..cbba3f2e6 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -14,13 +14,15 @@ end # Add custom metadata to all create calls - config.get_dynamic_metadata = Proc.new do |room| + config.get_create_options = Proc.new do |room, user| host = Site.current.domain_with_protocol - meta = { - "mconfweb-url" => Rails.application.routes.url_helpers.root_url(host: host), - "mconfweb-room-type" => room.try(:owner).try(:class).try(:name) + ability = Abilities.ability_for(user) + + { + "meta_mconfweb-url" => Rails.application.routes.url_helpers.root_url(host: host), + "meta_mconfweb-room-type" => room.try(:owner).try(:class).try(:name), + record: ability.can?(:record_meeting, room) } - meta end end diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index 44aa5c35c..e9477bba5 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -425,70 +425,6 @@ def index end end - # TODO: We are comparing the results with hashes using string keys, even though - # the method returns keys using symbols. Using `assigns()` automatically converts - # the symbols to strings, so we can't check it exactly as we should. See: - # http://stackoverflow.com/questions/4348195/unwanted-symbol-to-string-conversion-of-hash-key - describe "#bigbluebutton_create_options" do - controller do - def index - room = BigbluebuttonRoom.find(params[:room_id]) - @result = bigbluebutton_create_options(room).freeze - render :nothing => true - end - end - - context "if there's no user logged returns false" do - let(:room) { FactoryGirl.create(:bigbluebutton_room) } - before(:each) { get :index, :room_id => room.id } - it { assigns(:result).should eql({ record: false }) } - end - - context "if there's a user logged" do - let(:user) { FactoryGirl.create(:user) } - let(:room) { FactoryGirl.create(:bigbluebutton_room) } - before { - # a custom ability to control what the user can do - @ability = Object.new - @ability.extend(CanCan::Ability) - Abilities.stub(:ability_for).and_return(@ability) - } - - context "when the user can record" do - before { @ability.can :record_meeting, room } - - context "and the room is set to record" do - before { room.update_attributes(record_meeting: true) } - before(:each) { get :index, :room_id => room.id } - it { assigns(:result).should eql({ record: true }) } - end - - context "and the room is not set to record" do - before { room.update_attributes(record_meeting: false) } - before(:each) { get :index, :room_id => room.id } - # uses the user's permission only, ignores that the room is not set to record - it { assigns(:result).should eql({ record: true }) } - end - end - - context "when the user cannot record" do - before { @ability.cannot :record_meeting, room } - - context "and the room is set to record" do - before { room.update_attributes(record_meeting: true) } - before(:each) { get :index, :room_id => room.id } - it { assigns(:result).should eql({ record: false }) } - end - - context "and the room is not set to record" do - before { room.update_attributes(record_meeting: false) } - before(:each) { get :index, :room_id => room.id } - it { assigns(:result).should eql({ record: false }) } - end - end - end - end - context "rescue from exceptions" do skip "if consider_all_requests_local is true" diff --git a/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb b/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb index d8fdfa1a5..28214aae5 100644 --- a/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb +++ b/spec/controllers/custom_bigbluebutton_rooms_controller_spec.rb @@ -602,7 +602,7 @@ # to guide the behavior of #join, copied from the tests in BigbluebuttonRails room.should_receive(:fetch_is_running?).at_least(:once).and_return(false) - room.should_receive(:create_meeting).with(user, anything, anything) + room.should_receive(:create_meeting).with(user, anything) room.should_receive(:fetch_new_token) room.should_receive(:join_url).and_return("http://test.com/attendee/join") end @@ -673,7 +673,7 @@ room.update_attributes({ max_participants: 0 }) room.stub(:fetch_is_running?).and_return(false) room.stub(:is_running?).and_return(false) - room.should_receive(:create_meeting).at_most(:once).with(user, anything, anything) + room.should_receive(:create_meeting).at_most(:once).with(user, anything) room.should_receive(:join_url).at_most(:once).and_return(join_url) end before(:each) { @@ -752,7 +752,7 @@ room.update_attributes({ max_participants: 0 }) room.stub(:fetch_is_running?).and_return(false) room.stub(:is_running?).and_return(false) - room.should_receive(:create_meeting).at_most(:once).with(user, anything, anything) + room.should_receive(:create_meeting).at_most(:once).with(user, anything) room.should_receive(:join_url).at_most(:once).and_return(join_url) end before(:each) { diff --git a/spec/lib/bigbluebutton_rails.rb b/spec/lib/bigbluebutton_rails_spec.rb similarity index 64% rename from spec/lib/bigbluebutton_rails.rb rename to spec/lib/bigbluebutton_rails_spec.rb index e284c003d..a17e0780d 100644 --- a/spec/lib/bigbluebutton_rails.rb +++ b/spec/lib/bigbluebutton_rails_spec.rb @@ -28,15 +28,15 @@ end end - describe "#dynamic_metadata" do + describe "#get_create_options" do let(:target) { BigbluebuttonRails.configuration } let(:room) { FactoryGirl.create(:bigbluebutton_room) } before { Site.current.update_attributes(domain: "localhost:4000") } - it { target.should respond_to(:get_dynamic_metadata) } - it { target.get_dynamic_metadata.should be_a(Proc) } + it { target.should respond_to(:get_create_options) } + it { target.get_create_options.should be_a(Proc) } context "for a user room" do before { @@ -44,11 +44,10 @@ } it { - expected = { - "mconfweb-url" => "http://#{Site.current.domain}/", - "mconfweb-room-type" => "User" - } - target.get_dynamic_metadata.call(room).should eql(expected) + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("User") } end @@ -58,11 +57,10 @@ } it { - expected = { - "mconfweb-url" => "http://#{Site.current.domain}/", - "mconfweb-room-type" => "Space" - } - target.get_dynamic_metadata.call(room).should eql(expected) + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") } end @@ -73,11 +71,10 @@ } it { - expected = { - "mconfweb-url" => "https://#{Site.current.domain}/", - "mconfweb-room-type" => "Space" - } - target.get_dynamic_metadata.call(room).should eql(expected) + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("https://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") } end end From 9e26e51ff50fef5bbe8eb1dc90fc8e1c3fde4bea Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Mon, 4 Dec 2017 14:51:00 -0200 Subject: [PATCH 50/75] Add a few more tests for BigbluebuttonRails' .get_create_options --- spec/lib/bigbluebutton_rails_spec.rb | 136 ++++++++++++++++++++------- 1 file changed, 100 insertions(+), 36 deletions(-) diff --git a/spec/lib/bigbluebutton_rails_spec.rb b/spec/lib/bigbluebutton_rails_spec.rb index a17e0780d..04ed80689 100644 --- a/spec/lib/bigbluebutton_rails_spec.rb +++ b/spec/lib/bigbluebutton_rails_spec.rb @@ -38,44 +38,108 @@ it { target.should respond_to(:get_create_options) } it { target.get_create_options.should be_a(Proc) } - context "for a user room" do - before { - room.update_attributes(owner: FactoryGirl.create(:user)) - } - - it { - target.get_create_options.call(room).should have_key("meta_mconfweb-url") - target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") - target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") - target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("User") - } + context "sets the metadata" do + context "for a user room" do + before { + room.update_attributes(owner: FactoryGirl.create(:user)) + } + + it { + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("User") + } + end + + context "for a space room" do + before { + room.update_attributes(owner: FactoryGirl.create(:space)) + } + + it { + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") + } + end + + context "works with HTTPS" do + before { + Site.current.update_attributes(ssl: true) + room.update_attributes(owner: FactoryGirl.create(:space)) + } + + it { + target.get_create_options.call(room).should have_key("meta_mconfweb-url") + target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") + target.get_create_options.call(room)["meta_mconfweb-url"].should eql("https://#{Site.current.domain}/") + target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") + } + end end - context "for a space room" do - before { - room.update_attributes(owner: FactoryGirl.create(:space)) - } - - it { - target.get_create_options.call(room).should have_key("meta_mconfweb-url") - target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") - target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") - target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") - } - end - - context "works with HTTPS" do - before { - Site.current.update_attributes(ssl: true) - room.update_attributes(owner: FactoryGirl.create(:space)) - } - - it { - target.get_create_options.call(room).should have_key("meta_mconfweb-url") - target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") - target.get_create_options.call(room)["meta_mconfweb-url"].should eql("https://#{Site.current.domain}/") - target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") - } + context "sets the record flag" do + context "if there's no user logged" do + it { + target.get_create_options.call(room, nil).should have_key(:record) + target.get_create_options.call(room, nil)[:record].should be(false) + } + end + + context "if there's a user logged" do + let(:user) { FactoryGirl.create(:user) } + before { + # a custom ability to control what the user can do + @ability = Object.new + @ability.extend(CanCan::Ability) + Abilities.stub(:ability_for).and_return(@ability) + } + + context "sets the record option" do + context "when the user can record" do + before { @ability.can :record_meeting, room } + + context "and the room is set to record" do + before { room.update_attributes(record_meeting: true) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(true) + } + end + + context "and the room is not set to record" do + before { room.update_attributes(record_meeting: false) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(true) + } + end + end + + context "when the user cannot record" do + before { @ability.cannot :record_meeting, room } + + context "and the room is set to record" do + before { room.update_attributes(record_meeting: true) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(false) + } + end + + context "and the room is not set to record" do + before { room.update_attributes(record_meeting: false) } + it { + target.get_create_options.call(room, nil).should have_key(:record) + target.get_create_options.call(room, nil)[:record].should be(false) + } + end + end + end + + end end end From b44dac09ab50cb394ae2c783ef7fe090dabdc879 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 6 Dec 2017 16:42:27 -0200 Subject: [PATCH 51/75] Set a metadata on meetings to indicate when a user can't record Pulling content from https://github.com/mconftec/mconf-web-rnp/pull/10 # Conflicts: # app/models/user.rb --- app/models/user.rb | 13 ++++++++++++ config/initializers/bigbluebutton_rails.rb | 7 ++++++- config/locales/en/mconf.yml | 2 ++ config/locales/pt-br/mconf.yml | 2 ++ spec/lib/bigbluebutton_rails_spec.rb | 23 ++++++++++++++++++++++ 5 files changed, 46 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 3c95e3baf..d9ea4dfc8 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -376,6 +376,19 @@ def set_superuser!(value=true) end end + # Returns a string describing why the user cannot record meetings in the `room`. If + # the user *can* record, returns nil. + def cant_record_reason(room) + ability = Abilities.ability_for(self) + can = ability.can?(:record_meeting, room) + + if !can + if !self.can_record + I18n.t('users.cant_record_reason.user_cannot_record') + end + end + end + protected def before_disable_and_destroy diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index cbba3f2e6..4b966e6cf 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -18,11 +18,16 @@ host = Site.current.domain_with_protocol ability = Abilities.ability_for(user) - { + opts = { "meta_mconfweb-url" => Rails.application.routes.url_helpers.root_url(host: host), "meta_mconfweb-room-type" => room.try(:owner).try(:class).try(:name), record: ability.can?(:record_meeting, room) } + + reason = user.try(:cant_record_reason, room) + opts["meta_mconf-live-wont-record-message"] = reason if reason.present? + + opts end end diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index d76b0d71f..358e796a5 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -1769,6 +1769,8 @@ en: approve: approved: "The user %{name} was approved to access the website!" not_enabled: "Approval of users is not enabled in this website or the user is already approved" + cant_record_reason: + user_cannot_record: "The user that created this meeting has no permission to record meetings." create: error: "Errors creating the user: %{errors}" success: "User created successfully" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index a49bbee69..d544ad4d9 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -1777,6 +1777,8 @@ pt-br: approve: approved: "O usuário %{name} foi aprovado para acessar este site!" not_enabled: "A aprovação de registros não está habilitada neste site ou o usuário já está aprovado" + cant_record_reason: + user_cannot_record: "O usuário que criou esta reunião não tem permissão para gravar reuniões." confirm: confirmed: "O usuário %{username} foi confirmado" create: diff --git a/spec/lib/bigbluebutton_rails_spec.rb b/spec/lib/bigbluebutton_rails_spec.rb index 04ed80689..58e8a816d 100644 --- a/spec/lib/bigbluebutton_rails_spec.rb +++ b/spec/lib/bigbluebutton_rails_spec.rb @@ -141,6 +141,29 @@ end end + + context "sets the 'wont record' message" do + let(:user) { FactoryGirl.create(:user) } + + context "if the user doesn't have permission to record meetings" do + let(:msg) { I18n.t('users.cant_record_reason.user_cannot_record') } + before { user.update_attributes(can_record: false) } + + it { + target.get_create_options.call(room, user).should have_key("meta_mconf-live-wont-record-message") + target.get_create_options.call(room, user)["meta_mconf-live-wont-record-message"].should eql(msg) + } + end + + context "if the user has permission to record meetings" do + before { user.update_attributes(can_record: true) } + + it { + target.get_create_options.call(room, user).should_not have_key("meta_mconf-live-wont-record-message") + } + end + end + end describe "#select_server" do From 0d3668fa74d80841ce42809d7a859b5b89a86b5b Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 6 Dec 2017 17:45:49 -0200 Subject: [PATCH 52/75] Adapting the code to BigbluebuttonRails 2.2 --- config/initializers/bigbluebutton_rails.rb | 3 + config/routes.rb | 2 +- config/workers_schedule.yml | 14 ++- ...0170207190227_bigbluebutton_rails_to220.rb | 90 +++++++++++++++++++ ...170531162723_bigbluebutton_rails_to220b.rb | 21 +++++ db/schema.rb | 24 +++-- 6 files changed, 142 insertions(+), 12 deletions(-) create mode 100644 db/migrate/20170207190227_bigbluebutton_rails_to220.rb create mode 100644 db/migrate/20170531162723_bigbluebutton_rails_to220b.rb diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index 4b966e6cf..3e2bf7ca7 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -52,6 +52,9 @@ def public? owner_type == "Space" && Space.where(:id => owner_id, :public => true).present? end + def short_path + Rails.application.routes.url_helpers.join_webconf_path(self) + end end BigbluebuttonMeeting.instance_eval do diff --git a/config/routes.rb b/config/routes.rb index 787d803e1..a8bd58479 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -60,7 +60,7 @@ get '/webconf/:id', to: 'custom_bigbluebutton_rooms#invite_userid', as: "join_webconf" - + bigbluebutton_api_routes # shibboleth controller get '/secure', to: 'shibboleth#login', as: "shibboleth" diff --git a/config/workers_schedule.yml b/config/workers_schedule.yml index e08ef2762..d740f9644 100644 --- a/config/workers_schedule.yml +++ b/config/workers_schedule.yml @@ -36,21 +36,27 @@ send_participant_confirmations_notifications: finish_meetings: every: - "30s" - class: BigbluebuttonFinishMeetings + class: BigbluebuttonFinishMeetingsWorker queue: low description: "Checks for meetings that finished and mark as finished. Same as 'rake bigbluebutton_rails:meetings:finish'." +get_stats: + every: + - "12h" + class: BigbluebuttonGetStatsForRecentWorker + description: "Gets stats for recent meetings that have no stats yet. Same as 'rake bigbluebutton_rails:meetings:get_stats' but for only a subset of meetings." + update_recordings: every: - "30m" - class: BigbluebuttonUpdateRecordings + class: BigbluebuttonUpdateRecordingsWorker queue: low description: "Gets the recordings in the server to populate the db. Same as 'rake bigbluebutton_rails:recordings:update'." update_server_configs: every: - "1h" - class: BigbluebuttonUpdateServerConfigs + class: BigbluebuttonUpdateServerConfigsWorker queue: low description: "Updates the server configs that are stored locally. Same as 'rake bigbluebutton_rails:server_configs:update'." @@ -58,4 +64,4 @@ update_space_relevance_indexes: cron: "0 4 * * *" # daily at 4am class: UpdateSpaceRelevanceIndexesWorker queue: low - description: "Recalculate and update indexes used for ordering spaces in the spaces#index page." \ No newline at end of file + description: "Recalculate and update indexes used for ordering spaces in the spaces#index page." diff --git a/db/migrate/20170207190227_bigbluebutton_rails_to220.rb b/db/migrate/20170207190227_bigbluebutton_rails_to220.rb new file mode 100644 index 000000000..450b8ef23 --- /dev/null +++ b/db/migrate/20170207190227_bigbluebutton_rails_to220.rb @@ -0,0 +1,90 @@ +class BigbluebuttonRailsTo220 < ActiveRecord::Migration + def up + BigbluebuttonMeeting.where(create_time: nil).find_each do |meeting| + meeting.update_attribute(create_time, meeting.start_time.to_i) + end + + remove_column :bigbluebutton_meetings, :start_time + + add_column :bigbluebutton_recordings, :temp_start_time, :decimal, precision: 14, scale: 0 + add_column :bigbluebutton_recordings, :temp_end_time, :decimal, precision: 14, scale: 0 + + BigbluebuttonRecording.find_each do |rec| + rec.update_attributes( + temp_start_time: rec.start_time.to_i, + temp_end_time: rec.end_time.to_i + ) + end + + remove_column :bigbluebutton_recordings, :start_time + remove_column :bigbluebutton_recordings, :end_time + + rename_column :bigbluebutton_recordings, :temp_start_time, :start_time + rename_column :bigbluebutton_recordings, :temp_end_time, :end_time + + BigbluebuttonRecording.find_each do |rec| + rec.update_attributes( + meeting_id: BigbluebuttonRecording.find_matching_meeting(rec).try(:id) + ) + end + + BigbluebuttonRecording.where(meeting_id: nil).find_each do |rec| + rec.update_attributes( + meeting_id: find_matching_meeting_closer_create_time(rec) + ) + end + + BigbluebuttonRecording.where(meeting_id: nil).where.not(room_id: nil).find_each do |rec| + meeting = BigbluebuttonMeeting.create do |m| + creator_data = find_creator_data(rec) + m.server_id = rec.server_id + m.room_id = rec.room_id + m.meetingid = rec.meetingid + m.name = rec.name + m.running = false + m.recorded = true + m.creator_id = creator_data[0] + m.creator_name = creator_data[1] + m.server_url = nil + m.server_secret = nil + m.create_time = rec.start_time + m.ended = true + end + rec.update_attributes(meeting_id: meeting.id) + puts "Created a meeting for the recording id-#{rec.id}: Meeting id-#{meeting.id}" + end + end + + def find_matching_meeting_closer_create_time(recording) + meeting = BigbluebuttonMeeting.where("meetingid = ? AND created_at > ? AND created_at < ?", + recording.meetingid, Time.at(recording.start_time)-2.minutes, Time.at(recording.start_time)+2.minutes).first + + unless meeting.nil? + unless BigbluebuttonRecording.find_by(meeting_id: meeting.id).present? + meeting_id = meeting.id + end + end + + unless meeting_id.nil? + puts "Meeting found for recording id-#{recording.id}: Meeting id-#{meeting.id}" + end + + meeting_id + end + + def find_creator_data(recording) + creator_data = [] + if recording.room.owner.is_a?(User) + creator_id = recording.room.try(:owner).try(:id) + creator_name = recording.room.try(:owner).try(:name) + elsif recording.room.owner.is_a?(Space) + creator_id = recording.room.try(:owner).try(:admins).try(:first).try(:id) + creator_name = recording.room.try(:owner).try(:admins).try(:first).try(:name) + end + creator_data = [creator_id, creator_name] + end + + def down + raise ActiveRecord::IrreversibleMigration, "Can't undo due to loss of values during migration" + end +end diff --git a/db/migrate/20170531162723_bigbluebutton_rails_to220b.rb b/db/migrate/20170531162723_bigbluebutton_rails_to220b.rb new file mode 100644 index 000000000..d360bedfd --- /dev/null +++ b/db/migrate/20170531162723_bigbluebutton_rails_to220b.rb @@ -0,0 +1,21 @@ +class BigbluebuttonRailsTo220b < ActiveRecord::Migration + def up + create_table :bigbluebutton_attendees do |t| + t.string :user_id + t.string :external_user_id + t.string :user_name + t.decimal :join_time, precision: 14, scale: 0 + t.decimal :left_time, precision: 14, scale: 0 + t.integer :bigbluebutton_meeting_id + end + + add_column :bigbluebutton_meetings, :finish_time, :decimal, precision: 14, scale: 0 + add_column :bigbluebutton_meetings, :got_stats, :string + end + + def down + drop_table :bigbluebutton_attendees + remove_column :bigbluebutton_meetings, :finish_time + remove_column :bigbluebutton_meetings, :got_stats + end +end diff --git a/db/schema.rb b/db/schema.rb index 3c9aec794..ec0579d2c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170222180003) do +ActiveRecord::Schema.define(version: 20170531162723) do create_table "activities", force: true do |t| t.integer "trackable_id" @@ -43,12 +43,20 @@ t.string "attachment" end + create_table "bigbluebutton_attendees", force: true do |t| + t.string "user_id" + t.string "external_user_id" + t.string "user_name" + t.decimal "join_time", precision: 14, scale: 0 + t.decimal "left_time", precision: 14, scale: 0 + t.integer "bigbluebutton_meeting_id" + end + create_table "bigbluebutton_meetings", force: true do |t| t.integer "server_id" t.integer "room_id" t.string "meetingid" t.string "name" - t.datetime "start_time" t.boolean "running", default: false t.boolean "recorded", default: false t.datetime "created_at" @@ -59,6 +67,8 @@ t.string "server_secret" t.decimal "create_time", precision: 14, scale: 0 t.boolean "ended", default: false + t.decimal "finish_time", precision: 14, scale: 0 + t.string "got_stats" end add_index "bigbluebutton_meetings", ["meetingid", "create_time"], name: "index_bigbluebutton_meetings_on_meetingid_and_create_time", unique: true, using: :btree @@ -95,15 +105,15 @@ t.string "recordid" t.string "meetingid" t.string "name" - t.boolean "published", default: false - t.datetime "start_time" - t.datetime "end_time" - t.boolean "available", default: true + t.boolean "published", default: false + t.boolean "available", default: true t.datetime "created_at" t.datetime "updated_at" t.text "description" t.integer "meeting_id" - t.integer "size", limit: 8, default: 0 + t.integer "size", limit: 8, default: 0 + t.decimal "start_time", precision: 14, scale: 0 + t.decimal "end_time", precision: 14, scale: 0 end add_index "bigbluebutton_recordings", ["recordid"], name: "index_bigbluebutton_recordings_on_recordid", unique: true, using: :btree From 7e6dc3bcd03118d878ced4a336b599f0587b2bb4 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 6 Dec 2017 17:54:26 -0200 Subject: [PATCH 53/75] Added migrations to copy the timestamp on BBBRecordings to a new column and remove the old timestamp Added migrations to remove the old sart_time column from BBBMeetings and copy the value as timestamp to create_time Fixed the impact caused to views and controllers due to changing the type and name of the columns Updated populate and specs to correctly deal with the new types and column names TODO: There is something pending from spaces view, the "pending approval" button and text are missing # Conflicts: # app/views/manage/_recording_item.html.haml # app/views/shared/_recording_list.html.haml # app/views/spaces/_list_item.html.haml # config/initializers/bigbluebutton_rails.rb # db/schema.rb # lib/tasks/db/populate.rake # spec/controllers/my_controller_spec.rb # spec/controllers/spaces_controller_spec.rb # spec/features/manage/admin_manages_recordings_spec.rb --- .../_bigbluebutton_meeting.html.haml | 4 ++-- app/views/shared/_recording_list.html.haml | 2 +- config/initializers/bigbluebutton_rails.rb | 23 ++++++++++++++++++- spec/factories/bigbluebutton_meetings.rb | 1 - spec/factories/bigbluebutton_recording.rb | 2 +- .../manage/admin_manages_recordings_spec.rb | 2 +- 6 files changed, 27 insertions(+), 7 deletions(-) diff --git a/app/views/public_activity/_bigbluebutton_meeting.html.haml b/app/views/public_activity/_bigbluebutton_meeting.html.haml index c1023fed2..d458646ff 100644 --- a/app/views/public_activity/_bigbluebutton_meeting.html.haml +++ b/app/views/public_activity/_bigbluebutton_meeting.html.haml @@ -20,9 +20,9 @@ = icon_meeting - if meeting.present? - if meeting.room.owner_type == 'User' - = activity_translate('bigbluebutton_meeting.user.create', owner: link_to_trackable(meeting, activity.trackable_type), time: format_date(meeting.start_time)) + = activity_translate('bigbluebutton_meeting.user.create', owner: link_to_trackable(meeting, activity.trackable_type), time: format_date(meeting.create_time)) - elsif meeting.room.owner_type == 'Space' - = activity_translate('bigbluebutton_meeting.space.create', owner: link_to_trackable(meeting, activity.trackable_type), time: format_date(meeting.start_time)) + = activity_translate('bigbluebutton_meeting.space.create', owner: link_to_trackable(meeting, activity.trackable_type), time: format_date(meeting.create_time)) - else = activity_translate('bigbluebutton_meeting.deleted') diff --git a/app/views/shared/_recording_list.html.haml b/app/views/shared/_recording_list.html.haml index 729dbdf83..d54ed6d0f 100644 --- a/app/views/shared/_recording_list.html.haml +++ b/app/views/shared/_recording_list.html.haml @@ -48,7 +48,7 @@ .thread-subtitle .recording-date{ :title => "#{t('.ended_at')}: #{format_date(recording.end_time)}" } - = "#{t('.started_at')} #{format_date(recording.start_time)}" + = "#{t('.started_at')} #{format_date(Time.at(recording.create_time))}" - if show_authors .thread-subtitle diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index 3e2bf7ca7..14ffbba39 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -120,7 +120,7 @@ def short_path # The default ordering for search methods scope :search_order, -> { - order("bigbluebutton_recordings.start_time DESC") + order("bigbluebutton_recordings.create_time DESC") } # Filters a query to return only recordings that have at least one playback format @@ -132,5 +132,26 @@ def short_path scope :no_playback, -> { where.not(id: BigbluebuttonPlaybackFormat.select(:recording_id).distinct) } + + + # Finds the BigbluebuttonMeeting that generated this recording. The meeting is searched using + # the room associated with this recording and the create time of the meeting, taken from + # the recording's ID. + def self.find_matching_meeting(recording) + meeting = nil + + unless recording.nil? or recording.room.nil? + unless recording.start_time.nil? + start_time = recording.start_time + meeting = BigbluebuttonMeeting.where("room_id = ? AND create_time = ?", recording.room.id, start_time).last + if meeting.nil? + meeting = BigbluebuttonMeeting.where("room_id = ? AND create_time DIV 1000 = ?", recording.room.id, start_time).last + end + logger.info "Recording: meeting found for the recording #{recording.inspect}: #{meeting.inspect}" + end + end + + meeting + end end end diff --git a/spec/factories/bigbluebutton_meetings.rb b/spec/factories/bigbluebutton_meetings.rb index 84fa5288a..648f249dd 100644 --- a/spec/factories/bigbluebutton_meetings.rb +++ b/spec/factories/bigbluebutton_meetings.rb @@ -12,7 +12,6 @@ m.recorded false m.running false m.ended false - m.start_time { Time.at(Time.now.to_i + rand(999999)) } m.create_time { Time.now.to_i + rand(999999) } # m.creator_id # m.creator_name diff --git a/spec/factories/bigbluebutton_recording.rb b/spec/factories/bigbluebutton_recording.rb index 34db2fd3e..12a18db89 100644 --- a/spec/factories/bigbluebutton_recording.rb +++ b/spec/factories/bigbluebutton_recording.rb @@ -13,7 +13,7 @@ r.sequence(:name) { |n| "Rec #{n}" } r.sequence(:description) { |n| "My recording number #{n}" } r.published true - r.start_time { Time.now - rand(5).hours } + r.start_time { (Time.now - rand(5).hours).to_i } r.end_time { Time.now + rand(5).hours } r.available true end diff --git a/spec/features/manage/admin_manages_recordings_spec.rb b/spec/features/manage/admin_manages_recordings_spec.rb index 30955aba3..be05f73cb 100644 --- a/spec/features/manage/admin_manages_recordings_spec.rb +++ b/spec/features/manage/admin_manages_recordings_spec.rb @@ -15,7 +15,7 @@ it { should have_content(recording.name) } it { should have_content(recording.description) } it { should have_content(recording.recordid) } - it { should have_content(I18n.l(recording.start_time, format: :long)) } + it { should have_content(I18n.l(Time.at(recording.start_time), format: :long)) } it { should have_content(recording.room.name) } end From 5d7d846f22bcff0bf51db4edc52f38ebe7b44313 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Thu, 7 Dec 2017 14:30:33 -0200 Subject: [PATCH 54/75] Fix 'room.attendees', it's now 'room.current_attendees' And make it a bit cleaner in spaces/webconference the list of people currently in the meeting. # Conflicts: # app/controllers/spaces_controller.rb # app/views/spaces/webconference.html.haml # config/locales/en/mconf.yml # config/locales/pt-br/mconf.yml --- app/controllers/spaces_controller.rb | 10 +--- .../_activity_list.html.haml | 6 +- app/views/shared/_recording_list.html.haml | 4 +- app/views/spaces/webconference.html.haml | 8 +-- spec/controllers/spaces_controller_spec.rb | 59 ++----------------- 5 files changed, 16 insertions(+), 71 deletions(-) diff --git a/app/controllers/spaces_controller.rb b/app/controllers/spaces_controller.rb index b83e09c69..d7906ecd6 100644 --- a/app/controllers/spaces_controller.rb +++ b/app/controllers/spaces_controller.rb @@ -160,15 +160,7 @@ def leave # there, the before_filters and other methods don't really match. It's more related to spaces then # to webconference rooms. def webconference - # FIXME: Temporarily matching users by name, should use the userID - @webconf_attendees = [] - unless @webconf_room.attendees.nil? - @webconf_room.attendees.each do |attendee| - user = User.where(id: attendee.user_id).first - @webconf_attendees << user unless user.nil? - end - @webconf_attendees.uniq! - end + @webconf_attendees = @webconf_room.current_attendees end # Action used to show the recordings of a space diff --git a/app/views/custom_bigbluebutton_servers/_activity_list.html.haml b/app/views/custom_bigbluebutton_servers/_activity_list.html.haml index 8bee25d34..563d4c8fa 100644 --- a/app/views/custom_bigbluebutton_servers/_activity_list.html.haml +++ b/app/views/custom_bigbluebutton_servers/_activity_list.html.haml @@ -22,7 +22,7 @@ = t('bigbluebutton_rails.servers.activity.ended_at', :time => room.end_time.strftime("%F, %R UTC%z"), :forcibly => room.has_been_forcibly_ended) .meeting-attendees - - unless room.attendees.count == 0 + - unless room.current_attendees.count == 0 = t('bigbluebutton_rails.servers.activity.participants', :total => room.participant_count, :mods => room.moderator_count) %table.table.table-bordered.table-condensed %thead @@ -31,8 +31,8 @@ %th= t('bigbluebutton_rails.attendees.id') %th= t('bigbluebutton_rails.attendees.name') %tbody - - room.attendees.each do |attendee| + - room.current_attendees.each do |attendee| %tr %td= attendee.role %td= attendee.user_id - %td= attendee.full_name + %td= attendee.user_name diff --git a/app/views/shared/_recording_list.html.haml b/app/views/shared/_recording_list.html.haml index d54ed6d0f..aed4557a7 100644 --- a/app/views/shared/_recording_list.html.haml +++ b/app/views/shared/_recording_list.html.haml @@ -47,8 +47,8 @@ %span.recording-description= recording.description .thread-subtitle - .recording-date{ :title => "#{t('.ended_at')}: #{format_date(recording.end_time)}" } - = "#{t('.started_at')} #{format_date(Time.at(recording.create_time))}" + .recording-date{ :title => "#{t('.ended_at')}: #{format_date(Time.at(recording.end_time))}" } + = "#{t('.started_at')} #{format_date(Time.at(recording.start_time))}" - if show_authors .thread-subtitle diff --git a/app/views/spaces/webconference.html.haml b/app/views/spaces/webconference.html.haml index efbda4692..dc70c5ab8 100644 --- a/app/views/spaces/webconference.html.haml +++ b/app/views/spaces/webconference.html.haml @@ -43,14 +43,14 @@ - else #webconference-all-users %h4= t('.webconference.attendees.all_users') + ":" - - @webconf_room.attendees.each_with_index do |attendee, i| + - @webconf_attendees.each_with_index do |attendee, i| - if attendee.role == :moderator = icon_user title: "Moderator" %span - - unless i == @webconf_room.attendees.size-1 - = "#{attendee.full_name}, " + - unless i == @webconf_attendees.size-1 + = "#{attendee.user_name}, " - else - = attendee.full_name + = attendee.user_name %h4= t('.webconference.attendees.registered_users') + ":" - @webconf_attendees.each do |user| = render :partial => 'users/simple_user', :locals => { :user => user } diff --git a/spec/controllers/spaces_controller_spec.rb b/spec/controllers/spaces_controller_spec.rb index 2f925ff21..e33922ea6 100644 --- a/spec/controllers/spaces_controller_spec.rb +++ b/spec/controllers/spaces_controller_spec.rb @@ -516,8 +516,6 @@ end end - - it "#leave" describe "#webconference" do @@ -539,79 +537,34 @@ context "assigns @webconf_attendees" do context "when there are attendees" do - let!(:user2) { FactoryGirl.create(:user) } let(:attendee1) { attendee = BigbluebuttonAttendee.new attendee.user_id = user.id - attendee.full_name = user.username + attendee.user_name = user.username attendee.role = :attendee attendee } let(:attendee2) { attendee = BigbluebuttonAttendee.new - attendee.user_id = user2.id - attendee.full_name = user2.username + attendee.user_id = 'another-id' + attendee.user_name = 'another-username' attendee.role = :moderator attendee } before(:each) { - BigbluebuttonRoom.any_instance.stub(:attendees).and_return([attendee1, attendee2]) + BigbluebuttonRoom.any_instance.stub(:current_attendees).and_return([attendee1, attendee2]) get :webconference, :id => space.to_param } - it { should assign_to(:webconf_attendees).with([user, user2]) } + it { should assign_to(:webconf_attendees).with([attendee1, attendee2]) } end context "when there are no attendees" do before(:each) { - BigbluebuttonRoom.any_instance.stub(:attendees).and_return([]) + BigbluebuttonRoom.any_instance.stub(:current_attendees).and_return([]) get :webconference, :id => space.to_param } it { should assign_to(:webconf_attendees).with([]) } end - - context "doesn't replicate users" do - let(:attendee1) { - attendee = BigbluebuttonAttendee.new - attendee.user_id = user.id - attendee.full_name = user.username - attendee.role = :attendee - attendee - } - let(:attendee2) { - attendee = BigbluebuttonAttendee.new - attendee.user_id = user.id - attendee.full_name = user.username - attendee.role = :moderator - attendee - } - before(:each) { - BigbluebuttonRoom.any_instance.stub(:attendees).and_return([attendee1, attendee2]) - get :webconference, :id => space.to_param - } - it { should assign_to(:webconf_attendees).with([user]) } - end - - context "ignores users that are not registered" do - let(:attendee1) { - attendee = BigbluebuttonAttendee.new - attendee.user_id = user.id - attendee.full_name = user.username - attendee.role = :attendee - attendee - } - let(:attendee2) { - attendee = BigbluebuttonAttendee.new - attendee.user_id = "anything-invalid" - attendee.full_name = "Invited User" - attendee.role = :moderator - attendee - } - before(:each) { - BigbluebuttonRoom.any_instance.stub(:attendees).and_return([attendee1, attendee2]) - get :webconference, :id => space.to_param - } - it { should assign_to(:webconf_attendees).with([user]) } - end end end From eda3f0aaa0b6a96ae235b9dab40a931db162ff36 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Thu, 7 Dec 2017 17:10:44 -0200 Subject: [PATCH 55/75] More fixes after the last upgrade of bigbluebutton_rails --- app/views/manage/_recordings.html.haml | 2 +- config/initializers/bigbluebutton_rails.rb | 23 +--------------------- lib/tasks/db/populate.rake | 2 +- spec/lib/bigbluebutton_rails_spec.rb | 19 ------------------ 4 files changed, 3 insertions(+), 43 deletions(-) diff --git a/app/views/manage/_recordings.html.haml b/app/views/manage/_recordings.html.haml index 7bbc33971..87cfc7e13 100644 --- a/app/views/manage/_recordings.html.haml +++ b/app/views/manage/_recordings.html.haml @@ -62,7 +62,7 @@ %div = t('.created_at') + ": " %span.tooltipped{title: recording.start_time} - = I18n.l(recording.start_time, format: :long) + = I18n.l(Time.at(recording.start_time), format: :long) .playback-types %h5= t(".playback_links") diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index 14ffbba39..3e2bf7ca7 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -120,7 +120,7 @@ def short_path # The default ordering for search methods scope :search_order, -> { - order("bigbluebutton_recordings.create_time DESC") + order("bigbluebutton_recordings.start_time DESC") } # Filters a query to return only recordings that have at least one playback format @@ -132,26 +132,5 @@ def short_path scope :no_playback, -> { where.not(id: BigbluebuttonPlaybackFormat.select(:recording_id).distinct) } - - - # Finds the BigbluebuttonMeeting that generated this recording. The meeting is searched using - # the room associated with this recording and the create time of the meeting, taken from - # the recording's ID. - def self.find_matching_meeting(recording) - meeting = nil - - unless recording.nil? or recording.room.nil? - unless recording.start_time.nil? - start_time = recording.start_time - meeting = BigbluebuttonMeeting.where("room_id = ? AND create_time = ?", recording.room.id, start_time).last - if meeting.nil? - meeting = BigbluebuttonMeeting.where("room_id = ? AND create_time DIV 1000 = ?", recording.room.id, start_time).last - end - logger.info "Recording: meeting found for the recording #{recording.inspect}: #{meeting.inspect}" - end - end - - meeting - end end end diff --git a/lib/tasks/db/populate.rake b/lib/tasks/db/populate.rake index 135d0f802..8afe6536c 100644 --- a/lib/tasks/db/populate.rake +++ b/lib/tasks/db/populate.rake @@ -259,7 +259,7 @@ namespace :db do recording.name = Populator.words(3..5).titleize recording.published = true recording.available = true - recording.start_time = @created_at_start..Time.now + recording.start_time = (Time.now-1.year).to_i..Time.now.to_i recording.end_time = recording.start_time + rand(5).hours recording.description = Populator.words(5..8) recording.size = rand((20*1024**2)..(500*1024**2)) #size ranging from 20Mb to 500Mb diff --git a/spec/lib/bigbluebutton_rails_spec.rb b/spec/lib/bigbluebutton_rails_spec.rb index 58e8a816d..bf4d9ca63 100644 --- a/spec/lib/bigbluebutton_rails_spec.rb +++ b/spec/lib/bigbluebutton_rails_spec.rb @@ -166,23 +166,4 @@ end - describe "#select_server" do - let(:target) { BigbluebuttonRails.configuration } - let(:room) { FactoryGirl.create(:bigbluebutton_room) } - - it { target.should respond_to(:select_server) } - it { target.select_server.should be_a(Proc) } - - context "calls room#server_considering_secret" do - before { - Site.current.update_attributes(domain: "localhost:4000") - room.should_receive(:server_considering_secret).with(:create).and_return('expected result') - } - - it { - target.select_server.call(room, :create).should eql('expected result') - } - end - end - end From 761c78a1d317a97d51ca6c2b631090f2dd5b9768 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 8 Dec 2017 12:17:40 -0200 Subject: [PATCH 56/75] Remove unnecessary spaces from locale file --- config/locales/en/mconf.yml | 202 ++++++++++++++++++------------------ 1 file changed, 101 insertions(+), 101 deletions(-) diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 358e796a5..9ec14ba40 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -290,7 +290,7 @@ en: all_rights_reserved: "All rights reserved" any_field: "Any field" are_you_sure: "Are you sure?" - attachment: + attachment: add: "Add attachment" created: "Attachment added" delete: "Delete attachment" @@ -301,10 +301,10 @@ en: not_permission: "%{user} cannot delete %{file}. " file: "File: " filename: "%{size} files from %{name}.zip" - home: + home: one: "File in space %{space}" info: "Document info" - more: + more: one: "and one more attachment..." other: "and more %{count} attachments..." new: "New attachment" @@ -312,7 +312,7 @@ en: one: Attachment other: Attachments repository_disabled: "This space's document repository is not enabled." - selected: + selected: none: "No files selected" one: " file selected" other: " files selected" @@ -337,7 +337,7 @@ en: title: "Upload a new file" attendeePW: "Attendee Password" author: "Uploaded by" - avatar: + avatar: created: "Picture uploaded successfully" crop: "Crop your picture" select: "Select picture" @@ -346,32 +346,32 @@ en: back: Back back_to_inbox: "Back to inbox" back_to_sent: "Back to sent" - bbb_room: + bbb_room: attendeePW: "Attendee Password" edit: "Configure your webconference room" moderatorPW: "Moderator Password" private: "Private Room" beta: beta bigbluebutton: BigBlueButton - bigbluebutton_rails: + bigbluebutton_rails: activity_monitor: "Activity monitor" - attendees: + attendees: id: ID name: Name role: Role new_room: "New room" new_server: "New server" - rooms: - external: + rooms: + external: header: "This meeting was created from another application.
You must provide a name and a password to join:" - index: + index: back_to_server_list: "Back to server list" invite: Invite new_room: "New room" invite: Invite join_mobile: "Join mobile" - servers: - activity: + servers: + activity: activity: Activity done: Done! ended_at: "Ended at: %{time} (forcibly ended: %{forcibly})" @@ -385,13 +385,13 @@ en: seconds: seconds started_at: "Started at: %{time}" title: "Server activity monitor" - index: + index: access_links: "Access links" view_room_list: "View room list" view_rooms: "View rooms" view_server_list: "View server list" body: Body - button: + button: accept: Accept cancel: Cancel confirm: Confirm @@ -416,13 +416,13 @@ en: update: Update upload: Upload by: by - cafe: + cafe: login: "Login using CAFe" - calendar: + calendar: my: "My Calendar" one: Calendar cancel: Cancel - caption: + caption: add: "Add a caption" certificate_authentication: error: @@ -439,7 +439,7 @@ en: close: Close collapse: less collapse_arrows: "<< less" - comment: + comment: add: "Add a comment" add_new: "Add a new comment" by: "comment by %{author}" @@ -457,7 +457,7 @@ en: create: Create create_event: "Create Event" created_time_ago: "Created %{time} ago" - crop_image: + crop_image: description: "Select a part of the image to crop" title: "Crop image" custom_bigbluebutton_playback_types: @@ -611,13 +611,13 @@ en: showing_server: "Showing server '%{server}'" unpublish_recordings_title: "Unpublish recordings" unpublish_recordings_btn: "Unpublish recordings" - date: + date: at: at start: "Start date" undefined: Undefined days: Days dblclick: "Double click to edit..." - delete: + delete: confirm: "Delete %{element}?" invitation: "Delete invitation to %{user}?" one: Delete @@ -644,7 +644,7 @@ en: resend_confirmation_email: "Resend confirmation email" strategies: ldap_authenticatable: - create_failed: "Unable to create internal structures for your LDAP account, please contact an administrator" + create_failed: "Unable to create internal structures for your LDAP account, please contact an administrator" invalid_bind: "Unable to bind to the LDAP server, check the LDAP configuration in the website administration" ldap_not_enabled: "LDAP is not enabled in this website" missing_username: "Unable to find the username from the LDAP user retrieved from the LDAP server, please contact an administrator" @@ -656,11 +656,11 @@ en: edit: Edit edit_hours: "Edit hours" edit_profile: "Edit profile" - email: + email: account_activated: "Your account at %{sitename} has been activated successfully." commas: "Separated by commas" confirm: "You need now to confirm your registration by clicking on %{url} " - invitation_result: + invitation_result: admin_side: "%{name} has %{action} the invitation to space %{spacename}" user_side: "The administrator of %{spacename} has %{action} your join request" kind_regards: "Kind regards," @@ -672,16 +672,16 @@ en: enable: Enable enabled: Enabled end: End - error: + error: change: "Invalid change" credentials: "Invalid credentials" - e403: + e403: description: "The page you were looking for is forbidden. You are not allowed to perform that action." title: "Forbidden" - e404: + e404: description: "Oops, the page \"%{url}\" does not exist." title: "Not found" - e500: + e500: description: "We're sorry, but something went wrong. We've been notified about this issue and we'll take a look at it shortly." title: "Error" mistyped_or_moved: "You may have mistyped the address or the page may have been moved" @@ -690,7 +690,7 @@ en: other: Errors vcc_warning: "Warning:" fax: Fax - feedback: + feedback: create: check_mail: "Please check the email you informed in the feedback form, it seems wrong." fill_fields: "Please fill in all the fields in the form to send your feedback." @@ -700,11 +700,11 @@ en: title: "Feedback" send: "Send feedback" send_us: "Send us feedback!" - webconf: + webconf: stop_countdown: "Click here to stop it from closing and use it to browse this site" title: "Thank you for participating in this conference!" warning: "This window will be automatically closed in %{seconds} seconds" - find: + find: browse: Browse find_in: "Find in:" frontpage: @@ -720,16 +720,16 @@ en: title: "Create a new account" from: From getting_started: "Getting started!" - group: + group: other: "Mailing lists" - hcard: + hcard: not_found: "hCard not found" - header_global: + header_global: welcome: "Welcome, %{user}" hello: Hello help: Help his_message_reads_thus: "His message reads thus" - home: + home: activity: "Recent activity" invite_url: "Invite URL" my: "My Home" @@ -737,23 +737,23 @@ en: no_spaces: "You do not belong to any spaces. You can see the spaces available here." one: home view_invite_url: "View Invite URL" - icons: + icons: unread_message: "Unread message!" unread_message_by_receiver: "This message has not yet been read by the receiver" im: IM - inbox: + inbox: my: "My Inbox (%{checked})" one: "Inbox (%{checked})" - unread_text: + unread_text: one: "You have %{count} unread message!" other: "You have %{count} unread messages!" - information: + information: expand: "Expand List.." information1: "These are the spaces you belong to" information3: "These are the latest messages or events that you have created" information5: "These are the upcoming events of other spaces." reduce: "Reduce List.." - internet: + internet: on_the: "On the Internet" ppal: Internet invitation: @@ -768,23 +768,23 @@ en: info_users: "You can see the current list of users of the space in %{users_url} " introducer: Introducer label: "Customise your invitation message" - legend: + legend: URL: "'URL' will be replaced in the message by the URL of the invitation." name: "'Name' will be replaced in the message by the receiver's name." logout_and_reload: "You are not the user that received this invitation, please logout and try again" - message_with_start_date: + message_with_start_date: in_person: "

I would like to invite you to event 'event_name' in space %{space} on 'event_date'.

To accept my invitation please visit %{url}

You can find more information about this event in event_url

Kind regards,

%{username}
%{useremail}
%{userorg}

" - message_without_start_date: + message_without_start_date: in_person: "

I would like to invite you to event 'event_name' in space %{space}.

To accept my invitation please visit %{url}

You can find more information about this event in event_url

Kind regards,

%{username}
%{useremail}
%{userorg}

" not_accepted: "not accepted" - not_pending: + not_pending: other: "There are no pending invitations" pending: other: "Pending invitations" rejoin_space: "If you would like to request membership again please go to %{space_url} " select_all_users: "Select all users" show_all_users: "Show all users" - tab: + tab: title1: "Unregistered users" title2: "Registered users" title: "Invite people" @@ -793,7 +793,7 @@ en: to_event: "%{username} invites you to event %{eventname} in space %{space}" will_invite: "People you will invite" yes_accepted: accepted - invite: + invite: bad_format: "(bad formatting)" email: "email to %{email}" title: "Invitation to participate in a webconference" @@ -1010,6 +1010,7 @@ en: available_false: "Not available" available_true: "Available" confirm_delete: "Are you sure you want to delete this recording? This will also remove the files from the server and is irreversible. Be sure you have downloaded or backed up this recording before proceeding." + created_at: "Created at" delete: "Delete recording" edit: "Edit recording" filter_name: "Filter by name, description, or record ID" @@ -1029,7 +1030,6 @@ en: size: "Size" unpublish: "Unpublish recording" unpublished: "Unpublished" - created_at: "Created at" recordings_list: filter_count_with_text: "Found %{count} recordings for filter \"%{value}\"" filter_count_empty: "Found %{count} recordings" @@ -1088,7 +1088,7 @@ en: start: "Start a new meeting" your_url: "Your URL" my_friends: "My friends" - name: + name: one: Name other: Names next: Next @@ -1102,7 +1102,7 @@ en: organization: Organization organizer: Organisers other: Other - password: + password: confirm: "Confirm password" one: Password request: "Password reset in %{sitename}" @@ -1119,7 +1119,7 @@ en: default: "%{username} has change your role in %{stage} to %{role}. " event: "%{username} has change your role in event %{event} to %{role}. " space: "%{username} has change your role in space %{space} to %{role}. " - subject: + subject: default: "%{username} has change your role in %{stage} " event: "%{username} has change your role in event %{event} " space: "%{username} has change your role in space %{space} " @@ -1129,7 +1129,7 @@ en: success: "Permissions updated" failure: "Problem updating permissions" personal_information: "Personal information" - phone: + phone: mobile: Mobile one: Phone plural: Telephones @@ -1140,10 +1140,10 @@ en: post: deleted: "Comment %{postname} has been deleted" reply: "in reply to" - home: + home: one: "Message in space %{space}" latest: "Latest messages" - more: + more: one: "and one more message..." other: "and more %{count} messages..." none_created: "No message created" @@ -1167,11 +1167,11 @@ en: preferences: Preferences previous: Previous privacy: Privacy - profile: + profile: deleted: "Profile deleted successfully" - description: + description: add: "Short bio" - error: + error: exist: "Your profile already exists" header_title: "User profile" must_create: "Please create your profile first" @@ -1205,12 +1205,12 @@ en: province: Province public: Public read_more: "Read more" - recent: + recent: activity: "Recent activity" - recent_activity: + recent_activity: empty: "You still have no recent activity to be shown. Join spaces and start interacting to have this area filled." tooltip: "Here you can find the newest events and messages of the spaces you belong to" - recording: + recording: automatic: Automatic box_title: Recording button_continue: "Continue recording" @@ -1219,7 +1219,7 @@ en: button_start: "Start recording" manual: Manual none: None - register: + register: and_participate: "Register To Participate" and_participate_description: "To participate in the event you should register" and_participate_description_with_login: "To participate in the event you should register or login" @@ -1238,21 +1238,21 @@ en: reply: Reply reply_to: "Reply to:" reply_to_words: "Reply to %{words}" - repository: + repository: download: Download loading: "Refreshing document repository..." need_javascript: "Please, active javascript to enjoy document repository" one: Docs remove: Remove search: "Document Search:" - request: + request: info: "Your request to join the space has been successfully sent to the space admins. An admin will take care of it as soon as possible" sent: "Request sent!" recaptcha: errors: verification_failed: "You have not passed the captcha challenge, please try again." rnp: RNP - role: + role: added: "%{role} role successfully added to %{agent}" editing: "Editing role" listing: "Listing roles" @@ -1260,10 +1260,10 @@ en: one: Role stage_type: "Stage Type" sucess_update: "Role updated successfully..." - room: + room: other: Rooms - rooms: - invite: + rooms: + invite: join_from_desktop: "In this page you can join the conference from a desktop. To join from a mobile device click here." join_from_mobile: "In this page you can join the conference from a mobile device. To join from a desktop click here." name: "Name:" @@ -1272,7 +1272,7 @@ en: password_filled: "This room is public. The password was auto-filled with the attendee password." password_role: "Enter the attendee or moderator password." status: "Meeting status: " - join: + join: msg1: "The meeting has not started yet, you must wait for the moderator to join." msg2: "Your browser will automatically refresh and join the meeting when it starts." title: "Room: %{name}" @@ -1282,8 +1282,8 @@ en: save: Save select_image: "Select an image, please" send: Send - session: - error: + session: + error: exist: "You are already logged in" fill: "Please fill in this data" one: Session @@ -1295,7 +1295,7 @@ en: password: "Password" new: title: "Sign in" - session_locales: + session_locales: create: success: "Application language changed to %{value}" error: "Unable to change application language to %{value}" @@ -1372,10 +1372,10 @@ en: updated: "Site configurations updated" size: Size skype: Skype - space: + space: about: About access_forbidden: "This operation is only available to members of the space" - add_user: + add_user: other: "Add users to the space" add_user_other: "" all: "Spaces" @@ -1392,14 +1392,14 @@ en: description: "Space Description" description_none: "A space description must be given to create a new space" disable: "Disable space" - edit: + edit: webconference_passwords: "Webconference room passwords" edit_description: "edit description" edit_name: "edit name" enable: "Enable space" event_count: "%{count} events" - index: - filters: + index: + filters: all: "All spaces" my_spaces: "My spaces" order: @@ -1413,14 +1413,14 @@ en: is_private: "is a private space. Send a join request to the administrator of this space to let you in" is_private_html: "%{name} is a private space. To access it, sign in and send a join request to the administrators of this space." join: "Join this space" - join_invitation: + join_invitation: clarify_registered: "Please introduce password in order to join this space." clarify_unregistered: "Please introduce your full name and a password in order to register onto the Mconf and join this space." - leave: + leave: leave_this_space: "Leave this space" success: "You left the space %{space_name}" logo: "Space Logo" - logo_selected: + logo_selected: default_message: "Space logo" enter_text: "Enter a text to generate logos:" generate_logo: Generate @@ -1437,7 +1437,7 @@ en: name_none: "A space name must be given to create a new space" one: Space other: Spaces - people_in_conference: + people_in_conference: one: "%{count} participant in the room." other: "%{count} participant in the room." performances: @@ -1447,7 +1447,7 @@ en: possesion: "My Spaces" post_count: "%{count} posts" private: "Private spaces" - public: + public: one: "Public space" other: "Public spaces" remove_user: @@ -1496,7 +1496,7 @@ en: none: "No upcoming events" title: "Upcoming events" today: "There are no events for today" - spaces: + spaces: admin_tabs: admissions: "Admissions" general_options: "General options" @@ -1527,9 +1527,9 @@ en: need_join_to_access: "You need to join this space to access it. Send a join request to the administrators." not_found: "The space \"%{permalink}\" was not found.
Would you like to search for it in all spaces?" unapproved: "This space was not yet approved by an administrator." - index: + index: create_new_space: "Create a new space" - list_format: + list_format: list: "List" thumbnails: "Thumbnails" search: @@ -1638,11 +1638,11 @@ en: webconference_tabs: access: "Webconference access" recordings: "List of recordings" - sponsors: + sponsors: prav: "Projetos em
Áudio e Vídeo" rnp: "Rede Nacional de
Ensino e Pesquisa" stage_type: "Stage type" - statistics: + statistics: show: description: "This page shows a few statistics of this website. These statistics are in real-time and reflect the state of the website in this exact instant." table: @@ -1663,7 +1663,7 @@ en: shib_warning_html: "This field is used as the unique identifier for Shibboleth users. If you modify it your users may be unable to access their accounts, before changing it read this page." text: Text the_string: "the string" - thread: + thread: add: "Post message to wall" comments: "%{children} comments" compact_view: "Switch to compact view" @@ -1674,20 +1674,20 @@ en: see_less: "Want to compress all messages?" see_more: "Want to see more about the messages?" show_last_comment: "Showing last %{size} comments of %{children}" - time: + time: from: from to: to - timezone: + timezone: one: Timezone set_up: "You have not set up your time zone. Set it up now" title: Title - title_formal: + title_formal: mr: Mr. mrs: Mrs. ms: Ms. to: to today: Today - tooltip: + tooltip: admin: "This section shows the people that have administrator rights in this space" advanced_editor: "This editor allows you to: view source html; change the font style, font size, text color and alignment of the text; insert/edit links; add attachments and tags" doc_search: "Use the fields in this side to filter and update the docs table with your search results" @@ -1715,8 +1715,8 @@ en: url: Website url_add: "Add your Website" url_plain: URL - user: - add: + user: + add: instruction: "To add new users enter one or several email addresses separated by \" \", \",\" or \";\" and register them" note: "For example: \"John Silver \"<\"jsilver@example.com\">\", jct@dit.es; Aaron aaron@example.net and click on 'Register as User' will register those 3 email addresses as members of the space and will send a validation email to them." admin: Admin @@ -1732,8 +1732,8 @@ en: filter: "Invite by user name" group_invite_email: "Invite by e-mail" include_registered: "Include registered users" - index: - user_list: + index: + user_list: header: "Users in this space: %{count}" invite: "Invite people" invite_email: "Invite people by email" @@ -1754,12 +1754,12 @@ en: registered: "Thanks for registering! We have just sent instructions on how to activate your user account" request_confirmation: "Request confirmation email" request_password: "Request password" - resend_confirmation_email: + resend_confirmation_email: already_confirmed: "The email '%{email}' was already confirmed" link: "Resend confirmation email" success: "Confirmation email sent to '%{email}'" reset_password: "Reset your password" - results_count: + results_count: one: "People, %{users_size} result" other: "People, %{users_size} results" results_found: "Users found" @@ -1828,18 +1828,18 @@ en: empty_file: "{file} is empty, please select files again without it." no_files: "No files to upload." on_leave: "The files are being uploaded, if you leave now the upload will be cancelled." - vCard: + vCard: corrupt: "The vCard you sent is corrupted or is a non-supported version" message: "Use your vCard to automatically fill in your profile" upload: "Upload your vCard" vcc: Mconf vcc_mail_label: "[Mconf]" - version: + version: new: "New version" one: Version view: "View" view_more: "View more" - webconference: + webconference: invite_webconference: "Invite people to the webconference" join: Join my_webconference: "My webconference room" @@ -1847,7 +1847,7 @@ en: not_running: "not running" one: Webconference running: running - space: + space: join_now: "Join now" see_more: "see more" start_now: "Start now!" From c67a052c1642569c46cdaec80f0892a3f286c1ba Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 8 Dec 2017 12:36:13 -0200 Subject: [PATCH 57/75] Accept timestamps in the format_date helper --- app/helpers/dates_helper.rb | 7 ++++++- spec/helpers/dates_helper_spec.rb | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/helpers/dates_helper.rb b/app/helpers/dates_helper.rb index 76a8f2437..259949422 100644 --- a/app/helpers/dates_helper.rb +++ b/app/helpers/dates_helper.rb @@ -23,7 +23,12 @@ def formatted_time_ago(date, options = {}, time_ago_options = {}) # Formats a date object to be shown in a view def format_date(date, format=:short) if date.present? - I18n.l(date, format: format) + if date.is_a?(Integer) && date.to_s.length == 13 + value = Time.at(date/1000) + else + value = Time.at(date) + end + I18n.l(value, format: format) else nil end diff --git a/spec/helpers/dates_helper_spec.rb b/spec/helpers/dates_helper_spec.rb index 4ccfff564..5e3635515 100644 --- a/spec/helpers/dates_helper_spec.rb +++ b/spec/helpers/dates_helper_spec.rb @@ -40,5 +40,10 @@ format_date(d).should eql("05 Ago, 12:00") } end + + context "accepts timestamps" do + it { format_date(1490108071).should eql("21 Mar 14:54") } + it("with microseconds") { format_date(1490108071000).should eql("21 Mar 14:54") } + end end end From 0ca95defe8edc5dddeba155b67e9f555d7b7de35 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 8 Dec 2017 12:19:04 -0200 Subject: [PATCH 58/75] Remove unnecessary after_update hook on BigbluebuttonServer Was mistakenly pulled from a fork that needs the hook. --- config/initializers/bigbluebutton_rails.rb | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index 3e2bf7ca7..37123da96 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -74,17 +74,6 @@ def short_path } end - BigbluebuttonServer.instance_eval do - - # When the URL of the default server changes, change the URL of all institution servers. - after_update if: :url_changed? do - if BigbluebuttonServer.default.id == self.id - BigbluebuttonServer.where.not(id: self.id).update_all(url: self.url) - end - end - - end - BigbluebuttonRecording.instance_eval do # Search recordings based on a list of words From 4157159eee32bc33336171fde21faace4b95854b Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 8 Dec 2017 12:21:29 -0200 Subject: [PATCH 59/75] Add more tests for notifications created when users are registered --- spec/models/user_spec.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index e5a1d1de2..c138b5824 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -438,6 +438,31 @@ end end end + + describe 'user approval notifications' do + let(:admin) { User.superusers.first } + + context 'dont send notifications if the site doesnt require approval' do + before { + Site.current.update_attributes(require_registration_approval: false) + @user = FactoryGirl.create(:user, approved: false) + } + + it { AdminMailer.should have_queue_size_of(0) } + it { AdminMailer.should_not have_queued(:new_user_waiting_for_approval, admin.id, @user.id) } + end + + context 'send notifications if site requires approval' do + before { Site.current.update_attributes(require_registration_approval: true) } + + context 'dont send notifications if the user is created with approved: true' do + before { @user = FactoryGirl.build(:user, approved: true) } + + it { AdminMailer.should have_queue_size_of(0) } + it { AdminMailer.should_not have_queued(:new_user_waiting_for_approval, admin.id, @user.id) } + end + end + end end describe "on destroy" do From 77fc1cfe3eef242cc4f14ca714433438ef3b60d4 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 8 Dec 2017 18:45:38 -0200 Subject: [PATCH 60/75] Fix setting the superuser attribute when updating a user --- app/controllers/users_controller.rb | 3 ++- app/helpers/application_helper.rb | 5 +++++ app/models/user.rb | 5 ++++- spec/controllers/users_controller_spec.rb | 17 +++++++++++++++++ spec/models/user_spec.rb | 15 +++++++++++++++ 5 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 497c84e93..6595c04cf 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -11,6 +11,7 @@ class UsersController < InheritedResources::Base include Mconf::ApprovalControllerModule # for approve and disapprove include Mconf::DisableControllerModule # for enable, disable include Mconf::SelectControllerModule # for select + include ApplicationHelper respond_to :html, except: [:select, :current, :fellows] respond_to :json, only: [:select, :current, :fellows] @@ -77,7 +78,7 @@ def update end if params[:user] && params[:user].has_key?(:superuser) - is_superuser = params[:user].delete(:superuser) + is_superuser = value_to_boolean(params[:user].delete(:superuser)) if current_user.superuser? && current_user != @user @user.set_superuser!(is_superuser) end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index a2a4883f8..6a61cc72e 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -209,6 +209,11 @@ def captcha_tags end end + # Just a wrapper around the Rails method to convert values to boolean + def value_to_boolean(value) + ActiveRecord::ConnectionAdapters::Column.value_to_boolean(value) + end + private # Based on http://www.igvita.com/2007/03/15/block-helpers-and-dry-views-in-rails/ diff --git a/app/models/user.rb b/app/models/user.rb index d9ea4dfc8..b1e05431f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -381,12 +381,15 @@ def set_superuser!(value=true) def cant_record_reason(room) ability = Abilities.ability_for(self) can = ability.can?(:record_meeting, room) + msg = nil if !can if !self.can_record - I18n.t('users.cant_record_reason.user_cannot_record') + msg = I18n.t('users.cant_record_reason.user_cannot_record') end end + + msg end protected diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index 241aa0daf..8fd40e822 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -368,6 +368,23 @@ it { response.should redirect_to edit_user_path(user2) } it { user2.superuser.should be(false) } end + + # because this is the way the checkbox value gets in the controller + context "works when setting the flag as an integer as a string" do + let(:user) { FactoryGirl.create(:superuser) } + let(:user2) { FactoryGirl.create(:superuser) } + + before(:each) do + sign_in user + + put :update, id: user2.to_param, user: { superuser: '0' } + user2.reload + end + + it { response.status.should == 302 } + it { response.should redirect_to edit_user_path(user2) } + it { user2.superuser.should be(false) } + end end context "trying to update disabled flag" do diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index c138b5824..1b01de916 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1200,6 +1200,21 @@ end end + describe "#cant_record_reason" do + let(:room) { FactoryGirl.create(:bigbluebutton_room) } + let(:user) { FactoryGirl.create(:user, bigbluebutton_room: room) } + + context "returns the reason if the user can't record" do + before { user.update_attributes(can_record: false) } + it { user.cant_record_reason(room).should eql(I18n.t('users.cant_record_reason.user_cannot_record')) } + end + + context "returns nil if the user can record" do + before { user.update_attributes(can_record: true) } + it { user.cant_record_reason(room).should be_nil } + end + end + # TODO: :index is nested into spaces, how to test it here? describe "abilities", :abilities => true do set_custom_ability_actions([ From 5b8a12852c341e59be338a63a06bb09012493f53 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 13 Dec 2017 00:18:23 -0200 Subject: [PATCH 61/75] Add first version of Dockerfile and docker-compose.yml Already working to run tests. --- .dockerignore | 5 +++ Dockerfile | 27 ++++++++++++++++ docker-compose.yml | 78 +++++++++++++++++++++++++++++++++++++++++++++ dumb-init_1.2.0 | Bin 0 -> 46400 bytes 4 files changed, 110 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100755 docker-compose.yml create mode 100755 dumb-init_1.2.0 diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..95c494ebb --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +Cheffile* +cookbooks* +doc +Vagrantfile +tmp \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..66cb0084c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +FROM ruby:2.2.5 + +RUN apt-get update && \ + apt-get install -y libruby aspell-es aspell-en libxml2-dev \ + libxslt1-dev libmagickcore-dev libmagickwand-dev imagemagick \ + zlib1g-dev build-essential \ + libqtwebkit-dev libreadline-dev libsqlite3-dev libssl-dev \ + libffi-dev + +ENV app /usr/src/app + +# Create app directory +RUN mkdir -p $app +WORKDIR $app + +# Bundle app source +COPY . $app + +# Install app dependencies +RUN bundle install + +# dumb-init +ADD dumb-init_1.2.0 /usr/bin/dumb-init +RUN chmod +x /usr/bin/dumb-init + +ENTRYPOINT ["/usr/bin/dumb-init", "--"] +CMD [ "bundle", "exec", "rails", "server" ] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100755 index 000000000..cbc6de819 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,78 @@ +version: '2' +services: + + dev: + container_name: mconf_web_dev + build: . + tty: true + ports: + - "3000:3000" + depends_on: + - dev_db + - dev_redis + environment: + - MCONF_REDIS_HOST=dev_redis + - MCONF_REDIS_PASSWORD=BCsy8zMwZay669ii + - MCONF_DATABASE_DEV_HOST=dev_db + - MCONF_DATABASE_DEV_NAME=mconf_web_dev + - MCONF_DATABASE_DEV_USERNAME=mconfweb + - MCONF_DATABASE_DEV_PASSWORD=mconfweb + - RAILS_ENV=development + volumes: + - ./:/usr/src/app + command: bash -c "rake db:create db:migrate && rails s -p3000" + dev_db: + container_name: mconf_web_dev_db + image: mysql:5.6 + expose: + - "3306" + volumes: + - ~/.docker-volumes/mconf-web/dev/mysql/:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD=mconfweb + - MYSQL_DATABASE=mconf_web_dev + - MYSQL_USER=mconfweb + - MYSQL_PASSWORD=mconfweb + dev_redis: + container_name: mconf_web_dev_redis + image: redis:3.2 + expose: + - "6379" + command: redis-server --requirepass "BCsy8zMwZay669ii" + + test: + container_name: mconf_web_test + build: . + tty: true + depends_on: + - test_db + - test_redis + environment: + - MCONF_REDIS_HOST=test_redis + - MCONF_REDIS_PASSWORD=BHAy8zMwZay669ii + - MCONF_DATABASE_TEST_HOST=test_db + - MCONF_DATABASE_TEST_NAME=mconf_web_test + - MCONF_DATABASE_TEST_USERNAME=mconfweb + - MCONF_DATABASE_TEST_PASSWORD=mconfweb + - RAILS_ENV=test + volumes: + - ./:/usr/src/app + command: bash -c "rake" + test_db: + container_name: mconf_web_test_db + image: mysql:5.6 + expose: + - "3306" + volumes: + - ~/.docker-volumes/mconf-web/test/mysql/:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD=mconfweb + - MYSQL_DATABASE=mconf_web_test + - MYSQL_USER=mconfweb + - MYSQL_PASSWORD=mconfweb + test_redis: + container_name: mconf_web_test_redis + image: redis:3.2 + expose: + - "6379" + command: redis-server --requirepass "BHAy8zMwZay669ii" diff --git a/dumb-init_1.2.0 b/dumb-init_1.2.0 new file mode 100755 index 0000000000000000000000000000000000000000..2fb1fa1374a8dcf7e523b7863b16c5d771003a5d GIT binary patch literal 46400 zcmd3PePC17`TtFu&=d+cC`eV1pg~&!Z5=8BD!Guz38qp9D2gas8M^5dF=U3C&mb9gBC|E$Cr9vwT-pl2sh_(f!`F);qlfF2&egFJbN$x!_ z&w0*sp7WgNdCqfA)_Qz5r;)-Ra1nJ{4` z$2Q8&^-^O=+uKVs;5~jY(aHSNWVha4eX&@9%a& z2+UCL8Yu|jm}2<|?_!w_cw%TBK7)BhZ&8V#iDMJM0W?Fc00fRxbE+WdM{?u2vC7Nm z1BtW?06Jz0{5_bLM-~0As>490$P{%BzL-*@#s}j&l6T*)kqT5>DyRI9i@N#cC_&Kt z@pv4WbC9W2SK5EUbG9Q#e=^aVE!1Vzj`o9jmvH0@S>y>oKA|cjkn=LYqqR?YD+{Ql z^S`2ot13?!(AEN4c?y8AlC4CyMT=`#WN0%ARgA}LCBfek1Wu~$5|pG@{S)=mDZF3) znM6-?b{KW`lHo>TVKA@YO*@h75sv@Rbp&lpFSOlgS*^Yp{kskM>iKkzqLWYrK~CTm zXx@%G20>mk2(lM_Gf6<`=IROl3Wsw_M^bV^hw^1tJw$3GNQZY-m*iFFrY3o3KD?j=6 z5@7+Gq~eRo-NTr2xaiVy4k#S+4_~~6GUDyak{r6YMjY$v$FY@^zkrpT-~g(6QUQP| z9jr>7!Ax~*XODkmFSH>^XyCiWH2~?R0oUFD2?E0xprZN^y0y5@vKL9F)4ZiEwzmke z8A8CKKZkm~z)n$xc++C-an$LXK}M~<_vq~SJms9+eOd7(tgt>}4le;bxjXJ363kmp zEh{yFAxiTiG!~>@D`zomzu$m|s>*hd4orMGrjbzs_!2xoD=L=basPG7xk%naf3pk9 zL8ZH^IheN?&w}XbR(D=NT@!iNCN8S!!zY+`_H~r;>x+0x*Q2FMSA^QpD!}UNmHlXc zET!6zx(LayAi1wTbz-#9iF0u=v;FJ}FD9#| zydKmp&I;xoC7MNF3gXrOwsN#mMZbN@mmvIKFT^zcoxvxY)aPA7#ZnZiWSDtd=F{|R zhh&cU92o$sZ#2q*dY}E0dJjmiak{EM2AJOd2lF1M_5x0I?_|J2mY~$Dmjln@zxTday{UI z$!r$~mG@&fSQJCSqVpYARRb~P?v%jg ztkCVSMhoKd*~^MYM&@Iv&Ww;ElyB!T<(o~JNUO9zhlWdzHBr^*-Ly`&oo26ka${J9DpnI#$_Y2HZ~4oBGJ#uydE>!qzna>#iVBW<9!~edV7sNx{ zf18}QmOo6F^H$J9;1BhdWq7y{K=c;?^3*Q?@`_%N?dX1;<$1JkQZEN&?Iw`0-g0BI zN_oBIisbVvpyFUG#5FbGsI$4TO+J7DI~CBFDkGnzPC)yzpZ*&dN}gVgHek6i_=-8z{-^QpW2xmv+19+NXYRrK@4}IxQQ1JIqV#`Xxu_6%-=U(Sx|Fj_$PpwcPPb!aAWy%HDc6619^k8zzT$Q3ZjOgy z{@C`*49T>vo_Z`i668!g56V{4Bc%~V$(-+0`tc1EJoc>$A+hGG{ z0=_e8{L9nu;Zy3FvQ4y9Qp%Rj=dplvx|;{t{X?+Gix#lVW2UcJyawG*4SZ2=k)SdW z5DY!ha8b>?&7^6o$G--TmYlQV`O(3-vG|2duCeOJ7u84$r1`9{ZoxcXbZIqcSId;$ zUgf+YhOQ$C_+!Xi^`D@Fa?+<9V#+}&z6T=v6+nbAV9NP<>U$H=qMXz_A@s)8Yi}7B7FnL99Ylt7yR^Wo^l<8S&0~=<&pu1d?qSMywVqH?+CWit8`{Kh_>?a7 z8DJ5Pt@O}%T}@<$@a1fv)KSu}ham|x9FKH{#f`Fj%1KqGbZ2c~D8OtPj70TfELH$d z6qOcB_h=cSvBKNn&_E-s3S$ zvd^IKaHCAITmt}F6*AV{ZUUgtE-~~DRXaN=aA9ywiVzqYhrMN`QY850yw^!t3Jk8d zyo?8=phe3|c%*rlSz)FGQ=NJk52PkNHk2mc`M4l_kSP1XAMAp!@cLz_0@ExL$YMTL z`;-oos^rZ_s$!W#;5K+oox$mYgun&y>Uzr$kVJpV$S3|_7o>F_n$)8yMOG)s?dPYP zyz(Bwllz6Y@N2?kG{?keI-xG&m_+V&j9z1rOk4FdDZZ7Mf7;!S%)n0i^j}T%nYwuf zpoyV>63n~{{$Qt<*YLs$xBHZ@Dt`^$)bGeI{9;yc^>|^b7=9Xgw?y6JO~ENsG2Zo- z(!Ze&{`6_2!A%>w`(?YZ_F4n>RHXYC%Xt+@6L?Ghxe37U0I)YQLtO}|txqLj82+0H zmVY8>8%2$1fk_z|!UHQDISD!5)DiXdma&QUAl7Yogzk|Ar9Q!D(!DjrWyE5fzcS^# znbbD%){p)`58$l@^nky5%kKY8K3$AbCZt6sU5F>SAr4JA`cDW;R(QY{op{hIW5$W0 zSCFzU1;l^tynhl?nptFY9hMC-REmt?v`K+M!Br+9kip_HXZ_mGwB<-vEV17M&u}AC zPP-%H-=UX!OF^P(F?0^?dJDI*=;T_$3gV}RDSn4FI0ejm5SboGnnA&pfI9-8NNhx6 zaAgYcA#K35?mGFz1Xu9Ld6)Qn9c)EUZl_D!*y&m~`8rpb-;wH5cDNOv!_2CVSRgBN zF-!a&Pwp-PCW+5i-x{57Gr8B@};fuWRt zu^T*PmMFhU|Fb0bn8fg5V69ttMtAD$9g3y)ci`K|&6$ej;lJW3I5jW8 zBzcWh2wWdr?MR*KcgT6aK^eh+sW)4B>qAr1&h&QB3NLqfp?yq_r-7RzV8m`FSEqQOIf(94=$N|fEJUy6b(GW`TnHaj4%TU65t8#@V8hGNW}#m@d(+w5Gpz=?1WP1SOQ(gkptOcwV?o0pg~Zw zot`qwDGe$D*6R9f(l9ZTK)qP3X&X|@eZfulH4YFo)r^8h34%|}J zK1ivG&J3nEtV~A>n3aO=My(XNIw+r=QG7KDq&M-rRLaXjUTPw57|%m3h*UuzrnX|u ztrzCwB|+&L@?a#zju%GFmPx;L5nUKl0&g*8!E5TJq}sz5^m|^HnwNsp9bnBRpkU>- zc&Fuc!#MO3>^Bltz-ufLc#9I(g67(EB6PU5+y=mvL^kAr#?5N@3S{KP0l=%&7TMIB zcmrTYL9-C(xUmjr%zTkh{8(nPDAMhzq zu1T%%DV`0g70vr1o(^rUm@?FF zQ}5$XDgF!=`ALI*jl``W-WWCIhra%k25mNGlLx$qXa5j&GOE-ILxDdHQ}idziwspn zx|e*4BUk?#^KTYZ(wcel$24Jr>Q{U=eyPG_7RsIYFqnSVm9(g1^a4Ks^N!%mTV7#g z*FV{T2l`WHPGR*=s>TbJ7W1F%{287-)sLs#c(@hvxn6ymT9Jjn?E;eh(x-eUy~ik@yK4*a zTyJ@DE%M1yZTvZi>Hvl zqZ}eNOdrTIQYZYmky6rrpl+dAU}ROtp@yVvrP=UvkjxYQLaFr^)9WJS=s$;%@%0AC z^W!wDhe7W@f;aVb6vZyUzEm_~Se-K>aso2I!Xj%^>#s5(M`lf7&RJQ||B;xEis`jz z#gDb1P3=M%7Fo1he_wqWuoRWsFVK6UZ?2~faQ7fDxfCP^2KLBv)C?B1qb$0a9{GYm z?)fk5!1t4dx;%=S5!h}rWU%f;;9ID#lH zX8(yBt77)+j+goSyNEA=ff$t4Hh899_q3y%6JyzyWZLZb$h z_bOk*sz0y3G=}8fXPAjF1u;vw`JtwPvzfETSYj4+HIsj$zePmsMzhsLV=zKlPu=d2 zGaMjYkXq2c#5CLz#FOB^iA72&Eiqg#Hqo=Po_|G*HxLi_Kgn_H6$eP*T-}=xnKQ*; z7H3u9DgX@pQT+jIoRfJ?(U}uN;_OpEOVgdLH z*HLq#>aJra`i#}&|w|+n1^A2O^@kkW%A>8!G8tjo1IOVmF07`KYArz7z}Nna^g;c!u9cZ zJ5%UU?A(_fS#0&1j(f9@={xQ+n&YZ}Il(tf%x^Fil-)k@&7)og zvgaG1PJRNf@)0eakrE;&bY)}8eXP#Mswt73OP%m3aZViQZT<^ru?1sV)i7y!q;7hh zwSFrERo6GfjgZZ-1^OvmM5HZQ|5zfZR`6_j4xa9+;R)LHNB~ch?=$igVE|zVZT%$1 zeW+OZ9FfPlCt%ZIVt1)kS8&pOse`=pve>kF_D6@Z=p3xww`94?F4u2%D@PL4)~*3= zy#W01g?wLyp+*JOgu>*aX;c4!CK8h4|AU#IGYSMr%zXGaHVq~Mfq6vGI=+K-osz3_ z$}ZB6VbQGVOasSsFl8?sV{ob{_1bOZ0hD_#5=%+o$tTj~o*`oCLOjPE-xOeJj0~2~ zTw6R;X^^X|EOn+$8LUI2m}zBEhDkjKi=v=?jwb(Gxrm^>|9>dPP!7J{{|b(YTLk@~ z|JJDZo}hdGTOlS^3i=iQt(3SCY?oFOnPV+lnCJ;%E ziA-+q0I{I7%(1p+Aww!@7woW1A9C(|;%DG%msr_3PuX2TI%@WZklJ7>dM-IfpOW$^ z6K~#4I?)8k_>yy^xE5vd(pc>w*3~Pal9lLGSZ|lajh`fvMI?hUD4nlzNp+j1_<2aB zl4A=ov07hutj8Cu=h0ZLGToT8Q?RtGL@Po|taZAh6+U3~SriG!?v)m{KIpJP1icTS zkf5-4-U5%bwCmT?6c;PnhpZTl)xBaPQp?}Qha`VtVxk9HEz0U*zl!f57n9!B*T_ML zu6VzEHm9$b_jUF_|7T(ozqNTA_dpyN&j{6+%vG@grZD2FW~v{-(Da@o!C2HLze zH#h3v@cQs}1Z*waTH2cr9jtC?Y-w+4)Xkq(A3Ta7bG0<0iTmL=yPq80t9(jbRrlE3 z`s{jWvB=NCKb!gy90fjSj0lc@Ir!%aU}bST9n_qfaIeQ;EXZ@RV{jUhIR$4;nuZg zEGSmgNU3v~u4&a)S$s;9{(9idfoA#-I}mmxu)^KG>;_tdolR>+j({(_+a2|%rsx+K zugWf8_BNh4Ic0Wq;+4IFog8V>*RnA3KHzLq=abFf$1iZwJ65R`hcYPAVzn5C`dgHTRn&71*;G!Omh6A40y?k;cFY2^;H{y7%1k&-g|TQBnTA#h)PD+JQL z@(FXkv!}Qtd&gTQ{dMdzm?6LJkIovi2{Tf7sq0Mcu6WE>*aRH!zco6VtW$_DQF#{M z@RLy?shmVuSBu;YTl=i&+fhmA?e39ww*!_-iZ|qT`kY@qdRb&DoKa>;IWO%#?lzrJ zR(z}UxX0CrZ=#fbKtgziH+qNJC%VsqP17Xh27@{ne@ypfKBdzudiJsGy*|@^R@IZ@ zbMEztbH6e*{KKUE6slxs7mx>fOq1N5?oWH5b1=0Tal(@9?&=Kh zl9b)>Vn-#j*I6fq$WAbFUNiZvt&`GLVHq0KV)^`Wkh)`Mx8$r@A!45i)>ed6zEtVQQk$HAOuSl~Rq6}iKss$6ItxY@7{P>`NS#jzGrXD4?#2Ih=)wCiz zlQna_WJddf*ZFZ#hEzZMTmAx8iJSE1{|hCVT!n7z@QJfe{VR8Is)p+T6O)R#g;p77 z&6*1&x%=DI84~tGA>OmHYxFeCudI~#hmhk|s~CO`Wx=1Ex5N zu@}N7fL*+W%?xZp!VjFnOwBC2VH1%8rK=zhnRsgx)cSC1be2i_rztSh9eL1Um8y=X zO7dZoN8ET^GSw0q1_Csl1H)!T-4={Y%q`AU^}F1do+Qbzh$!{$#5$rr{S8DUq8=dN zcCzd$cvsiL5#CTI0{Esu0{Ng6 ztillEF<<$XCl$|;A~W)%o^-5>Y8`wj`OYu>Lw!!Q=;8$ar?D;uGT`;I)`c80K;?L& z3(}cVhsL~ey_scKt8bv9{${u}kj4kze>YzvxF4l*_itS!thu9xCblcwx@I~W^@57& z>O9nh4Oo<<)@k`%I>o@DN}YHsv^}GZ!dv)Lhm0_0Y+}h!-v&9j)6yHA zO%jo}pRb(vi8puTJHHWSnw?6stRe=IlvW9mh51;UdAC14%@_Z`P%lz?dztS%505+1 z;PTHjK!c!Gf*1zNLA>P$QFjn3W~B3ipmryc+d%8@PO^e zwUY_e*M>%Db8!THgXe6*${g+rq$%k(Erl3&Ze25mlnT4r0v(j}0eii0i&4#n4#uUR z6CUl6Shw?)kEL~KSjy6;kM~==@p`?(r<@B;8}HA`&;A$z7!JXseCxlOMW#EjJLN6h zX8_KI3zh@cMeL)E59~r!Y}cpgTjAIBTfIt)wge4{m9tE;ngfYmJR-O%#Ss{WLaBs3 z2{wHY;uzpv@#G$_P_j%$fQnc-MEO|O?DCnhMWQPhzuKeph~f9C_;B%+ZI2#Px=?HP zms0w99RjKH7TDO^WGzQNlU_WPw=tPP0m$s%P<`k{7qHq}#YndWTIB_2I+`aA)2Q!xToTa;w!H zxen;T8Sz+_RI**LgZsM<>Z8TV3+1CZ^4av_3=ftz6p>7Obq(cKJ}qyL2d7;lhW~*+ zf|yr};V7P{YbkwQ%MGqdbp$3*dzl9Ma*eq@^vi+$LYE@18$G&@_ecz1jo$E%xRvw% zT#j#KSpSaPZc~Qo7tvfnN6<|cxh>I~xz@f&4;CmTXfrIJ7iJ#thOTIE z=ZG ziyjs0?H0NFMzPccqYa^JDkQ8VpGy-^Z#j3@*1`jW z*yUITH#vA1$d{4+VxRNXysm!Uj@r}O203&tQTE$Q+Jyms^rT1Y53i$}a zD5>6qo@gK9l`GXr_}uwgRt>1wW=fS0rNNOSl?~UwGywgA%10CNPKA5O_;EI^UK_pN zq(9E#p#Ebv*43P_xiMe``UFX=I6P#apNvlc$_+5YGO{6iTSE_1?58}DUeDIb3Wk6@X!#V4=M6xA^w$wqFGTzeWVp) zev0}Az6c*g_WB$Jm2E&hKir6}?eGcz{9vE~>)a=wPO07G4 z`+%0U|4j}L1d|WX0)z!f%E+{2G#d&ye@M=gqD&Dpk?Uw~z0JG1+TkV}f+mh#-JZd1 zk+Mr+zA1=ULz+ALjI&C7GK9jCsb1e4_d6ESKjkRV+Xjo&t#qo>Phh=Jwl2I&y9$<} zF*?c4>%)>ykPhfL5fclAM^U*Wffd#=ME=-C--8Z&r5)H)-*adHr`#Mxl#0jM<5tdi zL|+#yQ}wRIkWL{O@RoR#uYJm1wNj^*oI^!n$uM_Op0CmBcvK=9@)A6bm$Vdh7>9+% zcuy%4tC#xdzkmW#1d4D|_aB4YpNUvoLtcb6BpO0A^b1gphAPXj-@N34!?K>~EsV{K zOqOASO{Ipc7-4lh8u7+sRK_cJ4-V|5H3c*lv<>*+)v%i&ua>_R5Tt|VusW_$^_IRq z_F}|<5rfiP;BkIgj76wF5$ydix1$_r=@IjLFcY*j-JnT809GH7Km->+%lQbaAL5Gu zY4t{eM0&Lw(OBv|N3s6>4oq)@WB!h2gQUtc*%!%4uN5C<$@2PrqE^uHIYf) z9=O)A)3}NJ0Pq{0ew9THiIofQLXSEM``s{x%MKztxrvtW=(nj)f;-{SkEBXUEsO(u zaPvA86V_Vf_BJJz_VMIZON2l+vAxR|DO`v>za<5{p;-%=f~_}YR#uW1@oYEnNgx2c zxO1aT{RQ;&e7^TLjkX#SI}|du8cBr$o(5!U8!gxq-%}Fb*eN7yOpT;gQ0dp~qUWeY z+kBmFWrDHOHxwNK8Hp~2ubyJ+5bLCE!u~c0)(r?=V~Z9`?WU=C#pWz1XeGBM3ttb1 z6lV1jY|fIu#6ZdjX;pVo>|V)M0@3ey!+KX|eHuj(1;*+VDc)S%m_`;d$$lo+o0xpm zL`D1}mW03|Y+ohflPNL;!5}e|OH?5R#8azZi@F9e|jd)jrd@k{lGdWIz62iJL3yi!6289l6xBepbQ+~ z2>cA46gOghuXpb7PiN7&CT2RTk3i6L2>1|kQ(!NfoIUQ*GP~g|xJ>&14@TU! zxG|M-UZFxu(E$Y)E;_laxb0IC&x@O6EjIm{{(|oP68nL^IM@*FHAxW0ro_ zht17>*wEs*VGrs8Ua!W)-~DFv00B(=h>c57hY-dlyczxB{e2wqu>QwEI^7bSBKYq^ zqo&u=0;i#D^&!J5lRZJ>DZB^USoo{JrHOM37{-WgK$ia~pkc$;e_{Xg3e~3IR3QMV zLFB-eaJRmJv!OA*oDcnrF#zJmVX#Ez630q#D1{pF8S{jy{5MT$@Q>4{82E=8VLem+ zlm^7a@%+ocNdAk7+X02D`=U4F@m5nP7HGf!J}n72e8SylT~S{IQ;-M$#3~nd|TjL z4HGxk_01qJ9AyBorg$YVT<$8n5pjN_pb4iG6)sa|o8aXfbzVL@sAz#QI~C7o$y zyiA#mspcMa3THTqrr}M*zfqKeEp_)OO+I^55iG;mWAX1Q{JR$aZls(l`atxedlaIV z-J=ls+g;ODPtJVE97@5*PHe()r2pnqVu+f~J}Vyrd^9-Q%CdJd(>}c|VmTeO!*v-j z)qq;jhoM8z0VXSVN0p{R_Z-FJ5fa8Z?ewZXw4xuRxP(X=3j6?TaT?#fkIXjX{R*6m zLkYuDFToR9N7Rnoy*~g}2i5l?JO=U7H$cnQU^K_egD4bkl;(?`1_Ty#%q#y15|rKX z27e|Z{{n*}qn!H#1*g~R$EAo3)IF(NC?e3@A;l4*v-<;T&R5tdy-yF3G-plV5`gW`{%Wu}$g(cW)XUfR!0m8ljn7QCm8M={P>n+cr05G5e?^23l`6n+o z^w0cj&yh{uc3scu^5XzfykkDuN@%g4IG)XHq;7UG=uMOlFTapJ_uqipZdFUgBpazem zJBQ6nbt~|eC#<~l9(^L0u7d7ZR&pl3R(x-#|B?gE%f<`AlA}E{un-UJnW2oLEg@^` zLPIo203q!pB^T$aiLp>KJr^4pR-oVi<<+9KOwfSx-+d>T-4 zW6nMPANZnwp%=`(+*pSszCFYL>Ywt3l6MXRPt@E(mHUOX zMS@i8|GF;Hlt)i(Ooo7_lL8{e*BW6%D{T7J>W5$l0MkJx9jdI`A&Qmn@Cc<2l#H%` zkMz;3vK0LiW5vceVaeywS@DLzHeSJ)RS+>m(#YDC>M6`l%#U(nMq}((zzRm-Y2n(H z@b7U-^K|Vlq#Hi$eY8GFA7I%N7R-|>N8sB)9pZiV6kp^%Fen&{ToRcG#r9@zWeP1f zOA)AL`h*p(TIq#PiDHFL7){3EbMQL11};X_+CtLNQs*t{wfB^HcKwIo#K*3ZhaiIC ze9FJG+5FkQ2~SulHfw>E+H^J{Ofws%O|4CeZ)YZtz_LA7Z8ds~_-jxi%cperH-q`{ ztWNNUFZxHCdI)Ky6YE$kv2C%3w1`8b13dz-I3dYnsaf`Z;N}xOhrG^XUh!sxLLF6K z=UZ3i2|m;3US%;hynkze@nDkks8F&OYu3F;=5KUnJiV!`lpZ5#uUT<2ropbHVTcjr zGaDB0Y#Va0Sk5M%2c0R%c6Js^oec`jwnG|fkGYW!fBa~(Nw{DR*C6Y=!aW+Gv97Uaq#j zZNi4Neuz$<&~CCCYV_mu0m`F}DxbZ!7@`Qp7~HtsNLJx50!YLq@iUvW7$I!5?-URb z^E5>D{h+WBPstethVc~YA^gMX>OxFqG=*gk@{3aO&FQd?TWO`Bg}AXvKAJ9{H5a8% zw+B}0sc=P$8)uo6YFSN}yUj%>gJ7(eKB#}N6mNLB%4!V_| zxJ=uaT2?I|x;A(=)jtS`SoI4q!6=uS!zfW2{D0O$|7G;`kbgXVEfPadBH!R1+f{&g zJ+{2Kz;}zccI)?Zk0V_FkkHU^o&djUV@#%f|1TR=+)q}-aeCi>*Yt{ImQa=(y_aq(*{r6MKA~F0bQuIai^00r- z+A;KSpZLrTNX_k}m!FEE0~iPGiA2pu{nxBbqm1RcjlKf#VoJNvVBsnZwxz2sB+8+w7Nx#Grorr_Dd{w##$ zI3TLxK3wc@FH|a%HyaU4ev`>ry~bLWf&Eg%#9&2*p9hVV`OHi7x2dCrMxO#^PxL+$ z5;Abu?=;%O;|QGPne6ai3`g9nNDGx~Gq zzly{=9mK~7rP~!;J>p)${|H?~F`v}Gxik<3T+1kPJLal$p^U@G@A3Z~sEeWZFdy?_ zGY-Mn70go1mDn~$3`AhOCv@Cz&o_O6Gf3X});ZD12Cl*l9M^zVt42*I2EdwcEK@Vs zEI+O~U}1r=!$UCc+9DL%#C^6&(wK(6v8H76y zvc&L>Mhf=8FXa5gB4$SbA&)saPNin?vSMf#7=(t;I;-AH^8_!)#Srby&#D8F1nq4+ z@^B;FQc0^alN+JJX?eG2a*C5 z>Xhol)`5N}r5Ld8f=BB+UGlFq08HY@`!Axe6#ppt5(1;CGcB34nwcF3GD!Rr1B$QU1kEJhjbH%GGwo#{0A>R;o3T+KddSSeKdO&pkj+NN>kF`C)9HMM zZzRLBI)ggjg)k8;6MV_jv7JHk?_VHo`M$&oOcdIeA(g0~Lduk$Eh!*y`R|C1mVVyN zW$Q@==Oz-J%_0X8{CbgRNn>Ho22p+$kc{Q#4$^U=1$*Q}=L2&f>Ev!~F?k^JpNEEw zlF#*)Kfk;oo?wHLV=L_- zTTc%3?4SbCmg^<$(+dAb5*z*kJwfCjrzC{{$`} z-u5bJis4S|#vi8b?J#a8I)&0ooxH;?_xwZ*rK4A*S|5Tm$Fy6H=TI7u@i`A8jD{nA zK3#m)PWY{MERo}vtsSP+DQ9+{0NP>V^;VFUH0!pBj)OSJ4d@tm^iB-jfwtwR9ZT$j zVCs+XlXH=QBTULIZW>M(vTNh&M8Ik} zp?7T}6$cZay#{0GmA@S>KI<@^(#6n=U{fk6J`+V9x_+PwJO4|fBf@|nWH&`KGKpE_ zGncK+z$y2m*i+^DW|9}AsMN_eaE@p-hlN*N0$5`kA7Vou_GbtA9?Jm!r7;Xsd_87f za(un=vHmRd=vDpr9p(LPoF|eTqS1K*zF$XU`SK;4FZ`SJ{Ye%O!)M^qOYnQxhG*>p zV29P#MK%6TF0@MOD*l3uc0db(kJq$SYX)Su(oo@i=JP3CNAZNP+nr~X-Ptu!bE{kV zFuO(!{SLLFv(mBWjtFAzGRlU4JkB;mrgK{0K0QDyryzJwbU{3~@g;;@=5}_)y>c}! z3Lv>j{E)k=s|zvbyWOT3+-^vKCGFfHDNWJaO*pGv3x77ixa_Lv`KqdYEbSKq8M(bn zGF5q<+X9;rQS8rvkfE`M1cY?SZc$E4auuRmJG~Y2?)vr1*Ot36U0oRLGncH%#OI}A z_yEvng*Ec((DLD8>Bo5U-~gl~pBR%Hb1QWvN2poaeT5uy9`rvXpD-C|tgt8Idw)5r z`fLm{Rl)2nIYWIcLd@1SR&^8+y-nV(LwFj3P0^q3qP*;#Zlzj5C8IOWy@59X@?u=M z@K=D9ls#@Zgc2>jOmbj938-5!Wo6w&Jt_H|u#ubxu*?+hR@~1o*K&{>odY-CS=5I| z9{Caf)60kW-(RlaTi@rV*zEV?;C3G5MEzIx8wf~nd)~qdt0SP6+&#Q#hTMHYz>SFP z@kTSX2#ef6nR(W_moF)@=cVH-a0T2Cy#+GZh7yo2et6E+#k5CssTiWoI6OIUF5@TL z$CTrrApX8eQjQ|vyBW7Zc*MD%L^HMnAw;X}a65G|^Z+`cwDqnptZ-iheUp@W_qZl7 zMUAxkq-5%X5$;x2KffGi4S1ssL0@zN3mvwjkf#}3f$d>1Mah?xNc}e0Lvo%EyiV(m z8O=zzZh>R(tnu6O3y;rK{I8>>TJ1|r31r53ri|6eqZgG^1=#3SxmnbURflw+G#B9{K~6V;eltH7+WNn5PL? zww*Y~om^U~NVXho6rUj}1-V^DyHd(F!$!p=8R9b*Bw*_$1`khiFcOgq#)!q2ZXY9- z(n?D_^fRD`LtH5>jRR%;SH6Ud|J3X#cVR@bo8Sjrb01Eb!N_ZAgc7k7YK0wYrX49u zT2yQRVQIy`oWApQ4HGynjZk;&@C(|p;w+`Z71+t4lVA8(@VHG3?FBM8g0W4#Z1pxq4J9nCI*1l8IxWF*vH8i|aT;aXP9--*YGn)SlvDBL<}EV}$@BP4VdpyUyY zLf&!A29l=jmOj#Ou^IAe#5!TQTTo`JOqcMYXcWDd2^t1w#Tq;7$T5_@W zd%3QLIEhu@s$~C_2FMY3p4bM13`srXjP_&HZD}Op-2ilZiFYkp1&kYMTdq?(g|9vX zVxaxN5A2o!KT@AUJ0U3Ko)j^(9uH95MzoxO?nl}EbU#*KOA?zrN?Do6B4@OYai;{^ z3rLW#Pxk@k7$p@BS&dME5CmQP&>ar3Q@!rR1JTV#r2v&hifip!{s` z09c!WWFM>?rGuX{`l%Q$MXdoPy#q>Ov(YYhKO}}neYc$Rd&=R+&uJtNfS3I}<17I4xehkhmj1^s!HV)Yp z5LoCMHxA)5#0e2@Dj?TPBZ_;T#L!vHMC8Gm!UK^3$z~kgf#EWjBF`xshq91rF;W_h z6vSTP8Y2qU5It31L?3ByA!FHk642f7@EBt+mI`P|+lQ=#9ob^3zBxJG+EvI*+Qs#? zHCqfe%W?s2;=5Ui1X~_bINwo@MpCEOUIM@Fzy>DgS2*-|y;~Crw(CGNUXOD4wFM*v z2*m|JQK_RTt!)4jeG@2IU@{8u>^C^>TzpW)(aH1=2Bw>n>DvdUA4Aw@q9G@8)+gbA z(wAO?^xpooSbpar`d|*mH61fOL7!y3-}Ke{C+hKw2m*bR1CqLX9I*o}C$vvMQ3z5>xfBRsRnj78 zoeom-rW3Ohyifb9d^R}^pTtuy4B%*kPk$6B9Z)9et4jJU5;OQ-(7+qH!1FX2%K|qB{4!vjtcxX_K;ih9D1ShF0zVe9E&N#6 zGCR~JAH@-vi;J2PJ_nqdzt>+QcW3+GNs>qmDKxK*DHO=inuu@K^LHj6N2Kogc;J*) z0-WKm3EVh9r2Lk**yos`4q{v6H6$m&CuV0tB1=k(M`>T=R!+I;HkLTQ=Y?XCwN{Fa z$2dHP4KYnZYdok)8wpmSiRP1q5xGZ~2K8I+VglQ(Xu8-BSZ$abmc27`iB0D9VTIz-_ZG{MJnouXjm`X#d0qW?py%hEZb}`2#I5k;Tvr%pFM(4ZnbmmPufJw0n6^75;#6t z?ae*~T73&MHU;4TxZ?Cox-V*`HC`zC5vR{02o2LR@!^q2T!0sP75tC4YM-fYnfPe4 z70(TLXtFO8zutz2U3ggDh~%%U@esqqkCFdy6|!2O9e$06HPzyq+i*(O?*{3q4gWOb zVUYhizQiJ^;V)u%a{8zV0_ znHh7Ucdu_}xQi7Rgp5Nrn>N}ZKK(U16K-7jgBHsp(@AS?)mB{EqDFn`n8~`SSqnEF zta|L|ffk%wB>w;+}uTOW%krS27%*ZsXpi=Bk6$2esaSyFp^;B|sqiNNFP# z_SG@mJh}xcp&``!y4-^SqZxn;GjnKGV(Gra8n`v#|Fc5iL%HV$kR)EcmDI`loB9-A zts9Cq=O6$7VrId?x|ha9e5RV1>sR13qyNzYC;@6JicoAQiBA1*{pOu0e+@MH%{|O* z?*F1)r+(!g#r8htC!)NQ!oE)~B<{^T2C)sEry1r_UkB6DRB}-ja*(~F?;<}3O^Wr% z(}F0?doG4EF^4n@K8R&!p^w_F=mX743hAL~yM%xis4pIY#!vyo=r2g%Nuyta$Re7Z zVwk#~fcZx}9%wdbNk5-}#jqX$&Iwc{167*+F4Y8dXqvk;I{5*wI$E}Exfe~K{&nH*rLu|P1(FuK9Uq?GVUO>Tm=qkTr* zuaMDMh5h4~2=5kRGkDXq|G^tfhNC1Zn$?m&#o=vnI1+{)cGD((gE_$M-J_>@k$e8N zNOiJEJ&F)^Q&FbRR-{Xz;MeLG5QJ;MaT0Yc1hsYGp4j2Q%yk1j1oa zJ}b(vP$|B-G|Sjr;xRkzWIMECn~OH^u+uf3zGS!mdPh9> zxI27S3{iLrhqIyNeBC3XacUw+g>g1VET#KWC1<_()SL7mzIoDwE9ho{Jl&7lXx1cp zr}OP?@X|{c7iUH1zac~)q-`?}N|Y(cq93@#a@*vs ze98E`SkLU!hySIZSo#Gz?ZZU@r62Jj^Swd-Gm2a`HL|X~%y~*I{Ribxd(nx*f&Pk3 zMBdM6kP_&=lk|s64}3g|Z4fuECn{8F7WuO@+}DotpOtUDj1(QGRe}K4AK~8OC1ANY zC|E6){s~3kSrX-6(}Qwq_u=#;?N%U4u}xjtuklLoDWw(krD=5#bl8Y5Pq2rZgl{i< zAOx`JGB^~8AAIyHLh2%4w%V(c(Rjcu9vCcjZiStF8uUetM|Y^1e@M;{98}Q$4s=<4 z9dO3%JH>XN&@W!Lz8`&i`-L9yzN|t?=KQ9(fJn)!9A@czh@MzE+DQ4Zs!tQ522uIx zaD7u^UZH<eb;90rKkY)F0uJ4XllF2!Hzk*5>3((>1>cj7MxBZh!(hyyQtJ>fa|vn{KU$ zYn5nK;@9+R5#lajco5JMsOd^#LOwdDA1b{(5IidujUx{HAr-?u8w$n!u<=w}D=-TY z{o1_%zX==+B*|B*)e_oh=>INMnvu%tF zCFQ*s0m7jW94kWe%Cil4$2mmj4)Hft%(OQIMZkktQ*P&B3WSi&V{1!e_+}9Ju*cHb zv{I_KrkGHp3rDem`2dSN$IBp~{6^d;iw18&gI^)QoGI^+OvNRxxby`|DKkAs)y0js z#SuxFS|;JBL;_D#Q}*$i6E;&B0)R@+eQV#P$EY8HIB%@SQ5*tDf8}5)RPWzm7XqE3 zW8u0=>?i*Z$}l+&F?(KoO2rEu$rkh>Mtkx(vDnH?t;~6#_^T}&5dTjqq5AALP(3p8 zu-gsg7gbD+yA>^3z^`MQ>6>6-bDqB5DPkb3}R%n`XJ0mmE18UxMN!hJPm5Q_VAjN{)RFG!TQy6Im0zd6MKnUQ-9Tf>5mQyQYn6^Aka3DL?I1149Y0Rz-85rqcvk) zDDSXfw@}50R5^oczfYgqQz(!aH)14yPV5d)u?eABuwlV21(>C`W6I4W4rTJ^um&11 zRc^LQ5ggjgxXc8WoAO-}`>*^@H3;JV9Gdtslw>>&rg~x>@J7aR&gA~2?{emQM7${HOw!CVl4BVe z`O<9S&9{=gc>)Co5yr}>P5pEDaaEaeSFq1962>tqA;&ml?(}@yE z0%{ZS!q?pdf4&Z&-{H?m9cUAi4aQ2w01m~aDX446nXmwL9gmp_Mn z4}Z1-KW`*WJINW(Ww0b?PPl?H`f+9%F92ctd5<@{4VEN+F~Z^A9LvH<%x+g_9fUy_=NTln<2J4bEfAHMxZY_2!EgH7N7D~9fmEm2 zijs!?fYW2%D?HZMP@Q;~j@|GH>A~qx4}TpXY`5~U?`Bc63mff@(YT-|m71~9f%VA9 zDw6rp4N1PHbG+c|wJ2_gS9zrk4xnd|9I?EBvf$7#zo(=Rjqph{5wTpzbN#b%g4mLV zXX6yHMKF?cjDy5m8Y-3ykhw8~sRM|^jB#O`l>?oqs)!4E-Vj zBcl(73#2@$c0R%l#WEvn){Ug}^nO-vFddDkV00>$kpLD=y zHU{npUEayE>+$18xDgS*5GHTU>RT7I4e-Jz_1DDw{uIRi{`uVvgh%ti>p#R=rZJD) zN_(m0;hB5{LpSlXAaPdT`cnB3#)c1&dP6mtDyVQ1uMpVZuNR@=s0=OS(&={c7>{P+ zD;+B?P)>0%j?OUny=ti6X+$x8ONnw&NzZcBwzDiIAd6HR1@|M zsEpO9fmw`Y-(%xlj+kqkNgYr;Sf>8UA0za5zm0~Ixb_QlmNQk}cbIC@e`G2#*?e*w z28;WnYOu;^$;W2M{81wcj5#v5gCjg_)L2WRY;C=QOGx4 zX|2ZmAI)Xr7QR~hc%dMA0{)>BdC^}QR471K3v3!4vtrQ?#=VnwAp z42<6;{@xX}SKBkfITI>LWQ?m9@i6`7Nv~c@GSg1NGb>^#gXAZ+dLE*Yl<+KdDkdxR zZ!Dw;vNq#++L(P)>=-DNXUYNk=|k1dq7T?{-jPSuDtwgVTsec8@R z;zBSLxWVTsK9xg&l=Il!!J&#br&_`HvaqI)T4T<^KH`j2hE;)^V`~gij z&Cr@Z(|(N#TyIM76Ey~Dp}n3+$Mk|1^D6Nfx?BuHI2uRnaY4^BbYg}3E;&W^vI+cP zEd7pipM~?(NkX3s>`gRp#iuAl46$IDVwn7o<#U;s$l#{ZL13eHb5Yy30*Mc>Z;PYfOa1CVjU7ueoWjTUsUX+WgtI(~5& zS^UuvxVHpDk6RCRz*uWEvFPJK<~n|NzmfsP;Zdu4IihuNxXPy83lSps%s>Dfb(eQ% z9+?he$T0iJazFxE4&>}be~4zhKg3uW7n-z5m|jddgX8s}o`xpR*u|&ly0^p|I` zc=pE%u(P-xi_mQhM&kMe@}{+OrAZ56tp^KtgN3y*fXbJnQp@7&jTP@sE;-!;*1Oj+ z+4zi8Z{FNnVIr>(Xx6SGSxR{KALx=EVs^1~FuJa#qZ#1Y2vZQ-U27VEVzi7bL5-G3 z^};ATF0J(fHc|!c2gFv;A2SE)k9#NEdnw1mi*s8wD~d)ee?ksN4paLm&G_e#keKmL z;}OZb|NV?FPtJIa-;!foHUW)fbT7T;BaW`W{HMd}Y8O-;av@CVbak8j*I|^?Se2ei z_XS}4CZidOc5;3(c`E$?Nmk>Fzr;w=!gBlfEiC*RpG;a? zN?#-x(R(0JK5yrP7<~d~#%jIt;U4I@{P(kckwAw8rFm}DeLb$Fop>3vB`+Mo@VJP4 zzIjV(>BVcvn0%)yhROgIY>$hFaP3KU7Z(XW+E&NnrM|{RPB$)y!c-$-E8z)uHa8$1Pg}LWD-5y$i^q(0a;I| zubBv3pxov0gh>|w@TZMye83|}c%an5MxIAlOam4u3oLS5C*3!Wa6o}PO8d0&iA#aO zS}I>b2|N|;Cxdue)Mb|V45AE?qXTWL2OH@g7~Ji>Q(eZyhai{cSJCY+nS@wNcUybs zR&${1KnuSw0^2uq*rMjYv z)Eu5i0*(w9a7`Q+Np)7)l-(6zm=T7M1COn@rj;#mRPZF+~ty zRJaE*)`)*kUeQC~l=?-BwRfRD;HsLwhUH_+Av1{gmlO?G|6WSi85rOejY1e1omDBy zhyK}#+ba0-4BwG@1zKj&kRu3eX_hRZ6W>^wr~r2^0b&lnsSv7cmK~*Nbf@@$)5Um! zDupXat^_vd>heW3L_ngA-qpv(aa{K~k)p^WMbef(6f3eP zZkSM&c%&3LwOKpjkrc_Z^}&dgESpiJz1ul*&AZ+6e(=L_YC5zP(Mp1#FbeO5J&;UW|$OW2GP+c%Uir8&x_V;FH@AghQnL*O#9}RAIc4pq2 zdGF1eH*a?Lc3yY~0Duf;@rrNLL2Ue}Fo)&lkKxXbja`5O2}|@g7CzH}ks55r7jlbo zHl$bGe?m{mwp{%hz>?3eewQL_06G8p)XEP=^yZJL_1Ap^JCt5)K<4mE?fCBi_I*rZ z+edu-{qk_^QW6_KCR;8hY3Ijb0Cv1KvYx~yjzGk}gpw_wZRL&cg96#sp;1^83$qoc*~(`1fY|{>XpfLojVx2+{2?cl0cQ^W}G+Q#Ww&MK@W?)z^Ug{QLBR z_x#S4pDkZGaPhsSq^iOJO(lPXwTEVQmwfYYHB(+AN!Lq!0 z2o=B^KSdS~?+BFrokQ5~oErP`!~4DkK&-#veJrh~o_{ySmaz66yflV=Ct6bYE7lhS zX^IZPbif`p11c#|@NXl6O?3=9o7MDtWhKKdR%St5bdgefz~ zr+X~h@=x(e*RZ{u;am1J_pE8#$nh?d`wq?t+^diw3P0kw^M-2*vl==xW93X&*b*lS zf5h>5R^eRNM2N(@(XitRbC+r|ihoRGgf$m!u1pq-!X>$^jn7;D3?EMo6BlB^@_{L{ z=$d=J;RjxswGYCdH$3hOH*eVn)stSV@O&MgLnMHz7AuYMQO7aUiz1{v+U`W)6@+a{ z*@#@0n}HzdPfk9e8v|0gyZBs}cic0kML+NI_>@!dEyq5^GfqBl*e0KvGTiA?JdsG8 zipMKRmd6cLmM`Q4FSt%dcpmqHf^g?7&vCgwW0boH1yTpVx1$6q`!wZqRALG$gdkAn z1~!LuAn3i^vN=R#<)Jzm$My}&7A_a|oaH)pUf8~uh{umgQUL)91DV+$=bZOs_VAt_ z58UTOkLp0qkD+eVS(Tf2Oo$H{Hw-BoT!2D?+EZr1a0Pel+#)f(U@5x&8BwbT3( z0^>sV$igB7P@lU=hpX|yyNM#=W^tG7QW~y%ct`;h96i%_lZr@2N@;k;ut5Qb@@1?n z2`3-qe2Y}XxAFpAMhwmogLA@7JDwosD2%(7?L!yR!Spm~t!0CaJPe3~PH-^9OyRl; zeTL9yM6RGPBj~cXWC_|Lg@&Bf=uwy_bi*Fis)K469mq3*3$^q)D3bsc-1tb4%W+vT zY5kmG<%~3Vf*L?8ITU@y_X}QsZ|^khM37Ek==44T3VX}L1x8N~u^u-RmT$}ok3UT6 zALKvPA71R?^D_cn7^Z2Eq=i2(gw6L#j>w2k{wh*G4nb>~L99GW>;xnrvK==V`cQ^x z*T{1k`QEAcq`OF#p>7S=+j9&yTXm!AQ#ppTp^Dlmvf~)^A*?5S&w|p(VX3EyDtmm~ zmV$>yn8G(QGd$}$d1)V9Cx_0M=DxqkyP+$#^GKHosxXgOjhh>R7UAjcHb))^JEz#vrp7+Co=5u)W}3?^hom1!QpN-Gwfnr zW`CDiZQa@KnYj}gx1S9kKRkFkbtE-;didbr@lm!nk~48|aw0X%`WPuXi`q%1Z2{AR zmSP$rRU*{_g6dhPphOT*9e8?AogMPycYBDjg)p@L-Q=z%#NF z290etPM(t|4YVn2Ofl>zd=52H$a##)eK=OYfj>ef!Xi`cay1bDA+iLDI4CN8x+Xd^AoUblRJT54V(=; zNOH{al&j{<+vP-Hy8;$ic2ClTmk$3A9SH(3WC^R;h zb2779l%VkG06bLsPm5ToK&2B?CUv9~`oRT}p}vC)p_>n-8M=xrseMLB z6YTj8dfc(6*~DT#?c}VC6f&}$g47S&$de1LfhKVQ=NL{L+-%vbWM20HIF*#ZwavIz z!FSw<*T4o1v$mM@O8KdwN)k{g9;u$PY0^kmZkx2gBUBP!w1u)}nNSfa+j%FzI>O1o z$6*s#t_VHGG7e0+?80#un(Sa1gFc3%ZB~yg_;nePL#K=cwo)V-Yts2Aw_EjA=yYKq zkW-I7RD&jkf$Ebx=%RD;XwhWDa@Z(W7|tCuDNl^ZfmRs+8j5t2G*b^U1@4h5%TeaB zLl6X?!NMU;K9VQE6WSPe9pA|~Io&$0`NR2yBM5AiB14F-fn&XH_=VP_PCh(g{g|s)P_KB{UW)sWN)j z$de7Jh7HH&jS8h9&|+dCU^Q(=;CaGDk}EYD{$V;g{BLAmY=sv!Cq`QFg^o@K*(}sS z+0u$2G{osw&W5ECvIe6U%8Sn_htg$Bswdzf{}xInTyoP1@ddr zX_3-sE=C6Iha9?U5`&G+I~Xh#BlhXQ!CW8~GD6^P1?ep8rWNGT%YkjO$7Q$ctZ>GV zb6a#pb7L=J@+0?uXlra!!)=d!xUI9Xb?5E(etgDu3Qwo`=BAEqcieeT^IcoIKYI7} zmU#P)`?`K-`3s-_*zfLs_>oT?7#e-_@X05hocheE&z?SGWK5Brww{{Jxt_oH%;%nE zNzW6mH2zsET!blC`Q6GP!?n39&iXO$U}@=0+txEQ4ajA6KS#b^*J+~+BZCFHwwuv% zS{CKg)^q?163sUqtZ=BOXsuI&+#7gqFRYW1>rGpBzdBJKQfxdqIi|&gds}jU2gEY4 zSI@|jM!Z`?;jiyi@jvT0%&(32X!v6~p4ago>-c**{tq4Z^qt(@cary=?CD$B-M7H| z78q8gEOlgr9Z4Qxwqdgb>)DNUWZy}Yb(52`3-s*Tr|3DX;rwr$&}6z^M6 zXrWUpohWQ$x5ZK35Z}ULceb>)qr3@)t*nV~G^T{qCqSrxnzvHnUT4k$zp{P`|ZvMHINYqNRSF!CwmdBedhOXO6MhLT7A8+m`09qCY4fHi(U%T3?6F zDF@2ik7Eq^k5TS$d*|{dGv3}j*7{_7Gy5pACUGpF{BO(UPow;?)<{%S0pIu-7CH4Pcd*_!nCEK^3ZAiBB<;IcrzCyg6BO}?~IoRGj*t+ShXnF)jjsns7 zJsg)#udl;ymILMg7{?pP{}|BpW|3XzVuy(+xfGgC>g1bHYD19W__Jt!>}J0 z^dBOQ{1YUQ3caXdxpA_6E!OZ#Op!PuNtRXa0VuuWcIo8$`fkDlJ7Xea9+mwzLlX$w zo7k7=gQHKh(jmjEXJk~*vF;ljkmVaaWi|Y`jtBno%uP|FKBfkgV!A2PuTz-tX7G#x z4=!1P-iBidAJ3*(B8vn|xDGw!UIf;52So|Js4v zQ0f!vCkm@$cVjM!!Yi9RE1uoaL=P6 zrweCP`2`i#!q=vMA7Hp&QpRuA_{|%{9|bOv7|N+r<9BWl|4kVK$5nRu9HqUSiHi{b@n|NlYsg{$3jl|wlK=n! literal 0 HcmV?d00001 From b8ada80b8c7185a2367b00cbb50d8f35cdf95c59 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 13 Dec 2017 18:18:28 -0200 Subject: [PATCH 62/75] Review, cleanup and more tests for PR #954 --- .../certificate_authentication_controller.rb | 8 ++- app/controllers/shibboleth_controller.rb | 59 +++++++--------- .../invite_userid.html.haml | 2 +- lib/mconf/shibboleth.rb | 17 ----- ...tificate_authentication_controller_spec.rb | 42 ++++++++--- .../controllers/shibboleth_controller_spec.rb | 70 +++++++++++++++++-- .../features/shibboleth/user_signs_in_spec.rb | 25 ++++++- 7 files changed, 154 insertions(+), 69 deletions(-) diff --git a/app/controllers/certificate_authentication_controller.rb b/app/controllers/certificate_authentication_controller.rb index 203ed9288..af9e29af6 100644 --- a/app/controllers/certificate_authentication_controller.rb +++ b/app/controllers/certificate_authentication_controller.rb @@ -5,7 +5,7 @@ def login @cert = Mconf::SSLClientCert.new(certificate, session) - if params[:create] == "true" + if create_account? @cert.create_user @user = @cert.user @@ -40,4 +40,10 @@ def login end end + private + + def create_account? + # defaults to true, to create an account, unless: + params[:create] != "false" && params[:create] != false + end end diff --git a/app/controllers/shibboleth_controller.rb b/app/controllers/shibboleth_controller.rb index b13b5048a..7cbb371c9 100644 --- a/app/controllers/shibboleth_controller.rb +++ b/app/controllers/shibboleth_controller.rb @@ -43,8 +43,8 @@ def login unless @shib.has_basic_info logger.error "Shibboleth: couldn't find basic user information from session, " + - "searching fields #{@shib.basic_info_fields.inspect} " + - "in: #{@shib.get_data.inspect}" + "searching fields #{@shib.basic_info_fields.inspect} " + + "in: #{@shib.get_data.inspect}" @attrs_required = @shib.basic_info_fields @attrs_informed = @shib.get_data render :attribute_error @@ -78,11 +78,20 @@ def login redirect_to my_approval_pending_path end end - else - token = @shib.find_or_create_token() - token.user = @shib.create_fake_user(token) - sign_in_guest(token.user.full_name, token.user.email) - redirect_to after_sign_in_path_for(token.user) + else + if create_account? + if !get_always_new_account + logger.info "Shibboleth: first access for this user, rendering the association page" + render :associate + else + logger.info "Shibboleth: flag `shib_always_new_account` is set" + logger.info "Shibboleth: first access for this user, automatically creating a new account" + associate_with_new_account(@shib) + end + else + sign_in_guest(@shib.get_name, @shib.get_email) + redirect_to after_sign_in_path_for('') + end end end end @@ -116,7 +125,6 @@ def info private def load_shib_session - test_data logger.info "Shibboleth: creating a new Mconf::Shibboleth object" @shib = Mconf::Shibboleth.new(session) @shib.load_data(request.env, current_site.shib_env_variables) @@ -247,38 +255,25 @@ def get_always_new_account return current_site.shib_always_new_account end + def create_account? + # defaults to true, to create an account, unless: + params[:create] != "false" && params[:create] != false + end + # Adds fake test data to the environment to test shibboleth in development. - # def test_data - # if Rails.env == "development" - # request.env["Shib-Application-ID"] = "default" - # request.env["Shib-Session-ID"] = "_412345e04a9fba98calks98d7c500852" - # request.env["Shib-Identity-Provider"] = "https://idp.mconf-institution.org/idp/shibboleth" - # request.env["Shib-Authentication-Instant"] = "2014-10-23T17:26:43.683Z" - # request.env["Shib-Authentication-Method"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" - # request.env["Shib-AuthnContext-Class"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" - # request.env["Shib-Session-Index"] = "alskd87345cc761850086ccbc4987123lskdic56a3c652c37fc7c3bdbos9dia87" - # request.env["Shib-eduPerson-eduPersonPrincipalName"] = "maria.leticia.da.silva@mconf-institution.org" - # request.env["Shib-inetOrgPerson-cn"] = "Maria Let\xC3\xADcia da Silva" - # request.env["Shib-inetOrgPerson-mail"] = "maria.leticia.da.silva@personal-email.org" - # request.env["Shib-inetOrgPerson-sn"] = "Let\xC3\xADcia da Silva" - # request.env["inetOrgPerson-cn"] = request.env["Shib-inetOrgPerson-cn"].clone - # request.env["inetOrgPerson-mail"] = request.env["Shib-inetOrgPerson-mail"].clone - # request.env["inetOrgPerson-sn"] = request.env["Shib-inetOrgPerson-sn"].clone - # end - # end def test_data if Rails.env == "development" request.env["Shib-Application-ID"] = "default" - request.env["Shib-Session-ID"] = "_412345e04a9fba98calks98d7c500853" + request.env["Shib-Session-ID"] = "_412345e04a9fba98calks98d7c500852" request.env["Shib-Identity-Provider"] = "https://idp.mconf-institution.org/idp/shibboleth" request.env["Shib-Authentication-Instant"] = "2014-10-23T17:26:43.683Z" request.env["Shib-Authentication-Method"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" request.env["Shib-AuthnContext-Class"] = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" - request.env["Shib-Session-Index"] = "alskd87345cc761850086ccbc4987123lskdic56a3c652c37fc7c3bdbos9dia88" - request.env["Shib-eduPerson-eduPersonPrincipalName"] = "julia.leticia.da.silva@mconf-institution.org" - request.env["Shib-inetOrgPerson-cn"] = "Julia111ss Let\xC3\xADcia da Silva" - request.env["Shib-inetOrgPerson-mail"] = "julia.leticia.da.silva111sss11@personal-email.org" - request.env["Shib-inetOrgPerson-sn"] = "Julia111sss da Silva" + request.env["Shib-Session-Index"] = "alskd87345cc761850086ccbc4987123lskdic56a3c652c37fc7c3bdbos9dia87" + request.env["Shib-eduPerson-eduPersonPrincipalName"] = "maria.leticia.da.silva@mconf-institution.org" + request.env["Shib-inetOrgPerson-cn"] = "Maria Let\xC3\xADcia da Silva" + request.env["Shib-inetOrgPerson-mail"] = "maria.leticia.da.silva@personal-email.org" + request.env["Shib-inetOrgPerson-sn"] = "Let\xC3\xADcia da Silva" request.env["inetOrgPerson-cn"] = request.env["Shib-inetOrgPerson-cn"].clone request.env["inetOrgPerson-mail"] = request.env["Shib-inetOrgPerson-mail"].clone request.env["inetOrgPerson-sn"] = request.env["Shib-inetOrgPerson-sn"].clone diff --git a/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml b/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml index b4125c516..e64ab725e 100644 --- a/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml +++ b/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml @@ -22,7 +22,7 @@ %ul#login-extra-links - if current_site.shib_enabled? - %li= link_to t('.login_federation'), shibboleth_path + %li= link_to t('.login_federation'), shibboleth_path(create: false) - if current_site.certificate_login_enabled? %li= certificate_auth_link t('.login_certificate'), false diff --git a/lib/mconf/shibboleth.rb b/lib/mconf/shibboleth.rb index 3cf1a089a..6d7256dc8 100644 --- a/lib/mconf/shibboleth.rb +++ b/lib/mconf/shibboleth.rb @@ -184,23 +184,6 @@ def create_user(shib_token) user end - # Creates a new user ONLY IN MEMORY using the information stored in the session. - # This function is used when a user that don't have a shibboleth account wants to enter in a conference room without create a new account. - def create_fake_user(shib_token) - password = SecureRandom.hex(16) - params = { - username: get_unique_login, email: get_email, - password: password, password_confirmation: password, - profile_attributes: { - full_name: get_name - } - } - - user = User.new params - - user - end - # Update data in the user model which might change in the federation, for now # the only fields used are 'email' and 'name' def update_user(token) diff --git a/spec/controllers/certificate_authentication_controller_spec.rb b/spec/controllers/certificate_authentication_controller_spec.rb index b057c11c9..a514c8cee 100644 --- a/spec/controllers/certificate_authentication_controller_spec.rb +++ b/spec/controllers/certificate_authentication_controller_spec.rb @@ -2,24 +2,44 @@ describe CertificateAuthenticationController do - context "login" do + describe "#login" do it "signs in the user if the certificate is valid" it "creates a new user if it doesn't exist yet" it "uses an existent user if the certificate info matches the user" it "creates a new certificate token associated with the user" it "returns an error when the certificate is invalid" - end - context "join webconference without creating a user" do - before { - Site.current.update_attributes(certificate_login_enabled: true) - @cert_mock = double(Mconf::SSLClientCert) - Mconf::SSLClientCert.stub(:new) { @cert_mock } - @cert_mock.stub(:get_name) { "Test User Name" } - @cert_mock.stub(:get_email) { "fake@mconf.org" } - } + context "join webconference without creating a user" do + before { + Site.current.update_attributes(certificate_login_enabled: true) + @cert_mock = double(Mconf::SSLClientCert) + Mconf::SSLClientCert.stub(:new) { @cert_mock } + @cert_mock.stub(:get_name) { "Test User Name" } + @cert_mock.stub(:get_email) { "fake@mconf.org" } + } - it { expect { get :login, format: 'json', join_only: true }.not_to change{ User.count } } + it { expect { get :login, format: 'json', create: false }.not_to change{ User.count } } + end end + describe "#create_account?" do + ['false', false].each do |value| + it("returns false for #{value.inspect}") { + controller.stub(:params).and_return({ create: value }) + controller.send(:create_account?).should be(false) + } + end + + ['true', true, 1, nil, 0, 'other'].each do |value| + it("returns true for #{value.inspect}") { + controller.stub(:params).and_return({ create: value }) + controller.send(:create_account?).should be(true) + } + end + + it("returns true when params is empty") { + controller.stub(:params).and_return({}) + controller.send(:create_account?).should be(true) + } + end end diff --git a/spec/controllers/shibboleth_controller_spec.rb b/spec/controllers/shibboleth_controller_spec.rb index 54410d80f..280e1f450 100644 --- a/spec/controllers/shibboleth_controller_spec.rb +++ b/spec/controllers/shibboleth_controller_spec.rb @@ -321,12 +321,34 @@ end end - context "don't create a new account" do - it { expect { get :login, format: 'json', join_only: true }.not_to change{ User.count } } - it { expect { get :login, format: 'json', join_only: true }.not_to change{ ShibToken.count } } - it { - get :login, format: 'json', join_only: true - should redirect_to(my_home_path) } + context "renders the association page if the user doesn't have a token yet" do + before(:each) { get :login } + it { should render_template('associate') } + it { should render_with_layout('no_sidebar') } + end + + context "if the flag shib_always_new_account is set" do + let(:attrs) { + attrs = FactoryGirl.attributes_for(:user) + attrs[:profile_attributes] = FactoryGirl.attributes_for(:profile) + attrs + } + + before { + Site.current.update_attributes(:shib_always_new_account => true) + setup_shib(attrs[:profile_attributes][:full_name], attrs[:email], attrs[:email]) + } + + context "skips the association page" do + before(:each) { get :login } + it { should set_flash.to(I18n.t('shibboleth.create_association.account_created', :url => new_user_password_path)) } + it { should redirect_to(shibboleth_path)} + end + + context "calls #associate_with_new_account" do + let(:run_route) { get :login } + it_should_behave_like "a caller of #associate_with_new_account" + end end context "user has a token and his local account is disabled" do @@ -354,6 +376,21 @@ } it { token.reload.data.should eql(new_data) } end + + context "when passing create=false it signs in but doesn't create a user" do + before { + setup_shib("Expected User Full Name", "expectedemail@mconf.org", "expectedemail@mconf.org") + controller.should_receive(:after_sign_in_path_for).and_return('/expected') + controller.should_receive(:sign_in_guest).with("Expected User Full Name", "expectedemail@mconf.org") + } + + it { expect { get :login, create: false }.not_to change{ ShibToken.count } } + it { expect { get :login, create: false }.not_to change{ User.count } } + it { + get :login, create: false + should redirect_to('/expected') + } + end end end @@ -577,6 +614,27 @@ end end + describe "#create_account?" do + ['false', false].each do |value| + it("returns false for #{value.inspect}") { + controller.stub(:params).and_return({ create: value }) + controller.send(:create_account?).should be(false) + } + end + + ['true', true, 1, nil, 0, 'other'].each do |value| + it("returns true for #{value.inspect}") { + controller.stub(:params).and_return({ create: value }) + controller.send(:create_account?).should be(true) + } + end + + it("returns true when params is empty") { + controller.stub(:params).and_return({}) + controller.send(:create_account?).should be(true) + } + end + private # Sets up the login via shibboleth, including user information in the enviroment. diff --git a/spec/features/shibboleth/user_signs_in_spec.rb b/spec/features/shibboleth/user_signs_in_spec.rb index 392cc80f8..cd457ecc7 100644 --- a/spec/features/shibboleth/user_signs_in_spec.rb +++ b/spec/features/shibboleth/user_signs_in_spec.rb @@ -36,7 +36,6 @@ it { should_not have_content t('my.home.not_confirmed') } context "should generate a RecentActivity" do subject { RecentActivity.where(key: 'shibboleth.user.created').last } - it { puts subject.inspect } it { subject.should_not be_nil } it { subject.trackable.should eq User.last } @@ -432,4 +431,28 @@ end end + + context 'from the webconference invitation page' do + let(:space) { FactoryGirl.create(:space) } + let(:room) { FactoryGirl.create(:bigbluebutton_room, owner: space) } + + before { + enable_shib + setup_shib @attrs[:profile_attributes][:full_name], @attrs[:email], @attrs[:email] + visit join_webconf_path(room) + login_link.click + } + + context "joins but doesn't create a new account" do + let(:login_link) { find(:xpath, "//a[contains(@href, '#{shibboleth_path}')]", match: :first) } + + it { current_path.should eq(invite_bigbluebutton_room_path(room)) } + it { find("[name='user[name]']").value.should eql(@attrs[:profile_attributes][:full_name]) } + it { + visit my_home_path + current_path.should eq(new_user_session_path) + } + end + end + end From 278c92232fe5ac1371a8d7a5e7362c6f101aab4e Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 13 Dec 2017 18:37:07 -0200 Subject: [PATCH 63/75] Add a few more tests for ShibbolethController --- app/controllers/shibboleth_controller.rb | 2 +- .../controllers/shibboleth_controller_spec.rb | 41 +++++++++++++------ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/app/controllers/shibboleth_controller.rb b/app/controllers/shibboleth_controller.rb index 7cbb371c9..4f59f0aca 100644 --- a/app/controllers/shibboleth_controller.rb +++ b/app/controllers/shibboleth_controller.rb @@ -90,7 +90,7 @@ def login end else sign_in_guest(@shib.get_name, @shib.get_email) - redirect_to after_sign_in_path_for('') + redirect_to after_sign_in_path_for(nil) end end end diff --git a/spec/controllers/shibboleth_controller_spec.rb b/spec/controllers/shibboleth_controller_spec.rb index 280e1f450..83ec0b0f9 100644 --- a/spec/controllers/shibboleth_controller_spec.rb +++ b/spec/controllers/shibboleth_controller_spec.rb @@ -377,19 +377,36 @@ it { token.reload.data.should eql(new_data) } end - context "when passing create=false it signs in but doesn't create a user" do - before { - setup_shib("Expected User Full Name", "expectedemail@mconf.org", "expectedemail@mconf.org") - controller.should_receive(:after_sign_in_path_for).and_return('/expected') - controller.should_receive(:sign_in_guest).with("Expected User Full Name", "expectedemail@mconf.org") - } + context "when passing create=false" do + context "for a new user it signs in as guest but doesn't create a user" do + before { + setup_shib("Expected User Full Name", "expectedemail@mconf.org", "expectedemail@mconf.org") + controller.should_receive(:after_sign_in_path_for).and_return('/expected') + controller.should_receive(:sign_in_guest).with("Expected User Full Name", "expectedemail@mconf.org") + } - it { expect { get :login, create: false }.not_to change{ ShibToken.count } } - it { expect { get :login, create: false }.not_to change{ User.count } } - it { - get :login, create: false - should redirect_to('/expected') - } + it { expect { get :login, create: false }.not_to change{ ShibToken.count } } + it { expect { get :login, create: false }.not_to change{ User.count } } + it { + get :login, create: false + should redirect_to('/expected') + } + end + + context "for a returning user it signs in into the user account" do + let(:user) { FactoryGirl.create(:user) } + before { + setup_shib(user.full_name, user.email, user.email) + ShibToken.create!(identifier: user.email, user: user) + controller.should_not_receive(:sign_in_guest) + } + + before { + get :login, create: false + } + it { should redirect_to(my_home_path) } + it { subject.current_user.should eq(user) } + end end end end From 64dd4cdcfe7f6997895051544e8e5f851be9ac0a Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Thu, 14 Dec 2017 15:06:43 -0200 Subject: [PATCH 64/75] Pull changes (manually) from PR #954 and 278c922 to release-2.6 --- .../certificate_authentication_controller.rb | 8 ++- app/controllers/shibboleth_controller.rb | 22 +++++--- .../invite_userid.html.haml | 2 +- ...tificate_authentication_controller_spec.rb | 41 ++++++++++---- .../controllers/shibboleth_controller_spec.rb | 53 +++++++++++++++++++ .../features/shibboleth/user_signs_in_spec.rb | 25 ++++++++- 6 files changed, 132 insertions(+), 19 deletions(-) diff --git a/app/controllers/certificate_authentication_controller.rb b/app/controllers/certificate_authentication_controller.rb index a518c6026..372fbb85b 100644 --- a/app/controllers/certificate_authentication_controller.rb +++ b/app/controllers/certificate_authentication_controller.rb @@ -14,7 +14,7 @@ def login @cert = Mconf::SSLClientCert.new(certificate, session) - if params[:create] == "true" + if create_account? @cert.create_user @user = @cert.user @@ -44,4 +44,10 @@ def login end end + private + + def create_account? + # defaults to true, to create an account, unless: + params[:create] != "false" && params[:create] != false + end end diff --git a/app/controllers/shibboleth_controller.rb b/app/controllers/shibboleth_controller.rb index edf237322..4e9cad8f4 100644 --- a/app/controllers/shibboleth_controller.rb +++ b/app/controllers/shibboleth_controller.rb @@ -68,13 +68,18 @@ def login # no token means the user has no association yet, render a page to do it else - if !get_always_new_account - logger.info "Shibboleth: first access for this user, rendering the association page" - render :associate + if create_account? + if !get_always_new_account + logger.info "Shibboleth: first access for this user, rendering the association page" + render :associate + else + logger.info "Shibboleth: flag `shib_always_new_account` is set" + logger.info "Shibboleth: first access for this user, automatically creating a new account" + associate_with_new_account(@shib) + end else - logger.info "Shibboleth: flag `shib_always_new_account` is set" - logger.info "Shibboleth: first access for this user, automatically creating a new account" - associate_with_new_account(@shib) + sign_in_guest(@shib.get_name, @shib.get_email) + redirect_to after_sign_in_path_for(nil) end end end @@ -240,6 +245,11 @@ def get_always_new_account return current_site.shib_always_new_account end + def create_account? + # defaults to true, to create an account, unless: + params[:create] != "false" && params[:create] != false + end + # Adds fake test data to the environment to test shibboleth in development. def test_data if Rails.env == "development" diff --git a/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml b/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml index f8d0602e9..0733e8088 100644 --- a/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml +++ b/app/views/custom_bigbluebutton_rooms/invite_userid.html.haml @@ -19,7 +19,7 @@ .action-links %ul - if current_site.shib_enabled? - %li= link_to t('.login_federation'), shibboleth_path, :class => 'shibboleth_login' + %li= link_to t('.login_federation'), shibboleth_path(create: false), :class => 'shibboleth_login' - if current_site.certificate_login_enabled? %li= certificate_auth_link(t('.login_certificate'), false) diff --git a/spec/controllers/certificate_authentication_controller_spec.rb b/spec/controllers/certificate_authentication_controller_spec.rb index b057c11c9..70f79aea8 100644 --- a/spec/controllers/certificate_authentication_controller_spec.rb +++ b/spec/controllers/certificate_authentication_controller_spec.rb @@ -2,24 +2,45 @@ describe CertificateAuthenticationController do - context "login" do + describe "#login" do it "signs in the user if the certificate is valid" it "creates a new user if it doesn't exist yet" it "uses an existent user if the certificate info matches the user" it "creates a new certificate token associated with the user" it "returns an error when the certificate is invalid" + + context "join webconference without creating a user" do + before { + Site.current.update_attributes(certificate_login_enabled: true) + @cert_mock = double(Mconf::SSLClientCert) + Mconf::SSLClientCert.stub(:new) { @cert_mock } + @cert_mock.stub(:get_name) { "Test User Name" } + @cert_mock.stub(:get_email) { "fake@mconf.org" } + } + + it { expect { get :login, format: 'json', create: false }.not_to change{ User.count } } + end end - context "join webconference without creating a user" do - before { - Site.current.update_attributes(certificate_login_enabled: true) - @cert_mock = double(Mconf::SSLClientCert) - Mconf::SSLClientCert.stub(:new) { @cert_mock } - @cert_mock.stub(:get_name) { "Test User Name" } - @cert_mock.stub(:get_email) { "fake@mconf.org" } - } + describe "#create_account?" do + ['false', false].each do |value| + it("returns false for #{value.inspect}") { + controller.stub(:params).and_return({ create: value }) + controller.send(:create_account?).should be(false) + } + end - it { expect { get :login, format: 'json', join_only: true }.not_to change{ User.count } } + ['true', true, 1, nil, 0, 'other'].each do |value| + it("returns true for #{value.inspect}") { + controller.stub(:params).and_return({ create: value }) + controller.send(:create_account?).should be(true) + } + end + + it("returns true when params is empty") { + controller.stub(:params).and_return({}) + controller.send(:create_account?).should be(true) + } end end diff --git a/spec/controllers/shibboleth_controller_spec.rb b/spec/controllers/shibboleth_controller_spec.rb index 2a02a3c87..a6ad95e08 100644 --- a/spec/controllers/shibboleth_controller_spec.rb +++ b/spec/controllers/shibboleth_controller_spec.rb @@ -356,6 +356,38 @@ } it { token.reload.data.should eql(new_data) } end + + context "when passing create=false" do + context "for a new user it signs in as guest but doesn't create a user" do + before { + setup_shib("Expected User Full Name", "expectedemail@mconf.org", "expectedemail@mconf.org") + controller.should_receive(:after_sign_in_path_for).and_return('/expected') + controller.should_receive(:sign_in_guest).with("Expected User Full Name", "expectedemail@mconf.org") + } + + it { expect { get :login, create: false }.not_to change{ ShibToken.count } } + it { expect { get :login, create: false }.not_to change{ User.count } } + it { + get :login, create: false + should redirect_to('/expected') + } + end + + context "for a returning user it signs in into the user account" do + let(:user) { FactoryGirl.create(:user) } + before { + setup_shib(user.full_name, user.email, user.email) + ShibToken.create!(identifier: user.email, user: user) + controller.should_not_receive(:sign_in_guest) + } + + before { + get :login, create: false + } + it { should redirect_to(my_home_path) } + it { subject.current_user.should eq(user) } + end + end end end @@ -570,6 +602,27 @@ end end + describe "#create_account?" do + ['false', false].each do |value| + it("returns false for #{value.inspect}") { + controller.stub(:params).and_return({ create: value }) + controller.send(:create_account?).should be(false) + } + end + + ['true', true, 1, nil, 0, 'other'].each do |value| + it("returns true for #{value.inspect}") { + controller.stub(:params).and_return({ create: value }) + controller.send(:create_account?).should be(true) + } + end + + it("returns true when params is empty") { + controller.stub(:params).and_return({}) + controller.send(:create_account?).should be(true) + } + end + private # Sets up the login via shibboleth, including user information in the enviroment. diff --git a/spec/features/shibboleth/user_signs_in_spec.rb b/spec/features/shibboleth/user_signs_in_spec.rb index b9edd30e3..2dcd3beee 100644 --- a/spec/features/shibboleth/user_signs_in_spec.rb +++ b/spec/features/shibboleth/user_signs_in_spec.rb @@ -32,7 +32,6 @@ it { should_not have_content t('my.home.not_confirmed') } context "should generate a RecentActivity" do subject { RecentActivity.where(key: 'shibboleth.user.created').last } - it { puts subject.inspect } it { subject.should_not be_nil } it { subject.trackable.should eq User.last } @@ -404,4 +403,28 @@ end end + + context 'from the webconference invitation page' do + let(:space) { FactoryGirl.create(:space) } + let(:room) { FactoryGirl.create(:bigbluebutton_room, owner: space) } + + before { + enable_shib + setup_shib @attrs[:_full_name], @attrs[:email], @attrs[:email] + visit join_webconf_path(room) + login_link.click + } + + context "joins but doesn't create a new account" do + let(:login_link) { find(:xpath, "//a[contains(@href, '#{shibboleth_path}')]", match: :first) } + + it { current_path.should eq(invite_bigbluebutton_room_path(room)) } + it { find("[name='user[name]']").value.should eql(@attrs[:_full_name]) } + it { + visit my_home_path + current_path.should eq(new_user_session_path) + } + end + end + end From deaf392379afea62d0c7b49335d3ea82c791a76b Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 3 Jan 2018 14:22:58 -0200 Subject: [PATCH 65/75] Implement record permissions on join instead of create Now the flag that controls whether a user can record or not is in the join API call and not in the create anymore. This makes the permission control a lot more flexible. This feature is currently only on Mconf-Live, so it is disabled in Mconf-Web. It can be enabled by setting to true the flag: "Rails.application.config.per_user_record_permissions" --- app/models/user.rb | 2 + config/application.rb | 4 + config/initializers/bigbluebutton_rails.rb | 43 ++- config/locales/en/mconf.yml | 3 +- config/locales/pt-br/mconf.yml | 3 +- spec/lib/bigbluebutton_rails_spec.rb | 430 +++++++++++++++++---- 6 files changed, 412 insertions(+), 73 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index b1e05431f..f10e95f65 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -386,6 +386,8 @@ def cant_record_reason(room) if !can if !self.can_record msg = I18n.t('users.cant_record_reason.user_cannot_record') + else + msg = I18n.t('users.cant_record_reason.other') end end diff --git a/config/application.rb b/config/application.rb index 719b1d4a5..2e8b6021c 100644 --- a/config/application.rb +++ b/config/application.rb @@ -77,6 +77,10 @@ class Application < Rails::Application # add the views for the mailers in the path config.paths['app/views'].unshift("#{Rails.root}/app/mailers/views") + # Set permissions to record when users join conferences instead of when meetings are created. + # Set if to false to use the old model based on the `record` flag on the `create` API call. + config.per_user_record_permissions = false + config.exceptions_app = self.routes end end diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index 37123da96..59450a969 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -16,19 +16,50 @@ # Add custom metadata to all create calls config.get_create_options = Proc.new do |room, user| host = Site.current.domain_with_protocol - ability = Abilities.ability_for(user) opts = { - "meta_mconfweb-url" => Rails.application.routes.url_helpers.root_url(host: host), - "meta_mconfweb-room-type" => room.try(:owner).try(:class).try(:name), - record: ability.can?(:record_meeting, room) + "meta_mconfweb-url": Rails.application.routes.url_helpers.root_url(host: host), + "meta_mconfweb-room-type": room.try(:owner).try(:class).try(:name) } - reason = user.try(:cant_record_reason, room) - opts["meta_mconf-live-wont-record-message"] = reason if reason.present? + if Rails.application.config.per_user_record_permissions + opts[:record] = true + else + ability = Abilities.ability_for(user) + if user.present? + reason = user.try(:cant_record_reason, room) + else + reason = I18n.t('users.cant_record_reason.user_cannot_record') + end + + opts[:record] = ability.can?(:record_meeting, room) + opts[:"meta_mconf-live-wont-record-message"] = reason if reason.present? + end opts end + + # Add custom metadata join calls + config.get_join_options = Proc.new do |room, user| + if Rails.application.config.per_user_record_permissions + ability = Abilities.ability_for(user) + + opts = { + "userdata-record": ability.can?(:record_meeting, room) + } + + if user.present? + reason = user.try(:cant_record_reason, room) + else + reason = I18n.t('users.cant_record_reason.user_cannot_record') + end + opts[:"userdata-disabled_record_reason"] = reason if reason.present? + + opts + else + {} + end + end end Rails.application.config.to_prepare do diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 9ec14ba40..d5550988f 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -1770,7 +1770,8 @@ en: approved: "The user %{name} was approved to access the website!" not_enabled: "Approval of users is not enabled in this website or the user is already approved" cant_record_reason: - user_cannot_record: "The user that created this meeting has no permission to record meetings." + other: "You can't record meetings in this room" + user_cannot_record: "You don't have permission to record meetings" create: error: "Errors creating the user: %{errors}" success: "User created successfully" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index d544ad4d9..6e49cb3be 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -1778,7 +1778,8 @@ pt-br: approved: "O usuário %{name} foi aprovado para acessar este site!" not_enabled: "A aprovação de registros não está habilitada neste site ou o usuário já está aprovado" cant_record_reason: - user_cannot_record: "O usuário que criou esta reunião não tem permissão para gravar reuniões." + other: "Você não pode gravar reuniões nesta sala" + user_cannot_record: "Você não possui permissão para gravar reuniões" confirm: confirmed: "O usuário %{username} foi confirmado" create: diff --git a/spec/lib/bigbluebutton_rails_spec.rb b/spec/lib/bigbluebutton_rails_spec.rb index bf4d9ca63..69dac1dce 100644 --- a/spec/lib/bigbluebutton_rails_spec.rb +++ b/spec/lib/bigbluebutton_rails_spec.rb @@ -45,10 +45,10 @@ } it { - target.get_create_options.call(room).should have_key("meta_mconfweb-url") - target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") - target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") - target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("User") + target.get_create_options.call(room).should have_key(:"meta_mconfweb-url") + target.get_create_options.call(room).should have_key(:"meta_mconfweb-room-type") + target.get_create_options.call(room)[:"meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") + target.get_create_options.call(room)[:"meta_mconfweb-room-type"].should eql("User") } end @@ -58,10 +58,10 @@ } it { - target.get_create_options.call(room).should have_key("meta_mconfweb-url") - target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") - target.get_create_options.call(room)["meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") - target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") + target.get_create_options.call(room).should have_key(:"meta_mconfweb-url") + target.get_create_options.call(room).should have_key(:"meta_mconfweb-room-type") + target.get_create_options.call(room)[:"meta_mconfweb-url"].should eql("http://#{Site.current.domain}/") + target.get_create_options.call(room)[:"meta_mconfweb-room-type"].should eql("Space") } end @@ -72,69 +72,149 @@ } it { - target.get_create_options.call(room).should have_key("meta_mconfweb-url") - target.get_create_options.call(room).should have_key("meta_mconfweb-room-type") - target.get_create_options.call(room)["meta_mconfweb-url"].should eql("https://#{Site.current.domain}/") - target.get_create_options.call(room)["meta_mconfweb-room-type"].should eql("Space") + target.get_create_options.call(room).should have_key(:"meta_mconfweb-url") + target.get_create_options.call(room).should have_key(:"meta_mconfweb-room-type") + target.get_create_options.call(room)[:"meta_mconfweb-url"].should eql("https://#{Site.current.domain}/") + target.get_create_options.call(room)[:"meta_mconfweb-room-type"].should eql("Space") } end end context "sets the record flag" do - context "if there's no user logged" do - it { - target.get_create_options.call(room, nil).should have_key(:record) - target.get_create_options.call(room, nil)[:record].should be(false) - } - end - context "if there's a user logged" do - let(:user) { FactoryGirl.create(:user) } + context "when config.per_user_record_permissions is true" do before { - # a custom ability to control what the user can do - @ability = Object.new - @ability.extend(CanCan::Ability) - Abilities.stub(:ability_for).and_return(@ability) - } - - context "sets the record option" do - context "when the user can record" do - before { @ability.can :record_meeting, room } - - context "and the room is set to record" do - before { room.update_attributes(record_meeting: true) } - it { - target.get_create_options.call(room, user).should have_key(:record) - target.get_create_options.call(room, user)[:record].should be(true) - } + @previous = Rails.application.config.per_user_record_permissions + Rails.application.config.per_user_record_permissions = true + } + after { + Rails.application.config.per_user_record_permissions = @previous + } + + context "if there's no user logged" do + it { + target.get_create_options.call(room, nil).should have_key(:record) + target.get_create_options.call(room, nil)[:record].should be(true) + } + end + + context "if there's a user logged" do + let(:user) { FactoryGirl.create(:user) } + before { + # a custom ability to control what the user can do + @ability = Object.new + @ability.extend(CanCan::Ability) + Abilities.stub(:ability_for).and_return(@ability) + } + + context "sets the record option" do + context "when the user can record" do + before { @ability.can :record_meeting, room } + + context "and the room is set to record" do + before { room.update_attributes(record_meeting: true) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(true) + } + end + + context "and the room is not set to record" do + before { room.update_attributes(record_meeting: false) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(true) + } + end end - context "and the room is not set to record" do - before { room.update_attributes(record_meeting: false) } - it { - target.get_create_options.call(room, user).should have_key(:record) - target.get_create_options.call(room, user)[:record].should be(true) - } + context "when the user cannot record" do + before { @ability.cannot :record_meeting, room } + + context "and the room is set to record" do + before { room.update_attributes(record_meeting: true) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(true) + } + end + + context "and the room is not set to record" do + before { room.update_attributes(record_meeting: false) } + it { + target.get_create_options.call(room, nil).should have_key(:record) + target.get_create_options.call(room, nil)[:record].should be(true) + } + end end end + end + end + + context "when config.per_user_record_permissions is false" do + before { + @previous = Rails.application.config.per_user_record_permissions + Rails.application.config.per_user_record_permissions = false + } + after { + Rails.application.config.per_user_record_permissions = @previous + } + + context "if there's no user logged" do + it { + target.get_create_options.call(room, nil).should have_key(:record) + target.get_create_options.call(room, nil)[:record].should be(false) + } + end - context "when the user cannot record" do - before { @ability.cannot :record_meeting, room } + context "if there's a user logged" do + let(:user) { FactoryGirl.create(:user) } + before { + # a custom ability to control what the user can do + @ability = Object.new + @ability.extend(CanCan::Ability) + Abilities.stub(:ability_for).and_return(@ability) + } - context "and the room is set to record" do - before { room.update_attributes(record_meeting: true) } - it { - target.get_create_options.call(room, user).should have_key(:record) - target.get_create_options.call(room, user)[:record].should be(false) - } + context "sets the record option" do + context "when the user can record" do + before { @ability.can :record_meeting, room } + + context "and the room is set to record" do + before { room.update_attributes(record_meeting: true) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(true) + } + end + + context "and the room is not set to record" do + before { room.update_attributes(record_meeting: false) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(true) + } + end end - context "and the room is not set to record" do - before { room.update_attributes(record_meeting: false) } - it { - target.get_create_options.call(room, nil).should have_key(:record) - target.get_create_options.call(room, nil)[:record].should be(false) - } + context "when the user cannot record" do + before { @ability.cannot :record_meeting, room } + + context "and the room is set to record" do + before { room.update_attributes(record_meeting: true) } + it { + target.get_create_options.call(room, user).should have_key(:record) + target.get_create_options.call(room, user)[:record].should be(false) + } + end + + context "and the room is not set to record" do + before { room.update_attributes(record_meeting: false) } + it { + target.get_create_options.call(room, nil).should have_key(:record) + target.get_create_options.call(room, nil)[:record].should be(false) + } + end end end end @@ -145,25 +225,245 @@ context "sets the 'wont record' message" do let(:user) { FactoryGirl.create(:user) } - context "if the user doesn't have permission to record meetings" do - let(:msg) { I18n.t('users.cant_record_reason.user_cannot_record') } - before { user.update_attributes(can_record: false) } - - it { - target.get_create_options.call(room, user).should have_key("meta_mconf-live-wont-record-message") - target.get_create_options.call(room, user)["meta_mconf-live-wont-record-message"].should eql(msg) + context "when config.per_user_record_permissions is false" do + before { + @previous = Rails.application.config.per_user_record_permissions + Rails.application.config.per_user_record_permissions = false } + after { + Rails.application.config.per_user_record_permissions = @previous + } + + context "if the user doesn't have permission to record meetings" do + let(:msg) { I18n.t('users.cant_record_reason.user_cannot_record') } + before { user.update_attributes(can_record: false) } + + it { + target.get_create_options.call(room, user).should have_key(:"meta_mconf-live-wont-record-message") + target.get_create_options.call(room, user)[:"meta_mconf-live-wont-record-message"].should eql(msg) + } + end + + context "if it's an anonymous user" do + let(:msg) { I18n.t('users.cant_record_reason.user_cannot_record') } + it { + target.get_create_options.call(room, nil).should have_key(:"meta_mconf-live-wont-record-message") + target.get_create_options.call(room, nil)[:"meta_mconf-live-wont-record-message"].should eql(msg) + } + end + + context "if the user has permission to record meetings" do + let(:room) { user.bigbluebutton_room } + before { user.update_attributes(can_record: true) } + + it { + target.get_create_options.call(room, user).should_not have_key(:"meta_mconf-live-wont-record-message") + target.get_create_options.call(room, user).should_not have_key("meta_mconf-live-wont-record-message") + } + end end - context "if the user has permission to record meetings" do - before { user.update_attributes(can_record: true) } + context "when config.per_user_record_permissions is true" do + before { + @previous = Rails.application.config.per_user_record_permissions + Rails.application.config.per_user_record_permissions = true + } + after { + Rails.application.config.per_user_record_permissions = @previous + } + before { user.update_attributes(can_record: false) } it { + target.get_create_options.call(room, user).should_not have_key(:"meta_mconf-live-wont-record-message") target.get_create_options.call(room, user).should_not have_key("meta_mconf-live-wont-record-message") } end end + end + + describe "#get_join_options" do + let(:target) { BigbluebuttonRails.configuration } + let(:room) { FactoryGirl.create(:bigbluebutton_room) } + + it { target.should respond_to(:get_join_options) } + it { target.get_create_options.should be_a(Proc) } + context "sets the record userdata" do + + context "when config.per_user_record_permissions is true" do + before { + @previous = Rails.application.config.per_user_record_permissions + Rails.application.config.per_user_record_permissions = true + } + after { + Rails.application.config.per_user_record_permissions = @previous + } + + context "if there's no user logged" do + it { + target.get_join_options.call(room, nil).should have_key(:'userdata-record') + target.get_join_options.call(room, nil)[:'userdata-record'].should be(false) + } + end + + context "if there's a user logged" do + let(:user) { FactoryGirl.create(:user) } + before { + # a custom ability to control what the user can do + @ability = Object.new + @ability.extend(CanCan::Ability) + Abilities.stub(:ability_for).and_return(@ability) + } + + context "sets the record option" do + context "when the user can record" do + before { @ability.can :record_meeting, room } + + context "and the room is set to record" do + before { room.update_attributes(record_meeting: true) } + it { + target.get_join_options.call(room, user).should have_key(:'userdata-record') + target.get_join_options.call(room, user)[:'userdata-record'].should be(true) + } + end + + context "and the room is not set to record" do + before { room.update_attributes(record_meeting: false) } + it { + target.get_join_options.call(room, user).should have_key(:'userdata-record') + target.get_join_options.call(room, user)[:'userdata-record'].should be(true) + } + end + end + + context "when the user cannot record" do + before { @ability.cannot :record_meeting, room } + + context "and the room is set to record" do + before { room.update_attributes(record_meeting: true) } + it { + target.get_join_options.call(room, user).should have_key(:'userdata-record') + target.get_join_options.call(room, user)[:'userdata-record'].should be(false) + } + end + + context "and the room is not set to record" do + before { room.update_attributes(record_meeting: false) } + it { + target.get_join_options.call(room, nil).should have_key(:'userdata-record') + target.get_join_options.call(room, nil)[:'userdata-record'].should be(false) + } + end + end + end + end + end + + context "when config.per_user_record_permissions is false" do + before { + @previous = Rails.application.config.per_user_record_permissions + Rails.application.config.per_user_record_permissions = false + } + after { + Rails.application.config.per_user_record_permissions = @previous + } + + context "if there's no user logged" do + it { + target.get_join_options.call(room, nil).should_not have_key(:'userdata-record') + } + end + + context "if there's a user logged that can record" do + let(:user) { FactoryGirl.create(:user) } + before { + # a custom ability to control what the user can do + @ability = Object.new + @ability.extend(CanCan::Ability) + Abilities.stub(:ability_for).and_return(@ability) + @ability.can :record_meeting, room + room.update_attributes(record_meeting: true) + } + + it { + target.get_join_options.call(room, nil).should_not have_key(:'userdata-record') + } + end + end + + end + + context "sets the 'wont record' message" do + let(:user) { FactoryGirl.create(:user) } + + context "when config.per_user_record_permissions is true" do + before { + @previous = Rails.application.config.per_user_record_permissions + Rails.application.config.per_user_record_permissions = true + } + after { + Rails.application.config.per_user_record_permissions = @previous + } + + context "if the user doesn't have permission to record meetings" do + let(:msg) { I18n.t('users.cant_record_reason.user_cannot_record') } + before { user.update_attributes(can_record: false) } + + it { + target.get_join_options.call(room, user).should have_key(:"userdata-disabled_record_reason") + target.get_join_options.call(room, user)[:"userdata-disabled_record_reason"].should eql(msg) + } + end + + context "if it's an anonymous user" do + let(:msg) { I18n.t('users.cant_record_reason.user_cannot_record') } + + it { + target.get_join_options.call(room, nil).should have_key(:"userdata-disabled_record_reason") + target.get_join_options.call(room, nil)[:"userdata-disabled_record_reason"].should eql(msg) + } + end + + context "if the user has permission to record meetings" do + let(:room) { user.bigbluebutton_room } + before { user.update_attributes(can_record: true) } + + it { + target.get_join_options.call(room, user).should_not have_key(:"userdata-disabled_record_reason") + target.get_join_options.call(room, user).should_not have_key("userdata-disabled_record_reason") + } + end + end + + context "when config.per_user_record_permissions is false" do + before { + @previous = Rails.application.config.per_user_record_permissions + Rails.application.config.per_user_record_permissions = false + } + after { + Rails.application.config.per_user_record_permissions = @previous + } + + context "if the user doesn't have permission to record meetings" do + let(:msg) { I18n.t('users.cant_record_reason.user_cannot_record') } + before { user.update_attributes(can_record: false) } + + it { + target.get_join_options.call(room, user).should_not have_key(:"userdata-disabled_record_reason") + target.get_join_options.call(room, user).should_not have_key("userdata-disabled_record_reason") + } + end + + context "if it's an anonymous user" do + let(:msg) { I18n.t('users.cant_record_reason.user_cannot_record') } + + it { + target.get_join_options.call(room, nil).should_not have_key(:"userdata-disabled_record_reason") + target.get_join_options.call(room, nil).should_not have_key("userdata-disabled_record_reason") + } + end + end + end end end From 6ff25c3fb9980a88a5aa6f9390a181e9e86e9eea Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Wed, 3 Jan 2018 14:46:20 -0200 Subject: [PATCH 66/75] Allow 'config.per_user_record_permissions' to be set via env vars --- .env.development | 4 ++++ config/application.rb | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.env.development b/.env.development index 9b0a817dc..891b3893e 100644 --- a/.env.development +++ b/.env.development @@ -21,6 +21,10 @@ MCONF_EMAIL_TRACK_CLICKED=true # For web portals that have another site as the frontpage # MCONF_EXTERNAL_FRONTPAGE='https://my-website.com' +# Configure record permissions when a user joins a conference and not when a conference is +# created +# MCONF_PER_USER_RECORD_PERMISSIONS=true + # Set to the name of the theme you want to use # MCONF_THEME='my-theme' diff --git a/config/application.rb b/config/application.rb index 314a4958a..9aaa0ddb5 100644 --- a/config/application.rb +++ b/config/application.rb @@ -79,10 +79,6 @@ class Application < Rails::Application # add the views for the mailers in the path config.paths['app/views'].unshift("#{Rails.root}/app/mailers/views") - # Set permissions to record when users join conferences instead of when meetings are created. - # Set if to false to use the old model based on the `record` flag on the `create` API call. - config.per_user_record_permissions = false - config.exceptions_app = self.routes config.locale_names = @@ -120,12 +116,16 @@ class Application < Rails::Application # Themes: set to the theme name if using any! config.theme = ENV['MCONF_THEME'] - # Socual login API Keys + # Social login API Keys config.omniauth_google_key = ENV['MCONF_OMNIAUTH_GOOGLE_KEY'] || nil config.omniauth_facebook_key = ENV['MCONF_OMNIAUTH_FACEBOOK_KEY'] || nil config.omniauth_google_secret = ENV['MCONF_OMNIAUTH_GOOGLE_SECRET'] || nil config.omniauth_facebook_secret = ENV['MCONF_OMNIAUTH_FACEBOOK_SECRET'] || nil + # Set permissions to record when users join conferences instead of when meetings are created. + # Set if to false to use the old model based on the `record` flag on the `create` API call. + config.per_user_record_permissions = ENV['MCONF_PER_USER_RECORD_PERMISSIONS'] == 'true' + # Themes: configure assets paths here! # config.assets.paths << Rails.root.join("app", "assets", "themes", "my-theme", "stylesheets") # config.assets.paths << Rails.root.join("app", "assets", "themes", "my-theme", "images") From 232a0dfc004f5d5d89add7fc8e5c46d282f0f656 Mon Sep 17 00:00:00 2001 From: rafafp Date: Fri, 12 Jan 2018 15:23:52 -0200 Subject: [PATCH 67/75] Adding a config variable to enable the playback url authentication --- .env.development | 3 +++ config/initializers/bigbluebutton_rails.rb | 1 + 2 files changed, 4 insertions(+) diff --git a/.env.development b/.env.development index 891b3893e..5a3f515c3 100644 --- a/.env.development +++ b/.env.development @@ -40,3 +40,6 @@ MCONF_EMAIL_TRACK_CLICKED=true # MCONF_OMNIAUTH_FACEBOOK_KEY='yourfacebookkey' # MCONF_OMNIAUTH_GOOGLE_SECRET='yourgooglesecret' # MCONF_OMNIAUTH_FACEBOOK_SECRET='yourfacebooksecret' + +# Flag to use authentication on playback url +# MCONF_PLAYBACK_URL_AUTH='true' diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index 8c5de72ec..3b7187b8b 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -6,6 +6,7 @@ BigbluebuttonRails.configure do |config| config.guest_support = true + config.playback_url_authentication = ENV['MCONF_PLAYBACK_URL_AUTH'] == 'true' # Set the invitation URL to the full URL of the room config.get_invitation_url = Proc.new do |room| From b1e016a2039261ba8d2ef4998b44b56b2326032b Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Tue, 16 Jan 2018 17:12:53 -0200 Subject: [PATCH 68/75] Inform that the user is removed from all spaces when being disabled --- config/locales/en/mconf.yml | 4 ++-- config/locales/pt-br/mconf.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/locales/en/mconf.yml b/config/locales/en/mconf.yml index 133eee9d0..d4e16a398 100755 --- a/config/locales/en/mconf.yml +++ b/config/locales/en/mconf.yml @@ -1060,7 +1060,7 @@ en: confirm: "Confirm this user" confirm_confirm: "Are you sure you want to confirm this user?" disable: "Disable user" - disable_confirm: "Are you sure you want to disable this user's account?
(The user will receive a notification by email)" + disable_confirm: "Are you sure you want to disable this user's account? The user will be removed from all his spaces.
(The user will receive a notification by email)" disallow_record: "Remove the user's permission to record conferences" disapprove: "Disapprove: block user from accessing the website" disapprove_confirm: "Are you sure you want to block this user from accessing the website?" @@ -1833,7 +1833,7 @@ en: confirm_user: "Confirm this user's account" confirm_user_confirm: "Are you sure you want to confirm this user's account?" disable: "Disable this user's account" - disable_confirm: "Are you sure you want to disable this user's account?
(The user will receive a notification by email)" + disable_confirm: "Are you sure you want to disable this user's account? The user will be removed from all his spaces.
(The user will receive a notification by email)" federated: see_your_data: "Click here to see your data that the federation shared with this website" title: "You are signed in using a federation!" diff --git a/config/locales/pt-br/mconf.yml b/config/locales/pt-br/mconf.yml index a05eb7387..987dccf60 100644 --- a/config/locales/pt-br/mconf.yml +++ b/config/locales/pt-br/mconf.yml @@ -1067,7 +1067,7 @@ pt-br: confirm: "Confirmar este usuário" confirm_confirm: "Tem certeza que deseja confirmar este usuário?" disable: "Desabilitar usuário" - disable_confirm: "Você tem certeza que deseja desabilitar a conta deste usuário?
(O usuário receberá uma notificação por e-mail)" + disable_confirm: "Você tem certeza que deseja desabilitar a conta deste usuário? O usuário será removido de todas suas comunidades.
(O usuário receberá uma notificação por e-mail)" disallow_record: "Remover permissão de gravação" disapprove: "Desaprovar: bloquear o acesso deste usuário ao site" disapprove_confirm: "Tem certeza que deseja bloquear o acesso deste usuário ao site?" @@ -1860,7 +1860,7 @@ pt-br: confirm_user: "Confirmar a conta deste usuário" confirm_user_confirm: "Você tem certeza que deseja confirmar a conta deste usuário?" disable: "Desabilitar a conta deste usuário" - disable_confirm: "Você tem certeza que deseja desabilitar a conta deste usuário?
(O usuário receberá uma notificação por e-mail)" + disable_confirm: "Você tem certeza que deseja desabilitar a conta deste usuário? O usuário será removido de todas suas comunidades.
(O usuário receberá uma notificação por e-mail)" federated: see_your_data: "Clique para ver os seus dados que foram compartilhados com este site pela federação" title: "Você acessou este site através de uma federação!" From 5c07d79bc5c9b71ab23d44854c156524912215d1 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Tue, 9 Jan 2018 18:30:38 -0200 Subject: [PATCH 69/75] Fix migrations after testing with real production data Migratino to BigbluebuttonRails 220 was split in 2 migrations but the first depended on the second. --- ...0170207190227_bigbluebutton_rails_to220.rb | 24 +++++++++++++------ ...170531162723_bigbluebutton_rails_to220b.rb | 21 ---------------- 2 files changed, 17 insertions(+), 28 deletions(-) delete mode 100644 db/migrate/20170531162723_bigbluebutton_rails_to220b.rb diff --git a/db/migrate/20170207190227_bigbluebutton_rails_to220.rb b/db/migrate/20170207190227_bigbluebutton_rails_to220.rb index 450b8ef23..45e86e4f3 100644 --- a/db/migrate/20170207190227_bigbluebutton_rails_to220.rb +++ b/db/migrate/20170207190227_bigbluebutton_rails_to220.rb @@ -1,39 +1,49 @@ class BigbluebuttonRailsTo220 < ActiveRecord::Migration def up + # remove start_time, it's now create_time only BigbluebuttonMeeting.where(create_time: nil).find_each do |meeting| - meeting.update_attribute(create_time, meeting.start_time.to_i) + meeting.update_attribute(:create_time, meeting.start_time.to_i) end - remove_column :bigbluebutton_meetings, :start_time + # adapt the content of some columns to another type add_column :bigbluebutton_recordings, :temp_start_time, :decimal, precision: 14, scale: 0 add_column :bigbluebutton_recordings, :temp_end_time, :decimal, precision: 14, scale: 0 - BigbluebuttonRecording.find_each do |rec| rec.update_attributes( temp_start_time: rec.start_time.to_i, temp_end_time: rec.end_time.to_i ) end - remove_column :bigbluebutton_recordings, :start_time remove_column :bigbluebutton_recordings, :end_time - rename_column :bigbluebutton_recordings, :temp_start_time, :start_time rename_column :bigbluebutton_recordings, :temp_end_time, :end_time + create_table :bigbluebutton_attendees do |t| + t.string :user_id + t.string :external_user_id + t.string :user_name + t.decimal :join_time, precision: 14, scale: 0 + t.decimal :left_time, precision: 14, scale: 0 + t.integer :bigbluebutton_meeting_id + end + + add_column :bigbluebutton_meetings, :finish_time, :decimal, precision: 14, scale: 0 + add_column :bigbluebutton_meetings, :got_stats, :string + BigbluebuttonMeeting.reset_column_information # to be able to use #got_stats below + + # associate meetings with recordings and if no meeting is found, make a new one BigbluebuttonRecording.find_each do |rec| rec.update_attributes( meeting_id: BigbluebuttonRecording.find_matching_meeting(rec).try(:id) ) end - BigbluebuttonRecording.where(meeting_id: nil).find_each do |rec| rec.update_attributes( meeting_id: find_matching_meeting_closer_create_time(rec) ) end - BigbluebuttonRecording.where(meeting_id: nil).where.not(room_id: nil).find_each do |rec| meeting = BigbluebuttonMeeting.create do |m| creator_data = find_creator_data(rec) diff --git a/db/migrate/20170531162723_bigbluebutton_rails_to220b.rb b/db/migrate/20170531162723_bigbluebutton_rails_to220b.rb deleted file mode 100644 index d360bedfd..000000000 --- a/db/migrate/20170531162723_bigbluebutton_rails_to220b.rb +++ /dev/null @@ -1,21 +0,0 @@ -class BigbluebuttonRailsTo220b < ActiveRecord::Migration - def up - create_table :bigbluebutton_attendees do |t| - t.string :user_id - t.string :external_user_id - t.string :user_name - t.decimal :join_time, precision: 14, scale: 0 - t.decimal :left_time, precision: 14, scale: 0 - t.integer :bigbluebutton_meeting_id - end - - add_column :bigbluebutton_meetings, :finish_time, :decimal, precision: 14, scale: 0 - add_column :bigbluebutton_meetings, :got_stats, :string - end - - def down - drop_table :bigbluebutton_attendees - remove_column :bigbluebutton_meetings, :finish_time - remove_column :bigbluebutton_meetings, :got_stats - end -end From 3553109984f934cfdbe15cc9d989bbd580595efd Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Mon, 22 Jan 2018 17:56:13 -0200 Subject: [PATCH 70/75] Update bigbluebutton_rails --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index a18f7fa89..24a8d6ad8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,7 +8,7 @@ GIT GIT remote: https://github.com/mconf/bigbluebutton_rails.git - revision: fa4bfcd59a33af300d0882bd852609219a7b3d9b + revision: 17054760288448aff0d02534fde8cd62da6c8523 branch: release-2.3 specs: bigbluebutton_rails (2.2.0) From 0a6a305ae2c23b0379e67ee31f7a96a5ebd46528 Mon Sep 17 00:00:00 2001 From: rafafp Date: Thu, 25 Jan 2018 15:11:11 -0200 Subject: [PATCH 71/75] Will no longer show flash for "alredy signed in" or any blank string --- app/assets/javascripts/app/application/notifications.js.coffee | 3 +++ config/locales/en/_devise.yml | 2 +- config/locales/pt-br/_devise.yml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/app/application/notifications.js.coffee b/app/assets/javascripts/app/application/notifications.js.coffee index 6b4bdf1ec..8c57dd38f 100644 --- a/app/assets/javascripts/app/application/notifications.js.coffee +++ b/app/assets/javascripts/app/application/notifications.js.coffee @@ -42,6 +42,9 @@ class mconf.Notification showNotification = (target, type) -> $target = $(target) + if _.isEmpty($target.text().trim()) + return + unless $target.attr("data-notification-shown") is "1" $target.attr("data-notification-shown", "1") diff --git a/config/locales/en/_devise.yml b/config/locales/en/_devise.yml index 44c399aa4..ef2046f0f 100644 --- a/config/locales/en/_devise.yml +++ b/config/locales/en/_devise.yml @@ -7,7 +7,7 @@ en: send_instructions: "You will receive an email with instructions about how to confirm your account in a few minutes." send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions about how to confirm your account in a few minutes." failure: - already_authenticated: "You are already signed in." + already_authenticated: '' disabled_by_certificate_auth: 'Your user is not allowed to sign in via local authentication. Please sign in using a certificate.' disabled_by_shib_auth: 'Your user is not allowed to sign in via local authentication. Please sign in using the federation.' inactive: "Your account was not activated yet." diff --git a/config/locales/pt-br/_devise.yml b/config/locales/pt-br/_devise.yml index 384ced116..bec1fc55b 100644 --- a/config/locales/pt-br/_devise.yml +++ b/config/locales/pt-br/_devise.yml @@ -7,7 +7,7 @@ pt-br: send_instructions: 'Dentro de minutos, você receberá um e-mail com instruções para a confirmação da sua conta.' send_paranoid_instructions: 'Se o seu endereço de e-mail estiver cadastrado, você receberá uma mensagem com instruções para confirmação da sua conta.' failure: - already_authenticated: 'Você já está logado.' + already_authenticated: '' disabled_by_certificate_auth: 'Seu usuário não possui permissão de utilizar o acesso local. Por favor faça login usando um certificado.' disabled_by_shib_auth: 'Seu usuário não possui permissão de utilizar o acesso local. Por favor faça login via federação.' inactive: 'Sua conta ainda não foi ativada.' From 636e590967910727b1e1242e95eb3e4065f0443b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vit=C3=B3ria=20Rosa?= Date: Thu, 1 Feb 2018 14:26:13 -0200 Subject: [PATCH 72/75] Fixed shib phrase (wrong example) --- config/locales/en/_simple_form.yml | 2 +- config/locales/pt-br/_simple_form.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/en/_simple_form.yml b/config/locales/en/_simple_form.yml index 07f6a8d3d..88b26cdca 100644 --- a/config/locales/en/_simple_form.yml +++ b/config/locales/en/_simple_form.yml @@ -62,7 +62,7 @@ en: shib_env_variables: "Shibboleth returns a set of environment variables when the user authenticates. All the variables specified in this list will be fetched from the environment and set attributes of the user. Specify each variable in a different line. The comparisons are case-insensitive and the strings are trimmed, and you can also use regular expressions. If this field is empty all variables that start with \"Shib-\" will be fetched." shib_login_field: "Not required. When a user authenticates in a Shibboleth service provider this field will be used to obtain the user's login. If not informed the application will generate a login from the user's name. Example: \"Shib-inetOrgPerson-cn\"." shib_name_field: "Required. When a user authenticates in a Shibboleth service provider this field will be used to obtain the user's name. Example: \"Shib-inetOrgPerson-sn\"." - shib_principal_name_field: "Required. When a user authenticates in a Shibboleth service provider this field will be used to obtain the user's \"principal name\", that contains the user's unique identifier. If you change this value after having users already in the database, they might lose access to their account! Example \"Shib-inetOrgPerson-sn\"." + shib_principal_name_field: "Required. When a user authenticates in a Shibboleth service provider this field will be used to obtain the user's \"principal name\", that contains the user's unique identifier. If you change this value after having users already in the database, they might lose access to their account! Example \"Shib-eduPerson-eduPersonPrincipalName\"." shib_update_users: "If set, some of the user attributes will be automatically updated using the information received from the federation (e.g. update the user's email if it changed in the federation). In this case users will also not be able to edit these attributes in the site. If not set, the attributes will not be automatically updated." smtp_login: "The login email to your SMTP server" smtp_password: "The password for your email account in your SMTP server" diff --git a/config/locales/pt-br/_simple_form.yml b/config/locales/pt-br/_simple_form.yml index fd814161b..a60db135d 100644 --- a/config/locales/pt-br/_simple_form.yml +++ b/config/locales/pt-br/_simple_form.yml @@ -71,7 +71,7 @@ pt-br: shib_env_variables: "O Shibboleth retorna um conjunto de variáveis de ambiente quando o usuário é autenticado. Todas as variáveis especificadas nesta lista serão lidas do Shibboleth e utilizadas pela aplicação como dados do usuário. Especifique cada variável em uma linha diferente. As comparações são \"case-insensitive\" e espaços são removidos, e você também pode utilizar expressões regulares. Se este campo estiver vazio todas variáveis que iniciam com \"Shib-\" serão utilizadas." shib_login_field: "Requerido. Quando um usuário se autentica em provedor de serviços Shibboleth este campo será utilizado para obter o login do usuário. Se não informado, a aplicação irá automaticamente criar um login a partir do nome do usuário. Exemplo: Shib-inetOrgPerson-mail" shib_name_field: "Requerido. Quando um usuário se autentica em provedor de serviços Shibboleth este campo será utilizado para obter o nome do usuário. Exemplo: Shib-inetOrgPerson-cn" - shib_principal_name_field: "Requerido. Quando um usuário se autentica em provedor de serviços Shibboleth este campo será utilizado para obter o \"principal name\" do usuário, que contém o seu identificador único. Se você mudar este campo após ter usuários no banco de dados, estes usuários podem perder acesso à aplicação! Exemplo: \"Shib-inetOrgPerson-cn\"." + shib_principal_name_field: "Requerido. Quando um usuário se autentica em provedor de serviços Shibboleth este campo será utilizado para obter o \"principal name\" do usuário, que contém o seu identificador único. Se você mudar este campo após ter usuários no banco de dados, estes usuários podem perder acesso à aplicação! Exemplo: \"Shib-eduPerson-eduPersonPrincipalName\"." shib_update_users: "Se habilitado, alguns atributos do usuário serão atualizados automaticamente com dados recebidos da federação (e.g. atualizar o e-mail do usuário caso tenha mudado na federação). Neste caso usuários também não poderão editar esses atributos através do site. Se não habilitado, os atributos não serão atualizados automaticamente." smtp_login: "O e-mail de login no servidor SMTP." smtp_password: "A senha para sua conta de e-mail no servidor SMTP." From f74776c0839972d845a6dfe29ab7db136aa5f673 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Thu, 22 Feb 2018 11:07:04 -0300 Subject: [PATCH 73/75] Update bigbluebutton_rails, adds playback authentication --- .env.development | 2 +- Gemfile.lock | 2 +- config/application.rb | 3 +++ config/initializers/bigbluebutton_rails.rb | 2 +- .../20171114142537_bigbluebutton_rails_to230.rb | 2 ++ db/schema.rb | 11 ++++++----- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.env.development b/.env.development index 5a3f515c3..c87c5dc64 100644 --- a/.env.development +++ b/.env.development @@ -42,4 +42,4 @@ MCONF_EMAIL_TRACK_CLICKED=true # MCONF_OMNIAUTH_FACEBOOK_SECRET='yourfacebooksecret' # Flag to use authentication on playback url -# MCONF_PLAYBACK_URL_AUTH='true' +# MCONF_PLAYBACK_URL_AUTH=true diff --git a/Gemfile.lock b/Gemfile.lock index 746c43261..41a6596ed 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,7 +8,7 @@ GIT GIT remote: https://github.com/mconf/bigbluebutton_rails.git - revision: 820bfeb38ca23de2a89b6cc37f850d626f67e527 + revision: fedfa6010a660e31e81cc27197063b4d60f6f0a5 branch: master specs: bigbluebutton_rails (2.2.0) diff --git a/config/application.rb b/config/application.rb index 9aaa0ddb5..4d14bc7c8 100644 --- a/config/application.rb +++ b/config/application.rb @@ -126,6 +126,9 @@ class Application < Rails::Application # Set if to false to use the old model based on the `record` flag on the `create` API call. config.per_user_record_permissions = ENV['MCONF_PER_USER_RECORD_PERMISSIONS'] == 'true' + # Authenticate playback URLs for recordings + config.playback_url_authentication = ENV['MCONF_PLAYBACK_URL_AUTH'] == 'true' + # Themes: configure assets paths here! # config.assets.paths << Rails.root.join("app", "assets", "themes", "my-theme", "stylesheets") # config.assets.paths << Rails.root.join("app", "assets", "themes", "my-theme", "images") diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index 3b7187b8b..ae3b5b435 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -6,7 +6,7 @@ BigbluebuttonRails.configure do |config| config.guest_support = true - config.playback_url_authentication = ENV['MCONF_PLAYBACK_URL_AUTH'] == 'true' + config.playback_url_authentication = true #Rails.application.config.playback_url_authentication # Set the invitation URL to the full URL of the room config.get_invitation_url = Proc.new do |room| diff --git a/db/migrate/20171114142537_bigbluebutton_rails_to230.rb b/db/migrate/20171114142537_bigbluebutton_rails_to230.rb index 1706c25d1..4a73143d5 100644 --- a/db/migrate/20171114142537_bigbluebutton_rails_to230.rb +++ b/db/migrate/20171114142537_bigbluebutton_rails_to230.rb @@ -2,10 +2,12 @@ class BigbluebuttonRailsTo230 < ActiveRecord::Migration def up rename_column :bigbluebutton_rooms, :param, :slug rename_column :bigbluebutton_servers, :param, :slug + add_column :bigbluebutton_recordings, :recording_users, :text end def down rename_column :bigbluebutton_servers, :slug, :param rename_column :bigbluebutton_rooms, :slug, :param + remove_column :bigbluebutton_recordings, :recording_users end end diff --git a/db/schema.rb b/db/schema.rb index 10e6047e2..98414ab31 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -120,15 +120,16 @@ t.string "recordid" t.string "meetingid" t.string "name" - t.boolean "published", default: false - t.boolean "available", default: true + t.boolean "published", default: false + t.boolean "available", default: true t.datetime "created_at" t.datetime "updated_at" t.text "description" t.integer "meeting_id" - t.integer "size", limit: 8, default: 0 - t.decimal "start_time", precision: 14, scale: 0 - t.decimal "end_time", precision: 14, scale: 0 + t.integer "size", limit: 8, default: 0 + t.decimal "start_time", precision: 14, scale: 0 + t.decimal "end_time", precision: 14, scale: 0 + t.text "recording_users" end add_index "bigbluebutton_recordings", ["recordid"], name: "index_bigbluebutton_recordings_on_recordid", unique: true, using: :btree From 483f6e3863ab109442a7a0be9785e9e46cfdc835 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Thu, 22 Feb 2018 17:44:49 -0300 Subject: [PATCH 74/75] Update bigbluebutton_rails and show recordings in an iframe --- .env.development | 2 + .env.production | 2 + Gemfile.lock | 2 +- .../custom_bigbluebutton_recordings/play.scss | 10 +++ ...tom_bigbluebutton_recordings_controller.rb | 11 ++- ...tom_bigbluebutton_playback_types_helper.rb | 4 +- app/views/layouts/application.html.haml | 89 +++++++------------ app/views/layouts/base.html.haml | 29 ++++++ config/application.rb | 2 + config/initializers/bigbluebutton_rails.rb | 3 +- ...0171114142537_bigbluebutton_rails_to230.rb | 2 + db/schema.rb | 5 +- spec/factories/bigbluebutton_playback_type.rb | 1 + ...igbluebutton_playback_types_helper_spec.rb | 16 ++-- 14 files changed, 109 insertions(+), 69 deletions(-) create mode 100644 app/assets/stylesheets/app/custom_bigbluebutton_recordings/play.scss create mode 100644 app/views/layouts/base.html.haml diff --git a/.env.development b/.env.development index c87c5dc64..23c3df52a 100644 --- a/.env.development +++ b/.env.development @@ -43,3 +43,5 @@ MCONF_EMAIL_TRACK_CLICKED=true # Flag to use authentication on playback url # MCONF_PLAYBACK_URL_AUTH=true +# Show playback pages in an iframe instead of redirecting +# MCONF_PLAYBACK_IFRAME=true diff --git a/.env.production b/.env.production index 15e9562b7..63e2c8e30 100644 --- a/.env.production +++ b/.env.production @@ -3,3 +3,5 @@ MCONF_DATABASE_PROD_USERNAME='root' MCONF_DATABASE_PROD_PASSWORD='' MCONF_EMAIL_TRACK_OPENED=true MCONF_EMAIL_TRACK_CLICKED=true +MCONF_PLAYBACK_URL_AUTH=false +MCONF_PLAYBACK_IFRAME=true diff --git a/Gemfile.lock b/Gemfile.lock index 41a6596ed..b0fe83d85 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,7 +8,7 @@ GIT GIT remote: https://github.com/mconf/bigbluebutton_rails.git - revision: fedfa6010a660e31e81cc27197063b4d60f6f0a5 + revision: 80e517e2c029af4d385308f5ce47174271b30bfa branch: master specs: bigbluebutton_rails (2.2.0) diff --git a/app/assets/stylesheets/app/custom_bigbluebutton_recordings/play.scss b/app/assets/stylesheets/app/custom_bigbluebutton_recordings/play.scss new file mode 100644 index 000000000..e9d2dd00f --- /dev/null +++ b/app/assets/stylesheets/app/custom_bigbluebutton_recordings/play.scss @@ -0,0 +1,10 @@ +@import "compass/css3"; +@import "definitions"; + +@import "app/shared/recording_list"; + +body.custom_bigbluebutton_recordings.play { + padding: 0; + margin: 0; + overflow: hidden; +} \ No newline at end of file diff --git a/app/controllers/custom_bigbluebutton_recordings_controller.rb b/app/controllers/custom_bigbluebutton_recordings_controller.rb index c5f9b1fc5..9d4565b19 100644 --- a/app/controllers/custom_bigbluebutton_recordings_controller.rb +++ b/app/controllers/custom_bigbluebutton_recordings_controller.rb @@ -12,7 +12,16 @@ class CustomBigbluebuttonRecordingsController < Bigbluebutton::RecordingsControl load_and_authorize_resource :find_by => :recordid, :class => "BigbluebuttonRecording" - layout "manage" + layout :determine_layout + + def determine_layout + case params[:action].to_sym + when :play + 'base' + else + 'manage' + end + end # TODO: #1087 redirect back after updating the desc of a recording diff --git a/app/helpers/custom_bigbluebutton_playback_types_helper.rb b/app/helpers/custom_bigbluebutton_playback_types_helper.rb index ff4d28630..6f3aac731 100644 --- a/app/helpers/custom_bigbluebutton_playback_types_helper.rb +++ b/app/helpers/custom_bigbluebutton_playback_types_helper.rb @@ -12,7 +12,7 @@ module CustomBigbluebuttonPlaybackTypesHelper def link_to_playback(recording, playback, options={}) link_params = { type: playback.format_type } - if playback.identifier == 'presentation_video' + if playback.downloadable? name = if recording.description.blank? recording.name else @@ -20,9 +20,7 @@ def link_to_playback(recording, playback, options={}) end options.merge!(download: name.parameterize('_')) link_params.merge!(name: name.parameterize('_')) - end - if ['presentation_video', 'presentation_export'].include?(playback.identifier) playback_icon = icon_rec_download else playback_icon = icon_rec_play diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 14b2250bb..6c0edd4d4 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,66 +1,45 @@ -!!! Strict -%html{:lang => I18n.locale.to_s} +-# Default layout += content_for :base_content do + - if sidenav_visible? + #sidenav= render :partial => "layouts/sidenav" - %head - %meta{:content => "text/html; charset=utf-8", "http-equiv" => "Content-type"} - %title= content_for?(:title) ? yield(:title) : current_site.name - = theme_favico - = csrf_meta_tag + - cls_sidenav = sidenav_visible? ? 'with-sidenav' : 'without-sidenav' + #site{ class: cls_sidenav } + #navbar + = render :partial => 'layouts/navbar' - = stylesheet_link_tag "application_print", :media => "print" - = stylesheet_link_tag "application", :media => "screen, projection" - = stylesheet_link_tag_for_controller :media => "screen, projection" - = stylesheet_link_tag "_development" unless Rails.env == "production" - = stylesheet_link_tag "https://fonts.googleapis.com/css?family=Roboto:300,400,700,900", rel: "stylesheet" - = yield :stylesheets + - if content_for?(:content_notification) + #content-notification + = yield :content_notification - = yield :headers + #content - %body{:class => "#{controller_name_for_view} #{params[:action]} #{layout_name} #{theme_class}"} - - if sidenav_visible? - #sidenav= render :partial => "layouts/sidenav" + - if content_for?(:sidebar) || content_for?(:sidebar_menu) + #sidebar + = yield :sidebar + - if content_for?(:sidebar_menu) + #sidebar-menu + = yield :sidebar_menu - - cls_sidenav = sidenav_visible? ? 'with-sidenav' : 'without-sidenav' - #site{ class: cls_sidenav } - #navbar - = render :partial => 'layouts/navbar' + #content-middle - - if content_for?(:content_notification) - #content-notification - = yield :content_notification + -# an internal menu for the page to navigate through sub-pages + - if content_for?(:page_menu) + #page-menu + = yield :page_menu - #content + -# a list of actions for this page (e.g. destroy resource) + - if content_for?(:page_actions) + #page-actions + = yield :page_actions - - if content_for?(:sidebar) || content_for?(:sidebar_menu) - #sidebar - = yield :sidebar - - if content_for?(:sidebar_menu) - #sidebar-menu - = yield :sidebar_menu + -# the actual page content + = yield - #content-middle + #footer-pusher - -# an internal menu for the page to navigate through sub-pages - - if content_for?(:page_menu) - #page-menu - = yield :page_menu + = render :partial => "layouts/footer" + = render :partial => "layouts/analytics" + = render :partial => "layouts/notifications" - -# a list of actions for this page (e.g. destroy resource) - - if content_for?(:page_actions) - #page-actions - = yield :page_actions - - -# the actual page content - = yield - - #footer-pusher - - = render :partial => "layouts/footer" - = render :partial => "layouts/analytics" - = render :partial => "layouts/notifications" - - -# Javascript placed at the end of the document so the pages load faster - = javascript_include_tag "application" - = render :partial => 'layouts/javascript_locales' - = javascript_include_tag_for_controller - = yield :javascripts += render :file => 'layouts/base' diff --git a/app/views/layouts/base.html.haml b/app/views/layouts/base.html.haml new file mode 100644 index 000000000..5cba2086c --- /dev/null +++ b/app/views/layouts/base.html.haml @@ -0,0 +1,29 @@ +!!! Strict +%html{:lang => I18n.locale.to_s} + + %head + %meta{:content => "text/html; charset=utf-8", "http-equiv" => "Content-type"} + %title= content_for?(:title) ? yield(:title) : current_site.name + = theme_favico + = csrf_meta_tag + + = stylesheet_link_tag "application_print", :media => "print" + = stylesheet_link_tag "application", :media => "screen, projection" + = stylesheet_link_tag_for_controller :media => "screen, projection" + = stylesheet_link_tag "_development" unless Rails.env == "production" + = stylesheet_link_tag "https://fonts.googleapis.com/css?family=Roboto:300,400,700,900", rel: "stylesheet" + = yield :stylesheets + + = yield :headers + + %body{:class => "#{controller_name_for_view} #{params[:action]} #{layout_name} #{theme_class}"} + - if content_for?(:base_content) + = yield :base_content + - else + = yield + + -# Javascript placed at the end of the document so the pages load faster + = javascript_include_tag "application" + = render :partial => 'layouts/javascript_locales' + = javascript_include_tag_for_controller + = yield :javascripts diff --git a/config/application.rb b/config/application.rb index 4d14bc7c8..2a54c50cd 100644 --- a/config/application.rb +++ b/config/application.rb @@ -128,6 +128,8 @@ class Application < Rails::Application # Authenticate playback URLs for recordings config.playback_url_authentication = ENV['MCONF_PLAYBACK_URL_AUTH'] == 'true' + # Show the playback in an iframe. If false, redirects the user to the playback page. + config.playback_iframe = ENV['MCONF_PLAYBACK_IFRAME'] == 'true' # Themes: configure assets paths here! # config.assets.paths << Rails.root.join("app", "assets", "themes", "my-theme", "stylesheets") diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index ae3b5b435..3f9e5407f 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -6,7 +6,8 @@ BigbluebuttonRails.configure do |config| config.guest_support = true - config.playback_url_authentication = true #Rails.application.config.playback_url_authentication + config.playback_url_authentication = Rails.application.config.playback_url_authentication + config.playback_iframe = Rails.application.config.playback_iframe # Set the invitation URL to the full URL of the room config.get_invitation_url = Proc.new do |room| diff --git a/db/migrate/20171114142537_bigbluebutton_rails_to230.rb b/db/migrate/20171114142537_bigbluebutton_rails_to230.rb index 4a73143d5..11e0b8b52 100644 --- a/db/migrate/20171114142537_bigbluebutton_rails_to230.rb +++ b/db/migrate/20171114142537_bigbluebutton_rails_to230.rb @@ -3,9 +3,11 @@ def up rename_column :bigbluebutton_rooms, :param, :slug rename_column :bigbluebutton_servers, :param, :slug add_column :bigbluebutton_recordings, :recording_users, :text + add_column :bigbluebutton_playback_types, :downloadable, :boolean, default: false end def down + remove_column :bigbluebutton_playback_types, :downloadable rename_column :bigbluebutton_servers, :slug, :param rename_column :bigbluebutton_rooms, :slug, :param remove_column :bigbluebutton_recordings, :recording_users diff --git a/db/schema.rb b/db/schema.rb index 98414ab31..1121889ff 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -108,10 +108,11 @@ create_table "bigbluebutton_playback_types", force: true do |t| t.string "identifier" - t.boolean "visible", default: false - t.boolean "default", default: false + t.boolean "visible", default: false + t.boolean "default", default: false t.datetime "created_at" t.datetime "updated_at" + t.boolean "downloadable", default: false end create_table "bigbluebutton_recordings", force: true do |t| diff --git a/spec/factories/bigbluebutton_playback_type.rb b/spec/factories/bigbluebutton_playback_type.rb index ba883cbf3..a9f0f5c41 100644 --- a/spec/factories/bigbluebutton_playback_type.rb +++ b/spec/factories/bigbluebutton_playback_type.rb @@ -9,5 +9,6 @@ pbt.sequence(:identifier) { |n| "#{Forgery(:name).first_name.downcase}-#{n}" } pbt.visible true pbt.default false + pbt.downloadable false end end diff --git a/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb b/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb index 7ba93012f..b3356c305 100644 --- a/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb +++ b/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb @@ -13,8 +13,8 @@ describe "#link_to_playback" do let(:recording) { FactoryGirl.create(:bigbluebutton_recording) } let(:presentation) { FactoryGirl.create(:bigbluebutton_playback_type, identifier: "presentation") } - let(:presentation_export) { FactoryGirl.create(:bigbluebutton_playback_type, identifier: "presentation_export") } - let(:presentation_video) { FactoryGirl.create(:bigbluebutton_playback_type, identifier: "presentation_video") } + let(:presentation_export) { FactoryGirl.create(:bigbluebutton_playback_type, identifier: "presentation_export", downloadable: true) } + let(:presentation_video) { FactoryGirl.create(:bigbluebutton_playback_type, identifier: "presentation_video", downloadable: true) } context "when the identifier was presentation" do let(:playback) { FactoryGirl.create(:bigbluebutton_playback_format, playback_type: presentation) } @@ -27,10 +27,14 @@ it("returns the correctly link") { should eq(link) } end - context "when the identifier was presentation_export" do + context "when the identifier is presentation_export" do let(:playback) { FactoryGirl.create(:bigbluebutton_playback_format, playback_type: presentation_export) } - let!(:link) { - link_to icon_rec_download, play_bigbluebutton_recording_path(recording, type: presentation_export.identifier), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_export.tip")) + let(:name) { 'my_recording' } + let(:link) { + link_to icon_rec_download, play_bigbluebutton_recording_path(recording, { type: presentation_export.identifier, name: name }), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_export.tip"), { download: name }) + } + before { + recording.update_attributes(description: 'my recording') } subject { link_to_playback(recording, playback) } @@ -38,7 +42,7 @@ it("returns the correctly link") { should eq(link) } end - context "when the identifier was presentation_video" do + context "when the identifier is presentation_video" do let(:playback) { FactoryGirl.create(:bigbluebutton_playback_format, playback_type: presentation_video) } subject { link_to_playback(recording, playback) } From bb6753f60eeeb23a468e795a41d2aab47fcbd0a7 Mon Sep 17 00:00:00 2001 From: Leonardo Crauss Daronco Date: Fri, 23 Feb 2018 13:35:00 -0300 Subject: [PATCH 75/75] Add authentication for recordings, patch of PR #957 into release-2.6 --- Gemfile.lock | 2 +- .../custom_bigbluebutton_recordings/play.scss | 10 ++ ...tom_bigbluebutton_recordings_controller.rb | 11 +++ ...tom_bigbluebutton_playback_types_helper.rb | 2 +- app/views/layouts/application.html.haml | 91 +++++++------------ app/views/layouts/base.html.haml | 32 +++++++ config/application.rb | 5 + config/initializers/bigbluebutton_rails.rb | 2 + ...0171114142537_bigbluebutton_rails_to230.rb | 11 +++ db/schema.rb | 18 ++-- spec/factories/bigbluebutton_playback_type.rb | 1 + ...igbluebutton_playback_types_helper_spec.rb | 16 +++- 12 files changed, 128 insertions(+), 73 deletions(-) create mode 100644 app/assets/stylesheets/app/custom_bigbluebutton_recordings/play.scss create mode 100644 app/views/layouts/base.html.haml create mode 100644 db/migrate/20171114142537_bigbluebutton_rails_to230.rb diff --git a/Gemfile.lock b/Gemfile.lock index 24a8d6ad8..f1908a531 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,7 +8,7 @@ GIT GIT remote: https://github.com/mconf/bigbluebutton_rails.git - revision: 17054760288448aff0d02534fde8cd62da6c8523 + revision: fd7e0b97a4733330ec4445252049c52aeca04608 branch: release-2.3 specs: bigbluebutton_rails (2.2.0) diff --git a/app/assets/stylesheets/app/custom_bigbluebutton_recordings/play.scss b/app/assets/stylesheets/app/custom_bigbluebutton_recordings/play.scss new file mode 100644 index 000000000..e9d2dd00f --- /dev/null +++ b/app/assets/stylesheets/app/custom_bigbluebutton_recordings/play.scss @@ -0,0 +1,10 @@ +@import "compass/css3"; +@import "definitions"; + +@import "app/shared/recording_list"; + +body.custom_bigbluebutton_recordings.play { + padding: 0; + margin: 0; + overflow: hidden; +} \ No newline at end of file diff --git a/app/controllers/custom_bigbluebutton_recordings_controller.rb b/app/controllers/custom_bigbluebutton_recordings_controller.rb index 2c414aaa0..a11f19da7 100644 --- a/app/controllers/custom_bigbluebutton_recordings_controller.rb +++ b/app/controllers/custom_bigbluebutton_recordings_controller.rb @@ -12,6 +12,17 @@ class CustomBigbluebuttonRecordingsController < Bigbluebutton::RecordingsControl load_and_authorize_resource :find_by => :recordid, :class => "BigbluebuttonRecording" + layout :determine_layout + + def determine_layout + case params[:action].to_sym + when :play + 'base' + else + 'manage' + end + end + protected def handle_access_denied exception diff --git a/app/helpers/custom_bigbluebutton_playback_types_helper.rb b/app/helpers/custom_bigbluebutton_playback_types_helper.rb index 71eec0ddb..7246c09ed 100644 --- a/app/helpers/custom_bigbluebutton_playback_types_helper.rb +++ b/app/helpers/custom_bigbluebutton_playback_types_helper.rb @@ -11,7 +11,7 @@ module CustomBigbluebuttonPlaybackTypesHelper def link_to_playback(recording, playback, options={}) link_params = { type: playback.format_type } - if playback.identifier == 'presentation_video' + if playback.downloadable? name = if recording.description.blank? recording.name else diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index d04381783..bbe30d966 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,58 +1,33 @@ -!!! Strict -%html{:lang => I18n.locale.to_s} - - %head - %meta{:content => "text/html; charset=utf-8", "http-equiv" => "Content-type"} - %title= content_for?(:title) ? yield(:title) : current_site.name - = favicon_link_tag - - = stylesheet_link_tag "application_print", :media => "print" - = stylesheet_link_tag "application", :media => "screen, projection" - = stylesheet_link_tag_for_controller :media => "screen, projection" - = stylesheet_link_tag "_development" unless Rails.env == "production" - = yield :stylesheets - - /[if IE] - // HTML5 shim, for IE6-8 support of HTML elements - /[if lt IE 9] - = javascript_include_tag "http://html5shim.googlecode.com/svn/trunk/html5.js" - = csrf_meta_tag - = yield :headers - - %body{:class => "#{controller_name_for_view} #{params[:action]}"} - #site - #navbar-wrapper - #navbar - = render :partial => 'layouts/application_navbar' - - #page-header-wrapper - #page-header - - if content_for?(:page_header) - = yield :page_header - - else - = render :partial => "layouts/spaces_page_title" - - if content_for?(:page_menu) - #page-menu - = yield :page_menu - - #content-wrapper - #content - #content-middle - = yield - - if content_for?(:sidebar) - #sidebar - = yield :sidebar - - #footer-pusher - - = render :partial => "layouts/footer" - - = render :partial => "layouts/analytics" - = render :partial => "layouts/notifications" - = render :partial => "shared/copy_modal" - - -# Javascript placed at the end of the document so the pages load faster - = javascript_include_tag "application" - = render :partial => 'layouts/javascript_locales' - = javascript_include_tag_for_controller - = yield :javascripts += content_for :base_content do + #site + #navbar-wrapper + #navbar + = render :partial => 'layouts/application_navbar' + + #page-header-wrapper + #page-header + - if content_for?(:page_header) + = yield :page_header + - else + = render :partial => "layouts/spaces_page_title" + - if content_for?(:page_menu) + #page-menu + = yield :page_menu + + #content-wrapper + #content + #content-middle + = yield + - if content_for?(:sidebar) + #sidebar + = yield :sidebar + + #footer-pusher + + = render :partial => "layouts/footer" + + = render :partial => "layouts/analytics" + = render :partial => "layouts/notifications" + = render :partial => "shared/copy_modal" + += render :file => 'layouts/base' diff --git a/app/views/layouts/base.html.haml b/app/views/layouts/base.html.haml new file mode 100644 index 000000000..91882a5d4 --- /dev/null +++ b/app/views/layouts/base.html.haml @@ -0,0 +1,32 @@ +!!! Strict +%html{:lang => I18n.locale.to_s} + + %head + %meta{:content => "text/html; charset=utf-8", "http-equiv" => "Content-type"} + %title= content_for?(:title) ? yield(:title) : current_site.name + = favicon_link_tag + + = stylesheet_link_tag "application_print", :media => "print" + = stylesheet_link_tag "application", :media => "screen, projection" + = stylesheet_link_tag_for_controller :media => "screen, projection" + = stylesheet_link_tag "_development" unless Rails.env == "production" + = yield :stylesheets + + /[if IE] + // HTML5 shim, for IE6-8 support of HTML elements + /[if lt IE 9] + = javascript_include_tag "http://html5shim.googlecode.com/svn/trunk/html5.js" + = csrf_meta_tag + = yield :headers + + %body{:class => "#{controller_name_for_view} #{params[:action]}"} + - if content_for?(:base_content) + = yield :base_content + - else + = yield + + -# Javascript placed at the end of the document so the pages load faster + = javascript_include_tag "application" + = render :partial => 'layouts/javascript_locales' + = javascript_include_tag_for_controller + = yield :javascripts diff --git a/config/application.rb b/config/application.rb index 2e8b6021c..993d17612 100644 --- a/config/application.rb +++ b/config/application.rb @@ -81,6 +81,11 @@ class Application < Rails::Application # Set if to false to use the old model based on the `record` flag on the `create` API call. config.per_user_record_permissions = false + # Authenticate playback URLs for recordings + config.playback_url_authentication = false + # Show the playback in an iframe. If false, redirects the user to the playback page. + config.playback_iframe = false + config.exceptions_app = self.routes end end diff --git a/config/initializers/bigbluebutton_rails.rb b/config/initializers/bigbluebutton_rails.rb index 59450a969..9c4525449 100644 --- a/config/initializers/bigbluebutton_rails.rb +++ b/config/initializers/bigbluebutton_rails.rb @@ -6,6 +6,8 @@ BigbluebuttonRails.configure do |config| config.guest_support = true + config.playback_url_authentication = Rails.application.config.playback_url_authentication + config.playback_iframe = Rails.application.config.playback_iframe # Set the invitation URL to the full URL of the room config.get_invitation_url = Proc.new do |room| diff --git a/db/migrate/20171114142537_bigbluebutton_rails_to230.rb b/db/migrate/20171114142537_bigbluebutton_rails_to230.rb new file mode 100644 index 000000000..2b3fe7a02 --- /dev/null +++ b/db/migrate/20171114142537_bigbluebutton_rails_to230.rb @@ -0,0 +1,11 @@ +class BigbluebuttonRailsTo230 < ActiveRecord::Migration + def up + add_column :bigbluebutton_recordings, :recording_users, :text + add_column :bigbluebutton_playback_types, :downloadable, :boolean, default: false + end + + def down + remove_column :bigbluebutton_playback_types, :downloadable + remove_column :bigbluebutton_recordings, :recording_users + end +end diff --git a/db/schema.rb b/db/schema.rb index ec0579d2c..eb6180438 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170531162723) do +ActiveRecord::Schema.define(version: 20171114142537) do create_table "activities", force: true do |t| t.integer "trackable_id" @@ -93,10 +93,11 @@ create_table "bigbluebutton_playback_types", force: true do |t| t.string "identifier" - t.boolean "visible", default: false - t.boolean "default", default: false + t.boolean "visible", default: false + t.boolean "default", default: false t.datetime "created_at" t.datetime "updated_at" + t.boolean "downloadable", default: false end create_table "bigbluebutton_recordings", force: true do |t| @@ -105,15 +106,16 @@ t.string "recordid" t.string "meetingid" t.string "name" - t.boolean "published", default: false - t.boolean "available", default: true + t.boolean "published", default: false + t.boolean "available", default: true t.datetime "created_at" t.datetime "updated_at" t.text "description" t.integer "meeting_id" - t.integer "size", limit: 8, default: 0 - t.decimal "start_time", precision: 14, scale: 0 - t.decimal "end_time", precision: 14, scale: 0 + t.integer "size", limit: 8, default: 0 + t.decimal "start_time", precision: 14, scale: 0 + t.decimal "end_time", precision: 14, scale: 0 + t.text "recording_users" end add_index "bigbluebutton_recordings", ["recordid"], name: "index_bigbluebutton_recordings_on_recordid", unique: true, using: :btree diff --git a/spec/factories/bigbluebutton_playback_type.rb b/spec/factories/bigbluebutton_playback_type.rb index ba883cbf3..a9f0f5c41 100644 --- a/spec/factories/bigbluebutton_playback_type.rb +++ b/spec/factories/bigbluebutton_playback_type.rb @@ -9,5 +9,6 @@ pbt.sequence(:identifier) { |n| "#{Forgery(:name).first_name.downcase}-#{n}" } pbt.visible true pbt.default false + pbt.downloadable false end end diff --git a/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb b/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb index f80598222..a9ec545e3 100644 --- a/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb +++ b/spec/helpers/custom_bigbluebutton_playback_types_helper_spec.rb @@ -13,8 +13,8 @@ describe "#link_to_playback" do let(:recording) { FactoryGirl.create(:bigbluebutton_recording) } let(:presentation) { FactoryGirl.create(:bigbluebutton_playback_type, identifier: "presentation") } - let(:presentation_export) { FactoryGirl.create(:bigbluebutton_playback_type, identifier: "presentation_export") } - let(:presentation_video) { FactoryGirl.create(:bigbluebutton_playback_type, identifier: "presentation_video") } + let(:presentation_export) { FactoryGirl.create(:bigbluebutton_playback_type, identifier: "presentation_export", downloadable: true) } + let(:presentation_video) { FactoryGirl.create(:bigbluebutton_playback_type, identifier: "presentation_video", downloadable: true) } context "when the identifier was presentation" do let(:playback) { FactoryGirl.create(:bigbluebutton_playback_format, playback_type: presentation) } @@ -25,16 +25,22 @@ it("returns the correctly link") { should eq(link) } end - context "when the identifier was presentation_export" do + context "when the identifier is presentation_export" do let(:playback) { FactoryGirl.create(:bigbluebutton_playback_format, playback_type: presentation_export) } - let!(:link) { link_to playback.name, play_bigbluebutton_recording_path(recording, type: presentation_export.identifier), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_export.tip")) } + let(:name) { 'my_recording' } + let(:link) { + link_to playback.name, play_bigbluebutton_recording_path(recording, { type: presentation_export.identifier, name: name }), options_for_tooltip(t("bigbluebutton_rails.playback_types.presentation_export.tip"), { download: name }) + } + before { + recording.update_attributes(description: 'my recording') + } subject { link_to_playback(recording, playback) } it("returns the correctly link") { should eq(link) } end - context "when the identifier was presentation_video" do + context "when the identifier is presentation_video" do let(:playback) { FactoryGirl.create(:bigbluebutton_playback_format, playback_type: presentation_video) } subject { link_to_playback(recording, playback) }