From ee04816e57f8eb2b507344af4724da763cb0bed6 Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Sat, 26 Oct 2019 18:59:33 +0800 Subject: [PATCH 1/8] return poll publish rake --- lib/tasks/poll_publish.rake | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/lib/tasks/poll_publish.rake b/lib/tasks/poll_publish.rake index a964babdc..8cec43565 100644 --- a/lib/tasks/poll_publish.rake +++ b/lib/tasks/poll_publish.rake @@ -83,7 +83,7 @@ namespace :poll_publish do end task :end => :environment do - puts "--------------------------------poll_publish end start" + #1.统一设置的截止 polls = Poll.includes(:poll_users).where("polls_status = 2 AND unified_setting = true AND end_time <=?",Time.now + 900) polls.each do |poll| @@ -93,16 +93,12 @@ namespace :poll_publish do #2.分班设置的截止 polls = Poll.includes(:poll_users).where("polls_status = 2 AND unified_setting = false AND end_time > ?",Time.now + 900) - puts "--------------unified_setting_poll_ids------------------#{polls.pluck(:id)}" - poll_ids = polls.blank? ? "(-1)" : "(" + polls.map(&:id).join(",") + ")" polls_group_settings = PollGroupSetting.where("end_time <= '#{Time.now}' and poll_id in #{poll_ids}") polls_group_settings.each do |poll_setting| poll = poll_setting.poll if poll&.end_time <= Time.now - poll.update_column('polls_status', 3) - puts "########__________________############{poll.polls_status}" end users = poll.course.course_members.where(course_group_id: poll_setting.course_group_id) poll.poll_users.where(user_id: users.pluck(:user_id)).where("commit_status = 0 and start_at is not null").update_all(commit_status: 1, end_at: Time.now) @@ -111,10 +107,7 @@ namespace :poll_publish do # poll_user.update_attributes(:commit_status => 1, :end_at => Time.now) # end # end - end - puts "--------------------------------poll_publish end end" - # PollGroupSetting.where("end_time < ? and end_time > ?", Time.now + 1800, Time.now - 1800).each do |poll_setting| # poll = poll_setting.poll From 615910456ec91e0097d01a049d9a0bd4e5822686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Mon, 28 Oct 2019 16:17:04 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=AB=8B=E5=8D=B3?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/modules/courses/exercise/Exercise.js | 1 + .../src/modules/courses/exercise/Testpapersettinghomepage.js | 2 +- public/react/src/modules/courses/poll/Poll.js | 1 + public/react/src/modules/courses/poll/PollDetailIndex.js | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/public/react/src/modules/courses/exercise/Exercise.js b/public/react/src/modules/courses/exercise/Exercise.js index 20213c931..6f963b9c2 100644 --- a/public/react/src/modules/courses/exercise/Exercise.js +++ b/public/react/src/modules/courses/exercise/Exercise.js @@ -542,6 +542,7 @@ class Exercise extends Component{ {...this.props} {...this.state} style="grey" + single={true} checkBoxValues={this.state.checkBoxValues} action={this.reloadList} > diff --git a/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js b/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js index f05cbf967..b670be86e 100644 --- a/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js +++ b/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js @@ -421,8 +421,8 @@ class Testpapersettinghomepage extends Component{ className={"btn fr color-blue font-16 mt20 mr20"} checkBoxValues={[parseInt(this.props.match.params.Id)]} Exercisetype={"exercise"} + // single={true} action={this.Commonheadofthetestpaper} - single={true} >:"":""} {isAdmin === true?Commonheadofthetestpaper!==undefined&&Commonheadofthetestpaper.user_permission.exercise_unpublish_count>0? diff --git a/public/react/src/modules/courses/poll/PollDetailIndex.js b/public/react/src/modules/courses/poll/PollDetailIndex.js index c91a6a493..e0c46a039 100644 --- a/public/react/src/modules/courses/poll/PollDetailIndex.js +++ b/public/react/src/modules/courses/poll/PollDetailIndex.js @@ -202,7 +202,7 @@ class PollDetailIndex extends Component{ className={"font-16"} checkBoxValues={[this.props.match.params.pollId]} action={this.getPollInfo} - single={true} + // single={true} > :"" From c7ee76887217321713f7d1d6f8384d374d891baa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Mon, 28 Oct 2019 17:24:19 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=AF=BE=E5=A0=82?= =?UTF-8?q?=E5=BE=85=E5=AE=A1=E6=89=B9=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Competitioncommon/CompetitionCommon.js | 4 ++-- .../courses/coursesDetail/CoursesBanner.js | 20 ++++++++++++---- .../react/src/modules/courses/css/Courses.css | 5 ++++ .../modules/courses/members/teacherList.js | 23 +++++++++++++++---- 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/public/react/src/modules/competitions/Competitioncommon/CompetitionCommon.js b/public/react/src/modules/competitions/Competitioncommon/CompetitionCommon.js index 6fa5f0c9f..7b622949e 100644 --- a/public/react/src/modules/competitions/Competitioncommon/CompetitionCommon.js +++ b/public/react/src/modules/competitions/Competitioncommon/CompetitionCommon.js @@ -255,7 +255,7 @@ class CompetitionCommon extends Component{ render() { let {data,thiskeys,Competitionedittype}=this.state; - console.log(thiskeys) + return ( data===undefined?"":
@@ -347,7 +347,7 @@ class CompetitionCommon extends Component{ - this.getrightdatas(e)}> + this.getrightdatas(e)}> {data&&data.competition_modules.map((item,key)=>{ if(item.module_type!="enroll"){ return( diff --git a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js index f6e3ce781..97a00068a 100644 --- a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js +++ b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js @@ -477,8 +477,9 @@ class CoursesBanner extends Component { render() { let { Addcoursestypes, coursedata,excellent, modalsType, modalsTopval, loadtype,modalsBottomval,antIcon,is_guide,AccountProfiletype,modalstrsvalue} = this.state; - const isCourseEnd = this.props.isCourseEnd() - document.title=coursedata===undefined || coursedata.status===401 || coursedata.status===407?"":coursedata.name; + + const isCourseEnd = this.props.isCourseEnd(); + document.title=coursedata===undefined || coursedata.status===401 || coursedata.status===407?"":coursedata.name; return (
{/*{*/} @@ -705,18 +706,29 @@ class CoursesBanner extends Component { `} - this.setHistoryFun("/courses/"+this.props.match.params.coursesId+"/teachers")} className={"pointer"}> - 教师 {coursedata.teacher_count} + + + 0?true:false} + placement="topLeft" + title={
{coursedata.teacher_applies_count===undefined?"":coursedata.teacher_applies_count>0?您有{coursedata.teacher_applies_count}条新的加入申请this.setHistoryFun("/courses/"+this.props.match.params.coursesId+"/teachers?tab=2")}>待审批:""}
}> + this.setHistoryFun("/courses/"+this.props.match.params.coursesId+"/teachers")}> + 教师 + {coursedata.teacher_count} + +
+ this.setHistoryFun("/courses/"+this.props.match.params.coursesId+"/students"):"":()=>this.setHistoryFun("/courses/"+this.props.match.params.coursesId+"/students")} > 学生 {coursedata.student_count} + {coursedata.credit===null?"": 学分 {coursedata.credit} } +
{/*
  • */} diff --git a/public/react/src/modules/courses/css/Courses.css b/public/react/src/modules/courses/css/Courses.css index 160104920..d4e3518c6 100644 --- a/public/react/src/modules/courses/css/Courses.css +++ b/public/react/src/modules/courses/css/Courses.css @@ -1744,4 +1744,9 @@ input.ant-input-number-input:focus { line-height: 62px; color: #fff; margin: 0 auto; +} + +.daishenp{ + color: #F79946 !important; + text-decoration: underline !important; } \ No newline at end of file diff --git a/public/react/src/modules/courses/members/teacherList.js b/public/react/src/modules/courses/members/teacherList.js index bc534c61d..5834ae517 100644 --- a/public/react/src/modules/courses/members/teacherList.js +++ b/public/react/src/modules/courses/members/teacherList.js @@ -299,7 +299,18 @@ class studentsList extends Component{ this.setState({ isSpin:true }) - this.fetchAll(1); + let newmenuid=this.props.location.search.replace('?tab=', ''); + if(newmenuid===undefined||newmenuid===""||newmenuid==="1"||newmenuid===1){ + this.setState({ + filterKey:'1' + }) + }else{ + this.setState({ + filterKey:'2' + }) + } + + this.fetchAll(1); const isAdminOrTeacher = this.props.isAdminOrTeacher() const isAdmin = this.props.isAdmin() @@ -385,6 +396,8 @@ class studentsList extends Component{ this.fetchAll() } fetchAll = async (argPage) => { + let { searchValue, filterKey }=this.state + this.setState({ isSpin:true }) @@ -395,7 +408,7 @@ class studentsList extends Component{ const sortedInfo = this.state.sortedInfo; let page = argPage || this.state.page - let { searchValue, filterKey }=this.state + let order = 1; if (sortedInfo.columnKey == 'role') { order = 1; @@ -654,7 +667,9 @@ class studentsList extends Component{ const isSuperAdmin = this.props.isSuperAdmin() const hasGraduationModule = this.hasGraduationModule() const coursesId = this.props.match.params.coursesId - + + + return( {/* - + 已审批({total_count}) 待审批({apply_size}) From af73fa98c03e89cf60f878e7ebc575b5da01b1c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Mon, 28 Oct 2019 17:47:05 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=AF=BE=E5=A0=82?= =?UTF-8?q?=E5=BE=85=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/courses/members/teacherList.js | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/public/react/src/modules/courses/members/teacherList.js b/public/react/src/modules/courses/members/teacherList.js index 5834ae517..2ce893b5c 100644 --- a/public/react/src/modules/courses/members/teacherList.js +++ b/public/react/src/modules/courses/members/teacherList.js @@ -258,7 +258,7 @@ class studentsList extends Component{ // approval 2 - 拒绝 onAgree = (record, approval = 1) => { const isAdminOrCreator = this.props.isAdminOrCreator() - const { course_groups } = this.state + const { course_groups ,filterKey} = this.state if (approval == 1 && isAdminOrCreator && course_groups && course_groups.length) { this.setState({ clickRecord: record}, () => { this.setGroupChooserModalVisible(true) @@ -280,7 +280,7 @@ class studentsList extends Component{ .then((response) => { if (response.data.status == 0) { this.props.showNotification(`已${approval == 1? '同意' : '拒绝'}`) - this.fetchAll(1) + this.fetchAll(1,filterKey) } }) .catch(function (error) { @@ -304,13 +304,15 @@ class studentsList extends Component{ this.setState({ filterKey:'1' }) + this.fetchAll(1,'1'); }else{ this.setState({ filterKey:'2' }) + this.fetchAll(1,'2'); } - this.fetchAll(1); + const isAdminOrTeacher = this.props.isAdminOrTeacher() const isAdmin = this.props.isAdmin() @@ -330,10 +332,11 @@ class studentsList extends Component{ this.getCourseGroups() } addTeacherSuccessListener = (e, data) => { + // const params = JSON.parse(data) // const coursesId = this.props.match.params.coursesId if (window.location.pathname.endsWith('teachers')) { - this.fetchAll(1) + this.fetchAll(1,this.state.filterKey) } else { // this.props.history.push(`/courses/${coursesId}/teachers`) } @@ -393,10 +396,10 @@ class studentsList extends Component{ }); } onChangeRoleSuccess = () => { - this.fetchAll() + this.fetchAll(undefined,this.state.filterKey) } - fetchAll = async (argPage) => { - let { searchValue, filterKey }=this.state + fetchAll = async (argPage,filterKey) => { + let { searchValue }=this.state this.setState({ isSpin:true @@ -476,8 +479,8 @@ class studentsList extends Component{ // join_graduation_group joinGraduationGroup = (graduation_group_id) => { - const courseId = this.props.match.params.coursesId - + const courseId = this.props.match.params.coursesId + let { filterKey }=this.state let url= `/courses/${courseId}/join_graduation_group.json`; axios.post(url, { course_member_list: this.state.checkBoxValues.map (item => { return { course_member_id: item } }), @@ -485,7 +488,7 @@ class studentsList extends Component{ }).then((result)=>{ if(result.data.status==0){ this.props.showNotification('操作成功。') - this.fetchAll() + this.fetchAll(undefined,filterKey) } }).catch((error)=>{ console.log(error); @@ -493,6 +496,7 @@ class studentsList extends Component{ } onInputSearchChange = (e) => { + let {filterKey}=this.state; this.setState({ searchValue: e.target.value }) @@ -501,12 +505,12 @@ class studentsList extends Component{ clearTimeout(this.timeoutHandler) } this.timeoutHandler = setTimeout(() => { - this.fetchAll(1) + this.fetchAll(1,filterKey) }, 1200) } onPressEnter = (e) => { - this.fetchAll(1) + this.fetchAll(1,this.state.filterKey) } @@ -543,7 +547,7 @@ class studentsList extends Component{ changeRole = (member, role) => { const courseId = this.props.match.params.coursesId - + let {filterKey}=this.state; let url= `/courses/${courseId}/change_course_teacher.json`; axios.post(url, { course_member_id: member.course_member_id @@ -556,7 +560,7 @@ class studentsList extends Component{ }).then((result)=>{ if(result.data.status==0){ this.props.showNotification('操作成功。') - this.fetchAll() + this.fetchAll(undefined,filterKey) } }).catch((error)=>{ console.log(error); @@ -572,9 +576,11 @@ class studentsList extends Component{ this.refs.addAdminModal.setVisible(true) } changeAdminSuccess = () => { - this.fetchAll() + let {filterKey}=this.state; + this.fetchAll(undefined,filterKey) } onDelete = (member) => { + let {filterKey}=this.state; this.props.confirm({ content: `确认要将“${member.name}”从教师列表中移除吗?`, onOk: () => { @@ -590,7 +596,7 @@ class studentsList extends Component{ // {"status":1,"message":"删除成功"} this.props.showNotification('删除成功') trigger('updatabanner') - this.fetchAll() + this.fetchAll(undefined,filterKey) } }) .catch(function (error) { @@ -615,12 +621,13 @@ class studentsList extends Component{ } onTableChange = (pagination, filters, sorter) => { + let {filterKey}=this.state; console.log('Various parameters', pagination, filters, sorter); this.setState({ page: pagination.current, sortedInfo: sorter, }, () => { - this.fetchAll() + this.fetchAll(undefined,filterKey) }); }; clearSelection = () => { @@ -633,7 +640,7 @@ class studentsList extends Component{ page:1, isSpin:true }, () => { - this.fetchAll(); + this.fetchAll(undefined,e.key); }) } setGroupChooserModalVisible = (visible) => { @@ -755,9 +762,11 @@ class studentsList extends Component{
    { course_groups && !!course_groups.length && this.fetchAll(e,this.state.filterKey)} course_groups={course_groups} visible={this.state.groupChooserModalVisible} setVisible={this.setGroupChooserModalVisible} From d9def715ffec1cfafbc54590efa0b4a34e790770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Mon, 28 Oct 2019 18:07:42 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../courses/members/modal/CourseGroupChooserModal.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/public/react/src/modules/courses/members/modal/CourseGroupChooserModal.js b/public/react/src/modules/courses/members/modal/CourseGroupChooserModal.js index f5365433d..884b2eafa 100644 --- a/public/react/src/modules/courses/members/modal/CourseGroupChooserModal.js +++ b/public/react/src/modules/courses/members/modal/CourseGroupChooserModal.js @@ -50,10 +50,14 @@ function CourseGroupChooserModal({ course_groups = [], isAdminOrCreator, item, i application_id: record.application_id, approval: approval, group_id: arg_course_groups - }) - props.showNotification(`已${approval == 1? '同意' : '拒绝'}`) - fetchAll(1) - modalEl.current.setVisible(false) + }).then((result) => { + if (result.data.status === 0) { + props.showNotification(`已${approval == 1? '同意' : '拒绝'}`) + fetchAll(1) + modalEl.current.setVisible(false) + window.location.reload(); + }}) + } return ( Date: Mon, 28 Oct 2019 18:09:40 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/tasks/exercise_publish_task.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/tasks/exercise_publish_task.rb b/app/tasks/exercise_publish_task.rb index 4e34320ea..17f5370ed 100644 --- a/app/tasks/exercise_publish_task.rb +++ b/app/tasks/exercise_publish_task.rb @@ -45,12 +45,14 @@ class ExercisePublishTask Rails.logger.info("log--------------------------------exercise_end start") puts "--------------------------------exercise_end start" # 1。统一设置的试卷 - exercises = Exercise.includes(:exercise_users,:exercise_questions).where("exercise_status = 2 AND unified_setting = true AND end_time <= ?",Time.now + 900) + exercises = Exercise.includes(:exercise_users,:exercise_questions).where("exercise_status = 2 AND + unified_setting = true AND end_time <= ?",Time.now + 900) exercises&.each do |exercise| ex_type = exercise.exercise_questions.pluck(:question_type).uniq exercise.update_column('exercise_status', 3) exercise.exercise_users&.each do |exercise_user| begin + Rails.logger.info("true: user_id:#{exercise_user.user_id}--commit_status:#{exercise_user.commit_status}") if (exercise_user&.commit_status == 0) && (exercise_user&.start_at.present?) s_score = calculate_student_score(exercise, exercise_user.user)[:total_score] if ex_type.include?(4) #是否包含主观题 @@ -60,6 +62,9 @@ class ExercisePublishTask end total_score_subjective_score = subjective_score < 0.0 ? 0.0 : subjective_score total_score = s_score + total_score_subjective_score + Rails.logger.info("true: user_id:#{exercise_user.user_id}--subjective_score:#{subjective_score}") + Rails.logger.info("true: user_id:#{exercise_user.user_id}--s_score:#{s_score}") + Rails.logger.info("true: user_id:#{exercise_user.user_id}--commit_method:#{exercise_user.commit_method}") commit_option = { :status => 1, :commit_status => 1, @@ -94,6 +99,7 @@ class ExercisePublishTask exercise_users = exercise.exercise_users.where(:user_id => users.pluck(:user_id)) exercise_users&.each do |exercise_user| begin + Rails.logger.info("false: user_id:#{exercise_user.user_id}--commit_status:#{exercise_user.commit_status}") if exercise_user.commit_status == 0 && !exercise_user.start_at.nil? if ex_types.include?(4) #是否包含主观题 subjective_score = exercise_user.subjective_score @@ -103,6 +109,9 @@ class ExercisePublishTask s_score = calculate_student_score(exercise, exercise_user.user)[:total_score] total_score_subjective_score = subjective_score < 0.0 ? 0.0 : subjective_score total_score = s_score + total_score_subjective_score + Rails.logger.info("false: user_id:#{exercise_user.user_id}--s_score:#{s_score}") + Rails.logger.info("false: user_id:#{exercise_user.user_id}--subjective_score:#{subjective_score}") + Rails.logger.info("false: user_id:#{exercise_user.user_id}--commit_method:#{exercise_user.commit_method}") commit_option = { :status => 1, :commit_status => 1, From eeb16d7e09902968e8323b2688aa194c779d5a6e Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Tue, 29 Oct 2019 08:58:20 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E9=97=AE=E5=8D=B7=E7=9A=84=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=88=86=E7=B1=BB=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/polls_controller.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/polls_controller.rb b/app/controllers/polls_controller.rb index 2504b8eb8..5a3fda7a4 100644 --- a/app/controllers/polls_controller.rb +++ b/app/controllers/polls_controller.rb @@ -1068,7 +1068,7 @@ class PollsController < ApplicationController #筛选/分类,排序 order = params[:order] - # b_sort = params[:sort] || "desc" + order_type = params[:order_type] || "desc" choose_type = params[:commit_status] group_id = params[:poll_group_id] search_content = params[:search] @@ -1095,9 +1095,9 @@ class PollsController < ApplicationController poll_users_joins = @poll_users_list.joins(user: :user_extension) if order == "student_id" - @poll_users_list = poll_users_joins.order("user_extensions.student_id DESC") + @poll_users_list = poll_users_joins.order("user_extensions.student_id #{order_type}") else - @poll_users_list = poll_users_joins.order("end_at DESC") + @poll_users_list = poll_users_joins.order("end_at #{order_type}") end @poll_users_size = @poll_users_list.count From c8c6c7701dc812745dac882c04d5381d122a49f5 Mon Sep 17 00:00:00 2001 From: p31729568 Date: Tue, 29 Oct 2019 09:14:18 +0800 Subject: [PATCH 8/8] competition: add manager --- .../admins/competition_settings/index.js | 27 ++++++++++++++++++ .../admins/competition_settings_controller.rb | 2 +- .../competitions/competitions_controller.rb | 8 ++++++ app/models/competition.rb | 12 ++++++++ app/models/competition_manager.rb | 4 +++ .../competition_basic_setting_service.rb | 12 ++++++++ .../competition_settings/index.html.erb | 10 +++++++ .../competitions/common_header.json.jbuilder | 4 +++ ...91029003245_create_competition_managers.rb | 10 +++++++ ...fest-4627fa5586ef7fed55ca286af7c028e9.json | 2 +- ...ebdc36a761ca7a94962ae71d37fb8c06fc5f94.js} | 27 ++++++++++++++++++ ...c36a761ca7a94962ae71d37fb8c06fc5f94.js.gz} | Bin 995171 -> 995329 bytes 12 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 app/models/competition_manager.rb create mode 100644 db/migrate/20191029003245_create_competition_managers.rb rename public/assets/{admin-b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224.js => admin-1f2e5a2a28462df8bcddfbdbfbebdc36a761ca7a94962ae71d37fb8c06fc5f94.js} (99%) rename public/assets/{admin-b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224.js.gz => admin-1f2e5a2a28462df8bcddfbdbfbebdc36a761ca7a94962ae71d37fb8c06fc5f94.js.gz} (98%) diff --git a/app/assets/javascripts/admins/competition_settings/index.js b/app/assets/javascripts/admins/competition_settings/index.js index f9a0a8139..bd84123f5 100644 --- a/app/assets/javascripts/admins/competition_settings/index.js +++ b/app/assets/javascripts/admins/competition_settings/index.js @@ -136,6 +136,33 @@ $(document).on('turbolinks:load', function(){ $('.sponsor-select').select2(selectOptions); $('.allow-school-select').select2(selectOptions); + $('.manager-select').select2({ + theme: 'bootstrap4', + placeholder: '请输入要添加的管理员姓名', + multiple: true, + minimumInputLength: 1, + ajax: { + delay: 500, + url: '/admins/users', + dataType: 'json', + data: function(params){ + return { keyword: params.term }; + }, + processResults: function(data){ + return { results: data.users } + } + }, + templateResult: function (item) { + if(!item.id || item.id === '') return item.text; + return $("" + item.real_name + " " + item.school_name + ' ' + item.hidden_phone + ""); + }, + templateSelection: function(item){ + if (item.id) { + } + return item.real_name || item.text; + } + }); + // 排行榜 //链接 diff --git a/app/controllers/admins/competition_settings_controller.rb b/app/controllers/admins/competition_settings_controller.rb index b295b93ca..832cd5e06 100644 --- a/app/controllers/admins/competition_settings_controller.rb +++ b/app/controllers/admins/competition_settings_controller.rb @@ -22,7 +22,7 @@ class Admins::CompetitionSettingsController < Admins::BaseController def basic_form_params params.permit(:identifier, :name, :sub_title, :start_time, :end_time, :mode, :identifier, :bonus, :awards_count, :description, :course_id, :teach_start_time, - :teach_end_time, sponsor_schools: [], region_schools: []) + :teach_end_time, sponsor_schools: [], region_schools: [], manager_ids: []) end def nav_form_params diff --git a/app/controllers/competitions/competitions_controller.rb b/app/controllers/competitions/competitions_controller.rb index 27556175b..63d0942cc 100644 --- a/app/controllers/competitions/competitions_controller.rb +++ b/app/controllers/competitions/competitions_controller.rb @@ -5,6 +5,7 @@ class Competitions::CompetitionsController < Competitions::BaseController before_action :allow_visit, except: [:index] before_action :require_admin, only: [:update, :update_inform] before_action :chart_visible, only: [:charts, :chart_rules] + before_action :check_manager_permission!, only: [:update_md_content] def index # 已上架 或者 即将上架 @@ -152,6 +153,13 @@ class Competitions::CompetitionsController < Competitions::BaseController render_forbidden unless (chart_module.present? && !chart_module.hidden) || admin_or_business? end + def check_manager_permission! + return if current_user.admin_or_business? + return if current_competition.nearly_published? && current_competition.manager?(current_user) + + render_forbidden + end + # 竞赛成绩导出 def chart_to_xlsx records, competition @competition_head_cells = [] diff --git a/app/models/competition.rb b/app/models/competition.rb index 2789ac628..9eac28616 100644 --- a/app/models/competition.rb +++ b/app/models/competition.rb @@ -26,6 +26,9 @@ class Competition < ApplicationRecord has_many :sponsor_schools, -> { where(source: :sponsor) }, class_name: 'CompetitionSchool' # 主办方 has_many :region_schools, -> { where(source: :region) }, class_name: 'CompetitionSchool' # 开放范围 + has_many :competition_managers, dependent: :destroy + has_many :managers, through: :competition_managers, source: :user + after_create :create_competition_modules def mode_type @@ -75,6 +78,11 @@ class Competition < ApplicationRecord status? end + # 即将发布 + def nearly_published? + !published? && published_at.present? + end + # 是否为个人赛 def personal? competition_staffs.sum(:maximum).to_i == 1 || (competition_staffs.nil? && max_num == 1) @@ -134,6 +142,10 @@ class Competition < ApplicationRecord # competition_awards.pluck(:num)&.sum > 0 ? competition_awards.pluck(:num)&.sum : 20 # end + def manager?(user) + user && competition_managers.exists?(user_id: user.id) + end + private def get_module_name type diff --git a/app/models/competition_manager.rb b/app/models/competition_manager.rb new file mode 100644 index 000000000..4ab8ef717 --- /dev/null +++ b/app/models/competition_manager.rb @@ -0,0 +1,4 @@ +class CompetitionManager < ApplicationRecord + belongs_to :user + belongs_to :competition +end \ No newline at end of file diff --git a/app/services/admins/competition_basic_setting_service.rb b/app/services/admins/competition_basic_setting_service.rb index fd1c1453a..2e9401ff8 100644 --- a/app/services/admins/competition_basic_setting_service.rb +++ b/app/services/admins/competition_basic_setting_service.rb @@ -34,6 +34,18 @@ class Admins::CompetitionBasicSettingService < ApplicationService setting.save! end + # 管理员设置 + params[:manager_ids] = Array.wrap(params[:manager_ids]).map(&:to_i) + old_manager_ids = competition.competition_managers.pluck(:user_id) + new_manager_ids = params[:manager_ids] - old_manager_ids + delete_manager_ids = old_manager_ids - params[:manager_ids] + CompetitionManager.bulk_insert(*%i[user_id competition_id created_at updated_at]) do |worker| + new_manager_ids.each do |manager_id| + worker.add(user_id: manager_id, competition_id: competition.id) + end + end + competition.competition_managers.where(user_id: delete_manager_ids).delete_all + # 主办方设置 params[:sponsor_schools] = Array.wrap(params[:sponsor_schools]).map(&:to_i) new_sponsor_school_ids = competition.sponsor_schools.pluck(:school_id) diff --git a/app/views/admins/competition_settings/index.html.erb b/app/views/admins/competition_settings/index.html.erb index 73bc343d6..fe92d583f 100644 --- a/app/views/admins/competition_settings/index.html.erb +++ b/app/views/admins/competition_settings/index.html.erb @@ -93,6 +93,16 @@
  • +
    +
    + 管理员 +
    +
    + <% manager_data = @competition.managers.map { |u| [u.name, u.id] } %> + <%= select_tag :manager_ids, options_for_select(manager_data, @competition.managers.map(&:id)), class: 'form-control manager-select', multiple: true %> +
    +
    +
    主办方 diff --git a/app/views/competitions/competitions/common_header.json.jbuilder b/app/views/competitions/competitions/common_header.json.jbuilder index f7860cc35..a869d920b 100644 --- a/app/views/competitions/competitions/common_header.json.jbuilder +++ b/app/views/competitions/competitions/common_header.json.jbuilder @@ -30,3 +30,7 @@ if @competition.mode == 2 json.member_of_course @user.member_of_course?(@competition.competition_mode_setting&.course) end +json.permission do + json.editable @user.admin_or_business? || (@competition.nearly_published? && @competition.manager?(@user)) +end + diff --git a/db/migrate/20191029003245_create_competition_managers.rb b/db/migrate/20191029003245_create_competition_managers.rb new file mode 100644 index 000000000..047ebcbe9 --- /dev/null +++ b/db/migrate/20191029003245_create_competition_managers.rb @@ -0,0 +1,10 @@ +class CreateCompetitionManagers < ActiveRecord::Migration[5.2] + def change + create_table :competition_managers do |t| + t.references :user + t.references :competition + + t.timestamps + end + end +end diff --git a/public/assets/.sprockets-manifest-4627fa5586ef7fed55ca286af7c028e9.json b/public/assets/.sprockets-manifest-4627fa5586ef7fed55ca286af7c028e9.json index 756df4b83..b463efc76 100644 --- a/public/assets/.sprockets-manifest-4627fa5586ef7fed55ca286af7c028e9.json +++ b/public/assets/.sprockets-manifest-4627fa5586ef7fed55ca286af7c028e9.json @@ -1 +1 @@ -{"files":{"admin-cd9ca8bacc973ce2dbace30c97f6c40bc08e2c2ee44972f668e738e1902c0121.js":{"logical_path":"admin.js","mtime":"2019-09-11T16:20:07+08:00","size":4350881,"digest":"cd9ca8bacc973ce2dbace30c97f6c40bc08e2c2ee44972f668e738e1902c0121","integrity":"sha256-zZyousyXPOLbrOMMl/bEC8COLC7kSXL2aOc44ZAsASE="},"admin-a1b3356efe50ff4717cf22475639b5333c5354ba03fd107c9b7a8d4ae76f47aa.css":{"logical_path":"admin.css","mtime":"2019-09-11T16:20:07+08:00","size":773445,"digest":"a1b3356efe50ff4717cf22475639b5333c5354ba03fd107c9b7a8d4ae76f47aa","integrity":"sha256-obM1bv5Q/0cXzyJHVjm1MzxTVLoD/RB8m3qNSudvR6o="},"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot":{"logical_path":"font-awesome/fontawesome-webfont.eot","mtime":"2019-08-14T17:22:43+08:00","size":165742,"digest":"7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979","integrity":"sha256-e/yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk="},"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2":{"logical_path":"font-awesome/fontawesome-webfont.woff2","mtime":"2019-08-14T17:22:43+08:00","size":77160,"digest":"2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe","integrity":"sha256-Kt78vAQefRj88tQXh53FoJmXqmTWdbejxLbOM9oT8/4="},"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff":{"logical_path":"font-awesome/fontawesome-webfont.woff","mtime":"2019-08-14T17:22:43+08:00","size":98024,"digest":"ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07","integrity":"sha256-ugxZ3rVFD1y0Gz+TYJ7i0NmVQVh33foiPoqKdTNHTwc="},"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf":{"logical_path":"font-awesome/fontawesome-webfont.ttf","mtime":"2019-08-14T17:22:43+08:00","size":165548,"digest":"aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8","integrity":"sha256-qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg="},"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg":{"logical_path":"font-awesome/fontawesome-webfont.svg","mtime":"2019-08-14T17:22:43+08:00","size":444379,"digest":"ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4","integrity":"sha256-rWFXkmwWIrpOHQPUePFUE2hSS/xG9R5C/g2UX37zI+Q="},"college-18f5e8400331634e898a35acc2187815c096c25e0ab74aba341ae916166cd287.js":{"logical_path":"college.js","mtime":"2019-10-24T15:25:17+08:00","size":3352744,"digest":"18f5e8400331634e898a35acc2187815c096c25e0ab74aba341ae916166cd287","integrity":"sha256-GPXoQAMxY06JijWswhh4FcCWwl4Kt0q6NBrpFhZs0oc="},"college-944d4273f62c7538368b9017fdd3387b5e3bea31a87873770eb231324546d4d9.css":{"logical_path":"college.css","mtime":"2019-09-11T16:20:07+08:00","size":546841,"digest":"944d4273f62c7538368b9017fdd3387b5e3bea31a87873770eb231324546d4d9","integrity":"sha256-lE1Cc/YsdTg2i5AX/dM4e1476jGoeHN3DrIxMkVG1Nk="},"logo-7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423.png":{"logical_path":"logo.png","mtime":"2019-09-03T08:55:53+08:00","size":2816,"digest":"7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423","integrity":"sha256-f/ESVocJv5f5iY/ockm3qPIA/x9I1TfYWvhyFfGHBCM="},"application-9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb.js":{"logical_path":"application.js","mtime":"2019-10-24T15:25:17+08:00","size":600706,"digest":"9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb","integrity":"sha256-nPvD15JZmh0N5ce4QgnhwrLmAzbw8B4Z8FgWY5GHCPs="},"application-5eb87c6e13676d0183317debce17fade27e68c4acee28c419438da15d53c94f2.css":{"logical_path":"application.css","mtime":"2019-09-11T16:20:07+08:00","size":1844002,"digest":"5eb87c6e13676d0183317debce17fade27e68c4acee28c419438da15d53c94f2","integrity":"sha256-Xrh8bhNnbQGDMX3rzhf63ifmjErO4oxBlDjaFdU8lPI="},"admin-c9e5ebe6191548550e27514196ea125cfbb402820ec125a0c9acf99d2d378fe4.js":{"logical_path":"admin.js","mtime":"2019-09-21T15:28:08+08:00","size":4382031,"digest":"c9e5ebe6191548550e27514196ea125cfbb402820ec125a0c9acf99d2d378fe4","integrity":"sha256-yeXr5hkVSFUOJ1FBluoSXPu0AoIOwSWgyaz5nS03j+Q="},"admin-59c59f8cae8bef4a8359286c985458110c9d03ea121516595c988943f4717c38.css":{"logical_path":"admin.css","mtime":"2019-09-21T14:49:04+08:00","size":840093,"digest":"59c59f8cae8bef4a8359286c985458110c9d03ea121516595c988943f4717c38","integrity":"sha256-WcWfjK6L70qDWShsmFRYEQydA+oSFRZZXJiJQ/RxfDg="},"college-38f953d6ba5b85d3fab63cb3c2bbf0d057ccc6454d07cfaafac3b06da37b8437.css":{"logical_path":"college.css","mtime":"2019-09-16T13:56:09+08:00","size":579109,"digest":"38f953d6ba5b85d3fab63cb3c2bbf0d057ccc6454d07cfaafac3b06da37b8437","integrity":"sha256-OPlT1rpbhdP6tjyzwrvw0FfMxkVNB8+q+sOwbaN7hDc="},"application-646b1158a4e8c1f13e684d6fe9025abc75f8d3ba5256e440802c0398223374f3.css":{"logical_path":"application.css","mtime":"2019-09-21T14:49:04+08:00","size":1988767,"digest":"646b1158a4e8c1f13e684d6fe9025abc75f8d3ba5256e440802c0398223374f3","integrity":"sha256-ZGsRWKTowfE+aE1v6QJavHX407pSVuRAgCwDmCIzdPM="},"admin-a47e37c0ec7cf5f22380249776d1e82d65b6b6aa272ed7389185aa200fa40751.js":{"logical_path":"admin.js","mtime":"2019-09-25T15:33:05+08:00","size":4383107,"digest":"a47e37c0ec7cf5f22380249776d1e82d65b6b6aa272ed7389185aa200fa40751","integrity":"sha256-pH43wOx89fIjgCSXdtHoLWW2tqonLtc4kYWqIA+kB1E="},"admin-432c4eac09b036c57ff1e88d902b8aa7df81164e4b419bac557cf1366c1d3ad9.js":{"logical_path":"admin.js","mtime":"2019-09-25T15:35:20+08:00","size":4383103,"digest":"432c4eac09b036c57ff1e88d902b8aa7df81164e4b419bac557cf1366c1d3ad9","integrity":"sha256-QyxOrAmwNsV/8eiNkCuKp9+BFk5LQZusVXzxNmwdOtk="},"admin-978e5ce607f77c26814a174f480da79ac246c2201868ef84654aa03bb6727b5a.js":{"logical_path":"admin.js","mtime":"2019-09-30T14:43:41+08:00","size":4387200,"digest":"978e5ce607f77c26814a174f480da79ac246c2201868ef84654aa03bb6727b5a","integrity":"sha256-l45c5gf3fCaBShdPSA2nmsJGwiAYaO+EZUqgO7Zye1o="},"admin-896281f4731722b0c084dbb1af21d0f34a5bc142d58aff57b391864ab71ddca7.css":{"logical_path":"admin.css","mtime":"2019-09-30T14:43:41+08:00","size":842269,"digest":"896281f4731722b0c084dbb1af21d0f34a5bc142d58aff57b391864ab71ddca7","integrity":"sha256-iWKB9HMXIrDAhNuxryHQ80pbwULViv9Xs5GGSrcd3Kc="},"application-97f313e9bb7d25476649f7d7215959cf421480fd0a3785d1956953bf94a1e8bd.css":{"logical_path":"application.css","mtime":"2019-09-30T14:43:41+08:00","size":1993118,"digest":"97f313e9bb7d25476649f7d7215959cf421480fd0a3785d1956953bf94a1e8bd","integrity":"sha256-l/MT6bt9JUdmSffXIVlZz0IUgP0KN4XRlWlTv5Sh6L0="},"admin-2cdb23442fa735025385b88f2900df04fef38b61530041a6dbe375ef0f0ae888.js":{"logical_path":"admin.js","mtime":"2019-10-11T14:38:33+08:00","size":4394616,"digest":"2cdb23442fa735025385b88f2900df04fef38b61530041a6dbe375ef0f0ae888","integrity":"sha256-LNsjRC+nNQJThbiPKQDfBP7zi2FTAEGm2+N17w8K6Ig="},"admin-2c2854b9a02158ded5a809aaf7144a8630b10354ab4e56fecc4dffcc713796cc.css":{"logical_path":"admin.css","mtime":"2019-10-10T17:12:05+08:00","size":846514,"digest":"2c2854b9a02158ded5a809aaf7144a8630b10354ab4e56fecc4dffcc713796cc","integrity":"sha256-LChUuaAhWN7VqAmq9xRKhjCxA1SrTlb+zE3/zHE3lsw="},"application-50059ae929866043b47015128702fcfba53d32a2df148e64e1d961c10651c6af.css":{"logical_path":"application.css","mtime":"2019-10-10T17:12:05+08:00","size":2001607,"digest":"50059ae929866043b47015128702fcfba53d32a2df148e64e1d961c10651c6af","integrity":"sha256-UAWa6SmGYEO0cBUShwL8+6U9MqLfFI5k4dlhwQZRxq8="},"admin-992cde09b6d17f00a49576ae2d9f1ced127244ba401ef5b7d677cab9741688d2.js":{"logical_path":"admin.js","mtime":"2019-10-16T16:11:32+08:00","size":4394790,"digest":"992cde09b6d17f00a49576ae2d9f1ced127244ba401ef5b7d677cab9741688d2","integrity":"sha256-mSzeCbbRfwCklXauLZ8c7RJyRLpAHvW31nfKuXQWiNI="},"admin-84f2a7791e275d6f820514370b3f968176b994b9dd7b8c3ba8bf48336b03f257.css":{"logical_path":"admin.css","mtime":"2019-10-16T19:25:40+08:00","size":846676,"digest":"84f2a7791e275d6f820514370b3f968176b994b9dd7b8c3ba8bf48336b03f257","integrity":"sha256-hPKneR4nXW+CBRQ3Cz+WgXa5lLnde4w7qL9IM2sD8lc="},"application-ef6bab84852baaf69a91fe6af875b6e1b118c55b4c7d165665c488fac80c4997.css":{"logical_path":"application.css","mtime":"2019-10-16T19:25:40+08:00","size":2001931,"digest":"ef6bab84852baaf69a91fe6af875b6e1b118c55b4c7d165665c488fac80c4997","integrity":"sha256-72urhIUrqvaakf5q+HW24bEYxVtMfRZWZcSI+sgMSZc="},"admin-c99030d305662f740aa84b6c925a1adbbaadaa07fd74e2655e64d44b4b97fc4a.js":{"logical_path":"admin.js","mtime":"2019-10-17T09:44:58+08:00","size":4394897,"digest":"c99030d305662f740aa84b6c925a1adbbaadaa07fd74e2655e64d44b4b97fc4a","integrity":"sha256-yZAw0wVmL3QKqEtskloa27qtqgf9dOJlXmTUS0uX/Eo="},"admin-534bde871d67f4d6fc8da611917d78be4066fc7593ba53ee92aa17068a199d6d.css":{"logical_path":"admin.css","mtime":"2019-10-17T10:22:41+08:00","size":846699,"digest":"534bde871d67f4d6fc8da611917d78be4066fc7593ba53ee92aa17068a199d6d","integrity":"sha256-U0vehx1n9Nb8jaYRkX14vkBm/HWTulPukqoXBooZnW0="},"cooperative-04cd6a60d41220d38ee45ce40b1d004e1d0bcd87c132fb1a7bab6144c1deb8d7.js":{"logical_path":"cooperative.js","mtime":"2019-10-17T10:17:56+08:00","size":4330072,"digest":"04cd6a60d41220d38ee45ce40b1d004e1d0bcd87c132fb1a7bab6144c1deb8d7","integrity":"sha256-BM1qYNQSINOO5FzkCx0ATh0LzYfBMvsae6thRMHeuNc="},"cooperative-a345bbfd8e38b70c9285ecc1747012ffcde429187983e2aea5657abb56b9b4f3.css":{"logical_path":"cooperative.css","mtime":"2019-10-17T10:21:41+08:00","size":830628,"digest":"a345bbfd8e38b70c9285ecc1747012ffcde429187983e2aea5657abb56b9b4f3","integrity":"sha256-o0W7/Y44twyShezBdHAS/83kKRh5g+KupWV6u1a5tPM="},"application-0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8.css":{"logical_path":"application.css","mtime":"2019-09-03T08:55:53+08:00","size":442932,"digest":"0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8","integrity":"sha256-DkF0eNVvQkZ+hXzRhrKcu8DWx8boXIpvQvOaxhiUPeg="},"cooperative-149f47b8675d60a8014ccff50f00f932ff69e2be286ffb74343bc4a3effb135b.js":{"logical_path":"cooperative.js","mtime":"2019-10-17T14:03:03+08:00","size":4338033,"digest":"149f47b8675d60a8014ccff50f00f932ff69e2be286ffb74343bc4a3effb135b","integrity":"sha256-FJ9HuGddYKgBTM/1DwD5Mv9p4r4ob/t0NDvEo+/7E1s="},"cooperative-6273b766d6ef11dd56174d868bab55e7f17af17546c888d2ba0dd0a6bcda76c8.css":{"logical_path":"cooperative.css","mtime":"2019-10-17T11:13:07+08:00","size":832914,"digest":"6273b766d6ef11dd56174d868bab55e7f17af17546c888d2ba0dd0a6bcda76c8","integrity":"sha256-YnO3ZtbvEd1WF02Gi6tV5/F68XVGyIjSug3Qprzadsg="},"admin-82f66cc80b5649c6530a562567f28fe8d05f7bc3b8221e0695b2216255c52ba6.js":{"logical_path":"admin.js","mtime":"2019-10-21T13:51:43+08:00","size":4397012,"digest":"82f66cc80b5649c6530a562567f28fe8d05f7bc3b8221e0695b2216255c52ba6","integrity":"sha256-gvZsyAtWScZTClYlZ/KP6NBfe8O4Ih4GlbIhYlXFK6Y="},"admin-1b5728d94f6bccfbcef452a760d94c3b6f31966bc65d7f89be077fc2ea512bec.js":{"logical_path":"admin.js","mtime":"2019-10-21T16:41:06+08:00","size":4397437,"digest":"1b5728d94f6bccfbcef452a760d94c3b6f31966bc65d7f89be077fc2ea512bec","integrity":"sha256-G1co2U9rzPvO9FKnYNlMO28xlmvGXX+Jvgd/wupRK+w="},"admin-c8c127fefa5eca98bca19832c246619318164e8f242635c07033e2423cc18a6f.js":{"logical_path":"admin.js","mtime":"2019-10-22T09:53:29+08:00","size":4408150,"digest":"c8c127fefa5eca98bca19832c246619318164e8f242635c07033e2423cc18a6f","integrity":"sha256-yMEn/vpeypi8oZgywkZhkxgWTo8kJjXAcDPiQjzBim8="},"admin-60d200c1fcdf61a60537d29ccf4479c6b1e5e904208870a63b8ee677c96b347e.css":{"logical_path":"admin.css","mtime":"2019-10-22T09:43:20+08:00","size":851150,"digest":"60d200c1fcdf61a60537d29ccf4479c6b1e5e904208870a63b8ee677c96b347e","integrity":"sha256-YNIAwfzfYaYFN9Kcz0R5xrHl6QQgiHCmO47md8lrNH4="},"cooperative-9fb7ac4ad44081fafd5ad2a3a1bfb7f4329ac96f28bc6446d1ff52b1e2e71286.js":{"logical_path":"cooperative.js","mtime":"2019-10-22T09:55:26+08:00","size":4338142,"digest":"9fb7ac4ad44081fafd5ad2a3a1bfb7f4329ac96f28bc6446d1ff52b1e2e71286","integrity":"sha256-n7esStRAgfr9WtKjob+39DKayW8ovGRG0f9SseLnEoY="},"admin-a11066081d60365ddf25d5867560d1ccdd3197dbe82a5b6e969cc940e3429ff1.js":{"logical_path":"admin.js","mtime":"2019-10-24T14:16:30+08:00","size":4524252,"digest":"a11066081d60365ddf25d5867560d1ccdd3197dbe82a5b6e969cc940e3429ff1","integrity":"sha256-oRBmCB1gNl3fJdWGdWDRzN0xl9voKltulpzJQONCn/E="},"admin-7ce3dd717f7d12fcbc64caf14200230a1e68db439be0ba1879077599ff2c32c6.css":{"logical_path":"admin.css","mtime":"2019-10-24T10:10:08+08:00","size":852772,"digest":"7ce3dd717f7d12fcbc64caf14200230a1e68db439be0ba1879077599ff2c32c6","integrity":"sha256-fOPdcX99Evy8ZMrxQgAjCh5o20Ob4LoYeQd1mf8sMsY="},"college-93904c65d52c125aec0a463b9fd98bedda0018b78707f806be22685cca5d3747.css":{"logical_path":"college.css","mtime":"2019-10-24T10:10:08+08:00","size":579546,"digest":"93904c65d52c125aec0a463b9fd98bedda0018b78707f806be22685cca5d3747","integrity":"sha256-k5BMZdUsElrsCkY7n9mL7doAGLeHB/gGviJoXMpdN0c="},"cooperative-84c79d26a36aff5b496551b6d21b1bfb726b1bbc4153435a366115e96c204e06.js":{"logical_path":"cooperative.js","mtime":"2019-10-24T14:17:15+08:00","size":4338225,"digest":"84c79d26a36aff5b496551b6d21b1bfb726b1bbc4153435a366115e96c204e06","integrity":"sha256-hMedJqNq/1tJZVG20hsb+3JrG7xBU0NaNmEV6WwgTgY="},"cooperative-10a9ee5177e196572573ccea460e133c748072e223fdb473d05ee72c991fbbe3.css":{"logical_path":"cooperative.css","mtime":"2019-10-24T10:10:08+08:00","size":833351,"digest":"10a9ee5177e196572573ccea460e133c748072e223fdb473d05ee72c991fbbe3","integrity":"sha256-EKnuUXfhllclc8zqRg4TPHSAcuIj/bRz0F7nLJkfu+M="},"admin-441d8f3722e5f73e5748aaeb6f517101474cb1eb48a99f119e561f08b9e9dc60.js":{"logical_path":"admin.js","mtime":"2019-10-24T16:08:56+08:00","size":4525031,"digest":"441d8f3722e5f73e5748aaeb6f517101474cb1eb48a99f119e561f08b9e9dc60","integrity":"sha256-RB2PNyLl9z5XSKrrb1FxAUdMsetIqZ8RnlYfCLnp3GA="},"admin-76c52986591f274f639ad48dfbb480a1aeeec7647b6fa28fa541e78a064b6316.css":{"logical_path":"admin.css","mtime":"2019-10-24T15:25:17+08:00","size":867945,"digest":"76c52986591f274f639ad48dfbb480a1aeeec7647b6fa28fa541e78a064b6316","integrity":"sha256-dsUphlkfJ09jmtSN+7SAoa7ux2R7b6KPpUHnigZLYxY="},"cooperative-6c4c663b6b5071535bab2b76cc5e05ab5682665857763a76bf4f01afef51be5a.js":{"logical_path":"cooperative.js","mtime":"2019-10-24T17:56:20+08:00","size":4339039,"digest":"6c4c663b6b5071535bab2b76cc5e05ab5682665857763a76bf4f01afef51be5a","integrity":"sha256-bExmO2tQcVNbqyt2zF4Fq1aCZlhXdjp2v08Br+9Rvlo="},"admin-c63acadd431434979db50540a0bf7e65c75e1de0d1b449919f2cce89a0548d43.js":{"logical_path":"admin.js","mtime":"2019-10-24T18:12:33+08:00","size":4533182,"digest":"c63acadd431434979db50540a0bf7e65c75e1de0d1b449919f2cce89a0548d43","integrity":"sha256-xjrK3UMUNJedtQVAoL9+ZcdeHeDRtEmRnyzOiaBUjUM="},"admin-bd832b9a35eb3743dde9218beab61f9bcde1508767ad68dbedb1c89a4bb65c3a.css":{"logical_path":"admin.css","mtime":"2019-10-24T17:56:20+08:00","size":861450,"digest":"bd832b9a35eb3743dde9218beab61f9bcde1508767ad68dbedb1c89a4bb65c3a","integrity":"sha256-vYMrmjXrN0Pd6SGL6rYfm83hUIdnrWjb7bHImku2XDo="},"college-fa202780f3e7f96cb9b5916c6f0d7dd9e03cb746864bbd2dd491ed001c30ad8f.css":{"logical_path":"college.css","mtime":"2019-10-24T17:56:20+08:00","size":571936,"digest":"fa202780f3e7f96cb9b5916c6f0d7dd9e03cb746864bbd2dd491ed001c30ad8f","integrity":"sha256-+iAngPPn+Wy5tZFsbw192eA8t0aGS70t1JHtABwwrY8="},"cooperative-4f233e8963b0bd80bc56b71c209d31464d314240ac8d686806baf99511c53ad0.css":{"logical_path":"cooperative.css","mtime":"2019-10-24T17:56:20+08:00","size":825741,"digest":"4f233e8963b0bd80bc56b71c209d31464d314240ac8d686806baf99511c53ad0","integrity":"sha256-TyM+iWOwvYC8VrccIJ0xRk0xQkCsjWhoBrr5lRHFOtA="},"application-8c9d6bb61c50908f584b3070c79aeb95f25c1166d39e07da5e95438b39ca0de9.css":{"logical_path":"application.css","mtime":"2019-10-21T22:52:15+08:00","size":436995,"digest":"8c9d6bb61c50908f584b3070c79aeb95f25c1166d39e07da5e95438b39ca0de9","integrity":"sha256-jJ1rthxQkI9YSzBwx5rrlfJcEWbTngfaXpVDiznKDek="},"admin-bf2bd889f02d15c4913aa260497d72afeb26d701aac49a4ef6a75619af030152.js":{"logical_path":"admin.js","mtime":"2019-10-25T10:12:17+08:00","size":4533673,"digest":"bf2bd889f02d15c4913aa260497d72afeb26d701aac49a4ef6a75619af030152","integrity":"sha256-vyvYifAtFcSROqJgSX1yr+sm1wGqxJpO9qdWGa8DAVI="},"admin-46e564d29ffae5c71ae9b5e36dc0bd5de57b10f396eb2005bfb9cf51e7744cdd.css":{"logical_path":"admin.css","mtime":"2019-10-25T10:12:17+08:00","size":870355,"digest":"46e564d29ffae5c71ae9b5e36dc0bd5de57b10f396eb2005bfb9cf51e7744cdd","integrity":"sha256-RuVk0p/65cca6bXjbcC9XeV7EPOW6yAFv7nPUed0TN0="},"college-2299e05f5e9b640e333ece624d4ab18a678fdabff0bc18b69a9c2e3de49cba8e.css":{"logical_path":"college.css","mtime":"2019-10-25T10:12:17+08:00","size":580077,"digest":"2299e05f5e9b640e333ece624d4ab18a678fdabff0bc18b69a9c2e3de49cba8e","integrity":"sha256-IpngX16bZA4zPs5iTUqximeP2r/wvBi2mpwuPeScuo4="},"cooperative-f1ac8f14ad6ade8d1f79ca49ea9c79be77d49aae9d2705ca672e78444481700d.js":{"logical_path":"cooperative.js","mtime":"2019-10-25T11:01:38+08:00","size":4409145,"digest":"f1ac8f14ad6ade8d1f79ca49ea9c79be77d49aae9d2705ca672e78444481700d","integrity":"sha256-8ayPFK1q3o0fecpJ6px5vnfUmq6dJwXKZy54RESBcA0="},"cooperative-8057adee2454dbc9d648305faf9ede9824f40d3bd0184e816e8035bb7f1e730b.css":{"logical_path":"cooperative.css","mtime":"2019-10-25T10:12:17+08:00","size":833882,"digest":"8057adee2454dbc9d648305faf9ede9824f40d3bd0184e816e8035bb7f1e730b","integrity":"sha256-gFet7iRU28nWSDBfr57emCT0DTvQGE6BboA1u38ecws="},"admin-6f9bb9720e7e5040ae559a8fae11553313f77552a76416b3a9fe77198471964d.js":{"logical_path":"admin.js","mtime":"2019-10-25T17:00:09+08:00","size":4554537,"digest":"6f9bb9720e7e5040ae559a8fae11553313f77552a76416b3a9fe77198471964d","integrity":"sha256-b5u5cg5+UECuVZqPrhFVMxP3dVKnZBazqf53GYRxlk0="},"admin-ab3e0f7240ae4df8d1585c8d5e99df41edd3305ecc2abadcf8820796e1d9fc65.css":{"logical_path":"admin.css","mtime":"2019-10-25T09:55:22+08:00","size":862288,"digest":"ab3e0f7240ae4df8d1585c8d5e99df41edd3305ecc2abadcf8820796e1d9fc65","integrity":"sha256-qz4PckCuTfjRWFyNXpnfQe3TMF7MKrrc+IIHluHZ/GU="},"college-2fdfc5431b46ad4a454a25386dbcbc390466886f76b85fdb7e3f75018196a870.css":{"logical_path":"college.css","mtime":"2019-10-25T09:55:22+08:00","size":572010,"digest":"2fdfc5431b46ad4a454a25386dbcbc390466886f76b85fdb7e3f75018196a870","integrity":"sha256-L9/FQxtGrUpFSiU4bby8OQRmiG92uF/bfj91AYGWqHA="},"cooperative-47d516a0904d0633e82c1de39a6ec4c9e6de0a37813843e01d4bacf97e8b2ebf.css":{"logical_path":"cooperative.css","mtime":"2019-10-25T09:55:22+08:00","size":825815,"digest":"47d516a0904d0633e82c1de39a6ec4c9e6de0a37813843e01d4bacf97e8b2ebf","integrity":"sha256-R9UWoJBNBjPoLB3jmm7EyebeCjeBOEPgHUus+X6LLr8="},"admin-839af7c0d2917a8f8019d0376ea17cec050ef4d19d98c6c10de91f5d2bc81adf.js":{"logical_path":"admin.js","mtime":"2019-10-26T11:25:08+08:00","size":4554543,"digest":"839af7c0d2917a8f8019d0376ea17cec050ef4d19d98c6c10de91f5d2bc81adf","integrity":"sha256-g5r3wNKReo+AGdA3bqF87AUO9NGdmMbBDekfXSvIGt8="},"admin-52d692608c620ae47717a2ac88377e55b9b58af0acdf3f777814a1fd47b6594b.js":{"logical_path":"admin.js","mtime":"2019-10-26T17:16:18+08:00","size":4553202,"digest":"52d692608c620ae47717a2ac88377e55b9b58af0acdf3f777814a1fd47b6594b","integrity":"sha256-UtaSYIxiCuR3F6KsiDd+Vbm1ivCs3z93eBSh/Ue2WUs="},"admin-b58555ae641bbaa61e3af0ddd2756acc3c5de9023c737815c72132cc67c9a403.js":{"logical_path":"admin.js","mtime":"2019-10-27T13:06:02+08:00","size":4553607,"digest":"b58555ae641bbaa61e3af0ddd2756acc3c5de9023c737815c72132cc67c9a403","integrity":"sha256-tYVVrmQbuqYeOvDd0nVqzDxd6QI8c3gVxyEyzGfJpAM="},"admin-b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224.js":{"logical_path":"admin.js","mtime":"2019-10-28T10:46:29+08:00","size":4554008,"digest":"b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224","integrity":"sha256-uVxI6lHzks58QCTQ2LLELf5IUooYmOw/eBjgzaKk8iQ="}},"assets":{"admin.js":"admin-b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224.js","admin.css":"admin-46e564d29ffae5c71ae9b5e36dc0bd5de57b10f396eb2005bfb9cf51e7744cdd.css","font-awesome/fontawesome-webfont.eot":"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot","font-awesome/fontawesome-webfont.woff2":"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2","font-awesome/fontawesome-webfont.woff":"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff","font-awesome/fontawesome-webfont.ttf":"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf","font-awesome/fontawesome-webfont.svg":"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg","college.js":"college-18f5e8400331634e898a35acc2187815c096c25e0ab74aba341ae916166cd287.js","college.css":"college-2299e05f5e9b640e333ece624d4ab18a678fdabff0bc18b69a9c2e3de49cba8e.css","logo.png":"logo-7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423.png","application.js":"application-9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb.js","application.css":"application-0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8.css","cooperative.js":"cooperative-f1ac8f14ad6ade8d1f79ca49ea9c79be77d49aae9d2705ca672e78444481700d.js","cooperative.css":"cooperative-8057adee2454dbc9d648305faf9ede9824f40d3bd0184e816e8035bb7f1e730b.css"}} \ No newline at end of file +{"files":{"admin-cd9ca8bacc973ce2dbace30c97f6c40bc08e2c2ee44972f668e738e1902c0121.js":{"logical_path":"admin.js","mtime":"2019-09-11T16:20:07+08:00","size":4350881,"digest":"cd9ca8bacc973ce2dbace30c97f6c40bc08e2c2ee44972f668e738e1902c0121","integrity":"sha256-zZyousyXPOLbrOMMl/bEC8COLC7kSXL2aOc44ZAsASE="},"admin-a1b3356efe50ff4717cf22475639b5333c5354ba03fd107c9b7a8d4ae76f47aa.css":{"logical_path":"admin.css","mtime":"2019-09-11T16:20:07+08:00","size":773445,"digest":"a1b3356efe50ff4717cf22475639b5333c5354ba03fd107c9b7a8d4ae76f47aa","integrity":"sha256-obM1bv5Q/0cXzyJHVjm1MzxTVLoD/RB8m3qNSudvR6o="},"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot":{"logical_path":"font-awesome/fontawesome-webfont.eot","mtime":"2019-08-14T17:22:43+08:00","size":165742,"digest":"7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979","integrity":"sha256-e/yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk="},"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2":{"logical_path":"font-awesome/fontawesome-webfont.woff2","mtime":"2019-08-14T17:22:43+08:00","size":77160,"digest":"2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe","integrity":"sha256-Kt78vAQefRj88tQXh53FoJmXqmTWdbejxLbOM9oT8/4="},"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff":{"logical_path":"font-awesome/fontawesome-webfont.woff","mtime":"2019-08-14T17:22:43+08:00","size":98024,"digest":"ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07","integrity":"sha256-ugxZ3rVFD1y0Gz+TYJ7i0NmVQVh33foiPoqKdTNHTwc="},"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf":{"logical_path":"font-awesome/fontawesome-webfont.ttf","mtime":"2019-08-14T17:22:43+08:00","size":165548,"digest":"aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8","integrity":"sha256-qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg="},"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg":{"logical_path":"font-awesome/fontawesome-webfont.svg","mtime":"2019-08-14T17:22:43+08:00","size":444379,"digest":"ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4","integrity":"sha256-rWFXkmwWIrpOHQPUePFUE2hSS/xG9R5C/g2UX37zI+Q="},"college-18f5e8400331634e898a35acc2187815c096c25e0ab74aba341ae916166cd287.js":{"logical_path":"college.js","mtime":"2019-10-24T15:25:17+08:00","size":3352744,"digest":"18f5e8400331634e898a35acc2187815c096c25e0ab74aba341ae916166cd287","integrity":"sha256-GPXoQAMxY06JijWswhh4FcCWwl4Kt0q6NBrpFhZs0oc="},"college-944d4273f62c7538368b9017fdd3387b5e3bea31a87873770eb231324546d4d9.css":{"logical_path":"college.css","mtime":"2019-09-11T16:20:07+08:00","size":546841,"digest":"944d4273f62c7538368b9017fdd3387b5e3bea31a87873770eb231324546d4d9","integrity":"sha256-lE1Cc/YsdTg2i5AX/dM4e1476jGoeHN3DrIxMkVG1Nk="},"logo-7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423.png":{"logical_path":"logo.png","mtime":"2019-09-03T08:55:53+08:00","size":2816,"digest":"7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423","integrity":"sha256-f/ESVocJv5f5iY/ockm3qPIA/x9I1TfYWvhyFfGHBCM="},"application-9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb.js":{"logical_path":"application.js","mtime":"2019-10-24T15:25:17+08:00","size":600706,"digest":"9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb","integrity":"sha256-nPvD15JZmh0N5ce4QgnhwrLmAzbw8B4Z8FgWY5GHCPs="},"application-5eb87c6e13676d0183317debce17fade27e68c4acee28c419438da15d53c94f2.css":{"logical_path":"application.css","mtime":"2019-09-11T16:20:07+08:00","size":1844002,"digest":"5eb87c6e13676d0183317debce17fade27e68c4acee28c419438da15d53c94f2","integrity":"sha256-Xrh8bhNnbQGDMX3rzhf63ifmjErO4oxBlDjaFdU8lPI="},"admin-c9e5ebe6191548550e27514196ea125cfbb402820ec125a0c9acf99d2d378fe4.js":{"logical_path":"admin.js","mtime":"2019-09-21T15:28:08+08:00","size":4382031,"digest":"c9e5ebe6191548550e27514196ea125cfbb402820ec125a0c9acf99d2d378fe4","integrity":"sha256-yeXr5hkVSFUOJ1FBluoSXPu0AoIOwSWgyaz5nS03j+Q="},"admin-59c59f8cae8bef4a8359286c985458110c9d03ea121516595c988943f4717c38.css":{"logical_path":"admin.css","mtime":"2019-09-21T14:49:04+08:00","size":840093,"digest":"59c59f8cae8bef4a8359286c985458110c9d03ea121516595c988943f4717c38","integrity":"sha256-WcWfjK6L70qDWShsmFRYEQydA+oSFRZZXJiJQ/RxfDg="},"college-38f953d6ba5b85d3fab63cb3c2bbf0d057ccc6454d07cfaafac3b06da37b8437.css":{"logical_path":"college.css","mtime":"2019-09-16T13:56:09+08:00","size":579109,"digest":"38f953d6ba5b85d3fab63cb3c2bbf0d057ccc6454d07cfaafac3b06da37b8437","integrity":"sha256-OPlT1rpbhdP6tjyzwrvw0FfMxkVNB8+q+sOwbaN7hDc="},"application-646b1158a4e8c1f13e684d6fe9025abc75f8d3ba5256e440802c0398223374f3.css":{"logical_path":"application.css","mtime":"2019-09-21T14:49:04+08:00","size":1988767,"digest":"646b1158a4e8c1f13e684d6fe9025abc75f8d3ba5256e440802c0398223374f3","integrity":"sha256-ZGsRWKTowfE+aE1v6QJavHX407pSVuRAgCwDmCIzdPM="},"admin-a47e37c0ec7cf5f22380249776d1e82d65b6b6aa272ed7389185aa200fa40751.js":{"logical_path":"admin.js","mtime":"2019-09-25T15:33:05+08:00","size":4383107,"digest":"a47e37c0ec7cf5f22380249776d1e82d65b6b6aa272ed7389185aa200fa40751","integrity":"sha256-pH43wOx89fIjgCSXdtHoLWW2tqonLtc4kYWqIA+kB1E="},"admin-432c4eac09b036c57ff1e88d902b8aa7df81164e4b419bac557cf1366c1d3ad9.js":{"logical_path":"admin.js","mtime":"2019-09-25T15:35:20+08:00","size":4383103,"digest":"432c4eac09b036c57ff1e88d902b8aa7df81164e4b419bac557cf1366c1d3ad9","integrity":"sha256-QyxOrAmwNsV/8eiNkCuKp9+BFk5LQZusVXzxNmwdOtk="},"admin-978e5ce607f77c26814a174f480da79ac246c2201868ef84654aa03bb6727b5a.js":{"logical_path":"admin.js","mtime":"2019-09-30T14:43:41+08:00","size":4387200,"digest":"978e5ce607f77c26814a174f480da79ac246c2201868ef84654aa03bb6727b5a","integrity":"sha256-l45c5gf3fCaBShdPSA2nmsJGwiAYaO+EZUqgO7Zye1o="},"admin-896281f4731722b0c084dbb1af21d0f34a5bc142d58aff57b391864ab71ddca7.css":{"logical_path":"admin.css","mtime":"2019-09-30T14:43:41+08:00","size":842269,"digest":"896281f4731722b0c084dbb1af21d0f34a5bc142d58aff57b391864ab71ddca7","integrity":"sha256-iWKB9HMXIrDAhNuxryHQ80pbwULViv9Xs5GGSrcd3Kc="},"application-97f313e9bb7d25476649f7d7215959cf421480fd0a3785d1956953bf94a1e8bd.css":{"logical_path":"application.css","mtime":"2019-09-30T14:43:41+08:00","size":1993118,"digest":"97f313e9bb7d25476649f7d7215959cf421480fd0a3785d1956953bf94a1e8bd","integrity":"sha256-l/MT6bt9JUdmSffXIVlZz0IUgP0KN4XRlWlTv5Sh6L0="},"admin-2cdb23442fa735025385b88f2900df04fef38b61530041a6dbe375ef0f0ae888.js":{"logical_path":"admin.js","mtime":"2019-10-11T14:38:33+08:00","size":4394616,"digest":"2cdb23442fa735025385b88f2900df04fef38b61530041a6dbe375ef0f0ae888","integrity":"sha256-LNsjRC+nNQJThbiPKQDfBP7zi2FTAEGm2+N17w8K6Ig="},"admin-2c2854b9a02158ded5a809aaf7144a8630b10354ab4e56fecc4dffcc713796cc.css":{"logical_path":"admin.css","mtime":"2019-10-10T17:12:05+08:00","size":846514,"digest":"2c2854b9a02158ded5a809aaf7144a8630b10354ab4e56fecc4dffcc713796cc","integrity":"sha256-LChUuaAhWN7VqAmq9xRKhjCxA1SrTlb+zE3/zHE3lsw="},"application-50059ae929866043b47015128702fcfba53d32a2df148e64e1d961c10651c6af.css":{"logical_path":"application.css","mtime":"2019-10-10T17:12:05+08:00","size":2001607,"digest":"50059ae929866043b47015128702fcfba53d32a2df148e64e1d961c10651c6af","integrity":"sha256-UAWa6SmGYEO0cBUShwL8+6U9MqLfFI5k4dlhwQZRxq8="},"admin-992cde09b6d17f00a49576ae2d9f1ced127244ba401ef5b7d677cab9741688d2.js":{"logical_path":"admin.js","mtime":"2019-10-16T16:11:32+08:00","size":4394790,"digest":"992cde09b6d17f00a49576ae2d9f1ced127244ba401ef5b7d677cab9741688d2","integrity":"sha256-mSzeCbbRfwCklXauLZ8c7RJyRLpAHvW31nfKuXQWiNI="},"admin-84f2a7791e275d6f820514370b3f968176b994b9dd7b8c3ba8bf48336b03f257.css":{"logical_path":"admin.css","mtime":"2019-10-16T19:25:40+08:00","size":846676,"digest":"84f2a7791e275d6f820514370b3f968176b994b9dd7b8c3ba8bf48336b03f257","integrity":"sha256-hPKneR4nXW+CBRQ3Cz+WgXa5lLnde4w7qL9IM2sD8lc="},"application-ef6bab84852baaf69a91fe6af875b6e1b118c55b4c7d165665c488fac80c4997.css":{"logical_path":"application.css","mtime":"2019-10-16T19:25:40+08:00","size":2001931,"digest":"ef6bab84852baaf69a91fe6af875b6e1b118c55b4c7d165665c488fac80c4997","integrity":"sha256-72urhIUrqvaakf5q+HW24bEYxVtMfRZWZcSI+sgMSZc="},"admin-c99030d305662f740aa84b6c925a1adbbaadaa07fd74e2655e64d44b4b97fc4a.js":{"logical_path":"admin.js","mtime":"2019-10-17T09:44:58+08:00","size":4394897,"digest":"c99030d305662f740aa84b6c925a1adbbaadaa07fd74e2655e64d44b4b97fc4a","integrity":"sha256-yZAw0wVmL3QKqEtskloa27qtqgf9dOJlXmTUS0uX/Eo="},"admin-534bde871d67f4d6fc8da611917d78be4066fc7593ba53ee92aa17068a199d6d.css":{"logical_path":"admin.css","mtime":"2019-10-17T10:22:41+08:00","size":846699,"digest":"534bde871d67f4d6fc8da611917d78be4066fc7593ba53ee92aa17068a199d6d","integrity":"sha256-U0vehx1n9Nb8jaYRkX14vkBm/HWTulPukqoXBooZnW0="},"cooperative-04cd6a60d41220d38ee45ce40b1d004e1d0bcd87c132fb1a7bab6144c1deb8d7.js":{"logical_path":"cooperative.js","mtime":"2019-10-17T10:17:56+08:00","size":4330072,"digest":"04cd6a60d41220d38ee45ce40b1d004e1d0bcd87c132fb1a7bab6144c1deb8d7","integrity":"sha256-BM1qYNQSINOO5FzkCx0ATh0LzYfBMvsae6thRMHeuNc="},"cooperative-a345bbfd8e38b70c9285ecc1747012ffcde429187983e2aea5657abb56b9b4f3.css":{"logical_path":"cooperative.css","mtime":"2019-10-17T10:21:41+08:00","size":830628,"digest":"a345bbfd8e38b70c9285ecc1747012ffcde429187983e2aea5657abb56b9b4f3","integrity":"sha256-o0W7/Y44twyShezBdHAS/83kKRh5g+KupWV6u1a5tPM="},"application-0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8.css":{"logical_path":"application.css","mtime":"2019-09-03T08:55:53+08:00","size":442932,"digest":"0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8","integrity":"sha256-DkF0eNVvQkZ+hXzRhrKcu8DWx8boXIpvQvOaxhiUPeg="},"cooperative-149f47b8675d60a8014ccff50f00f932ff69e2be286ffb74343bc4a3effb135b.js":{"logical_path":"cooperative.js","mtime":"2019-10-17T14:03:03+08:00","size":4338033,"digest":"149f47b8675d60a8014ccff50f00f932ff69e2be286ffb74343bc4a3effb135b","integrity":"sha256-FJ9HuGddYKgBTM/1DwD5Mv9p4r4ob/t0NDvEo+/7E1s="},"cooperative-6273b766d6ef11dd56174d868bab55e7f17af17546c888d2ba0dd0a6bcda76c8.css":{"logical_path":"cooperative.css","mtime":"2019-10-17T11:13:07+08:00","size":832914,"digest":"6273b766d6ef11dd56174d868bab55e7f17af17546c888d2ba0dd0a6bcda76c8","integrity":"sha256-YnO3ZtbvEd1WF02Gi6tV5/F68XVGyIjSug3Qprzadsg="},"admin-82f66cc80b5649c6530a562567f28fe8d05f7bc3b8221e0695b2216255c52ba6.js":{"logical_path":"admin.js","mtime":"2019-10-21T13:51:43+08:00","size":4397012,"digest":"82f66cc80b5649c6530a562567f28fe8d05f7bc3b8221e0695b2216255c52ba6","integrity":"sha256-gvZsyAtWScZTClYlZ/KP6NBfe8O4Ih4GlbIhYlXFK6Y="},"admin-1b5728d94f6bccfbcef452a760d94c3b6f31966bc65d7f89be077fc2ea512bec.js":{"logical_path":"admin.js","mtime":"2019-10-21T16:41:06+08:00","size":4397437,"digest":"1b5728d94f6bccfbcef452a760d94c3b6f31966bc65d7f89be077fc2ea512bec","integrity":"sha256-G1co2U9rzPvO9FKnYNlMO28xlmvGXX+Jvgd/wupRK+w="},"admin-c8c127fefa5eca98bca19832c246619318164e8f242635c07033e2423cc18a6f.js":{"logical_path":"admin.js","mtime":"2019-10-22T09:53:29+08:00","size":4408150,"digest":"c8c127fefa5eca98bca19832c246619318164e8f242635c07033e2423cc18a6f","integrity":"sha256-yMEn/vpeypi8oZgywkZhkxgWTo8kJjXAcDPiQjzBim8="},"admin-60d200c1fcdf61a60537d29ccf4479c6b1e5e904208870a63b8ee677c96b347e.css":{"logical_path":"admin.css","mtime":"2019-10-22T09:43:20+08:00","size":851150,"digest":"60d200c1fcdf61a60537d29ccf4479c6b1e5e904208870a63b8ee677c96b347e","integrity":"sha256-YNIAwfzfYaYFN9Kcz0R5xrHl6QQgiHCmO47md8lrNH4="},"cooperative-9fb7ac4ad44081fafd5ad2a3a1bfb7f4329ac96f28bc6446d1ff52b1e2e71286.js":{"logical_path":"cooperative.js","mtime":"2019-10-22T09:55:26+08:00","size":4338142,"digest":"9fb7ac4ad44081fafd5ad2a3a1bfb7f4329ac96f28bc6446d1ff52b1e2e71286","integrity":"sha256-n7esStRAgfr9WtKjob+39DKayW8ovGRG0f9SseLnEoY="},"admin-a11066081d60365ddf25d5867560d1ccdd3197dbe82a5b6e969cc940e3429ff1.js":{"logical_path":"admin.js","mtime":"2019-10-24T14:16:30+08:00","size":4524252,"digest":"a11066081d60365ddf25d5867560d1ccdd3197dbe82a5b6e969cc940e3429ff1","integrity":"sha256-oRBmCB1gNl3fJdWGdWDRzN0xl9voKltulpzJQONCn/E="},"admin-7ce3dd717f7d12fcbc64caf14200230a1e68db439be0ba1879077599ff2c32c6.css":{"logical_path":"admin.css","mtime":"2019-10-24T10:10:08+08:00","size":852772,"digest":"7ce3dd717f7d12fcbc64caf14200230a1e68db439be0ba1879077599ff2c32c6","integrity":"sha256-fOPdcX99Evy8ZMrxQgAjCh5o20Ob4LoYeQd1mf8sMsY="},"college-93904c65d52c125aec0a463b9fd98bedda0018b78707f806be22685cca5d3747.css":{"logical_path":"college.css","mtime":"2019-10-24T10:10:08+08:00","size":579546,"digest":"93904c65d52c125aec0a463b9fd98bedda0018b78707f806be22685cca5d3747","integrity":"sha256-k5BMZdUsElrsCkY7n9mL7doAGLeHB/gGviJoXMpdN0c="},"cooperative-84c79d26a36aff5b496551b6d21b1bfb726b1bbc4153435a366115e96c204e06.js":{"logical_path":"cooperative.js","mtime":"2019-10-24T14:17:15+08:00","size":4338225,"digest":"84c79d26a36aff5b496551b6d21b1bfb726b1bbc4153435a366115e96c204e06","integrity":"sha256-hMedJqNq/1tJZVG20hsb+3JrG7xBU0NaNmEV6WwgTgY="},"cooperative-10a9ee5177e196572573ccea460e133c748072e223fdb473d05ee72c991fbbe3.css":{"logical_path":"cooperative.css","mtime":"2019-10-24T10:10:08+08:00","size":833351,"digest":"10a9ee5177e196572573ccea460e133c748072e223fdb473d05ee72c991fbbe3","integrity":"sha256-EKnuUXfhllclc8zqRg4TPHSAcuIj/bRz0F7nLJkfu+M="},"admin-441d8f3722e5f73e5748aaeb6f517101474cb1eb48a99f119e561f08b9e9dc60.js":{"logical_path":"admin.js","mtime":"2019-10-24T16:08:56+08:00","size":4525031,"digest":"441d8f3722e5f73e5748aaeb6f517101474cb1eb48a99f119e561f08b9e9dc60","integrity":"sha256-RB2PNyLl9z5XSKrrb1FxAUdMsetIqZ8RnlYfCLnp3GA="},"admin-76c52986591f274f639ad48dfbb480a1aeeec7647b6fa28fa541e78a064b6316.css":{"logical_path":"admin.css","mtime":"2019-10-24T15:25:17+08:00","size":867945,"digest":"76c52986591f274f639ad48dfbb480a1aeeec7647b6fa28fa541e78a064b6316","integrity":"sha256-dsUphlkfJ09jmtSN+7SAoa7ux2R7b6KPpUHnigZLYxY="},"cooperative-6c4c663b6b5071535bab2b76cc5e05ab5682665857763a76bf4f01afef51be5a.js":{"logical_path":"cooperative.js","mtime":"2019-10-24T17:56:20+08:00","size":4339039,"digest":"6c4c663b6b5071535bab2b76cc5e05ab5682665857763a76bf4f01afef51be5a","integrity":"sha256-bExmO2tQcVNbqyt2zF4Fq1aCZlhXdjp2v08Br+9Rvlo="},"admin-c63acadd431434979db50540a0bf7e65c75e1de0d1b449919f2cce89a0548d43.js":{"logical_path":"admin.js","mtime":"2019-10-24T18:12:33+08:00","size":4533182,"digest":"c63acadd431434979db50540a0bf7e65c75e1de0d1b449919f2cce89a0548d43","integrity":"sha256-xjrK3UMUNJedtQVAoL9+ZcdeHeDRtEmRnyzOiaBUjUM="},"admin-bd832b9a35eb3743dde9218beab61f9bcde1508767ad68dbedb1c89a4bb65c3a.css":{"logical_path":"admin.css","mtime":"2019-10-24T17:56:20+08:00","size":861450,"digest":"bd832b9a35eb3743dde9218beab61f9bcde1508767ad68dbedb1c89a4bb65c3a","integrity":"sha256-vYMrmjXrN0Pd6SGL6rYfm83hUIdnrWjb7bHImku2XDo="},"college-fa202780f3e7f96cb9b5916c6f0d7dd9e03cb746864bbd2dd491ed001c30ad8f.css":{"logical_path":"college.css","mtime":"2019-10-24T17:56:20+08:00","size":571936,"digest":"fa202780f3e7f96cb9b5916c6f0d7dd9e03cb746864bbd2dd491ed001c30ad8f","integrity":"sha256-+iAngPPn+Wy5tZFsbw192eA8t0aGS70t1JHtABwwrY8="},"cooperative-4f233e8963b0bd80bc56b71c209d31464d314240ac8d686806baf99511c53ad0.css":{"logical_path":"cooperative.css","mtime":"2019-10-24T17:56:20+08:00","size":825741,"digest":"4f233e8963b0bd80bc56b71c209d31464d314240ac8d686806baf99511c53ad0","integrity":"sha256-TyM+iWOwvYC8VrccIJ0xRk0xQkCsjWhoBrr5lRHFOtA="},"application-8c9d6bb61c50908f584b3070c79aeb95f25c1166d39e07da5e95438b39ca0de9.css":{"logical_path":"application.css","mtime":"2019-10-21T22:52:15+08:00","size":436995,"digest":"8c9d6bb61c50908f584b3070c79aeb95f25c1166d39e07da5e95438b39ca0de9","integrity":"sha256-jJ1rthxQkI9YSzBwx5rrlfJcEWbTngfaXpVDiznKDek="},"admin-bf2bd889f02d15c4913aa260497d72afeb26d701aac49a4ef6a75619af030152.js":{"logical_path":"admin.js","mtime":"2019-10-25T10:12:17+08:00","size":4533673,"digest":"bf2bd889f02d15c4913aa260497d72afeb26d701aac49a4ef6a75619af030152","integrity":"sha256-vyvYifAtFcSROqJgSX1yr+sm1wGqxJpO9qdWGa8DAVI="},"admin-46e564d29ffae5c71ae9b5e36dc0bd5de57b10f396eb2005bfb9cf51e7744cdd.css":{"logical_path":"admin.css","mtime":"2019-10-25T10:12:17+08:00","size":870355,"digest":"46e564d29ffae5c71ae9b5e36dc0bd5de57b10f396eb2005bfb9cf51e7744cdd","integrity":"sha256-RuVk0p/65cca6bXjbcC9XeV7EPOW6yAFv7nPUed0TN0="},"college-2299e05f5e9b640e333ece624d4ab18a678fdabff0bc18b69a9c2e3de49cba8e.css":{"logical_path":"college.css","mtime":"2019-10-25T10:12:17+08:00","size":580077,"digest":"2299e05f5e9b640e333ece624d4ab18a678fdabff0bc18b69a9c2e3de49cba8e","integrity":"sha256-IpngX16bZA4zPs5iTUqximeP2r/wvBi2mpwuPeScuo4="},"cooperative-f1ac8f14ad6ade8d1f79ca49ea9c79be77d49aae9d2705ca672e78444481700d.js":{"logical_path":"cooperative.js","mtime":"2019-10-25T11:01:38+08:00","size":4409145,"digest":"f1ac8f14ad6ade8d1f79ca49ea9c79be77d49aae9d2705ca672e78444481700d","integrity":"sha256-8ayPFK1q3o0fecpJ6px5vnfUmq6dJwXKZy54RESBcA0="},"cooperative-8057adee2454dbc9d648305faf9ede9824f40d3bd0184e816e8035bb7f1e730b.css":{"logical_path":"cooperative.css","mtime":"2019-10-25T10:12:17+08:00","size":833882,"digest":"8057adee2454dbc9d648305faf9ede9824f40d3bd0184e816e8035bb7f1e730b","integrity":"sha256-gFet7iRU28nWSDBfr57emCT0DTvQGE6BboA1u38ecws="},"admin-6f9bb9720e7e5040ae559a8fae11553313f77552a76416b3a9fe77198471964d.js":{"logical_path":"admin.js","mtime":"2019-10-25T17:00:09+08:00","size":4554537,"digest":"6f9bb9720e7e5040ae559a8fae11553313f77552a76416b3a9fe77198471964d","integrity":"sha256-b5u5cg5+UECuVZqPrhFVMxP3dVKnZBazqf53GYRxlk0="},"admin-ab3e0f7240ae4df8d1585c8d5e99df41edd3305ecc2abadcf8820796e1d9fc65.css":{"logical_path":"admin.css","mtime":"2019-10-25T09:55:22+08:00","size":862288,"digest":"ab3e0f7240ae4df8d1585c8d5e99df41edd3305ecc2abadcf8820796e1d9fc65","integrity":"sha256-qz4PckCuTfjRWFyNXpnfQe3TMF7MKrrc+IIHluHZ/GU="},"college-2fdfc5431b46ad4a454a25386dbcbc390466886f76b85fdb7e3f75018196a870.css":{"logical_path":"college.css","mtime":"2019-10-25T09:55:22+08:00","size":572010,"digest":"2fdfc5431b46ad4a454a25386dbcbc390466886f76b85fdb7e3f75018196a870","integrity":"sha256-L9/FQxtGrUpFSiU4bby8OQRmiG92uF/bfj91AYGWqHA="},"cooperative-47d516a0904d0633e82c1de39a6ec4c9e6de0a37813843e01d4bacf97e8b2ebf.css":{"logical_path":"cooperative.css","mtime":"2019-10-25T09:55:22+08:00","size":825815,"digest":"47d516a0904d0633e82c1de39a6ec4c9e6de0a37813843e01d4bacf97e8b2ebf","integrity":"sha256-R9UWoJBNBjPoLB3jmm7EyebeCjeBOEPgHUus+X6LLr8="},"admin-839af7c0d2917a8f8019d0376ea17cec050ef4d19d98c6c10de91f5d2bc81adf.js":{"logical_path":"admin.js","mtime":"2019-10-26T11:25:08+08:00","size":4554543,"digest":"839af7c0d2917a8f8019d0376ea17cec050ef4d19d98c6c10de91f5d2bc81adf","integrity":"sha256-g5r3wNKReo+AGdA3bqF87AUO9NGdmMbBDekfXSvIGt8="},"admin-52d692608c620ae47717a2ac88377e55b9b58af0acdf3f777814a1fd47b6594b.js":{"logical_path":"admin.js","mtime":"2019-10-26T17:16:18+08:00","size":4553202,"digest":"52d692608c620ae47717a2ac88377e55b9b58af0acdf3f777814a1fd47b6594b","integrity":"sha256-UtaSYIxiCuR3F6KsiDd+Vbm1ivCs3z93eBSh/Ue2WUs="},"admin-b58555ae641bbaa61e3af0ddd2756acc3c5de9023c737815c72132cc67c9a403.js":{"logical_path":"admin.js","mtime":"2019-10-27T13:06:02+08:00","size":4553607,"digest":"b58555ae641bbaa61e3af0ddd2756acc3c5de9023c737815c72132cc67c9a403","integrity":"sha256-tYVVrmQbuqYeOvDd0nVqzDxd6QI8c3gVxyEyzGfJpAM="},"admin-b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224.js":{"logical_path":"admin.js","mtime":"2019-10-28T10:46:29+08:00","size":4554008,"digest":"b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224","integrity":"sha256-uVxI6lHzks58QCTQ2LLELf5IUooYmOw/eBjgzaKk8iQ="},"admin-1f2e5a2a28462df8bcddfbdbfbebdc36a761ca7a94962ae71d37fb8c06fc5f94.js":{"logical_path":"admin.js","mtime":"2019-10-29T08:57:11+08:00","size":4554938,"digest":"1f2e5a2a28462df8bcddfbdbfbebdc36a761ca7a94962ae71d37fb8c06fc5f94","integrity":"sha256-Hy5aKihGLfi83fvb++vcNqdhynqUlirnHTf7jAb8X5Q="}},"assets":{"admin.js":"admin-1f2e5a2a28462df8bcddfbdbfbebdc36a761ca7a94962ae71d37fb8c06fc5f94.js","admin.css":"admin-46e564d29ffae5c71ae9b5e36dc0bd5de57b10f396eb2005bfb9cf51e7744cdd.css","font-awesome/fontawesome-webfont.eot":"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot","font-awesome/fontawesome-webfont.woff2":"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2","font-awesome/fontawesome-webfont.woff":"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff","font-awesome/fontawesome-webfont.ttf":"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf","font-awesome/fontawesome-webfont.svg":"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg","college.js":"college-18f5e8400331634e898a35acc2187815c096c25e0ab74aba341ae916166cd287.js","college.css":"college-2299e05f5e9b640e333ece624d4ab18a678fdabff0bc18b69a9c2e3de49cba8e.css","logo.png":"logo-7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423.png","application.js":"application-9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb.js","application.css":"application-0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8.css","cooperative.js":"cooperative-f1ac8f14ad6ade8d1f79ca49ea9c79be77d49aae9d2705ca672e78444481700d.js","cooperative.css":"cooperative-8057adee2454dbc9d648305faf9ede9824f40d3bd0184e816e8035bb7f1e730b.css"}} \ No newline at end of file diff --git a/public/assets/admin-b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224.js b/public/assets/admin-1f2e5a2a28462df8bcddfbdbfbebdc36a761ca7a94962ae71d37fb8c06fc5f94.js similarity index 99% rename from public/assets/admin-b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224.js rename to public/assets/admin-1f2e5a2a28462df8bcddfbdbfbebdc36a761ca7a94962ae71d37fb8c06fc5f94.js index ceb5cd643..89b331585 100644 --- a/public/assets/admin-b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224.js +++ b/public/assets/admin-1f2e5a2a28462df8bcddfbdbfbebdc36a761ca7a94962ae71d37fb8c06fc5f94.js @@ -136184,6 +136184,33 @@ $(document).on('turbolinks:load', function(){ $('.sponsor-select').select2(selectOptions); $('.allow-school-select').select2(selectOptions); + $('.manager-select').select2({ + theme: 'bootstrap4', + placeholder: '请输入要添加的管理员姓名', + multiple: true, + minimumInputLength: 1, + ajax: { + delay: 500, + url: '/admins/users', + dataType: 'json', + data: function(params){ + return { keyword: params.term }; + }, + processResults: function(data){ + return { results: data.users } + } + }, + templateResult: function (item) { + if(!item.id || item.id === '') return item.text; + return $("" + item.real_name + " " + item.school_name + ' ' + item.hidden_phone + ""); + }, + templateSelection: function(item){ + if (item.id) { + } + return item.real_name || item.text; + } + }); + // 排行榜 //链接 diff --git a/public/assets/admin-b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224.js.gz b/public/assets/admin-1f2e5a2a28462df8bcddfbdbfbebdc36a761ca7a94962ae71d37fb8c06fc5f94.js.gz similarity index 98% rename from public/assets/admin-b95c48ea51f392ce7c4024d0d8b2c42dfe48528a1898ec3f7818e0cda2a4f224.js.gz rename to public/assets/admin-1f2e5a2a28462df8bcddfbdbfbebdc36a761ca7a94962ae71d37fb8c06fc5f94.js.gz index 3a59ba486665eac32ab8eb74df0c2e8001d3c903..70ac860fd0e020c33bf3f8a048aad2dbdae44e47 100644 GIT binary patch delta 18504 zcmV)VK(D{!-aLWeJO>|(2moh}w}A(R2LXi#0)+B|s}cAJIuSb>loVfhRk- z+n#!a&BUFue-+M2A;^~wbO%NW3xV1^Ac#{i9Z;&1$6|nBPPXTQ>6NN$-6UQW_!b)= z{)(*_J{E=56?rNk!HgXBd&`B>#}V%Vm#BP|)(&D(SOa ze*;iSROzl&tDw}wB(vdgss#W=<&U@d-8;R{-q?Bd+y2X!)Hi|zl;MId8<-^84NpX9 zoCu3cNy|c@jEivHRSuG`8f2~TJzJNCSPizUylY^er7I+)8>*Op8uWP8zb^>ohd<;)pxO)nc;N(cAEld)S=e0&RTxt@2Ogd{3UvESq z{8f0eAaNpxte{L;tSs1|5p~Nre2tA}prN3EGM$}S0ckZ#R$@5c1i!fN*aHs-fAR&c zL$+ijydX&m`zmwmnBD%XXE(pO&_8po_riPn zBr3p(uDRgh%shxcK1Sd?9JXrBs3V(!a@|ILTCmWyTmYu@=*ysf*WhIK%3wucMm%Ys z!-LPxN9T7ge%1TpwXF}Y8I1-of947j58=$X1;|C2yN9~PL5nN~FHmKtyc~2112>fT=3;Qpg@4xtsmu5Fyg}8MDf7G6b02Ng; zh?=urB?&vrQ35}7IDN3T3}NMi_vX|l0wNlBCf3QK*Q{JrR_4ODwMZecbm)q$X@Gc1e^U3O{nhf9nH?b1@0E{M9< zM7hn5e|iM9S|o*nWhqLH)#YLxT5;u9*}l__Nkbe{H(;ljfO%2RpWeLw zH75c$?#gjuZE3ZUq|OpzrqtzUUndJIJ{(8|f}AH!aw$wtE7PvNrk|ElM)UXN`u6sf zztC~_-u`y$`O{LgZ)kd7diYXlGv?i;vSAactsS3RBx}%xe;9Zgc+93yNPehi}y&Lu^h13-od=9NZVAVYM4=|-VZMRbmC{iUD zrkudht%GDtf1Rif-&Cb9oifmrR^wKYzE%Y<;Q*zV!*H^%&SbLMG$oVuuW+F(V1(^< z6Lu{kR_w6oG8fUl;}P;Ea`2E(dcwr}i)nx)C?gXb3BQorL;dD$48UMr^uf8M_^k3q z@x<+)n;R(Kfz8PH@GCH1bpT2Ss7^$d-1nH^_w05UfASKvA>xldMif{nIf+$~uIB*b z43M|c0-oqi6262=Be7^oGf<$+R`5t~gsWSjx+%2vQ91P$iwp|}pkKV>&>=5aYf-lX zpsfgUNm^74k`B{`aYccLsJX%ENMU0s_ovh^GVUOTB=$fG8$!5p3THhjIrO(=R%X?& zD*LNOe>x``-3CS*WD`%zsx?THXEq}vr-VSGjF%}-ASajVAmO?N1Gf|gD~(!YCtqdL zPt9JS*b_#@&xDg&fWX}PQpgX~Th=w;xfGVVLse0@&A?PSYovK3MLF_wmh+=L_$g3S zDW;tNy46mjodoJza{Pq9%pMC24LJTaU}V3JVhYo;2^>*saVsh~PWkGbQ=bx{8SQ*; zRkSvS_CnC_+T0NFYC8fU0j-LlJ|}Q0&-6%48Hdm4=WXoUC6RTi6(w9t;%YPQM(O>+ zgVTCzd5xY#X=I-Mn#Ce|fec18T68g&%Ippxe=92sjfT+Qd#3(y#UkUOFJ)ER_+;l;3{HeWtrJZI_Vs`A zX72J-C^B-m5R101#;H#R8UWR}i(}XKd2^_C*m49a?NB0yGBN@fbkWJGvJ`+ewIWxfFIA zRc_y5X9x03n|*x;5`EH2`(V|5I0fFJf5!7a)C=Wv4c?zkwSY~Y28n04!db$J%x(tL zIJgn6R(1>63R?*Vk$2Q~I`?WDrMl?M^YGI1JO6pvwj`>K<10FjZ`adO{kc?=%F%S% z>ti+9+X1CDCsV=`B0};r=&E4KUb@Ts$~iQ^$qp8|$BMb=OQIhb>%4M%JfPR*;pZLOLhbMf(b|uQpR<`;d@HP zvTOJ_*WS`99|7ncZ#os|pC5@7f85i?CO>o1v^M#tjCZ>w6UIM2F3zzjgl_RP%4c&h z(b&MMJT)xPjkMgqgDlsy5me(m5@&lv2YW`f)3LHK(VZ|P+h{Othq&Oiq9;9Uegu#3 zviI@1MN5}k;p-1Ie6@;N1F$>H*G&Z91YMtv!vZMUjOZEFBE1 ziKf5PKz)}1AX$k}TMa}?;@v3{C+?k_Zj@PEav4r3 z6?$YZIaqlxvs303wxxF130J$*>9wXZmmlyB7k|d_Je)rxjKcU{hxee~FFJICTvFtt ze?5tSp7E$jK&e!XUa>S~W6UJJDK*Gu&40wL8I*aB8hMNY-5k66o`+sK8aoiBr&^LY zB_nbX)%9I`%4(`Y=NyqQai>W63YeBCudYBWY5p)d}%x2Jh%sCWm8WcAi zTRNDM49sM~DaSX5W5!*vB6|y}+CenO9QH8+5u0|RuvsDeGUNFkdFfSAQ9BgWLF*{a z?+;{Smg~Wq2VTHmtTbx1s8wmN#4Q5oV1Jo>h5e(Ss;pCxlg&{TWCJ&+XJg7G4df7A zBEc}XsP>lr%m2B3@umJp7nFxI^gh#G=@av>Pb@M1tdA#@3c4`vM@x)bl_0_Mgw+l? zpwg@x5;BjP2F5w~;>0xL&8O`vsQDZU4%Qkc*uwgq_(^XyDem_`r(SN6c!+MX3V#Y_ zL__xl;KTpgf+bFENP+xO1zQF2H&6BYPGfl`$UsHS8J&$XCuVsi+N~E zg^pyE0!V}M_!pHK?W~gc%TC<%)&231-~Z%d@157FG7I>RJPY%-8L;Bmj=RJZKOCN* zac_Ndc{do|l^a9YnukM9>KI@BwtxQ3&8shB3M?%OkQ?KWe+bd^;E06(34eBfGCUD= zi&4Ffu0r}t6J-i%bg~Nvp9Dl{rR%AJ)m!OA^+W!z!V@9&bT6EU8@0mRw10T!U^yHa zsRm4gjuAfP1tC=I1X`=j`8m{u^5FJ=U(bOYoz}o~U6NqJ5-2&CP@3KsNFa9scL3KZ za`5Km`6YEAnSO*p_)tSo!GDEJx!k|-eDB%+>c4OaSQItbFaDQ?DXjM6)M0|CXlUl$ zRPSUSmxr|dRC!ow>}pS4T`Jz~rNHfWC;drlsoOq4{~l2$Fo4adp5)(6Ez-j(AE-!C zJdbEstk=6J_31G}-D$_SKPmbu^6Y;9@c(2==Lqw2Q)h+d_{&+DpMU7AY+k!I>b&e9 zVqWO+b?C{c!U4Jo&FJ$Xg^ zW|PAHv5><4oTPx3DF4<|0Lsm)XKw-#5Y5x6Ac{F_?k74WYCxR^(SY(Uijc^mR}V>e z5*+v&ooX}k$ng^Z169SH;&LZCRji^G-^e$@a7-lb&~Ht3Eq`pcF$8dcMr(A^EHU~7 z&JLr@T9m{A3hh2pkl=(7Ol1TjYX^U8EV7Zb{h*pjbRcCQ<893HB^I}pXxi>XCkiw& zW6t!(y4=&Y&hyg;@&q#NONXh|>mp7!JwrBWF<_>spv#yh(jdni(RP#y3e)ljmh0Os zh;U6in%wgzi+`_B$6vll9{<-#%6^_jBH=SYy+(Lonw}MR2x~rK7#i=r%OErZ%n%`H zyr(+=?Un{2aP&qALtuUPf)FMjgpfsl6AnQbii1WBK!C}IKf*Dxefit1Z!Rk~99He< z^H+A>__}}jD{W(LV%k~-&Y@A$+?czoVY5kJk=?ZdJAd^+vreO%NExqe)e10wdXUk~ z{Ia&Mo0$;>QuN`_+<}I75MUt&!iogb{a8pszo`y+pfNLJap+gk$qf5uGhQwB0{P?^YY- zituI~Qh!0->^Y0i2C8vKdn-+S(iV;gGOi8N_Vf1QVQa(mS#5N&vTLOpueB1rMu5^h zE7jC!MoN*++um*r!ahMG%FV~1TaDr9)FF9GyZtsR4SRfU)|;Q3TeKo!K1^f9>mxhx z8Da6rocM^Q3@@ElloF3)QrMtr72?D(tsIbhTJ;u#r&Y8c|Fq(< zL4R!2CT7##VH9(SbVi$l_CWYupsjW#PQpO*8l-{vhv$lbs8N2KITgl7Zvv}P0?}n} z<#?Pn(OBqnFqa!D#bT;XXl2%mrXA@l5wqAt*8GwJzIT$ccsGcM$rNDgo1PAVAKiT# zgsE)jS`(?T?XAe|u_A^>m0p&{h|5A7plKqNYg?9D7eV1atVgZCrKQ&Q5rG-*4)fFA zm{Fn~bM6fEUWKjCo`=8ZGq!{=jP zrlQNSax~CmF$tG44bZrYVzfFmr4B0=tF9DsOAkG4Mjd*ITkqL3lzOo2?bW9?ul^A~ zm^avke+1t!*)K(K%A?8Cv*bhgyORhkr)TEvy9-hPfDR6lYEn$7rprv}gZJvq=p+X2 zQFcG%^ZZI>?z`n+Ml-_uun;UK}wP|AX^LL|;oN;dM zfAMC-hcbvfTPa>k$SpEFv^P45h3tz|M0g~K6eVsFcAqH1CIIV6E)c-mT}k+WJEn6N z6qX~rmE$ii+67E~FK&^I;*fs?gamLam1J;wB|#?naUB8ya{^Tlsbw}n&n4SRPF!-& z8le^pq*lXIq*N4pgc9kJmzqpsRD^0Oe-=iS$v`d@*n#jrpYDbkc`MehIz_R^qg)Pe z{rS)HoD%c%));uqF*8H=w&LZKJ__Fw;c=k+faMj73p-G>%wudFs|wPrK|;u%S| zHYXS*PqH;Bb)=MBQc{AJDXEA2xL%iJo2tL*Wu@(siR;~Xs`v4WboxeFmHhH5e{(Sh z<(S>RYbTv$>dJ|ds>7@sFLOG0)$mT*ciy|Dt461KfKDUK6Jz7d`Sj`%@w)rP&D3~c z%Oq8YF&zf~tt4?0Hrd9>*Z8h9Z6p~9csF5z1}L3p&TU=)wExbf{J0JYE|J94V)6Z>Pyu9`D>D_=I zkR&;7IvcH%C9j)GOjMdHk5EolbfMi-;@uv8NC6M;MBe+Zf~Yb%{prZ}onaS*$NXG=1(IID*JK-k4xV>+b-pg%oL zD|8lppPTc}NQ!B31#Zo?QmCT|Yi zy^-T~HgJq&+!&)|yTwbte{bo3tV@5_-qPRPrJq2<{0n%KO_ll0l&P>fOC?0Bog%~H zI1y{(m@SPwf}Gy`e?3($(>rT6ufpH&_Rs&df9Cx5Q_sTjwEz2Ww_kdu_x6`l!d3{H z=uvuKk9t*z-3G%h_NkD9oF+eHUEE;YYQSzlY1DkLJOBz=?P}P7|67-S7}69`kXVVG zjfF=-+RDdU7>NE7>$f7rl-nF9ap45@+^WDDB-JNK>MpEI|>)IPDHRob&rL%MpdVN)l>6*YO1 zqgc-(v$D&Nsq`u6!~VKzyn~PYpZ6=P;mHxncL99`K*OXBWpdkR@e8T1E=S2B58uF$ z_&{C#p{>$i@Pj2a*M)wx+D=Ys#evfSf5dFYpSG7Do?`ncm9bQIC*hKm zrXG)^S0!mKIi|{Q?g!LB!;bt|^yD#st>zNRySj$T;L4e~mCD$fM5flnGqm*ins74K z%}Bx;Px93+lCCC~Y?UJg=H?_$X=+GHxv5D~w?lGNkb8E< zlMHopf0Ljll>9Vu($lDJ_=&jSC*gDYLAu_Dw6~4J<$imu&28ywpTMe&%f&tc_xf$< zTA$DYjKigVbJ=H%uJp0H(I@0WAH{t>4tg1`@febb#_Thjte1RuzOviZPd2oVY)pdb z7B2Dry(RvkFY#S_OFa1{9-{FuP4g|>P4slU4Yg{atZtFm=8J70%RsYQE9Pgs zePcDQg-r^exYovx73+;=R3y*Y4IK3O0;`FqA`{ILldk1XyM2vS_%yqEhhE91rQDF$ ze?^#30-!`yJ+!|YK717ntNqsPR0I0m(psmP*#UC~3Yjfhz}^LZU&qerv;Fg*qv`&} z`+?QiO}MxQVHWL>7(CQXIIqFj1@lgf1ycSd`VQIe$ zR9!2}EkcTK7sP&DxiZLl_fe-Qf0iHF3q*LQ8QkAiC0}B7YZx6;R#+TP`d?CrXYrR-M5qTWf{a6<&{Jh{$z8gFxKq4OI5vMCXJCR0+{TI*oU;IXURuubr+&a>U+YbR6SXx}@+Ra(7 zlHhS7fgh;CJnONN-x>)bij>fx)3k%oV40&%!kTd?N?WY<9|R*2CQPjpE(bPZ(YKSq zw1NYHGr?j&jm~|yZ_W9AR2@Wi(5(9XhoeO9FrSi3(i-#Oq>jGmDZYJ;W)xuoW<#G5H*f> zTcBUspklBFBne_f(&n^=(f;8u0&a66v)_r#{+!6%H5@WgZOw_yT~1`~%0kA*_3SXA zGksCff8vRz|1-x~0%JN9F0&jYXn%g=r2;K|s4#)?69wG|C7|?4AnP2E_Y{yi1Hg$S zuE3fcCr5Mr?op@aFBrs7ztw?fY50ZcM5F`?1BXY+LyacY?Qt0kmN_gTfp6|c-Y5)A`&Ffz)%BHS4e-O-2X9R$?V?^ZZvU_zI1*fS>(5Hck z(nGFOAfNN)3W_0m8wsis3{dJ|W6tcrTCLGss5ybEC+sj z`^sPFs`TFecI)}ma{eS`*@sUIJY@U^Rk(CRY$8>|<8zCILb~w7a8yL#+)Kcf@P!Bb ze`l1&0P}b^|y;dSEK&2t4>IXo$cM$b{lL3ad$y?A(|wG^Byoaqg*wjpnH$&FaCh zoutuC8r6YEAe=-k*v&ZBI4G6ho9vhDf8UknPRytZJJl6t`&59?&pzrr4?Pi`dNS^i z`*Q?y`ih7OSc72E7iXN*QAvJ;ia{S9L-TIC2~r`rH$XOn<@WDozz+HF8~d3f!%pi! zF|C5Seg{TdK+m~?-Ib*nPL_Gjt^EsUnDO!VpY+fCWlAddtz_i^ELequCzY$Zf2BqX z2J6&#NEfpDcz*5TZ9;5_5*RFELUZ24R-eFvCylnc8RK5M;L*r!sY@rF#_}?1MFBF0 zqQ~R10)voO>(#jp<<(MHePX#2ueE9q#7)%1gU<3&SeTn7|115&G|VW>!uB&S_20ZA zda)Rk1@HJj;+5-**rxZ~v)kYPe|7sW??~PLWYP&A=ys364*+;6K3VLpgf&Ec4*qvn z`=m!cw*Q`cW8H=pGSdPUlxizT zwIy;&gfnW~iVF54UM4;B2?*tm9w?XAQ^C;|%bw*_^={7pF6D8}gS8WvWl! z2k0W6>|<3RfaSPz3Wm6Z(;s$D{d3sn*PIEK)nJ@5U=RmkpfwSUvo1i)^5z8VSuX^| z^=NW`s)^2<4R2$SciwPPXj&LR8@D{*y$6Z`f^iORP-agN0YuT(25%X@A}kh_g%QJW z;b9ROVv1;9`B?Of2(zOQ#y~}bDBVUfK7(i5;gQ6d501&L> zW5PHitrF%3j3XEg%|YLI#vx3>SvwKaP#=1KlqAPsCi=LVoX=5w{o2kmpX|K;$;ggk zWfn&D6DuH6^DW=y@e<3{ij!C_J~*7KmSzki+6ixU)%iVY%s{)H6|aojW~1%x2G?9iLUPc0`3>cfu4quV|g1GtE2CB8zY)ViHEU}AtKlzE=QfLbJ&+9s(hrQyw8TbRM zgaL%LBh>q_4^Hn1292$6(9sK5o`H~m+AoC|EXCur*}o&=|Bjd@E0Kq2paQtota+_C z@s=X5)_}8fcq*z*ImWx8mUkc%bW|4xV$mqQD0hvjBh0Ycrp}4D*VkVOE7zSoU2y8ZY3hBd5ysW8; z)J6t^Vu1Qc6l@vaE~pGVWe=azU5VV0*lv{Ba$q23g{D-LG|!;RW5_hoe|}K97ahJp zWopu-OIeo_?E!~>VTACWe8D|`nV~)T!g?$rJ?>zhtS}y108ft4oq<6+BLwT@2-3+F zoRcpk#}bO81>p=1zsVhTGeWpcI(E^f4;Y#$J?Ik6bnEiPt#i-ye)opw(oo_2{j&&@ z<5WMSbQ-D}Drsg>R0RlrG|*x45oZBSsjl?7R5$G)(}1K3YSDrpsR?h^JZGJPN}FP2_`Ovw#df>xg4PJ7af< z7!^Z5onBAxq3g`>swjSc-iCDxWtZ1e-6Jy^N`UV0w$%58*r&o_m2c!%Z$?&b)HiS> zX;xJICWS~2-NvEWY-E4Ys<4<_xrKZ4@98#?;ojVBOl;>+jqfR+JyPqEGq%cfT2pfF zP@%)oLv~evaixNcs5sDcowVv84S3QPMFI&mEYSP!?JFM zDeu3r#)cY^cJzQ_4oXm6C;Q-T$G!XeEtv}Xkf(B}JKmM|UPIpT5ha?bDm5a5a zu6gQ?SD}PS5>{8(&Q@u#4bcgvqP4f8Q`HQK#yE8Ao-ehQtsCdJzy00Lo4?(>{`Hh9 zA|yQHVxFi5>?wwShphl9#|=FML3I4fbQ)UfkW{3S1K};%Y+Bk9TbSOOBkJxXu(b59 ztag{}z2Jr8ORj;4@2De^Ye|XUM-9dHIZFDS;NK!HfUcLjA1HXMpz^rG(95zCKb=vQM4bU&n`^pBD=0o;f zG-Vq6M}~mY3GzohdgOya-_qqv<+cqA!dP0Bh;3&J#-=p8Qejg$*$Q|1_8Fgbv8F~! zgL%{*jO-H|f&|qqW2lD)S~0HBWHpMWuZDpWF+#RCKWw*QJmk1oM)l9PD2BfAB6S4z zQkI9&NG6?s%Qynjm~?07Vmj@_4+v|C)Se^2oko(mDTAj&`ghVzsG=cg(uPIqWd-%x zKnBxFc%2c2S7GZ6Fkxr)P=!OgsS;tNw&HoaKE+gEl#x$iPlmM9sXZk3L$^5zI z$>9h+lj!dzMv!S*8iN!YmmDi;ax4>W-tB=Lu?(AkscR49ZQXn`x~j>Flj^!=s}nby zM7wh9nnr>#afMctNIxx(?|^cTV(-e0-sx-3>l2laYYEV7FSt`fj>hZRw*tGN4vPa| zwP$NOvOiu%@AK`FN5IN)B;&Laf zt%baQ`WnV)XaRw?BC|5%92Z^HpADUu1LW>tB7ZYn)NH3@ zodji42+lx?uK zG$KhPVyd~A#TQG&R44jyBceMy%`%in64d}qpynpsGM&HSRyhf`Y>wYn6@=SU8t83jPUVR{L)f=5vMHyuh z4s#PPUf#a^Vej(A{`*&Vo_cHhyVKv7UJnlvBpSA*6RtArMbqotLc6aJu{eHAox?ak z-I3=mMIy|JTyRtjF_)AN4?chUQ8QeMJ0a|Lr;4l^O}B`m#j?HHnhx4!Su&Cy5lOc1 zG&DU}F%_>@H9{f@n2H1wsB)+oFUK^+s2SChz^o*sMk|uD=wjg3?e^7qHlscLhGnDS z^Hd%h%`$}9VR?pS@=NKbW!2+A0Q}@9G!G4tDv{Wag6NovV89qPGM#_q&<))lCl3mm zXu~HkZX^XIn8-XQkP(9DArTRLpzKlzolUS6-=kAGTkLbxk2YPZcDp38A0wbpPgnv5 zd?HAL3u`qJmI(S+*ew#U%4s1r8vN%zay{Y=)qCcK~8-0eY4MViWre_64js+=Z!<j%PQH+Dw$MP$-aV5FBQS49V6jm#`Cp% zW#AOpN{aLQ1KF7AD6Bb9Ab$ZezZSJB?UlGi0I{n<*grC?<;R`Bk`fnISukq;iU$3* z$zM@TG$esVLlYBN6d_J(tNl>YSDKBbP6*W{Um;+ zwbl}LNYx$%p&$qcdH82^q+~lF7m3Y!)v(#bihDO@o*XCxk#aOhj+FEv!tTw?o}vK} zWPDUyjwyguNiGIQCuC~y{EFMv^m9E<9u5v+V_b5E)Pyf~qITSEFqc*o4<;h(N-b}B zwpHUT@6at*>t0l9cgP9%2)z^#2ysHHkZt`k_m`d&4>^B2C>U7g^FBZ%qsTEOO$vtn z6HLzvn#3}dkCAJ?yT(}`zC_A&M$M+Q_flhn&+eNP8CtmNt>l-j1~Ap#SVna7`X9F5 ze|qc2r`zAXy?OQ8=GCV*ul^DA&8@e7yZx7Uwm!N(r5La8?|>kS5(5Fe4F2(`4u|d) z{Y7^*>?D7WkT0?q<#PYcYunF!(?9#c_QjWYGpxFKAE}f3C=61E0mDud7UV|_b+)lO z=20}X28anN&woER*FJemB@D&yI9pA6J;4t|zDT1d-MZA^c$=lqaEY(PF=&*GM_o!t zwpZN(Vi=FQ)?H(95yT|#A+aC2Sh)DV@Ea~2B`ALxF|-KV`in}Gxn2z(l@AS~qJOBT zBu#P9O&z`Op53{4oqGC!iMKvJyYt$G-ZQVzK$-7vJRPJxp<4XXh7rov;g@V~Ow6le z_uJ@!NSg0QT^r*@jWOF#hIQ<0nDu=12%c59@x$(@AfY<9fIZ3noGRlwB!k+448fu% z0R4Y@pPMMomEu%1PBF+EB)b}(Y%;_9{yCdjTLrxmcM~{*ueB2M1GUC-gYUNk_lVno zL!I8)Oa?XL701Y-6JoMV@^7q?+e%KV!KXj z(D&WnQ|f%D`>D>*VXs?S9s5N~G;;TQrSLd49)*jR)*8(kbqq4gl{y=#3!s>N>R~_#Q~nRu8Yd28^?_$EZC!tV zwg2vg?{B65TloCs&QlL-5c!Q#3 zvMa&1LiZ_F9j|NgFAhpB$WAZFPB6%s!;wW~tv8mikfLa{ zot#oLCQ~iOdE*2lU^8}4!S#O!9`vsW$~!gYzm*vPS*xCoJRL{g5)HuhhKaycn(~dz z2*2fztwtoJogSXAZ;NCR_!Bujj;)Whw%3(MG>mL!`Sn>(-k9pD%&F&I;6XzSTQ33a zPRz*Cn=Q#1dD1gHhvcEsSCu(g388yQ8R&zao6g<0Xm(u zL7poryCWdTv-lEIN;`e-P}ng*f`>!s3OlW!na~ggRaa@$W=UwiVy#utr8{HIUL1mb zs!`JmwBgzh=z?ENcT#GgZruEH225T>%=&Qm@MRt}a=}%tnV(Zv?qt)Kcc%t$8Zox_ zhM@q^W{jQXQP*)T>RHahPsqtE;8aXs7&7MjcrnM;g9M>x^2vXnK0J2tpuQyH(20)t8 zzPX*}yGfJfvtypo+2g>{n3YXTH^&!72QnP9F?pyR?bRisM|<`}$tKWOL1{&*F)9fq z?4x&RfpXdk(9Yy{68AWUAcCoU05pgH2(EoON-anupSRz*76X1{A3}dA2*&$X!{T_(_EDOJYQm5ZUtKYf6F4rl#KC)d{;vMql1U>p!Jx z!K&Ft>7KrH6&n-74c?t4kzh2O3j}Mc1K=pq`U9!{B{2lp{>@o)^&wMcwC8Z({1mB0 zl+E6O{9=vYEu6Z4-~&G}7!W}t4TSrfs7leh^4I>A-}hg?)W7f^^*!`2J|{!yBaGJo z5V%WtVWmccF# z4OwA1rLas$vdDcjqj1HL>j~5%cZ7+Hg3kfS8ZXqILvu@Y$DtEb!K4l>8H108A$A^w zotXb~7q-6qp#ReIJO4Rga+v^kAq~^gjhhi(s$lHqbjnb~5M$1$}|1bc>$G zXz2hsZBLV?Q%SPky{V0JLEVDg*ZQXYPRtYQbUMi+j8FYozM**Aa_6b)Ynvt-8*Gm5 z4s~?O%n?hh7Qx$l_LH4wKH0o_ZR^u({nx+#{>DpxI~SfpPd5=g_>c&gor_;7pVW6C zWk!9BPgZvpmSi4ghf|D(?~Og_{oCpOsqv;}$SQ1yP_u`^cjSTEwCNE5jQstqInMRvyo4VqR)T4m)BzG8>0XMRx&> zudIh+KIzcI=d4$Pw&cfPdSh0d8zoLo^v8B>&{d;OAr`ID%~GEUw63bAiQ}|8;%yL8 zC9W#G0832qDFUB zWiknuxN|_YX3G0bO(SPli8;bwZ6z_u^ASy@beESn9}gdYt~5@rwTQ1Y?lgYA8|SMH z)SlOMuVC_|3nnwV6L%vIAl_z_c(!}!{E`Vs&@NYpWmjn}H}9SEXAR(dmCbAG3|ol# zaf>a)rPyiLDpNxRS%m?SY~?c6gE)Q7jUDAJ|4tLP=p+_)uvdgO9g8cSsE(yjxR;f} zs&H7Plg;jby;uxI8B{8|iKFaXB&DXcapSbno{A!Cyg#w>ROkh!tdun=bmb#Y78^Bj zCZY{b@Y;W@t$H5-ZP8+B4jM3gs6j%%Fe-@~T3=k{*Z;*Y zkBQ==(w3A8iKbR4L}^OVsFZc5>~N=8_9R?pl^n^8=$R5)HiR#4Ks)o?))&_~I$^UJ zKluP2r(_n7X3iWC)J#|;75gRC%v7E}yF819%YtODJQ;=Uc3@s|ORgVh$xQmzO4=96 z`(hw}3JCF#W>r$FFtq!^>5V8##;e&l6+@%FZ4vU~Wx7tE?VtagM%M-Ioo2wGZujAs z7pIQ0XW6$b_g1yeiI9=KLhV6{+VhdSmEH{-Hxa>=y5b2=dwaEALkeVVx74l?xRW>7 z{jOo|7L~elyBI}BX5};Q?1J92gjN=M{edHYU`wLUg>(`xFE{PFy#hAKZdj_u@e>U! zW{e}Ruuc_z7Xu)`KPQ|@0>rGh-VQO5i^nttyv!k4WwOS6Y^|gNAo(4<3UbWrzShAV zhwQAhp*&KhVAzgV5~dfHID%QnAGOC?Q(Qh#qIK`}p1c;mxPpRJkJbm{g~!R>Eyr+w z$S2ABsX3VO0-4LffjQ4$q5<2L#r7O1cn8Y05(>U!Jh`nck)Wcn9NlcN_Rem5XSYe8 z-RO0MLxn3TwfakXcb#DO$}jzZ%P-};S=qB(t*mB57`LPEuD%k}x(I!h_ikIxS9t06 zxON$&1s4~+Gw<|1ezEt`c~wyGi$4B;wl8MJIH9Z0Zhd-9DW#$B!^FFoE2B-@Jhwj_SMynwL{gx|LGsA?wgRIMiN1)zWDGM?J4bM1Jv1j158bS#k#}y zA}WVi(PDDN=ugB4$YYMs0sTN1gCbFo=ksxUFUZxdu1kgJ%RKi~foM)F_4{bN%bp&w zr$^ZIh;geA{r4_yU-@89eHf@dfYw0nqs^l_c;0fPur|p&<_%{Z_4D@MeB~p%l<0m} zEm1x(%Cpj1tGm*uCk0F^Bk>=9!7RIKJLq5dBb8Sq$%^cbuUy%@dKMn4Tz`j69AfC* zK6?pZQMVKhssIyj5xe%>_A}q~K76nD_Pf1{f1;H}#SLUuS+J^X3QT zRP|FEgU$VTi=%QTyKM@is%(KX@O6Uf4-7Bp6ZtNgFngq z^rxmmcH#5hOV?})8P~~JD&~nss~Q!njpURREY*|j>&ArqDm)RgizLfYZ4EDg?39-W zBo8%6M23<+SkG_a^ZsjZ_O6~$A9vyL@pbXG|1!K~K-jMvv+Q;6`71^X`9w6@zWl$* z7g!7StAz2wr_e(JpucV`nzhc%0dbLMRh9v9e>Eeu|r@fKe>7J!~UNy z_O3j)_5RZ|qZBm$&8tsspZ?N!7L=XLrCGBhJLR30pA2`AjA{UuI7$_f$4F%gdxD6p zTVdV}WmeM=OSNt)csvZqR9(du-;AqIc!;_tL%WVdNnw`7Zro<+c8x-#`{=>LYHQrL z*3z5E-(*A?Ake`s_YfLWf=w+39dJtUrFVF{LXIHh&1rCzeB+tUk8X9rn~ zt9-v$E=NFwIsKEnV9M9UqOXcYzf7mALT7o`7g42s201oJ*GA(plU@?77Ik6nCAAV= zV5VzmWrWEa^BXCu8@>3k>6~&Av_?IyqLV`uJJzCzp1nj(%u`BEe+vfB{1PVVXO6oN zXbT$UnwI;rKTjt#Af`6}6(G9=VTz@-=shzp6Ue;f-i|}YefORVZ(A{KdtLS+KAMr$ z=$r^8%`y#fq#FIhj+?-`*Ao@`J^h9!bvD$(`#ObWm*Cgij!=w$NC2*~{8liNF3?Y^ zZlo^RHtP*(%d6h}e}2gG57rtd4pTngy8dea-3#B}c#9hRe36<)WhzSX{yP`HzwuJ< z!!NeKyyVX)H`}vGp-m2!5vZ@G3Zz;d)@Cn#?LFQ??^RJhJLHpJ{KE&66;O=CL;M8< z`SMDFuR8epFs*`huna%quN2YV%kTBxexE)pW5Y7(3oXc%fA@j1Axbns$~+iWR|@Vh zf;7&EL+vo`AjIuYD%Ha#0^h6YZ+IPG@eCF=u#pbzin z-~EvPHv81le`j993ELDoTfDm( z-8zW9thc?&+~du3qq+NG?L^c`a*-&}%^!=c`W}YoaZt+XjXt91w^odinflI+ADx9M zPL;som$Z_q6Eog?sl>EY0;&h>9T2R=u-axI{uKQr=aEhd%J>l$XH3k5uidmqIe-I*WQR%)i+27f5k}M@CWCXUd%J%+? z=ld^yBMa_u_QjK4JcA$Ep(c8@CQ&VtSf8A zp(t(9Xb}XX(LN!J-MFJT<>N@mHQsbcvtC$FB6_j6z<)SyVEcX{Qv^GY0Xa2$$#Rn8 zmtrdqB7eU zRewHBnX2BI_jlg>uy^idHdg%rT#HZ{smL+0O>24*XJ$~<<25+LkLA=Xfhp%^8doJg zG?4@JNatq-+gpBuwocM5I7*8-**i?%>ch01Jbz@z>50(eEj>`@;q<+e_1?+a!3KM0 z>)Y>aZBcvvMo!m43XSP}E#Tc|Cv1+_-hUZ;?~J{7#-8jMoAa7-%695JuH&`}L)^M+ z19H<(-UI&7-TY{jthI@RTZ%vuMn|JoP1*WRu5>snz>g*P#N!}=qHgkV6xJ~K^1l}! zIQsZQ#bfakQH#{14q%@TnUB5N?bM42z9N2hI&Kj-ti*myDft&H?SH?w+>DoCQ&1r3 z&CB97;9YO=0zjo2%`WaDW`%$h0YVm0ssLeRiMt2CbPGGtTelFKW5Py(t$xvomtl6h z_lKP$Q8PSM*grQ%>c6x7on<(8$t)Tfz$ll{Ee{w8`OMd}Qit7Sg_rRy4k(wl2Kb`|xA(`7nE(+NU|(2mpmvwt)wQ2LXi#0)+B|s}cAJIuSb>loVU{AJD z+MarZ&BUFue-+M2A@G+rbcc-+76P?-KoF;3+MrY?kHrANoNUhp(<@cGog`ip_!jHH z{)){QJ{E=5Re35P!HgXBd&`B>#}V%Vm#pP|)(&D(SOa ze*;iSROxi9RZ!|-lG$)L)dGN`^2gi!?w#IeZ|uDKZU5y<>Kj1<%5XuK4NMa4geM|2 zPK3p!q-h~gwu^Ax)g2^X)yZ1nd$ulhu^MbydDp-`%K^+5a0tpmf)X|_67CUD?x6u| zhHKFfz_7U;7^qHn5MaOg4FM{*77(Sff3&4$oYa?371sG#Z@~+C=gw|@{5fcVAgDL5 zUfcTgTHtNWu9LGYysn`-+YY=9@i9DYq4X3a!O4+KTbLxk&ujHgxYQu~F==-rzTSvJ z_^a?_LE=OXSwWd@v9j0(^{7+E;cMGy1{w+qDAU=Q6_D1VWHpBKP4J8Rjy>>je;{Ar zN*<%5`Bf)w8gCZ7b+W1p2&dh`O<6{KQ!(p@5h}yClDAz6APYV{hmJ7g?9(@_q?;1Oqy)w2UY(_k3 zpTmRC&PV5WE`HVf;%Wl9fK#6gR!4a(a%HfdD~Akk76 zc)YcI|2Ijuog_@UK$LvIV<1?{f^7s#=a#QbK9*H$hbw^w16UQqR>Q?Zz>IbuXoMYD zEkLdk0_rCs9l{1$zS4a`bsN-il6y}O(g^#{DhvBBp6|c-jhEhTxC(Lee+Z~O4*@Ew zW)L-Iy-E_cSE2-d=)~Q26;$+2eF^s7inhxTMW&ZTjcLa=0>X~k32VloC~Z;N1i>V> z2q7EW4*B`fV?%8a949F73v9rk9WEzPn>-Pt8*bAu4W^LE$whZ)t@XxfMUXJ1@Cs<9 z(~1F)|914}j~%e?Ot~?)e?Gq6d*PGbhhJ=edFlHbFZEu2ulM%*-`{u(rxHPOyXgiT zopjl~kwJY@(*#v*9?;?nTnUKi!3H^#-46={%-p8E((bri-9}hAjxZKyao+1V5fAW& z3l#bW(+Yuffx$`|#w}pk17839=e-Z!wTT=mDd-^*k9LeDkz*cJf7kISCwUWjq3YGF zGkVI1n2?|t>p~lu4H7;N#HmX{5vF>v0SGOyDTKx7v_eUtd*yI zWqou44+s2HWHUWfe{V#OpjL~dP_QgTslK*ST!vO$`BlVsx-n^pW9kI#6caEn>iN@~ z*T3dO;Kp4!PIQ;n>PhM>A!bTle)e^;u;RmkR3ONC(j=F{^t3YV>TCLG$z?QuPp)ro zU-=6ickk_Qx1K*OS^I{j_oas~l{RDET`C(kk=okvxka)De;xQ?xOF0M?j_*JS;vFD zAx2@Y-jqXY-8p?0*v9777dCIaPe*R!ALVj8YBj=YME5`iM3qowRVLDHp>=>x0^=cM zlIZgVd9alPKI>^RgEAY&J4Gb=pq58c?K4 zFibgtqgw~bf0)|QGJI3zzI4h!Q(B9gMfzH0ykrL`y&Q&E7MVGmV_8pIqH{pYae9{vp-d{`uBtaRO;7Is|6c5WcPcXm+>!1(L&BbSx zH;N~2|J>X_{tnxWj1Rv8^R)~>=>XM<$m07RWBi`oe-1-lf;L3_(Z`4aD>)~zD$?~F zV4MN+Hd??Fy-C8CP-!F5Xu8D^xdywmvGSzG9JK!2tA&cN{w81>Gif zD*)OGBbTH_*&yjKZ5US+c!-)CoQ@PWmVAFo{UX~P#E`@uNM=I_S5D!qCpm}ymdwhm z`c*}~e`=(2qTZ=vv_UrUG_6{LGbWh+;E-eFx>l6&!QW&h(YmuFN z6``M+y+E-ijEbKLC$#{9Df&{#57b-MHQ>1vmSu;kqU<&UQ{}9Y-Xkf>k)N}iALYSM zfueFT<^0#Fw(G4VP~Vc{C;VmhSYT+t@vjaeWczhgn3hf8h*FE2QNeM_SLdAilnBje z=XKoe4j_N4s|)qI(GDiMn?y&GsI}nTHRr^U z@?RX(<0zh~KU}fMc<4)6(*&RF9E-t;FsOB+iGW<+Cpz+dN~VtlUe0T%qko>2i05-!DeA^Pe6~VOQMxz4ID%fu*Xn@j6 z#NF)_Tqmk3*ye$l6Ce(EC*BnpBRa z(_SB|$=(hqtvQ(-o)8g|pFvjzllM|7?%x7~l? zc6|*ReFMkZV9_@amBuO7TYTw|Cr%h>>Ngsw;Tv-{l&IB$_mS=y%ciiPL zj!iT+uquS|M5lmDPhD3}8({_jpUNd^q!{$fu z2rqjdpIfwaX|-dtjvpaC2{ESIpf3@028yerP0B0lQMas%ge}ffEvjL|v2TAs2YC`i zd;Dan5m!mR3z{V1Twbsdx>?Oxm9=zG<<`uT3R@e^LI@9U3raYG&@D3M$w&Qs?e?}OE@x3hJ5uzcvGJ zCPnUn{80s4g~^?#T0^_OvYO=R4gebAQq&NCAb8Lu|Do7w*Vn@KDa3a^7eD|>bRFU| zk`R55`YK>bm%{e(#pA2>8l3VMeN;2M@M6yQ=p&BHGKloz{NMXLDv`m0^UsE$^8-97$YDKzUbUCyka>UsH*J`OLXCuVsi+N~Eg^px@ zl>$gZe)t!a8EvnT=&p9$@KphN$nSr0vG>mFR8#`~BhSLTZ3e73w&D&k^bLn6$n&jl zF7F1zyK-X)!g@I5q!RMgZ~N!p+`RfCCfL!G1t`YK*B@|C;?nL>R{pJ z`6YEAnO4d{_|Ri!!G%n@+`sUA@7e$Azidv?En_>)$R&WSdiBcM{(=zFhR>3#TC|IZhxK+3IuT~A&SzuBa) ze=MZ1KPM@mrOLnc6o7p5>e-t>1Vr<6Du`mv8vBV(i5gJ5PBfsriy}C3=q-mN_yG?5 z^>(!pdF1#BfPt#wc5$U0ohnvQi?8P!VK^odcj&jKx)!!t7+^F&qcu8dmKc2kXNOT{ zElT15g?1lFcRpc+Y8YXEj@rTB8tG`Hgg&U|DI7?7Vt5;~ID*9}E}FL5(TM`}`_7rZ z9+&gW)_H#VK%Ov(ed!>WhkN@i=Avn(>5$8NmuMvEdrf0?2%9@WDKe}rRX`|`J2-&|H~IINb+=dbL% z@pb?5SDIjMU{Xv4&Y@Am6wIBqu+gBeh;*%hq#kJ2sdo~|;}ub@0Q08@8O_WuYjWL; zyDpHF@fS+rfQ1+cD-uliV<8DFr8?w+`pk^QU06jI7Rb#;yi%xJ!!;aGqyK>R zl#cwZKmXaEfiZNVM?fIdXXdA8d^+KNJ{b(l$XR+SSe9mTn31D&;Rghds*Q5RkFpM_ z5K{J>MSlX-xMN9`raoy4M+6x)gGs@8d-0%{Vfw7qJ6Jb=vQmw^%|y>YR+?uevKh@t zp~HFG+l@ikCul^u`51JnF&v%RBr9UK-)4m;kI&6|^K)~HRwT@aX{>nlRR=yJEFPH? z|L~!Ce1WGL`Gt1kp_GjO0p@#zG-97%BA~*tuw zp8^NNS9LglrMuALT>2i;p~2ya(n}`eF0{uEa?gXkLRf5dZL85fC+hiu*FB!uaS-U^PmZtL&{DkJBa^ z3w;jW<%UYJn5sfpnf0P+N3eXvEH;rfdcA<}oun+@4I*MP1=#wg2V3JucOPVJD%-i% zL@I21D{_0Rh@nxXm!&@9vd{*oNaYgCQtKip{D<|Z^|!Rtx*QRhp>&v^_Qs47?U++C z(5mf4Tc14-f6r%#gfWcuup%bO^0F7Vb^>VGQ92F%r><{azutS{B1p)w%*A-Oxad1j zM2?R|%U$@RPkfho;nF#bVW!GEwQFhmELBuZZeBdxlaE7S+7^)aKPc;s^5vyO4k2 z8^-%33r=}7d3u(72!FQ|f#vkfyj{8=1pw&aAgNWum}*LczZG{9|FA9Ai^O}WfsCnH@(_PP%rpR~!3>%1nZQ46#@W}3IBtwtyvr2TdAt$lL>()u0X# zM7ePO_s+iGzw-Nq-OS$nu4j+lFPJ@l(xV^(?&s!)n@eq)82$X+s3T`PH}`*dGvY%T zM4qh_cN20)1rP0wPGXttB4rUC2_i*~n}nSwiXa4FJxO_TygQPF54dAGcR^t}!dp51 z;u=rD)c4{h5fq2~BfunJw^B|9r&khWk{{P05HKfD^^jU-6ZBjnR&wH!d)5fGU?8;` zo+7!TkP%9xOI~U+iBVyysaSs)l_vwaR6qjZe?FCl8F?$#uR2+=$D>>hZ~ght^PCd% z@2xTHF~`gd-QSXc!w7|5C)$7g>z&uXTo`3^gQO2F0bNvgI zmZ>Wz3N{Y2ZoG)%;8nvLFW-6ZmaZC|>H#{9Fi(taXU?Zrm$28}FK(vB10s{uG{tln z{I`Z^;dTO_!57K%E-)G91buD(47x{+yCmt-s$JIE?(Yx`SfnU4@i<6H=T{v z$&%MiIVLL2l}G4KR&=4=Q{vqoenU)yk!NqAk$fss!-9p_@~};Z}u*~yM6hyM~;j(mm_kv5xd<6B(Z;gk0ka;LMMs4_DJIP zA&C(>jnZYf1s~P8<5@F)hPCVvm10N&9XKb<;K%+(Dl=1)nU}*b|Lf_=whrU1be|J& z-ir5jPmfumM>iLa?(-2A$U#{L^!jdFnwQ1TLVX;<7XQ<{Hx}B>?^DX<88}GpTJ{ zpE4*iePOOT(D{K02zW6Q@#!Dh)ud2I9-D@orJ?d#R|ER}nLxAjQcJ7i5zAGJXRw_$ zm=RMl6XdYD2BTS8cVlIpn1yvxCW0TVWpxBSW?UB4+i!oZZd*(0gjQ*s7Sst@Pj6Gp z=>!*KTo%)tzrDt6DV>Owbb=PrQLUrnqNO1^ zNXCsZa<*H%^!xXg{>QrXckM0x&0YElG|az%H`!E~-%ObbtFu%>wAv{$ERGYgHjdfS z$Ro(cqF8) ze7t2NF@oAh=Sr=9MZx{TYQo-_;`O}bysJ1U6Yqb7%qCq;pV{D5#6*>_&F?PvfB#qY z5Gg;X9mdpKaHKI;G3Ze&Xhsw_(CJp>6rO1#pTmkQ;5>?kXDhJ$CTXnin<_1m8cvZtN~l%j#kAImOCs7D6LUi@c#{DSU?DXY@_! zmiK={2=HL0z&|@fs-Okgj5fdIzV-4sQv{~u#D-RB&qfXD>bZtZon8js;7N{RJ&VlB zE#Fe%KJtIwudIb9Mgo?| zmHuKsSWrhCQm7krMx={mn1j!cqF~b zNptZrm49r>Lrl{14YXXaKaV`~zbS`*LE(&uZ!$yhfd z32QvbSG!2Mnq0C~jue=ilU%inq^g^hOts4-s-csoZm*=NAt~jiCQ026$x%V>*%^ON zGStmYf|^kB)5u9rqq^ZI;)0)q&*=y0dLPo>HV&8j?X@PZ`vlzUx1no& zLJKesm-@}!K4WyHkKK(vAs6~6?(=cb%W#dykVG_QpV?%+=-3YG0uiSG#yi z4ZZUs>9&_*ypX!Hfc4y4;Lp0gV`=<@|u6Hi4Znk6P(%bj-n>TB?6cJ&Uul1+b0xgoEM zFrfrMiK=>Ne>Z&iDi~J#t<$as^t+{QyOG%ea|Q~TEt;^s3;e#0ozrLg=RZf&{f+kn ztLuM?2Nuv7Q%8gsA!&D#lf#3LmjY@Fvl`0>HqVS?8D=+q6J-hkM1y*^{+sMoo)3V0OWh`f_ z{PC#mbn8#=Zh!T*@$QgtNADw>g%P>Bp{nf&EsiRcuze+c^!t|C6*YgfBQ1GIuDWu< zP_Hs1Ae5JAnlB3gcRQ{u>ED_${>I1-AC<)Sbp4Iz{1;&;HFo4Z8uysT`6jvs9lFa{5mR3=cvG1 zm>yJnRbc_WGjI2 zw*T@a_01GlhX6RJCM(5i*si7S_U(ixq9RbWa~l(8jKfJ^=1X1u@gwB!R&2sHW?i{d zOxd~$DyZ2KMTvA5cjzJ>gsBHCf{a6<&{Jh{$z8gFxKn$d?ASm`d^yKu@oh1rNvjApZCmf%9*t9X7l0+II_Fp{TfAJgbSy9OIxOt=6e*!Wr)dYF!7@kfgf-((l(r98?LP=cBA8k`TnTK%qKlUv z0}mMlHky-pmpcOwBY(j4*Qw6TRHk4fgOa4W2WN+QjCf<56wd`rF}wfNBfuI24~v^g zSZ_w{A{>+JVH3_*xJ;Z3aFx1^uy7pVEzaU}*NGa(yDiW!ZBRB?1Cj(bB58A4!)X6- z7{P9HBD3F#%>JCn+%+6BQLXDl<}N2PcV!`C+x6@)p>O)4qJPB`P5)<(vjoO;D7(yZ zkf8nfjh70v^r6B8#!nPf4oX1jlR(xvAnz$4bq0VFNnC+7IZlq|`rV^W&0lN~L;Y3< zo~7Xzq7#u4C=5G1N*<~=sBVwTSg_1t2`PsdNSN%EV%O4`G{gff7R zBa{vL@EDqRS`FX|!My=)Ggxl_UIy%t55KXWIWp|D4iwWYsOxuNv<38>E7)0Gis59L z=iJ)AaE2KlfB#AU%wMLYa^Fl=AHafDICxUIs((|eH({_&jfZq0tB>c`4&EljhA4r- zA|^EFO^Esg7Cfo9RAG#=bit#M+ftWK+Vzzc)QSS!9Eu)~%L*HWyjri$Z78pn!s-(% z?YP^lJrFlg6A#)eOJQMdmi({u57RKCFbmtyywrd5is;2+P!_!7|A<$vFJhbCbI)#n z`+wK%zq})L`;$pKe4x`g20sAcrTApAvl`YA^*Q+8U9FQI`Plw@?wR%EUvs6qrw@?N z(#*b{H@@tB^MwrZKUwemBCa>daMlsI-aF^|@1NfO=F9#|r?)=5)_e04RQLJA?T|_uvYJ)Mt9FWf2X~mr?lgX zDTEd^xvA0^kk6yATVM&fz}`pP8iH-hEm9`^DwJv~NVO$$N`y0N+>8qLBVHyw^9c!3 z=Lcqpje{_kUk48>fBuNB7?AeE?PlJqhzrFxGCylG^BOIin!T{@Yxd5u zwb|R@cQ@-ec!RTs9@UFKxgEOw3&cJQRUpADfK6xLYi+Hk+Re=Cj;`S*R;u21O z*go~oVT)gLCbp~wmtDPOzT!LQq_fe?tgODB9ZKEyGus#iFt>Vi+zwEG$Dz5zQ+fi=Gi-b`-)G zsAv$So9b`Ey1_JW2}SC9n!SN`{Ct@1ve?yOwLs>!Tjd62-wV1MhGcDJS^npXz<_ zZtv`Co8O!b2HCsDV4P;r}qSd#@09J z=!GlKe?Um>mqHAd;&IyS-x2YDM@*B|$U`(x0qizvUNcU-rO2z*;p`lqifU7i@ouQ) z9moV7)tP}D(=f*9o-fweA`r}L#K-21JVu&2pzV73 z4ynWHxa7Fd*#aaKca>7iL{c8Zz>Ek1VRNV8KHS91nyN@`WFRO8sEBYB6lRV>SeYZ7)V*6DHSEnGwAXdGEMZKAC&Gzhc8f>nl$Ost;>n_fWyBqLU>QU zf8d_X(4Kr@J(iFjcQ8*@7>_N0Cr9Ycz@VKGf^~8P>EsH|$rqAi3B}QZa0Z9p1Y%yJ*t~49%1tbctrVb@}4fx#xPnd&6^SsBr%NS%k@PsvlB14OI=5G_xqG0t7!A z=rH++vw)^lSNdG4n|6?CKvD&@Xu*%ve}oRK;he1u*K4Q>GiG4mF@(QyIFFx-wBhzs z2Cc?;q{m4Zzxq@O2U6!Zhh}GQFAT?SDV~zy+uy$0d-l@yM^95S-FoY{f<}8EzuG$| zMfzG7ZC7YtK>bHN%@Xs-3>P$(4~oqKZtz)091GeRJ43{%82ah-dRm6AGsCN*fB1PD zRuRfBucx|4W;B!l-R5nn?+LL_g~KY}$gkdvtlX$?;7HP_sQOI`ksP{>L$le){-RZ3 zF-5s$_vV-BHkRQQ?zT;A-=W&Rr~B-YT8Esm)lH{0CFc$mIvhP@SM?WHD#(b615MXS zs}9nDCv8zAkWj-Cy|4;rrAS(Qe+=s$QZ{g2Aapq_t1wJ?|BW>^)QGgBe|%=Rs9NM? zp34pgm{z2L$S-OAu~ri_P^P5rOpJR z6HG;GZ$+o784`_g=+-@7YAstg&ToJFyPY?GyLtWVDV0S?c*ey%Q4O}Ie;6LN0;C)_ z^biEm@h{V9XsJU|kxCAPw`8+vX-jNjdTWlTyOY4u(z~+OS+Vzm7mhEv1|q(rj!3R0 zC4L_@6x-|6QrEC>Mbf|$sf3{sTxG{JozDWYJo(*#le}w9^-vI*9FV6dlfJ*N}_FXh(8vBn70jCrAk9zdT2ZO$) z%a_V+8y1AIv?>wX&K7K&((FoQo65;ncBgNj@mbf_)JSRY9<>J}`^1JIL3PR)>Y;&F zj4L!*jiTwRVc>*~5b@@Rtrm=j92d)|{`nTg&^KPBj=)~Z@-Q07f24C6M<5!L?(Dmm zPCM}f!dfD==Lm48kz{Vl;OUV5om2=_Gz3lBuyDPspk5ouU|I>UGotV+Y@GonNLCM3 zIJBE85k_h&p112$Oa(?6`4skKNIRVxWVN7v+D@6wpKG2Rj?goS{%&FfnWm*NaItam zv69BeGU4VG59Ektf7nc2GLW}*@0-z8O;(&#*EO5%xX~cmm0Q;|5{!u}w4y}%X>oi9 zlzS9=S8nu9UvplcsC-;YfM&AbP7OI4uV)tpc0(N&2f%92)^ucl#v&`UM01cEGk%%k zP$4*!DGsHRjn2t?QAQ|Jp;|UwwckfL927*(c&E714r|?ze^+0_7!55T&{kwtW}M@q ztNOE{6LWyv9ZdLdhE6QmpmiFlO0DUjE4j7km4TY=l&q7WObWrdhzyi(>J?4z)SFlM zkfjp2q6G#QNC^)NPhqMf8+3#l5?syJ?t5KuH%9;S}ZCI5`=Sh(T zh#z?nV8v}Xf624bWS6ZL?Wh|i&=cJL`-#}4>uwz z*=d%cJd&seU>dK*yxvNCz0k)Jy5(31xEfxQ660wEe@hf8l>Q0nq6_V`%_Zw|rohkf zxxpCbB?`M4P@=oijv`|58x$i?B{1toqmGv1lMAdihujH=j1uft{}-(r&b-;LecnHN z8KduHKwiDM9P55DYVu5Z`K#Sd60bcFH<#<}HANX^91e36FJ9ih{9*6%#s2$OcbA{Mrc)h9-5=p>RB$zDgCspdK?IVpZtX8p&?Qw68ljQ9a9ku7^6m} zlYbn#q1)r+K|y0}_yop{q@V;7ndbyDLSQ{4B7zT;T?(OZ6Kut0bSh_yeUAFkrc2dM zha~o61QhBCORxc-2-4ufT8)Gyg8mhDiUh23T1brs|GAGG&wu&&qh#J(($kPlrnaY0 z-*O!5I-j>1VJ+ANZ~xrftjp8d`|x!C;(wXV?=JSAz7i-haB{Jkq}?wN8v;eT!}0lS zM1gDmz5;tFR=9cP2iUrWmWZi4R`>D;{9@JE%sjT>y6)URp zX(B6+)|1E`g*trbsh+CJS2Avwi2n;EAo3CRVR`y45ap4t!mQ!NCMQJR3Aw<(6@TtM z^lzp0yJq*_bI-=U>EmJX*Y_3w$6WEB7LOO@&+Buuf4_gD@UNxJ_tP``1UF#{0%1io z@C&pAP8z@YO+g@0N}^6ekw)(!@X~HI#vKMnevu5bG3)o<8y>n;!|MlAU zH=g!&QXf5jOKCfuF0*2(3Nj%2OMgx^Su_#h#e%?;Q?ho%Xoe@2!uIh+@+-~VjzVC* zhVG@Y-+d9wKaTX^kUa0>&XB&Fj%_GIbQCVDgzd=Eu^RID5 z1fzD0gpV1|*Y1^pQ(!YG&hHOoW2U39=0Jh`1@Qb@)U32t<0b*bt_ETM$gq|lcm7I> zU08X+sQD`z^xGzXMK#fo1QrcVOkh!%IH|4nLrGt0)R)>JuzwN+9e<4&=wkxe3-Fmt zfY0t@c5Y=D&R8P@*1})K?IOm^V1=^0F=|WkNuFrLqG2s?(#cDt*qQ9A=Rj2BMk8!> zBI3}`NPeg+hf0_v3rhCY3>0jlI6;>~yr3Xrmw#%0P|{NMn4}s@M~!?1$Cjod<#ZQm z21we^29bSij4UeCQh&^jGU}OuG9)4d?@yX(!>-~8IKU~1wy+dYl}B>i1y)5|N>=SV zG@2C&)Z+D%_?5cNCG3!@Jqk=g5DxC)pV5&LaX>B-oAs(;qk$FoZpu74PzEC9XpkH! z=|cqR&CH&n0byi(RGg0~fK^T|21h4kYViDu+tu`QJx(4DVGUzke1_D7FSesr+^I8{ z@)QpyBA1m~-tug###`Q@TdvlV@jG74EraTo)t8SWhx&d*M4`5vp#%@l?d;MMG=h+_C52OTH z`a&pGoRJv*b){ASiytRHRvXC6sFd=3c}Em^Ni8XbX_s_xe|q{H28JA$Oxe1r7xwUb zB;8f7hc<%PuG1RyefRg2I^XGjsxx%h>z3BWe$f)moIwIZDf=%x)Y+Or=umrDX3w+; z$u=Ugb9Ix^+Ij-w^5A>0Ou}&~JWh>A*+om;dZR`igUoWJ&PM72C}y8}7!bmg|AV#q ziNjcZ;Mq%Cf7f5_zkA{P8*kAl4qsdaMFT?6YuA70B3`LLE?)H6>*cU6*aU5Iu#7-` zRe4Oc)T^#d2061_EprD7S|@48r-BiptxP+2 znu|~*e`dX1M`P_K5Nn80-@2HsNjY5FE3OMGcCDbLfIDLLl~5~(OcYV6#`P63Xgc-g z5nCx>2PE2~k}3pjtt{+FCQwFn3lj>oA&f7nAQxDvWYB`tc~T1YV*7s#vHeHVn@0*9 zSwz-)V+ji>iq=}mDK%p<)nc4CPA~#CWA_wXe}CXX{|ckLQ``KvG6NuM)zguu>?j>zZDrqCTM9yB)#;rX7u-mgO ze{RHGtN#Y*bkYWSuBhyefFRG}OH3*4^tnS}#{dZ)4xuaTw1Q?rLljh9rCysQq4|on zRz;Ue#+to21p8FIrWa_#wI9$0znJc%)Ii<1`R5Fnyo#9h;qKwfJZR*Ct6DQZr>@+| zrZ4YK4d66li1)go0MKTSu{!fgLsAZ1muVUgB!8SA8cq}`g>8_B&miLIL%nlndVl?T z>#g5X3epmXhDj09?RsVu9i|qb-oseTnDc~KsQOJw6`~`%ovxsn(Cst%Y17f#c}Cip z8tQ!XW5^x8je|@kpjfF6&T(p0DqN~kDdyC;+pb0qjY_kpl7?w5iay8n$_s+jcQ$}@ zmw%V*CkF!{&1m1;&hy=*$@1AT&*<0tZ{8c=PKIy{ zR5A#8P+0!4M*>V%EG^spxqRl)n0*u$tADv7AlgHZgV=~5AazlU`mH`1$Ept3|`7LzRG;+!z((=b$Jb%JL zwY=IZd>yo%dNmil>eY4e9yJ4sRGmEA9c$#Stakh)Lii;yqDhEs`S3NRKxR`@@9%1d zog||#Z=&^|Qng^!Y@>8fU%HBoiQxwC&XPzl8qNiRwbcP|6lwi|RR59~0*HTe)?9ta zlo{_Ihe4kJb6`*D;EUI`KD^dDbGm=_g9VK?{(s+7Ppbo@ zIo$GFs>Cw3i$g2JS){rlk`%BD}~4t+@EjAP)}vlv?Au z+%OYRm0T#X(ABunU2F0f1%Jzpp zRef#KL}P=^(cPhrPMJAkiPa)_d(VEd^UNokSFde-daeKZ*WcfGX@BR!Q|Rd?tOp+w z2D5YVE9H~A1X5ZQ9kap_aL6t-+WmU9_$>FN^cFKn_yX3AuARU&XxCjvRKx zcw{yXnTpN=8edrt#eCAHhtFBB1Z~NW!Su$gIyXw3oam43TA-^&?LsVCrJJQb6KGvk zO%umycf{KuN>N-@cmbA};!_U5BJxtQC0!M=&aZZsrndm%k8Pq1Gf1wEqx2yZoAI?V z+Dchs#6(KU5zAx}E^+68YR#1Qo0>+>juLZ(zuHP-lIJ6uN~x5W)gKQZf2`I|cALak z8n^4e-i`Cs25Qgix>qoH(gl+l-HE%A2M})~N<7;=bbiSMBxskb!?LTimYes^`LhOa zzRKpcb%rg({J6yy;!^CiYn7>?f~>-TNVakr>p`5p=EjchE&omvx9B7mcCc53HXVzr z?PwWGp>QuNg;n9ON+%nge|xbQiZZBFbQ4F}xkyS)YvaagqdjFs)_8wn<*CpMOj#*w zQs~OZJz1>R#F>aTJi%-Kv9{`c0JKGur8#K8@Sz3?{lcguZfJc84J)15rNDjyXp}nj zr3Q{&&IT3-EjD9#hq2WH4}^W3BC?1!CyKQC(#LI5fu8g|`7C>Hf7*_S>BzN=WwL}Y zd%|!;y}JG{etAq3ACds z&ux8ioud;r8u614;BiW3@o47E0YS}Vi=<+|q?(z^(`T1wv2a=7?3E{@u+<98OK!>a z<1Cp;7p|Sb^(xS5L6c?lD$gF(kogL77me9&VuRm}Ee{4zgIg?J}m6e8Fw^zUh z*$qq8IDVpz#f)*}71pW3?_vN1_~(RENr0I3)>|Paa`Bj^fR{NWt4!9IkFA-s0VKbJ zS3!<>-Mej+I7G72hVn?2f?+#eNtj+(;s|CPf7Bk`hPZs9MC;z`J$WsBaRmjd9<2|? z3y%}oEyr-ke<#WNsX3VO0-4LffjQ4$q5+f2LOcfw-hpzhgo5uFPj1~M5>zynqni!Z z-q~&M>^AAM8@-NjsBk5vR)0zFt`qED`K2Fl`K6pUD|?o!mDP+0<977j)mLI#7oo56 z-fheI3NPIr*DeFM;OwGz=AGWhFZNzKuQCdL(Z}ERf5prgCv^4MtxvBhr8IOoOuUP^ zGTJohfvyFsbj{jptgT|DT2=iTo+Udlw}netPW7-7l;|0x$ZMAm$iz_Mb?~I)k~T(E ztkRi&?omT&(Q>#*P=s_ks`DCXUQRvfR+in$Q#sPOZ$gF|Nd&3-;=^OKr?eV%P-pKA zFf|qHe-7V^s2pNNi^&zEKM@}wk2yjI^aEWCibO%4&&Tb(AXmG(E)}9L^W0MftU0mN z@1yZ9dwRs49%0iX#;rc|-@CMZ<%2!-VW9c|S_8R{HjnDyc`K2!wMphNZ#e6ypSS&Yp}SgI%4*NqAJRd^y~7fF_* zS{E;XY?qg%Bo8%6#0@2Vu%6$<=l$2->|H&hKJLKdG;5ui1L`DQmm(z(H-AM>x`X*#cKFj9Th~7B z{pHfuCoif~YCe~9n`&xn^unj`Axl%^xm*(R@1pS5(DN{-!;HN|Wv5E8d@6D8kSh;i zubr@MA`?1nq9m%WHtWC{i}0cmrS}s@FO8YKGLv3-L5b#|Vwn+~S@XhgPH>##;2Z3_OZ{xeirhn*wD^*(Mf_TA3{EAl3=Rdk(<5&!Pi|SPTJN}S`V~4;} zesc5bhy6ca>|J?o>;0!`Mk#3gn^&LOKK-TdEGRpfOIc?}cFH>~KN;>K8Pxz=;wV)_ z9wU`0>WZiRU_lvzzfEY-TH;PEgZQ*{+0z7bcS@DO#4hjtu^lEN&D-MG!t?HYwf z_tArg)z-ML+ti!L-(*A?Akae~Jp$LS3*FXHS<#$x-DWNRR>@fe3ZNaFU@( zWfnrz8|b5ygqVj6wZ5Yh;`YaX7(|GkvC5;8BE|T2CPo{fnZ#%#*ulh@qD2}=GXgEr zjst0tHXDj5s$DYKqLZFo5c1Ho)^~Jz?tk}G|I6z?W_s2p(!pMD4b78_WyuVJMK-Wf zZ+b}`^o-%ipTH=R?nTl)*G|y)fRp~Ll;^aYWsnBJvO=(|5G++|tAj$^)G>%MGN~d< zApSIENoq$=hV7cS(hirhCl6MCsCVjsS)S212VA#3B%Wkp36{%nO6yoly<}6jrx%*e z4zd_m`F^onj(`Yr`X_h6l&`ZzUuBDanNC-Q&hoA=qDuP=atKJ5pz)YVFNxNQIy3i@ zT8S<&(>1g*!sLzljTF_5Ui{c}PPqtLqaIh$$svjzYf(hcUZN)EDJ7=?D+kp0e+7eQ zehHKGGsj&Bv;~cFP4j)(pQjTV5Yqxc1;{Qzm||%yde6+u1Tt^Ax8sm;-@WI;+g425 zUYC7{k7i^wIwwL&vrI!AsYd^><0i1~^+bh!PruvgS&3Z%H@~St#e;@MvgSGmJ!*ri-U4OOz?uGAfyhROuzDP}@JQcZk z|DB89-*~C_;TPLqUh-#@o9)@8&?X1V2-H_o1yU^!YqOWW_8xDc_o}F$9rDR9{^5hk zDkw(cA^rl4d}TGkS8aTKm{!3$ScV_*SBhxw<@b7TzfT{Qv0<6?g%;$>fBQfYh!RcU zG7pB;)q*>WAdNHPP&+SlQ&fQ!JF~s=u-ye~K%5Q_4 zBu>D(#k;G~t%KOhdfThaJ>E<=n!6v?PDJe_7l{(x{IS@o?_qcz2c?|e=p%Z5YsMIv zsY`DB=qyZesst9lq?J^inDORQm94}{sHpt$HotqP_t_geuYTKqfBBO7MllmG9O1Z@ zvSN0^6EuX%DPyg~uU;83;JQ)KHPEJps2?>^@(Wvu(}k94L1EK+1GRbwwG3Qr7POwv zG)mUJ!X~0jKW(#v-goSQhljX2bDa!sfevwFU{s-Q>L2R92n9HkK{(zA$z`kr&ck7| z)`;4(iaTPh)rheCf1JaOOQw}3bl;~>Znh2GLW4ks{Wq@k&V2;B(auNbcP@TKE5RC# zGAUA?4&x@Nq$2JfaZ@E}0xhyAleckDC%e}~Ygz9U0(s$yphNNgHl;;6Zwq2bV<1S% zTkIE@kkcNU`^>FfYlkbk?t`VnDUycvgtM#F7yz6qW`Q-+%ENFTIOMG05hTcHA-(o1(_7S4oH|9e$vNTxLDy0@csnfFd>4LZ@lR z{s4-Fb!E*s6s0X1ErMV)+9!mu8+R0^d>je6#+wdl)(e-Dh+gb1@E>kBFu7mIWWmm3 zKu*nGZaKN*mMjke0hhMx zrl9F=JqhV%MOxDB!pm*3eRG@?PjW{@>fSxajcDpT3~}YHf6Y{#p3+i%ZN*`uwlvOZ zpLXLu&{`zJ3za3zXKg zspnd!5$x${#ZfKzMMrMq1?6%(B8g-bLj4sGD-$XaM@zhFA6e|(xURlPIs@4We8@7&95toi}C7NIgykz-;)YkCrAW>D4RE}Y@Va%z^q zlyftUs}diY$N_q!^Rt5OEk8k9C+QX(rNx}=9j0&fVcJffKeFTWMCkFB9;ox|^u3ey z-pSgr4ff8~x8K>?qW1iaoUR2I8q@h&z`M;(*c`9De>3*p8GG-HJ=rrh-)qV#+o|)o zj@v2>aqF%P$W1?a5BNi+`Ozrpwg`t?ihvVFN26v<5q&3D+k7j)k0toT}TI74aJIUT*RNK&2YZF76;^g@6hJ?C9ILNIaaYNLSB*-U01+2p1q<{?rV~u#mcZXpw#6NnJ}(a%e=Y&6 z4UR*8x(I$Qa#2G6bJ2%rkI2CaBkyj>O$nSE;}4ZhtL)eU<1QxMBkx=20JF1cLD1f~ z0U4WntT}CUfVNWbKwd$Lm=xxwEiXxc6F#S-a3aMIqC+62bQz4?yahQLJ4L0=b2}Hm z>c9T==GC*?AAi()<#%{Yxpcb!D%2k(?vB~CNZkPwDtahrXMKXIQu#l?+Z*74z;(jK OhyNe_yG5!PeMJB(x4dEi