From b28366afd61e81f4bd3d4e26447de7916de22103 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Thu, 5 Mar 2026 16:09:06 +0100 Subject: [PATCH 01/32] [#72825] Test custom comments in project creation wizard https://community.openproject.org/work_packages/72825 From 2d71431b4ff666bd4b8b9084741e6f98e8036e9d Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Tue, 3 Mar 2026 15:13:50 +0100 Subject: [PATCH 02/32] move visit call from before block to every test --- .../project_creation_wizard_spec.rb | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/spec/features/projects/creation_wizard/project_creation_wizard_spec.rb b/spec/features/projects/creation_wizard/project_creation_wizard_spec.rb index 5ae54f3daeda..c804c1bc8c55 100644 --- a/spec/features/projects/creation_wizard/project_creation_wizard_spec.rb +++ b/spec/features/projects/creation_wizard/project_creation_wizard_spec.rb @@ -132,11 +132,11 @@ create(:project_custom_field_project_mapping, project:, project_custom_field: string_custom_field) create(:project_custom_field_project_mapping, project:, project_custom_field: list_custom_field) create(:project_custom_field_project_mapping, project:, project_custom_field: int_custom_field) - - visit wizard_path end it "can visit the wizard path manually and navigate through sections" do + visit wizard_path + # Should show the wizard page with the first section expect(page).to have_css("h3", text: "Basic Information") expect(page).to have_text("Project Description") @@ -160,6 +160,8 @@ end it "shows different sections as separate pages" do + visit wizard_path + # First section expect(page).to have_css("h3", text: "Basic Information") expect(page).to have_text("Project Description") @@ -188,6 +190,8 @@ end it "displays and updates attribute help texts when focusing different fields" do + visit wizard_path + # Initially, help text for the first field should be visible expect(page).to have_text("Enter a detailed description of your project goals and objectives.") @@ -214,6 +218,8 @@ end it "updates and persists field values when clicking next" do + visit wizard_path + # Fill in fields in first section (Project Description is a textarea) text_field_editor.set_markdown "This is a test project for validation" fill_in "Project Code", with: "TEST-001" @@ -273,6 +279,8 @@ end it "shows completion checkmarks for sections with filled fields" do + visit wizard_path + # Initially, no checkmarks should be visible page.within(".op-projects-wizard--sidebar") do section_item = find("a", text: "Basic Information") @@ -298,6 +306,8 @@ end it "shows the correct last section behavior with Complete button" do + visit wizard_path + # Navigate to last section via sidebar click_link "Project Details" @@ -314,6 +324,8 @@ end it "can cancel and return to project overview" do + visit wizard_path + # Fill in some data fill_in "Project Code", with: "CANCEL-TEST" @@ -424,6 +436,8 @@ end it "denies access to the wizard" do + visit wizard_path + # Should show an error message about lacking permissions expect(page).to have_text("You are not authorized to access this page") end From 871a45a8c9ac7ec941279e2064caebfc11b2d11b Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Tue, 3 Mar 2026 16:35:26 +0100 Subject: [PATCH 03/32] test custom comments in project creation wizard --- .../project_creation_wizard_spec.rb | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/spec/features/projects/creation_wizard/project_creation_wizard_spec.rb b/spec/features/projects/creation_wizard/project_creation_wizard_spec.rb index c804c1bc8c55..90b1212ed284 100644 --- a/spec/features/projects/creation_wizard/project_creation_wizard_spec.rb +++ b/spec/features/projects/creation_wizard/project_creation_wizard_spec.rb @@ -442,4 +442,43 @@ expect(page).to have_text("You are not authorized to access this page") end end + + context "with comments enabled for custom fields" do + before do + string_custom_field.update!(has_comment: true, is_required: true) + end + + it "remembers comment between page loads and saves it at the end" do + visit wizard_path + + # Fill comment, but not required description + fill_in "Project Code comment", with: "foo" + click_button "Continue" + wait_for_network_idle + expect(page).to have_field("Project Code comment", with: "foo") + + # Also fill description and go to next page + fill_in "Project Code", type: "text", with: "TEST-001" + click_button "Continue" + wait_for_network_idle + expect(page).to have_no_field("Project Code comment") + + # Check if first page still has comment + click_link "Back" + wait_for_network_idle + expect(page).to have_field("Project Code comment", with: "foo") + + # Finish the wizard + click_button "Continue" + wait_for_network_idle + select_autocomplete page.find("[data-custom-field-id='#{user_custom_field.id}']"), + results_selector: "body", + query: user_assignee.name + click_button "Complete" + wait_for_network_idle + + # Comment should be saved + expect(project.reload.send(string_custom_field.comment_attribute_name)).to eq "foo" + end + end end From b29fa984716dbb26a4ad2d89595f2f2a736b380c Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Thu, 5 Mar 2026 15:42:58 +0100 Subject: [PATCH 04/32] [#72822] API docs for the newly introduced custom comment fields https://community.openproject.org/work_packages/72822 From 910768bc8a821754e9ec86c2eb66be9661c08334 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Thu, 26 Feb 2026 19:56:42 +0100 Subject: [PATCH 05/32] fix version model schemas to use allOf unambiguously At least didn't work in OpenAPI Explorer --- .../components/schemas/version_read_model.yml | 268 +++++++++--------- .../schemas/version_write_model.yml | 110 +++---- 2 files changed, 189 insertions(+), 189 deletions(-) diff --git a/docs/api/apiv3/components/schemas/version_read_model.yml b/docs/api/apiv3/components/schemas/version_read_model.yml index e435541f9548..3a2679175f0a 100644 --- a/docs/api/apiv3/components/schemas/version_read_model.yml +++ b/docs/api/apiv3/components/schemas/version_read_model.yml @@ -1,141 +1,141 @@ # Schema: VersionReadModel --- -type: object -required: - - id - - _type - - name - - description - - startDate - - endDate - - status - - sharing - - createdAt - - updatedAt allOf: - $ref: "./custom_field_properties.yml" -properties: - id: - type: integer - description: Version id - minimum: 1 - _type: - type: string - enum: - - Version - name: - type: string - description: Version name - description: - $ref: "./formattable.yml" - startDate: - type: - - "string" - - "null" - format: date - endDate: - type: - - "string" - - "null" - format: date - status: - type: string - description: |- - The current status of the version. This could be: - - - *open*: if the version is available to be assigned to work packages in all shared projects - - *locked*: if the version is not finished, but locked for further assignments to work packages - - *closed*: if the version is finished - enum: - - open - - locked - - closed - sharing: - type: string - description: |- - The indicator of how the version is shared between projects. This could be: - - - *none*: if the version is only available in the defining project - - *descendants*: if the version is shared with the descendants of the defining project - - *hierarchy*: if the version is shared with the descendants and the ancestors of the defining project - - *tree*: if the version is shared with the root project of the defining project and all descendants of the root project - - *system*: if the version is shared globally - enum: - - none - - descendants - - hierarchy - - tree - - system - createdAt: - type: string - format: date-time - description: Time of creation - updatedAt: - type: string - format: date-time - description: Time of the most recent change to the version - _links: - type: object + - type: object required: - - self - - schema - - definingProject - - availableInProjects - allOf: - - $ref: "./custom_field_linked_properties.yml" + - id + - _type + - name + - description + - startDate + - endDate + - status + - sharing + - createdAt + - updatedAt properties: - self: + id: + type: integer + description: Version id + minimum: 1 + _type: + type: string + enum: + - Version + name: + type: string + description: Version name + description: + $ref: "./formattable.yml" + startDate: + type: + - "string" + - "null" + format: date + endDate: + type: + - "string" + - "null" + format: date + status: + type: string + description: |- + The current status of the version. This could be: + + - *open*: if the version is available to be assigned to work packages in all shared projects + - *locked*: if the version is not finished, but locked for further assignments to work packages + - *closed*: if the version is finished + enum: + - open + - locked + - closed + sharing: + type: string + description: |- + The indicator of how the version is shared between projects. This could be: + + - *none*: if the version is only available in the defining project + - *descendants*: if the version is shared with the descendants of the defining project + - *hierarchy*: if the version is shared with the descendants and the ancestors of the defining project + - *tree*: if the version is shared with the root project of the defining project and all descendants of the root project + - *system*: if the version is shared globally + enum: + - none + - descendants + - hierarchy + - tree + - system + createdAt: + type: string + format: date-time + description: Time of creation + updatedAt: + type: string + format: date-time + description: Time of the most recent change to the version + _links: allOf: - - $ref: "./link.yml" - - description: |- - This version - - **Resource**: Version - schema: - allOf: - - $ref: "./link.yml" - - description: |- - The schema of this version - - **Resource**: VersionSchema - update: - allOf: - - $ref: "./link.yml" - - description: |- - Form endpoint that aids in preparing and performing edits on the version - - # Conditions - - **Permission**: manage versions - delete: - allOf: - - $ref: "./link.yml" - - description: |- - Deletes this version - - # Conditions - - **Permission**: manage versions - updateImmediately: - allOf: - - $ref: "./link.yml" - - description: |- - Directly perform edits on the version - - # Conditions - - **Permission**: manage versions - definingProject: - allOf: - - $ref: "./link.yml" - - description: |- - The workspace to which the version belongs - - **Resource**: Workspace - availableInProjects: - allOf: - - $ref: "./link.yml" - - description: |- - Workspaces where this version can be used - - **Resource**: Workspace + - $ref: "./custom_field_linked_properties.yml" + - type: object + required: + - self + - schema + - definingProject + - availableInProjects + properties: + self: + allOf: + - $ref: "./link.yml" + - description: |- + This version + + **Resource**: Version + schema: + allOf: + - $ref: "./link.yml" + - description: |- + The schema of this version + + **Resource**: VersionSchema + update: + allOf: + - $ref: "./link.yml" + - description: |- + Form endpoint that aids in preparing and performing edits on the version + + # Conditions + + **Permission**: manage versions + delete: + allOf: + - $ref: "./link.yml" + - description: |- + Deletes this version + + # Conditions + + **Permission**: manage versions + updateImmediately: + allOf: + - $ref: "./link.yml" + - description: |- + Directly perform edits on the version + + # Conditions + + **Permission**: manage versions + definingProject: + allOf: + - $ref: "./link.yml" + - description: |- + The workspace to which the version belongs + + **Resource**: Workspace + availableInProjects: + allOf: + - $ref: "./link.yml" + - description: |- + Workspaces where this version can be used + + **Resource**: Workspace diff --git a/docs/api/apiv3/components/schemas/version_write_model.yml b/docs/api/apiv3/components/schemas/version_write_model.yml index 9fc4bba482cd..07c088159d71 100644 --- a/docs/api/apiv3/components/schemas/version_write_model.yml +++ b/docs/api/apiv3/components/schemas/version_write_model.yml @@ -1,61 +1,61 @@ # Schema: VersionWriteModel --- -type: object allOf: - $ref: "./custom_field_properties.yml" -properties: - name: - type: string - description: Version name - description: - $ref: "./formattable.yml" - startDate: - type: - - "string" - - "null" - format: date - endDate: - type: - - "string" - - "null" - format: date - status: - type: string - description: |- - The current status of the version. This could be: - - - *open*: if the version is available to be assigned to work packages in all shared projects - - *locked*: if the version is not finished, but locked for further assignments to work packages - - *closed*: if the version is finished - enum: - - open - - locked - - closed - sharing: - type: string - description: |- - The indicator of how the version is shared between projects. This could be: - - - *none*: if the version is only available in the defining project - - *descendants*: if the version is shared with the descendants of the defining project - - *hierarchy*: if the version is shared with the descendants and the ancestors of the defining project - - *tree*: if the version is shared with the root project of the defining project and all descendants of the root project - - *system*: if the version is shared globally - enum: - - none - - descendants - - hierarchy - - tree - - system - _links: - type: object - allOf: - - $ref: "./custom_field_linked_properties.yml" + - type: object properties: - definingProject: + name: + type: string + description: Version name + description: + $ref: "./formattable.yml" + startDate: + type: + - "string" + - "null" + format: date + endDate: + type: + - "string" + - "null" + format: date + status: + type: string + description: |- + The current status of the version. This could be: + + - *open*: if the version is available to be assigned to work packages in all shared projects + - *locked*: if the version is not finished, but locked for further assignments to work packages + - *closed*: if the version is finished + enum: + - open + - locked + - closed + sharing: + type: string + description: |- + The indicator of how the version is shared between projects. This could be: + + - *none*: if the version is only available in the defining project + - *descendants*: if the version is shared with the descendants of the defining project + - *hierarchy*: if the version is shared with the descendants and the ancestors of the defining project + - *tree*: if the version is shared with the root project of the defining project and all descendants of the root project + - *system*: if the version is shared globally + enum: + - none + - descendants + - hierarchy + - tree + - system + _links: allOf: - - $ref: "./link.yml" - - description: |- - The workspace to which the version belongs - - **Resource**: Workspace + - $ref: "./custom_field_linked_properties.yml" + - type: object + properties: + definingProject: + allOf: + - $ref: "./link.yml" + - description: |- + The workspace to which the version belongs + + **Resource**: Workspace From e4ee24dace620629327461c00e505ea6a74fc199 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Thu, 26 Feb 2026 19:57:28 +0100 Subject: [PATCH 06/32] add custom comment schema --- .../components/schemas/custom_comment_properties.yml | 12 ++++++++++++ docs/api/apiv3/openapi-spec.yml | 2 ++ 2 files changed, 14 insertions(+) create mode 100644 docs/api/apiv3/components/schemas/custom_comment_properties.yml diff --git a/docs/api/apiv3/components/schemas/custom_comment_properties.yml b/docs/api/apiv3/components/schemas/custom_comment_properties.yml new file mode 100644 index 000000000000..bcf63a2e1285 --- /dev/null +++ b/docs/api/apiv3/components/schemas/custom_comment_properties.yml @@ -0,0 +1,12 @@ +# Schema: CustomCommentProperties +--- +type: object +patternProperties: + "^customComment\\d+$": + type: + - "null" + - string + description: |- + A plain-text comment associated with a project custom field that has comments enabled. + + The property is only present when the corresponding `customField{N}` has `has_comment` set to `true`. diff --git a/docs/api/apiv3/openapi-spec.yml b/docs/api/apiv3/openapi-spec.yml index 491b53602d76..0ec085c91246 100644 --- a/docs/api/apiv3/openapi-spec.yml +++ b/docs/api/apiv3/openapi-spec.yml @@ -749,6 +749,8 @@ components: "$ref": "./components/schemas/project_configuration_model.yml" CustomActionModel: "$ref": "./components/schemas/custom_action_model.yml" + CustomCommentProperties: + "$ref": "./components/schemas/custom_comment_properties.yml" CustomFieldLinkedProperties: "$ref": "./components/schemas/custom_field_linked_properties.yml" CustomFieldProperties: From 60949e402f0211db91acc404c54267cf5e601ab1 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Thu, 26 Feb 2026 20:48:57 +0100 Subject: [PATCH 07/32] custom field properties in all project type schemas --- .../components/schemas/portfolio_model.yml | 436 +++++++++--------- .../components/schemas/program_model.yml | 436 +++++++++--------- .../components/schemas/project_model.yml | 436 +++++++++--------- .../schemas/workspaces_schema_model.yml | 3 + 4 files changed, 660 insertions(+), 651 deletions(-) diff --git a/docs/api/apiv3/components/schemas/portfolio_model.yml b/docs/api/apiv3/components/schemas/portfolio_model.yml index 530606375700..3dc4a8f05432 100644 --- a/docs/api/apiv3/components/schemas/portfolio_model.yml +++ b/docs/api/apiv3/components/schemas/portfolio_model.yml @@ -1,220 +1,222 @@ # Schema: PortfolioModel --- -type: object -properties: - _type: - type: string - enum: - - Portfolio - id: - type: integer - description: Portfolios' id - minimum: 1 - identifier: - type: string - name: - type: string - active: - type: boolean - description: Indicates whether the portfolio is currently active or already archived - favorited: - type: boolean - description: Indicates whether the portfolio is favorited by the current user - statusExplanation: - allOf: - - $ref: './formattable.yml' - - description: A text detailing and explaining why the portfolio has the reported status - public: - type: boolean - description: Indicates whether the portfolio is accessible for everybody - description: - $ref: './formattable.yml' - createdAt: - type: string - format: date-time - description: Time of creation. Can be writable by admins with the `apiv3_write_readonly_attributes` setting enabled. - updatedAt: - type: string - format: date-time - description: Time of the most recent change to the portfolio - _links: - type: object - required: - - self - - categories +allOf: + - $ref: "./custom_field_properties.yml" + - type: object properties: - update: - allOf: - - $ref: './link.yml' - - description: |- - Form endpoint that aids in updating this portfolio - - # Conditions - - **Permission**: edit workspace - updateImmediately: - allOf: - - $ref: './link.yml' - - description: |- - Directly update this portfolio - - # Conditions - - **Permission**: edit workspace - delete: - allOf: - - $ref: './link.yml' - - description: |- - Delete this portfolio - - # Conditions - - **Permission**: admin - favor: - allOf: - - $ref: './link.yml' - - description: |- - Mark this portfolio as favorited by the current user - - # Conditions - - Only present if the portfolio is not yet favorited - - Permission**: none but login is required - disfavor: - allOf: - - $ref: './link.yml' - - description: |- - Mark this portfolio as not favorited by the current user - - # Conditions - Only present if the portfolio is favorited by the current user - - Permission**: none but login is required - createWorkPackage: - allOf: - - $ref: './link.yml' - - description: |- - Form endpoint that aids in preparing and creating a work package - - # Conditions - - **Permission**: add work packages - createWorkPackageImmediately: - allOf: - - $ref: './link.yml' - - description: |- - Directly creates a work package in the portfolio - - # Conditions - - **Permission**: add work packages - self: - allOf: - - $ref: './link.yml' - - description: |- - This portfolio - - **Resource**: Portfolio - categories: - allOf: - - $ref: './link.yml' - - description: |- - Categories available in this portfolio - - **Resource**: Collection - types: - allOf: - - $ref: './link.yml' - - description: |- - Types available in this portfolio - - **Resource**: Collection - - # Conditions - - **Permission**: view work packages or manage types - versions: - allOf: - - $ref: './link.yml' - - description: |- - Versions available in this portfolio - - **Resource**: Collection - - # Conditions - - **Permission**: view work packages or manage versions - memberships: - allOf: - - $ref: './link.yml' - - description: |- - Memberships in the portfolio - - **Resource**: Collection - - # Conditions - - **Permission**: view members - workPackages: - allOf: - - $ref: './link.yml' - - description: |- - Work Packages of this portfolio - - **Resource**: Collection - parent: - allOf: - - $ref: './link.yml' - - description: |- - Parent of the portfolio - - **Resource**: Portfolio - - # Conditions - - **Permission** edit workspace - status: - allOf: - - $ref: './link.yml' - - description: |- - Denotes the status of the portfolio, so whether the portfolio is on track, at risk or is having trouble. - - **Resource**: ProjectStatus - - # Conditions - - **Permission** edit workspace - storages: - type: array - items: - allOf: - - $ref: './link.yml' - - description: |- - The link to a storage that is active for this portfolio. - - **Resource**: Storage - - # Conditions - - **Permission**: view_file_links - projectStorages: - allOf: - - $ref: './link.yml' - - description: |- - The project storage collection of this portfolio. - - **Resource**: Collection - - # Conditions - - **Permission**: view_file_links - ancestors: - type: array - items: - allOf: - - $ref: './link.yml' - - description: |- - A collection of links to the ancestor portfolios. - - **Resource**: Portfolio + _type: + type: string + enum: + - Portfolio + id: + type: integer + description: Portfolios' id + minimum: 1 + identifier: + type: string + name: + type: string + active: + type: boolean + description: Indicates whether the portfolio is currently active or already archived + favorited: + type: boolean + description: Indicates whether the portfolio is favorited by the current user + statusExplanation: + allOf: + - $ref: './formattable.yml' + - description: A text detailing and explaining why the portfolio has the reported status + public: + type: boolean + description: Indicates whether the portfolio is accessible for everybody + description: + $ref: './formattable.yml' + createdAt: + type: string + format: date-time + description: Time of creation. Can be writable by admins with the `apiv3_write_readonly_attributes` setting enabled. + updatedAt: + type: string + format: date-time + description: Time of the most recent change to the portfolio + _links: + type: object + required: + - self + - categories + properties: + update: + allOf: + - $ref: './link.yml' + - description: |- + Form endpoint that aids in updating this portfolio + + # Conditions + + **Permission**: edit workspace + updateImmediately: + allOf: + - $ref: './link.yml' + - description: |- + Directly update this portfolio + + # Conditions + + **Permission**: edit workspace + delete: + allOf: + - $ref: './link.yml' + - description: |- + Delete this portfolio + + # Conditions + + **Permission**: admin + favor: + allOf: + - $ref: './link.yml' + - description: |- + Mark this portfolio as favorited by the current user + + # Conditions + + Only present if the portfolio is not yet favorited + + Permission**: none but login is required + disfavor: + allOf: + - $ref: './link.yml' + - description: |- + Mark this portfolio as not favorited by the current user + + # Conditions + Only present if the portfolio is favorited by the current user + + Permission**: none but login is required + createWorkPackage: + allOf: + - $ref: './link.yml' + - description: |- + Form endpoint that aids in preparing and creating a work package + + # Conditions + + **Permission**: add work packages + createWorkPackageImmediately: + allOf: + - $ref: './link.yml' + - description: |- + Directly creates a work package in the portfolio + + # Conditions + + **Permission**: add work packages + self: + allOf: + - $ref: './link.yml' + - description: |- + This portfolio + + **Resource**: Portfolio + categories: + allOf: + - $ref: './link.yml' + - description: |- + Categories available in this portfolio + + **Resource**: Collection + types: + allOf: + - $ref: './link.yml' + - description: |- + Types available in this portfolio + + **Resource**: Collection + + # Conditions + + **Permission**: view work packages or manage types + versions: + allOf: + - $ref: './link.yml' + - description: |- + Versions available in this portfolio + + **Resource**: Collection + + # Conditions + + **Permission**: view work packages or manage versions + memberships: + allOf: + - $ref: './link.yml' + - description: |- + Memberships in the portfolio + + **Resource**: Collection + + # Conditions + + **Permission**: view members + workPackages: + allOf: + - $ref: './link.yml' + - description: |- + Work Packages of this portfolio + + **Resource**: Collection + parent: + allOf: + - $ref: './link.yml' + - description: |- + Parent of the portfolio + + **Resource**: Portfolio + + # Conditions + + **Permission** edit workspace + status: + allOf: + - $ref: './link.yml' + - description: |- + Denotes the status of the portfolio, so whether the portfolio is on track, at risk or is having trouble. + + **Resource**: ProjectStatus + + # Conditions + + **Permission** edit workspace + storages: + type: array + items: + allOf: + - $ref: './link.yml' + - description: |- + The link to a storage that is active for this portfolio. + + **Resource**: Storage + + # Conditions + + **Permission**: view_file_links + projectStorages: + allOf: + - $ref: './link.yml' + - description: |- + The project storage collection of this portfolio. + + **Resource**: Collection + + # Conditions + + **Permission**: view_file_links + ancestors: + type: array + items: + allOf: + - $ref: './link.yml' + - description: |- + A collection of links to the ancestor portfolios. + + **Resource**: Portfolio diff --git a/docs/api/apiv3/components/schemas/program_model.yml b/docs/api/apiv3/components/schemas/program_model.yml index a8651c5e67e3..304565067355 100644 --- a/docs/api/apiv3/components/schemas/program_model.yml +++ b/docs/api/apiv3/components/schemas/program_model.yml @@ -1,220 +1,222 @@ # Schema: ProgramModel --- -type: object -properties: - _type: - type: string - enum: - - Program - id: - type: integer - description: Programs' id - minimum: 1 - identifier: - type: string - name: - type: string - active: - type: boolean - description: Indicates whether the program is currently active or already archived - favorited: - type: boolean - description: Indicates whether the program is favorited by the current user - statusExplanation: - allOf: - - $ref: './formattable.yml' - - description: A text detailing and explaining why the program has the reported status - public: - type: boolean - description: Indicates whether the program is accessible for everybody - description: - $ref: './formattable.yml' - createdAt: - type: string - format: date-time - description: Time of creation. Can be writable by admins with the `apiv3_write_readonly_attributes` setting enabled. - updatedAt: - type: string - format: date-time - description: Time of the most recent change to the program - _links: - type: object - required: - - self - - categories +allOf: + - $ref: "./custom_field_properties.yml" + - type: object properties: - update: - allOf: - - $ref: './link.yml' - - description: |- - Form endpoint that aids in updating this program - - # Conditions - - **Permission**: edit workspace - updateImmediately: - allOf: - - $ref: './link.yml' - - description: |- - Directly update this program - - # Conditions - - **Permission**: edit workspace - delete: - allOf: - - $ref: './link.yml' - - description: |- - Delete this program - - # Conditions - - **Permission**: admin - favor: - allOf: - - $ref: './link.yml' - - description: |- - Mark this program as favorited by the current user - - # Conditions - - Only present if the program is not yet favorited - - Permission**: none but login is required - disfavor: - allOf: - - $ref: './link.yml' - - description: |- - Mark this program as not favorited by the current user - - # Conditions - Only present if the program is favorited by the current user - - Permission**: none but login is required - createWorkPackage: - allOf: - - $ref: './link.yml' - - description: |- - Form endpoint that aids in preparing and creating a work package - - # Conditions - - **Permission**: add work packages - createWorkPackageImmediately: - allOf: - - $ref: './link.yml' - - description: |- - Directly creates a work package in the program - - # Conditions - - **Permission**: add work packages - self: - allOf: - - $ref: './link.yml' - - description: |- - This program - - **Resource**: Program - categories: - allOf: - - $ref: './link.yml' - - description: |- - Categories available in this program - - **Resource**: Collection - types: - allOf: - - $ref: './link.yml' - - description: |- - Types available in this program - - **Resource**: Collection - - # Conditions - - **Permission**: view work packages or manage types - versions: - allOf: - - $ref: './link.yml' - - description: |- - Versions available in this program - - **Resource**: Collection - - # Conditions - - **Permission**: view work packages or manage versions - memberships: - allOf: - - $ref: './link.yml' - - description: |- - Memberships in the program - - **Resource**: Collection - - # Conditions - - **Permission**: view members - workPackages: - allOf: - - $ref: './link.yml' - - description: |- - Work Packages of this program - - **Resource**: Collection - parent: - allOf: - - $ref: './link.yml' - - description: |- - Parent of the program - - **Resource**: Program - - # Conditions - - **Permission** edit workspace - status: - allOf: - - $ref: './link.yml' - - description: |- - Denotes the status of the program, so whether the program is on track, at risk or is having trouble. - - **Resource**: ProjectStatus - - # Conditions - - **Permission** edit workspace - storages: - type: array - items: - allOf: - - $ref: './link.yml' - - description: |- - The link to a storage that is active for this program. - - **Resource**: Storage - - # Conditions - - **Permission**: view_file_links - projectStorages: - allOf: - - $ref: './link.yml' - - description: |- - The project storage collection of this program. - - **Resource**: Collection - - # Conditions - - **Permission**: view_file_links - ancestors: - type: array - items: - allOf: - - $ref: './link.yml' - - description: |- - A collection of links to the ancestor workspace. - - **Resource**: Workspace + _type: + type: string + enum: + - Program + id: + type: integer + description: Programs' id + minimum: 1 + identifier: + type: string + name: + type: string + active: + type: boolean + description: Indicates whether the program is currently active or already archived + favorited: + type: boolean + description: Indicates whether the program is favorited by the current user + statusExplanation: + allOf: + - $ref: './formattable.yml' + - description: A text detailing and explaining why the program has the reported status + public: + type: boolean + description: Indicates whether the program is accessible for everybody + description: + $ref: './formattable.yml' + createdAt: + type: string + format: date-time + description: Time of creation. Can be writable by admins with the `apiv3_write_readonly_attributes` setting enabled. + updatedAt: + type: string + format: date-time + description: Time of the most recent change to the program + _links: + type: object + required: + - self + - categories + properties: + update: + allOf: + - $ref: './link.yml' + - description: |- + Form endpoint that aids in updating this program + + # Conditions + + **Permission**: edit workspace + updateImmediately: + allOf: + - $ref: './link.yml' + - description: |- + Directly update this program + + # Conditions + + **Permission**: edit workspace + delete: + allOf: + - $ref: './link.yml' + - description: |- + Delete this program + + # Conditions + + **Permission**: admin + favor: + allOf: + - $ref: './link.yml' + - description: |- + Mark this program as favorited by the current user + + # Conditions + + Only present if the program is not yet favorited + + Permission**: none but login is required + disfavor: + allOf: + - $ref: './link.yml' + - description: |- + Mark this program as not favorited by the current user + + # Conditions + Only present if the program is favorited by the current user + + Permission**: none but login is required + createWorkPackage: + allOf: + - $ref: './link.yml' + - description: |- + Form endpoint that aids in preparing and creating a work package + + # Conditions + + **Permission**: add work packages + createWorkPackageImmediately: + allOf: + - $ref: './link.yml' + - description: |- + Directly creates a work package in the program + + # Conditions + + **Permission**: add work packages + self: + allOf: + - $ref: './link.yml' + - description: |- + This program + + **Resource**: Program + categories: + allOf: + - $ref: './link.yml' + - description: |- + Categories available in this program + + **Resource**: Collection + types: + allOf: + - $ref: './link.yml' + - description: |- + Types available in this program + + **Resource**: Collection + + # Conditions + + **Permission**: view work packages or manage types + versions: + allOf: + - $ref: './link.yml' + - description: |- + Versions available in this program + + **Resource**: Collection + + # Conditions + + **Permission**: view work packages or manage versions + memberships: + allOf: + - $ref: './link.yml' + - description: |- + Memberships in the program + + **Resource**: Collection + + # Conditions + + **Permission**: view members + workPackages: + allOf: + - $ref: './link.yml' + - description: |- + Work Packages of this program + + **Resource**: Collection + parent: + allOf: + - $ref: './link.yml' + - description: |- + Parent of the program + + **Resource**: Program + + # Conditions + + **Permission** edit workspace + status: + allOf: + - $ref: './link.yml' + - description: |- + Denotes the status of the program, so whether the program is on track, at risk or is having trouble. + + **Resource**: ProjectStatus + + # Conditions + + **Permission** edit workspace + storages: + type: array + items: + allOf: + - $ref: './link.yml' + - description: |- + The link to a storage that is active for this program. + + **Resource**: Storage + + # Conditions + + **Permission**: view_file_links + projectStorages: + allOf: + - $ref: './link.yml' + - description: |- + The project storage collection of this program. + + **Resource**: Collection + + # Conditions + + **Permission**: view_file_links + ancestors: + type: array + items: + allOf: + - $ref: './link.yml' + - description: |- + A collection of links to the ancestor workspace. + + **Resource**: Workspace diff --git a/docs/api/apiv3/components/schemas/project_model.yml b/docs/api/apiv3/components/schemas/project_model.yml index f1553401a829..32019ebd7084 100644 --- a/docs/api/apiv3/components/schemas/project_model.yml +++ b/docs/api/apiv3/components/schemas/project_model.yml @@ -1,220 +1,222 @@ # Schema: ProjectModel --- -type: object -properties: - _type: - type: string - enum: - - Project - id: - type: integer - description: Projects' id - minimum: 1 - identifier: - type: string - name: - type: string - active: - type: boolean - description: Indicates whether the project is currently active or already archived - favorited: - type: boolean - description: Indicates whether the project is favorited by the current user - statusExplanation: - allOf: - - $ref: './formattable.yml' - - description: A text detailing and explaining why the project has the reported status - public: - type: boolean - description: Indicates whether the project is accessible for everybody - description: - $ref: './formattable.yml' - createdAt: - type: string - format: date-time - description: Time of creation. Can be writable by admins with the `apiv3_write_readonly_attributes` setting enabled. - updatedAt: - type: string - format: date-time - description: Time of the most recent change to the project - _links: - type: object - required: - - self - - categories +allOf: + - $ref: "./custom_field_properties.yml" + - type: object properties: - update: - allOf: - - $ref: './link.yml' - - description: |- - Form endpoint that aids in updating this project - - # Conditions - - **Permission**: edit workspace - updateImmediately: - allOf: - - $ref: './link.yml' - - description: |- - Directly update this project - - # Conditions - - **Permission**: edit workspace - delete: - allOf: - - $ref: './link.yml' - - description: |- - Delete this project - - # Conditions - - **Permission**: admin - favor: - allOf: - - $ref: './link.yml' - - description: |- - Mark this project as favorited by the current user - - # Conditions - - Only present if the project is not yet favorited - - Permission**: none but login is required - disfavor: - allOf: - - $ref: './link.yml' - - description: |- - Mark this project as not favorited by the current user - - # Conditions - Only present if the project is favorited by the current user - - Permission**: none but login is required - createWorkPackage: - allOf: - - $ref: './link.yml' - - description: |- - Form endpoint that aids in preparing and creating a work package - - # Conditions - - **Permission**: add work packages - createWorkPackageImmediately: - allOf: - - $ref: './link.yml' - - description: |- - Directly creates a work package in the project - - # Conditions - - **Permission**: add work packages - self: - allOf: - - $ref: './link.yml' - - description: |- - This project - - **Resource**: Project - categories: - allOf: - - $ref: './link.yml' - - description: |- - Categories available in this project - - **Resource**: Collection - types: - allOf: - - $ref: './link.yml' - - description: |- - Types available in this project - - **Resource**: Collection - - # Conditions - - **Permission**: view work packages or manage types - versions: - allOf: - - $ref: './link.yml' - - description: |- - Versions available in this project - - **Resource**: Collection - - # Conditions - - **Permission**: view work packages or manage versions - memberships: - allOf: - - $ref: './link.yml' - - description: |- - Memberships in the project - - **Resource**: Collection - - # Conditions - - **Permission**: view members - workPackages: - allOf: - - $ref: './link.yml' - - description: |- - Work Packages of this project - - **Resource**: Collection - parent: - allOf: - - $ref: './link.yml' - - description: |- - Parent of the project - - **Resource**: Workspace - - # Conditions - - **Permission** edit workspace - status: - allOf: - - $ref: './link.yml' - - description: |- - Denotes the status of the project, so whether the project is on track, at risk or is having trouble. - - **Resource**: ProjectStatus - - # Conditions - - **Permission** edit workspace - storages: - type: array - items: - allOf: - - $ref: './link.yml' - - description: |- - The link to a storage that is active for this project. - - **Resource**: Storage - - # Conditions - - **Permission**: view_file_links - projectStorages: - allOf: - - $ref: './link.yml' - - description: |- - The project storage collection of this project. - - **Resource**: Collection - - # Conditions - - **Permission**: view_file_links - ancestors: - type: array - items: - allOf: - - $ref: './link.yml' - - description: |- - A collection of links to the ancestor workspaces. - - **Resource**: Workspace + _type: + type: string + enum: + - Project + id: + type: integer + description: Projects' id + minimum: 1 + identifier: + type: string + name: + type: string + active: + type: boolean + description: Indicates whether the project is currently active or already archived + favorited: + type: boolean + description: Indicates whether the project is favorited by the current user + statusExplanation: + allOf: + - $ref: './formattable.yml' + - description: A text detailing and explaining why the project has the reported status + public: + type: boolean + description: Indicates whether the project is accessible for everybody + description: + $ref: './formattable.yml' + createdAt: + type: string + format: date-time + description: Time of creation. Can be writable by admins with the `apiv3_write_readonly_attributes` setting enabled. + updatedAt: + type: string + format: date-time + description: Time of the most recent change to the project + _links: + type: object + required: + - self + - categories + properties: + update: + allOf: + - $ref: './link.yml' + - description: |- + Form endpoint that aids in updating this project + + # Conditions + + **Permission**: edit workspace + updateImmediately: + allOf: + - $ref: './link.yml' + - description: |- + Directly update this project + + # Conditions + + **Permission**: edit workspace + delete: + allOf: + - $ref: './link.yml' + - description: |- + Delete this project + + # Conditions + + **Permission**: admin + favor: + allOf: + - $ref: './link.yml' + - description: |- + Mark this project as favorited by the current user + + # Conditions + + Only present if the project is not yet favorited + + Permission**: none but login is required + disfavor: + allOf: + - $ref: './link.yml' + - description: |- + Mark this project as not favorited by the current user + + # Conditions + Only present if the project is favorited by the current user + + Permission**: none but login is required + createWorkPackage: + allOf: + - $ref: './link.yml' + - description: |- + Form endpoint that aids in preparing and creating a work package + + # Conditions + + **Permission**: add work packages + createWorkPackageImmediately: + allOf: + - $ref: './link.yml' + - description: |- + Directly creates a work package in the project + + # Conditions + + **Permission**: add work packages + self: + allOf: + - $ref: './link.yml' + - description: |- + This project + + **Resource**: Project + categories: + allOf: + - $ref: './link.yml' + - description: |- + Categories available in this project + + **Resource**: Collection + types: + allOf: + - $ref: './link.yml' + - description: |- + Types available in this project + + **Resource**: Collection + + # Conditions + + **Permission**: view work packages or manage types + versions: + allOf: + - $ref: './link.yml' + - description: |- + Versions available in this project + + **Resource**: Collection + + # Conditions + + **Permission**: view work packages or manage versions + memberships: + allOf: + - $ref: './link.yml' + - description: |- + Memberships in the project + + **Resource**: Collection + + # Conditions + + **Permission**: view members + workPackages: + allOf: + - $ref: './link.yml' + - description: |- + Work Packages of this project + + **Resource**: Collection + parent: + allOf: + - $ref: './link.yml' + - description: |- + Parent of the project + + **Resource**: Workspace + + # Conditions + + **Permission** edit workspace + status: + allOf: + - $ref: './link.yml' + - description: |- + Denotes the status of the project, so whether the project is on track, at risk or is having trouble. + + **Resource**: ProjectStatus + + # Conditions + + **Permission** edit workspace + storages: + type: array + items: + allOf: + - $ref: './link.yml' + - description: |- + The link to a storage that is active for this project. + + **Resource**: Storage + + # Conditions + + **Permission**: view_file_links + projectStorages: + allOf: + - $ref: './link.yml' + - description: |- + The project storage collection of this project. + + **Resource**: Collection + + # Conditions + + **Permission**: view_file_links + ancestors: + type: array + items: + allOf: + - $ref: './link.yml' + - description: |- + A collection of links to the ancestor workspaces. + + **Resource**: Workspace diff --git a/docs/api/apiv3/components/schemas/workspaces_schema_model.yml b/docs/api/apiv3/components/schemas/workspaces_schema_model.yml index 362ed732de7a..ab2bd48316de 100644 --- a/docs/api/apiv3/components/schemas/workspaces_schema_model.yml +++ b/docs/api/apiv3/components/schemas/workspaces_schema_model.yml @@ -93,6 +93,9 @@ properties: href: type: string example: "/api/v3/workspaces/schema" +patternProperties: + "^customField\\d+$": + $ref: './schema_property_model.yml' example: _type: Schema From acaf16ec4fa27d0e4c4610e38b0fa762f7b860ef Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Thu, 26 Feb 2026 20:49:39 +0100 Subject: [PATCH 08/32] custom comment properties in all project schemas --- docs/api/apiv3/components/examples/portfolio.yml | 1 + docs/api/apiv3/components/examples/portfolio_body.yml | 1 + docs/api/apiv3/components/examples/program.yml | 1 + docs/api/apiv3/components/examples/program_body.yml | 1 + docs/api/apiv3/components/examples/project.yml | 1 + docs/api/apiv3/components/examples/project_body.yml | 1 + docs/api/apiv3/components/schemas/portfolio_model.yml | 1 + docs/api/apiv3/components/schemas/program_model.yml | 1 + docs/api/apiv3/components/schemas/project_model.yml | 1 + .../apiv3/components/schemas/workspaces_schema_model.yml | 8 ++++++++ 10 files changed, 17 insertions(+) diff --git a/docs/api/apiv3/components/examples/portfolio.yml b/docs/api/apiv3/components/examples/portfolio.yml index 488e4f221dcd..17ade74a9aca 100644 --- a/docs/api/apiv3/components/examples/portfolio.yml +++ b/docs/api/apiv3/components/examples/portfolio.yml @@ -54,3 +54,4 @@ value: createdAt: '2014-05-21T08:51:20.396Z' updatedAt: '2014-05-21T08:51:20.396Z' customField123: 123 + customComment123: Why is the value 123? diff --git a/docs/api/apiv3/components/examples/portfolio_body.yml b/docs/api/apiv3/components/examples/portfolio_body.yml index 908df4144ee6..a0e3622312b9 100644 --- a/docs/api/apiv3/components/examples/portfolio_body.yml +++ b/docs/api/apiv3/components/examples/portfolio_body.yml @@ -7,6 +7,7 @@ value: description: raw: Lorem **ipsum** dolor sit amet customField123: 123 + customComment123: Because it is 123! _links: parent: href: "/api/v3/portfolios/123" diff --git a/docs/api/apiv3/components/examples/program.yml b/docs/api/apiv3/components/examples/program.yml index a43e74f1a876..137edbac77ee 100644 --- a/docs/api/apiv3/components/examples/program.yml +++ b/docs/api/apiv3/components/examples/program.yml @@ -54,3 +54,4 @@ value: createdAt: '2014-05-21T08:51:20.396Z' updatedAt: '2014-05-21T08:51:20.396Z' customField123: 123 + customComment123: Why is the value 123? diff --git a/docs/api/apiv3/components/examples/program_body.yml b/docs/api/apiv3/components/examples/program_body.yml index 41d26bd80dde..ee52497bf4f2 100644 --- a/docs/api/apiv3/components/examples/program_body.yml +++ b/docs/api/apiv3/components/examples/program_body.yml @@ -7,6 +7,7 @@ value: description: raw: Lorem **ipsum** dolor sit amet customField123: 123 + customComment123: Because it is 123! _links: parent: href: "/api/v3/programs/123" diff --git a/docs/api/apiv3/components/examples/project.yml b/docs/api/apiv3/components/examples/project.yml index e1a6f7645b55..3b6d8a194800 100644 --- a/docs/api/apiv3/components/examples/project.yml +++ b/docs/api/apiv3/components/examples/project.yml @@ -54,3 +54,4 @@ value: createdAt: '2014-05-21T08:51:20.396Z' updatedAt: '2014-05-21T08:51:20.396Z' customField123: 123 + customComment123: Why is the value 123? diff --git a/docs/api/apiv3/components/examples/project_body.yml b/docs/api/apiv3/components/examples/project_body.yml index 2ffe05a69348..2d1584220cab 100644 --- a/docs/api/apiv3/components/examples/project_body.yml +++ b/docs/api/apiv3/components/examples/project_body.yml @@ -7,6 +7,7 @@ value: description: raw: Lorem **ipsum** dolor sit amet customField123: 123 + customComment123: Because it is 123! _links: parent: href: "/api/v3/projects/123" diff --git a/docs/api/apiv3/components/schemas/portfolio_model.yml b/docs/api/apiv3/components/schemas/portfolio_model.yml index 3dc4a8f05432..1e8191e4c40f 100644 --- a/docs/api/apiv3/components/schemas/portfolio_model.yml +++ b/docs/api/apiv3/components/schemas/portfolio_model.yml @@ -2,6 +2,7 @@ --- allOf: - $ref: "./custom_field_properties.yml" + - $ref: "./custom_comment_properties.yml" - type: object properties: _type: diff --git a/docs/api/apiv3/components/schemas/program_model.yml b/docs/api/apiv3/components/schemas/program_model.yml index 304565067355..1abe73e4e0d2 100644 --- a/docs/api/apiv3/components/schemas/program_model.yml +++ b/docs/api/apiv3/components/schemas/program_model.yml @@ -2,6 +2,7 @@ --- allOf: - $ref: "./custom_field_properties.yml" + - $ref: "./custom_comment_properties.yml" - type: object properties: _type: diff --git a/docs/api/apiv3/components/schemas/project_model.yml b/docs/api/apiv3/components/schemas/project_model.yml index 32019ebd7084..4a1c3fd3871d 100644 --- a/docs/api/apiv3/components/schemas/project_model.yml +++ b/docs/api/apiv3/components/schemas/project_model.yml @@ -2,6 +2,7 @@ --- allOf: - $ref: "./custom_field_properties.yml" + - $ref: "./custom_comment_properties.yml" - type: object properties: _type: diff --git a/docs/api/apiv3/components/schemas/workspaces_schema_model.yml b/docs/api/apiv3/components/schemas/workspaces_schema_model.yml index ab2bd48316de..3ecfab3bccac 100644 --- a/docs/api/apiv3/components/schemas/workspaces_schema_model.yml +++ b/docs/api/apiv3/components/schemas/workspaces_schema_model.yml @@ -96,6 +96,8 @@ properties: patternProperties: "^customField\\d+$": $ref: './schema_property_model.yml' + "^customComment\\d+$": + $ref: './schema_property_model.yml' example: _type: Schema @@ -232,6 +234,12 @@ example: hasDefault: false writable: true visibility: default + customComment35: + type: String + name: Text project custom field comment + required: false + hasDefault: false + writable: true _links: self: href: "/api/v3/workspaces/schema" From 47207e2141949f061cb6a34b4372eba317ddcb74 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Thu, 26 Feb 2026 20:58:28 +0100 Subject: [PATCH 09/32] add custom field properties to group, time entry, user and work package schemas --- .../apiv3/components/schemas/group_model.yml | 1 + .../components/schemas/time_entry_model.yml | 336 +++--- .../apiv3/components/schemas/user_model.yml | 1 + .../components/schemas/work_package_model.yml | 1050 +++++++++-------- 4 files changed, 697 insertions(+), 691 deletions(-) diff --git a/docs/api/apiv3/components/schemas/group_model.yml b/docs/api/apiv3/components/schemas/group_model.yml index 01d425860491..47ab1a98665a 100644 --- a/docs/api/apiv3/components/schemas/group_model.yml +++ b/docs/api/apiv3/components/schemas/group_model.yml @@ -2,6 +2,7 @@ --- allOf: - $ref: './principal_model.yml' + - $ref: "./custom_field_properties.yml" - type: object required: - _type diff --git a/docs/api/apiv3/components/schemas/time_entry_model.yml b/docs/api/apiv3/components/schemas/time_entry_model.yml index 502a25f454bf..e005cc937dfc 100644 --- a/docs/api/apiv3/components/schemas/time_entry_model.yml +++ b/docs/api/apiv3/components/schemas/time_entry_model.yml @@ -1,171 +1,173 @@ # Schema: TimeEntryModel --- -type: object -properties: - id: - type: integer - description: The id of the time entry - minimum: 1 - comment: - allOf: - - $ref: './formattable.yml' - - description: A comment to the time entry - spentOn: - type: string - format: date - description: The date the expenditure is booked for - hours: - type: string - format: duration - description: The time quantifying the expenditure - ongoing: - type: boolean - description: Whether the time entry is actively tracking time - createdAt: - type: string - format: date-time - description: The time the time entry was created - startTime: - type: - - string - - "null" - format: date-time - description: |- - The time the time entry was started, or null if the time entry does not have a start time. - - The time is returned as UTC time, if presented to the user it should be converted to the user's timezone. - - This field is only available if the global `allow_tracking_start_and_end_times` setting is enabled. - endTime: - type: - - string - - "null" - format: date-time - description: |- - The time the time entry was ended, or null if the time entry does not have a start time. - - The time is returned as UTC time, if presented to the user it should be converted to the user's timezone. - - This field is only available if the global `allow_tracking_start_and_end_times` setting is enabled. - updatedAt: - type: string - format: date-time - description: The time the time entry was last updated - _links: - type: object - required: - - self - - project - - user - - activity - - entity +allOf: + - $ref: "./custom_field_properties.yml" + - type: object properties: - self: + id: + type: integer + description: The id of the time entry + minimum: 1 + comment: allOf: - - "$ref": "./link.yml" - - description: |- - This time entry - - **Resource**: TimeEntry - updateImmediately: - allOf: - - "$ref": "./link.yml" - - description: |- - Directly perform edits on this time entry - - # Conditions - - **Permission**: 'edit time entries' or 'edit own time entries' if the time entry belongs to the user - update: - allOf: - - "$ref": "./link.yml" - - description: |- - Form endpoint that aids in preparing and performing edits on a TimeEntry - - # Conditions - - **Permission**: 'edit time entries' or 'edit own time entries' if the time entry belongs to the user - delete: - allOf: - - "$ref": "./link.yml" - - description: |- - Delete this time entry - - # Conditions - - **Permission**: 'edit time entries' or 'edit own time entries' if the time entry belongs to the user - schema: - allOf: - - "$ref": "./link.yml" - - description: |- - The time entry schema - - **Resource**: Schema - project: - allOf: - - "$ref": "./link.yml" - - description: |- - The project the time entry is bundled in. The project might be different from the work package's project once the workPackage is moved. - - **Resource**: Project - entity: - allOf: - - "$ref": "./link.yml" - - description: |- - The entity the time entry is created on - - **Resource**: WorkPackage, Meeting - user: - allOf: - - "$ref": "./link.yml" - - description: |- - The user the time entry tracks expenditures for - - **Resource**: User - activity: - allOf: - - "$ref": "./link.yml" - - description: |- - The time entry activity the time entry is categorized as - - **Resource**: TimeEntriesActivity - -example: - _type: TimeEntry - id: 42 - comment: - format: plain - raw: "The force shall set me free." - html: "

The force shall set me free.

" - spentOn: "2023-01-11" - hours: "PT4H" - startTime: "2023-01-11T09:58:00.000Z" - endTime: "2023-01-11T13:58:00.000Z" - createdAt: "2023-01-11T13:58:24.927Z" - updatedAt: "2023-01-11T13:58:24.927Z" - _links: - self: - href: "/api/v3/time_entries/42" - updateImmediately: - href: "/api/v3/time_entries/42" - method: patch - update: - href: "/api/v3/time_entries/42/form" - method: post - delete: - href: "/api/v3/time_entries/42" - method: delete - schema: - href: "/api/v3/time_entries/schema" - project: - href: "/api/v3/projects/11" - title: DeathStarV2 - entity: - href: "/api/v3/work_packages/77" - title: Build new hangar - user: - href: "/api/v3/users/3" - title: Darth Vader - activity: - href: "/api/v3/time_entries/activities/1" - title: Management + - $ref: './formattable.yml' + - description: A comment to the time entry + spentOn: + type: string + format: date + description: The date the expenditure is booked for + hours: + type: string + format: duration + description: The time quantifying the expenditure + ongoing: + type: boolean + description: Whether the time entry is actively tracking time + createdAt: + type: string + format: date-time + description: The time the time entry was created + startTime: + type: + - string + - "null" + format: date-time + description: |- + The time the time entry was started, or null if the time entry does not have a start time. + + The time is returned as UTC time, if presented to the user it should be converted to the user's timezone. + + This field is only available if the global `allow_tracking_start_and_end_times` setting is enabled. + endTime: + type: + - string + - "null" + format: date-time + description: |- + The time the time entry was ended, or null if the time entry does not have a start time. + + The time is returned as UTC time, if presented to the user it should be converted to the user's timezone. + + This field is only available if the global `allow_tracking_start_and_end_times` setting is enabled. + updatedAt: + type: string + format: date-time + description: The time the time entry was last updated + _links: + type: object + required: + - self + - project + - user + - activity + - entity + properties: + self: + allOf: + - "$ref": "./link.yml" + - description: |- + This time entry + + **Resource**: TimeEntry + updateImmediately: + allOf: + - "$ref": "./link.yml" + - description: |- + Directly perform edits on this time entry + + # Conditions + + **Permission**: 'edit time entries' or 'edit own time entries' if the time entry belongs to the user + update: + allOf: + - "$ref": "./link.yml" + - description: |- + Form endpoint that aids in preparing and performing edits on a TimeEntry + + # Conditions + + **Permission**: 'edit time entries' or 'edit own time entries' if the time entry belongs to the user + delete: + allOf: + - "$ref": "./link.yml" + - description: |- + Delete this time entry + + # Conditions + + **Permission**: 'edit time entries' or 'edit own time entries' if the time entry belongs to the user + schema: + allOf: + - "$ref": "./link.yml" + - description: |- + The time entry schema + + **Resource**: Schema + project: + allOf: + - "$ref": "./link.yml" + - description: |- + The project the time entry is bundled in. The project might be different from the work package's project once the workPackage is moved. + + **Resource**: Project + entity: + allOf: + - "$ref": "./link.yml" + - description: |- + The entity the time entry is created on + + **Resource**: WorkPackage, Meeting + user: + allOf: + - "$ref": "./link.yml" + - description: |- + The user the time entry tracks expenditures for + + **Resource**: User + activity: + allOf: + - "$ref": "./link.yml" + - description: |- + The time entry activity the time entry is categorized as + + **Resource**: TimeEntriesActivity + + example: + _type: TimeEntry + id: 42 + comment: + format: plain + raw: "The force shall set me free." + html: "

The force shall set me free.

" + spentOn: "2023-01-11" + hours: "PT4H" + startTime: "2023-01-11T09:58:00.000Z" + endTime: "2023-01-11T13:58:00.000Z" + createdAt: "2023-01-11T13:58:24.927Z" + updatedAt: "2023-01-11T13:58:24.927Z" + _links: + self: + href: "/api/v3/time_entries/42" + updateImmediately: + href: "/api/v3/time_entries/42" + method: patch + update: + href: "/api/v3/time_entries/42/form" + method: post + delete: + href: "/api/v3/time_entries/42" + method: delete + schema: + href: "/api/v3/time_entries/schema" + project: + href: "/api/v3/projects/11" + title: DeathStarV2 + entity: + href: "/api/v3/work_packages/77" + title: Build new hangar + user: + href: "/api/v3/users/3" + title: Darth Vader + activity: + href: "/api/v3/time_entries/activities/1" + title: Management diff --git a/docs/api/apiv3/components/schemas/user_model.yml b/docs/api/apiv3/components/schemas/user_model.yml index 99fe2cefac21..26ff2b818453 100644 --- a/docs/api/apiv3/components/schemas/user_model.yml +++ b/docs/api/apiv3/components/schemas/user_model.yml @@ -2,6 +2,7 @@ --- allOf: - $ref: './principal_model.yml' + - $ref: "./custom_field_properties.yml" - type: object required: - _type diff --git a/docs/api/apiv3/components/schemas/work_package_model.yml b/docs/api/apiv3/components/schemas/work_package_model.yml index f0cf0da72a2a..69124fddef0b 100644 --- a/docs/api/apiv3/components/schemas/work_package_model.yml +++ b/docs/api/apiv3/components/schemas/work_package_model.yml @@ -1,539 +1,541 @@ # Schema: WorkPackageModel --- -type: object -required: - - subject - - _links -properties: - id: - type: integer - description: Work package id - readOnly: true - minimum: 1 - lockVersion: - type: integer - description: The version of the item as used for optimistic locking - readOnly: true - subject: - type: string - description: Work package subject - _type: - type: string - enum: - - WorkPackage - readOnly: true - description: - allOf: - - $ref: "./formattable.yml" - - description: The work package description - scheduleManually: - type: boolean - description: |- - Uses manual scheduling mode when true (default). Uses automatic scheduling - mode when false. Can be automatic only when predecessors or children are - present. - readonly: - type: boolean - description: If true, the work package is in a readonly status so with the exception of the status, no other property can be altered. - startDate: - type: - - "string" - - "null" - format: date - description: Scheduled beginning of a work package - dueDate: - type: - - "string" - - "null" - format: date - description: Scheduled end of a work package - date: - type: - - "string" - - "null" - format: date - description: Date on which a milestone is achieved - derivedStartDate: - type: - - "string" - - "null" - format: date - description: Similar to start date but is not set by a client but rather deduced - by the work packages' descendants. If manual scheduleManually is active, the - two dates can deviate. - readOnly: true - derivedDueDate: - type: - - "string" - - "null" - format: date - description: Similar to due date but is not set by a client but rather deduced - by the work packages' descendants. If manual scheduleManually is active, the - two dates can deviate. - readOnly: true - duration: - type: - - "string" - - "null" - format: duration - description: |- - **(NOT IMPLEMENTED)** The amount of time in hours the work package needs to be completed. - Not available for milestone type of work packages. - readOnly: true - estimatedTime: - type: - - "string" - - "null" - format: duration - description: Time a work package likely needs to be completed excluding its descendants - derivedEstimatedTime: - type: - - "string" - - "null" - format: duration - description: Time a work package likely needs to be completed including its descendants - readOnly: true - ignoreNonWorkingDays: - type: boolean - description: |- - **(NOT IMPLEMENTED)** When scheduling, whether or not to ignore the non working days being defined. - A work package with the flag set to true will be allowed to be scheduled to a non working day. - readOnly: true - spentTime: - type: string - format: duration - description: |- - The time booked for this work package by users working on it - - # Conditions - - **Permission** view time entries - readOnly: true - percentageDone: - type: - - "integer" - - "null" - description: Amount of total completion for a work package - minimum: 0 - maximum: 100 - derivedPercentageDone: - type: - - "integer" - - "null" - description: Amount of total completion for a work package derived from itself and its descendant work packages - readOnly: true - minimum: 0 - maximum: 100 - createdAt: - type: string - format: date-time - description: Time of creation. Can be writable by admins with the `apiv3_write_readonly_attributes` setting enabled. - readOnly: true - updatedAt: - type: string - format: date-time - description: Time of the most recent change to the work package. - readOnly: true - _links: - type: object +allOf: + - $ref: "./custom_field_properties.yml" + - type: object required: - - self - - schema - - ancestors - - author - - priority - - project - - status - - type + - subject + - _links properties: - addComment: - allOf: - - $ref: "./link.yml" - - description: |- - Post comment to WP - - # Conditions - - **Permission**: add work package notes - readOnly: true - addRelation: - allOf: - - $ref: "./link.yml" - - description: |- - Adds a relation to this work package. - - # Conditions - - **Permission**: manage wp relations - readOnly: true - addWatcher: - allOf: - - $ref: "./link.yml" - - description: |- - Add any user to WP watchers - - # Conditions - - **Permission**: add watcher - readOnly: true - customActions: - type: array + id: + type: integer + description: Work package id readOnly: true - items: - allOf: - - $ref: "./link.yml" - - description: |- - A predefined action that can be applied to the work package. - - **Resource**: CustomAction - readOnly: true - previewMarkup: - allOf: - - $ref: "./link.yml" - - description: Post markup (in markdown) here to receive an HTML-rendered - response - readOnly: true - removeWatcher: - allOf: - - $ref: "./link.yml" - - description: |- - Remove any user from WP watchers - - # Conditions - - **Permission**: delete watcher - readOnly: true - delete: - allOf: - - $ref: "./link.yml" - - description: |- - Delete this work package - - # Conditions - - **Permission**: delete_work_packages - readOnly: true - logTime: - allOf: - - $ref: "./link.yml" - - description: |- - Create time entries on the work package - - # Conditions - - **Permission**: log_time or log_own_time - readOnly: true - move: - allOf: - - $ref: "./link.yml" - - description: |- - Link to page for moving this work package - - # Conditions - - **Permission**: move_work_packages - readOnly: true - copy: - allOf: - - $ref: "./link.yml" - - description: |- - Link to page for copying this work package - - # Conditions - - **Permission**: add_work_packages - readOnly: true - unwatch: - allOf: - - $ref: "./link.yml" - - description: |- - Remove current user from WP watchers - - # Conditions - - logged in; watching - readOnly: true - update: - allOf: - - $ref: "./link.yml" - - description: |- - Form endpoint that aids in preparing and performing edits on a work package - - # Conditions - - **Permission**: edit work package - readOnly: true - updateImmediately: - allOf: - - $ref: "./link.yml" - - description: |- - Directly perform edits on a work package - - # Conditions - - **Permission**: edit work package - readOnly: true - watch: - allOf: - - $ref: "./link.yml" - - description: |- - Add current user to WP watchers - - # Conditions - - logged in; not watching - readOnly: true - self: - allOf: - - $ref: "./link.yml" - - description: |- - This work package - - **Resource**: WorkPackage - readOnly: true - schema: - allOf: - - $ref: "./link.yml" - - description: |- - The schema of this work package - - **Resource**: Schema - readOnly: true - ancestors: - type: array + minimum: 1 + lockVersion: + type: integer + description: The version of the item as used for optimistic locking readOnly: true - items: - allOf: - - $ref: "./link.yml" - - description: |- - A visible ancestor work package of the current work package. - - **Resource**: WorkPackage - - # Conditions - - **Permission** view work packages - readOnly: true - attachments: - allOf: - - $ref: "./link.yml" - - description: |- - The files attached to this work package - - **Resource**: Collection - - # Conditions - - - **Setting**: deactivate_work_package_attachments set to false in related workspace - addAttachment: - allOf: - - $ref: "./link.yml" - - description: |- - Attach a file to the work package - - # Conditions - - - **Permission**: edit work package - readOnly: true - prepareAttachment: - allOf: - - $ref: "./link.yml" - - description: |- - Attach a file to the work package - - # Conditions - - - **Setting**: direct uploads enabled - readOnly: true - author: - allOf: - - $ref: "./link.yml" - - description: |- - The person that created the work package - - **Resource**: User - readOnly: true - assignee: - allOf: - - $ref: "./link.yml" - - description: |- - The person that is intended to work on the work package - - **Resource**: User - availableWatchers: - allOf: - - $ref: "./link.yml" - - description: |- - All users that can be added to the work package as watchers. - - **Resource**: User - - # Conditions - - **Permission** add work package watchers - readOnly: true - budget: - allOf: - - $ref: "./link.yml" - - description: |- - The budget this work package is associated to - - **Resource**: Budget - - # Conditions - - **Permission** view cost objects - category: - allOf: - - $ref: "./link.yml" - - description: |- - The category of the work package - - **Resource**: Category - children: - type: array + subject: + type: string + description: Work package subject + _type: + type: string + enum: + - WorkPackage readOnly: true - items: - allOf: - - $ref: "./link.yml" - - description: |- - A visible child work package of the current work package. - - **Resource**: WorkPackage - - # Conditions - - **Permission** view work packages - readOnly: true - addFileLink: - allOf: - - $ref: './link.yml' - - description: |- - Add a file link to the work package - - # Conditions - - **Permission**: manage_file_links - fileLinks: - allOf: - - $ref: './link.yml' - - description: |- - Gets the file link collection of this work package - - # Conditions - - **Permission**: view_file_links - parent: - allOf: - - $ref: "./link.yml" - - description: |- - Parent work package - - **Resource**: WorkPackage - priority: - allOf: - - $ref: "./link.yml" - - description: |- - The priority of the work package - - **Resource**: Priority - project: - allOf: - - $ref: "./link.yml" - - description: |- - The workspace to which the work package belongs - - **Resource**: Workspace - projectPhase: - allOf: - - $ref: "./link.yml" - - description: |- - The project phase to which the work package belongs - - **Resource**: ProjectPhase - projectPhaseDefinition: - allOf: - - $ref: "./link.yml" - - description: |- - The definition of the project phase the work package belongs to - - **Resource**: ProjectPhaseDefinition - responsible: - allOf: - - $ref: "./link.yml" - - description: |- - The person that is responsible for the overall outcome - - **Resource**: User - relations: - allOf: - - $ref: "./link.yml" - - description: |- - Relations this work package is involved in - - **Resource**: Relation - - # Conditions - - **Permission** view work packages - readOnly: true - revisions: - allOf: - - $ref: "./link.yml" - - description: |- - Revisions that are referencing the work package - - **Resource**: Revision + description: + allOf: + - $ref: "./formattable.yml" + - description: The work package description + scheduleManually: + type: boolean + description: |- + Uses manual scheduling mode when true (default). Uses automatic scheduling + mode when false. Can be automatic only when predecessors or children are + present. + readonly: + type: boolean + description: If true, the work package is in a readonly status so with the exception of the status, no other property can be altered. + startDate: + type: + - "string" + - "null" + format: date + description: Scheduled beginning of a work package + dueDate: + type: + - "string" + - "null" + format: date + description: Scheduled end of a work package + date: + type: + - "string" + - "null" + format: date + description: Date on which a milestone is achieved + derivedStartDate: + type: + - "string" + - "null" + format: date + description: Similar to start date but is not set by a client but rather deduced + by the work packages' descendants. If manual scheduleManually is active, the + two dates can deviate. + readOnly: true + derivedDueDate: + type: + - "string" + - "null" + format: date + description: Similar to due date but is not set by a client but rather deduced + by the work packages' descendants. If manual scheduleManually is active, the + two dates can deviate. + readOnly: true + duration: + type: + - "string" + - "null" + format: duration + description: |- + **(NOT IMPLEMENTED)** The amount of time in hours the work package needs to be completed. + Not available for milestone type of work packages. + readOnly: true + estimatedTime: + type: + - "string" + - "null" + format: duration + description: Time a work package likely needs to be completed excluding its descendants + derivedEstimatedTime: + type: + - "string" + - "null" + format: duration + description: Time a work package likely needs to be completed including its descendants + readOnly: true + ignoreNonWorkingDays: + type: boolean + description: |- + **(NOT IMPLEMENTED)** When scheduling, whether or not to ignore the non working days being defined. + A work package with the flag set to true will be allowed to be scheduled to a non working day. + readOnly: true + spentTime: + type: string + format: duration + description: |- + The time booked for this work package by users working on it - # Conditions + # Conditions - **Permission** view changesets + **Permission** view time entries + readOnly: true + percentageDone: + type: + - "integer" + - "null" + description: Amount of total completion for a work package + minimum: 0 + maximum: 100 + derivedPercentageDone: + type: + - "integer" + - "null" + description: Amount of total completion for a work package derived from itself and its descendant work packages + readOnly: true + minimum: 0 + maximum: 100 + createdAt: + type: string + format: date-time + description: Time of creation. Can be writable by admins with the `apiv3_write_readonly_attributes` setting enabled. + readOnly: true + updatedAt: + type: string + format: date-time + description: Time of the most recent change to the work package. + readOnly: true + _links: + type: object + required: + - self + - schema + - ancestors + - author + - priority + - project + - status + - type + properties: + addComment: + allOf: + - $ref: "./link.yml" + - description: |- + Post comment to WP + + # Conditions + + **Permission**: add work package notes + readOnly: true + addRelation: + allOf: + - $ref: "./link.yml" + - description: |- + Adds a relation to this work package. + + # Conditions + + **Permission**: manage wp relations + readOnly: true + addWatcher: + allOf: + - $ref: "./link.yml" + - description: |- + Add any user to WP watchers + + # Conditions + + **Permission**: add watcher + readOnly: true + customActions: + type: array readOnly: true - status: - allOf: - - $ref: "./link.yml" - - description: |- - The current status of the work package - - **Resource**: Status - timeEntries: - allOf: - - $ref: "./link.yml" - - description: |- - All time entries logged on the work package. Please note that this is a link to an HTML resource for now and as such, the link is subject to change. - - **Resource**: N/A - - # Conditions - - **Permission** view time entries + items: + allOf: + - $ref: "./link.yml" + - description: |- + A predefined action that can be applied to the work package. + + **Resource**: CustomAction + readOnly: true + previewMarkup: + allOf: + - $ref: "./link.yml" + - description: Post markup (in markdown) here to receive an HTML-rendered + response + readOnly: true + removeWatcher: + allOf: + - $ref: "./link.yml" + - description: |- + Remove any user from WP watchers + + # Conditions + + **Permission**: delete watcher + readOnly: true + delete: + allOf: + - $ref: "./link.yml" + - description: |- + Delete this work package + + # Conditions + + **Permission**: delete_work_packages + readOnly: true + logTime: + allOf: + - $ref: "./link.yml" + - description: |- + Create time entries on the work package + + # Conditions + + **Permission**: log_time or log_own_time + readOnly: true + move: + allOf: + - $ref: "./link.yml" + - description: |- + Link to page for moving this work package + + # Conditions + + **Permission**: move_work_packages + readOnly: true + copy: + allOf: + - $ref: "./link.yml" + - description: |- + Link to page for copying this work package + + # Conditions + + **Permission**: add_work_packages + readOnly: true + unwatch: + allOf: + - $ref: "./link.yml" + - description: |- + Remove current user from WP watchers + + # Conditions + + logged in; watching + readOnly: true + update: + allOf: + - $ref: "./link.yml" + - description: |- + Form endpoint that aids in preparing and performing edits on a work package + + # Conditions + + **Permission**: edit work package + readOnly: true + updateImmediately: + allOf: + - $ref: "./link.yml" + - description: |- + Directly perform edits on a work package + + # Conditions + + **Permission**: edit work package + readOnly: true + watch: + allOf: + - $ref: "./link.yml" + - description: |- + Add current user to WP watchers + + # Conditions + + logged in; not watching + readOnly: true + self: + allOf: + - $ref: "./link.yml" + - description: |- + This work package + + **Resource**: WorkPackage + readOnly: true + schema: + allOf: + - $ref: "./link.yml" + - description: |- + The schema of this work package + + **Resource**: Schema + readOnly: true + ancestors: + type: array readOnly: true - type: - allOf: - - $ref: "./link.yml" - - description: |- - The type of the work package - - **Resource**: Type - version: - allOf: - - $ref: "./link.yml" - - description: |- - The version associated to the work package - - **Resource**: Version - watchers: - allOf: - - $ref: "./link.yml" - - description: |- - All users that are currently watching this work package - - **Resource**: Collection - - # Conditions - - **Permission** view work package watchers + items: + allOf: + - $ref: "./link.yml" + - description: |- + A visible ancestor work package of the current work package. + + **Resource**: WorkPackage + + # Conditions + + **Permission** view work packages + readOnly: true + attachments: + allOf: + - $ref: "./link.yml" + - description: |- + The files attached to this work package + + **Resource**: Collection + + # Conditions + + - **Setting**: deactivate_work_package_attachments set to false in related workspace + addAttachment: + allOf: + - $ref: "./link.yml" + - description: |- + Attach a file to the work package + + # Conditions + + - **Permission**: edit work package + readOnly: true + prepareAttachment: + allOf: + - $ref: "./link.yml" + - description: |- + Attach a file to the work package + + # Conditions + + - **Setting**: direct uploads enabled + readOnly: true + author: + allOf: + - $ref: "./link.yml" + - description: |- + The person that created the work package + + **Resource**: User + readOnly: true + assignee: + allOf: + - $ref: "./link.yml" + - description: |- + The person that is intended to work on the work package + + **Resource**: User + availableWatchers: + allOf: + - $ref: "./link.yml" + - description: |- + All users that can be added to the work package as watchers. + + **Resource**: User + + # Conditions + + **Permission** add work package watchers + readOnly: true + budget: + allOf: + - $ref: "./link.yml" + - description: |- + The budget this work package is associated to + + **Resource**: Budget + + # Conditions + + **Permission** view cost objects + category: + allOf: + - $ref: "./link.yml" + - description: |- + The category of the work package + + **Resource**: Category + children: + type: array readOnly: true + items: + allOf: + - $ref: "./link.yml" + - description: |- + A visible child work package of the current work package. + + **Resource**: WorkPackage + + # Conditions + + **Permission** view work packages + readOnly: true + addFileLink: + allOf: + - $ref: './link.yml' + - description: |- + Add a file link to the work package + + # Conditions + + **Permission**: manage_file_links + fileLinks: + allOf: + - $ref: './link.yml' + - description: |- + Gets the file link collection of this work package + + # Conditions + + **Permission**: view_file_links + parent: + allOf: + - $ref: "./link.yml" + - description: |- + Parent work package + + **Resource**: WorkPackage + priority: + allOf: + - $ref: "./link.yml" + - description: |- + The priority of the work package + + **Resource**: Priority + project: + allOf: + - $ref: "./link.yml" + - description: |- + The workspace to which the work package belongs + + **Resource**: Workspace + projectPhase: + allOf: + - $ref: "./link.yml" + - description: |- + The project phase to which the work package belongs + + **Resource**: ProjectPhase + projectPhaseDefinition: + allOf: + - $ref: "./link.yml" + - description: |- + The definition of the project phase the work package belongs to + + **Resource**: ProjectPhaseDefinition + responsible: + allOf: + - $ref: "./link.yml" + - description: |- + The person that is responsible for the overall outcome + + **Resource**: User + relations: + allOf: + - $ref: "./link.yml" + - description: |- + Relations this work package is involved in + + **Resource**: Relation + + # Conditions + + **Permission** view work packages + readOnly: true + revisions: + allOf: + - $ref: "./link.yml" + - description: |- + Revisions that are referencing the work package + + **Resource**: Revision + + # Conditions + + **Permission** view changesets + readOnly: true + status: + allOf: + - $ref: "./link.yml" + - description: |- + The current status of the work package + + **Resource**: Status + timeEntries: + allOf: + - $ref: "./link.yml" + - description: |- + All time entries logged on the work package. Please note that this is a link to an HTML resource for now and as such, the link is subject to change. + + **Resource**: N/A + + # Conditions + + **Permission** view time entries + readOnly: true + type: + allOf: + - $ref: "./link.yml" + - description: |- + The type of the work package + + **Resource**: Type + version: + allOf: + - $ref: "./link.yml" + - description: |- + The version associated to the work package + + **Resource**: Version + watchers: + allOf: + - $ref: "./link.yml" + - description: |- + All users that are currently watching this work package + + **Resource**: Collection + + # Conditions + + **Permission** view work package watchers + readOnly: true example: _type: WorkPackage From 5e103fe92acd59b5f4e8c8ca9153866467779c9c Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Thu, 5 Mar 2026 17:30:42 +0100 Subject: [PATCH 10/32] [#72831] Cleanup project overview feature specs https://community.openproject.org/work_packages/72831 From dc0cdd1b811aeabb17ff1012c323c10add770961 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Wed, 25 Feb 2026 21:32:21 +0100 Subject: [PATCH 11/32] use block of factory method in project custom fields overview shared context --- .../overview_page/shared_context.rb | 240 +++++++++--------- 1 file changed, 126 insertions(+), 114 deletions(-) diff --git a/spec/features/projects/project_custom_fields/overview_page/shared_context.rb b/spec/features/projects/project_custom_fields/overview_page/shared_context.rb index b86de1c6462e..7469229b58b9 100644 --- a/spec/features/projects/project_custom_fields/overview_page/shared_context.rb +++ b/spec/features/projects/project_custom_fields/overview_page/shared_context.rb @@ -108,171 +108,180 @@ let!(:section_for_multi_select_fields) { create(:project_custom_field_section, name: "Multi select fields") } let!(:boolean_project_custom_field) do - field = create(:boolean_project_custom_field, projects: [project], - name: "Boolean field", - project_custom_field_section: section_for_input_fields) - - create(:custom_value, customized: project, custom_field: field, value: true) - - field + create( + :boolean_project_custom_field, + projects: [project], + name: "Boolean field", + project_custom_field_section: section_for_input_fields + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: true) + end end let!(:string_project_custom_field) do - field = create(:string_project_custom_field, projects: [project], - name: "String field", - project_custom_field_section: section_for_input_fields) - - create(:custom_value, customized: project, custom_field: field, value: "Foo") - - field + create( + :string_project_custom_field, + projects: [project], + name: "String field", + project_custom_field_section: section_for_input_fields + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: "Foo") + end end let!(:integer_project_custom_field) do - field = create(:integer_project_custom_field, projects: [project], - name: "Integer field", - project_custom_field_section: section_for_input_fields) - - create(:custom_value, customized: project, custom_field: field, value: 123) - - field + create( + :integer_project_custom_field, + projects: [project], + name: "Integer field", + project_custom_field_section: section_for_input_fields + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: 123) + end end let!(:float_project_custom_field) do - field = create(:float_project_custom_field, projects: [project], - name: "Float field", - project_custom_field_section: section_for_input_fields) - - create(:custom_value, customized: project, custom_field: field, value: 123.456) - - field + create( + :float_project_custom_field, + projects: [project], + name: "Float field", + project_custom_field_section: section_for_input_fields + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: 123.456) + end end let!(:date_project_custom_field) do - field = create(:date_project_custom_field, projects: [project], - name: "Date field", - project_custom_field_section: section_for_input_fields) - - create(:custom_value, customized: project, custom_field: field, value: Date.new(2024, 1, 1)) - - field + create( + :date_project_custom_field, + projects: [project], + name: "Date field", + project_custom_field_section: section_for_input_fields + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: Date.new(2024, 1, 1)) + end end let!(:link_project_custom_field) do - field = create(:link_project_custom_field, projects: [project], - name: "Link field", - project_custom_field_section: section_for_input_fields) - - create(:custom_value, customized: project, custom_field: field, value: "https://www.openproject.org") - - field + create( + :link_project_custom_field, + projects: [project], + name: "Link field", + project_custom_field_section: section_for_input_fields + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: "https://www.openproject.org") + end end let!(:text_project_custom_field) do - field = create(:text_project_custom_field, projects: [project], - name: "Text field", - project_custom_field_section: section_for_input_fields) - - create(:custom_value, customized: project, custom_field: field, value: "Lorem\n\nipsum") - - field + create( + :text_project_custom_field, + projects: [project], + name: "Text field", + project_custom_field_section: section_for_input_fields + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: "Lorem\n\nipsum") + end end let!(:calculated_from_int_project_custom_field) do - field = create( + create( :calculated_value_project_custom_field, :skip_validations, formula: "{{cf_#{integer_project_custom_field.id}}} * 2", projects: [project], name: "Calculated field using int", project_custom_field_section: section_for_input_fields - ) - - create(:custom_value, customized: project, custom_field: field, value: 234) - - field + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: 234) + end end let!(:calculated_from_int_and_float_project_custom_field) do - field = create( + create( :calculated_value_project_custom_field, :skip_validations, formula: "{{cf_#{float_project_custom_field.id}}} * {{cf_#{integer_project_custom_field.id}}}", projects: [project], name: "Calculated field using int and float", project_custom_field_section: section_for_input_fields - ) - - create(:custom_value, customized: project, custom_field: field, value: 123 * 123.456) - - field + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: 123 * 123.456) + end end let!(:list_project_custom_field) do - field = create(:list_project_custom_field, projects: [project], - name: "List field", - project_custom_field_section: section_for_select_fields, - possible_values: ["Option 1", "Option 2", "Option 3"]) - - create(:custom_value, customized: project, custom_field: field, value: field.custom_options.first) - - field + create( + :list_project_custom_field, + projects: [project], + name: "List field", + project_custom_field_section: section_for_select_fields, + possible_values: ["Option 1", "Option 2", "Option 3"] + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: field.custom_options.first) + end end let!(:version_project_custom_field) do - field = create(:version_project_custom_field, projects: [project], - name: "Version field", - project_custom_field_section: section_for_select_fields) - - create(:custom_value, customized: project, custom_field: field, value: first_version.id) - - field + create( + :version_project_custom_field, + projects: [project], + name: "Version field", + project_custom_field_section: section_for_select_fields + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: first_version.id) + end end let!(:user_project_custom_field) do - field = create(:user_project_custom_field, projects: [project], - name: "User field", - project_custom_field_section: section_for_select_fields) - - create(:custom_value, customized: project, custom_field: field, value: member_in_project.id) - - field + create( + :user_project_custom_field, + projects: [project], + name: "User field", + project_custom_field_section: section_for_select_fields + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: member_in_project.id) + end end let!(:multi_list_project_custom_field) do - field = create(:list_project_custom_field, projects: [project], - name: "Multi list field", - project_custom_field_section: section_for_multi_select_fields, - possible_values: ["Option 1", "Option 2", "Option 3"], - multi_value: true) - - create(:custom_value, customized: project, custom_field: field, value: field.custom_options.first.id) - create(:custom_value, customized: project, custom_field: field, value: field.custom_options.second.id) - - field + create( + :list_project_custom_field, + projects: [project], + name: "Multi list field", + project_custom_field_section: section_for_multi_select_fields, + possible_values: ["Option 1", "Option 2", "Option 3"], + multi_value: true + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: field.custom_options.first.id) + create(:custom_value, customized: project, custom_field: field, value: field.custom_options.second.id) + end end let!(:multi_version_project_custom_field) do - field = create(:version_project_custom_field, projects: [project], - name: "Multi version field", - project_custom_field_section: section_for_multi_select_fields, - multi_value: true) - - create(:custom_value, customized: project, custom_field: field, value: first_version.id) - create(:custom_value, customized: project, custom_field: field, value: second_version.id) - - field + create( + :version_project_custom_field, + projects: [project], + name: "Multi version field", + project_custom_field_section: section_for_multi_select_fields, + multi_value: true + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: first_version.id) + create(:custom_value, customized: project, custom_field: field, value: second_version.id) + end end let!(:multi_user_project_custom_field) do - field = create(:user_project_custom_field, projects: [project], - name: "Multi user field", - project_custom_field_section: section_for_multi_select_fields, - multi_value: true) - - create(:custom_value, customized: project, custom_field: field, value: member_in_project.id) - create(:custom_value, customized: project, custom_field: field, value: another_member_in_project.id) - - field + create( + :user_project_custom_field, + projects: [project], + name: "Multi user field", + project_custom_field_section: section_for_multi_select_fields, + multi_value: true + ) do |field| + create(:custom_value, customized: project, custom_field: field, value: member_in_project.id) + create(:custom_value, customized: project, custom_field: field, value: another_member_in_project.id) + end end let!(:sections) do @@ -321,8 +330,11 @@ let(:all_fields) { input_fields + select_fields + multi_select_fields + calculated_value_fields } let!(:boolean_project_custom_field_activated_in_other_project) do - create(:boolean_project_custom_field, projects: [other_project], - name: "Other Boolean field", - project_custom_field_section: section_for_input_fields) + create( + :boolean_project_custom_field, + projects: [other_project], + name: "Other Boolean field", + project_custom_field_section: section_for_input_fields + ) end end From 86f3b831b221520a09e7674dfee13e93709862a5 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Mon, 2 Mar 2026 20:20:44 +0100 Subject: [PATCH 12/32] use more general modal buttons instead of edit buttons in permissions spec --- .../overview_page/dialog/permission_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb index 7e0cac7063d3..80a32993c321 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb @@ -65,7 +65,7 @@ overview_page.visit_page end - it "does not show the edit buttons" do + it "does not show the modal buttons" do overview_page.within_project_attributes_sidebar do expect(page).to have_no_test_selector("[data-test-selector*='project-custom-field-modal-button-']") end @@ -81,7 +81,7 @@ overview_page.visit_page end - it "does not show the edit buttons" do + it "does not show the modal buttons" do overview_page.within_project_attributes_sidebar do expect(page).to have_no_css("[data-test-selector*='project-custom-field-modal-button-']") end @@ -94,7 +94,7 @@ overview_page.visit_page end - it "shows the edit buttons" do + it "shows the modal buttons" do overview_page.within_project_attributes_sidebar do expect(page).to have_css("[data-test-selector*='project-custom-field-modal-button-']", count: 13) end From 05d5c3140352ee70648c06c5c6adc59db6d7e843 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Mon, 2 Mar 2026 20:58:51 +0100 Subject: [PATCH 13/32] rename open_edit_dialog_for_custom_field helper to open_modal_for_custom_field --- .../dialog/attribute_help_texts_spec.rb | 20 ++--- .../overview_page/dialog/inputs_spec.rb | 74 +++++++++---------- .../overview_page/dialog/permission_spec.rb | 2 +- .../overview_page/dialog/render_spec.rb | 8 +- .../overview_page/dialog/update_spec.rb | 58 +++++++-------- .../overview_page/dialog/validation_spec.rb | 24 +++--- .../overview_page/sidebar_spec.rb | 4 +- .../overview_page/widget_spec.rb | 2 +- spec/support/pages/projects/show.rb | 2 +- 9 files changed, 97 insertions(+), 97 deletions(-) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/attribute_help_texts_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/attribute_help_texts_spec.rb index a8a65487363b..d221d016c4e7 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/attribute_help_texts_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/attribute_help_texts_spec.rb @@ -46,7 +46,7 @@ context "without attribute help texts defined" do it "shows field labels without help text link" do input_fields.each do |custom_field| - edit_dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + edit_dialog = overview_page.open_modal_for_custom_field(custom_field) edit_dialog.expect_title "Input fields" edit_dialog.expect_field_label_without_help_text custom_field.name edit_dialog.close @@ -65,7 +65,7 @@ it "shows field labels with help text link" do input_fields.each do |custom_field| - edit_dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + edit_dialog = overview_page.open_modal_for_custom_field(custom_field) edit_dialog.expect_title "Input fields" edit_dialog.expect_field_label_with_help_text custom_field.name edit_dialog.close @@ -74,7 +74,7 @@ context "without attachments" do it "shows help text modal on clicking help text link" do - edit_dialog = overview_page.open_edit_dialog_for_custom_field(date_project_custom_field) + edit_dialog = overview_page.open_modal_for_custom_field(date_project_custom_field) edit_dialog.expect_title "Input fields" edit_dialog.click_help_text_link_for_label "Date field" @@ -94,7 +94,7 @@ let!(:attachments) { create_list(:attachment, 2, container: integer_help_text) } it "shows help text modal, including attachments, on clicking help text link" do - edit_dialog = overview_page.open_edit_dialog_for_custom_field(integer_project_custom_field) + edit_dialog = overview_page.open_modal_for_custom_field(integer_project_custom_field) edit_dialog.expect_title "Input fields" edit_dialog.click_help_text_link_for_label "Integer field" @@ -128,7 +128,7 @@ context "without attribute help texts defined" do it "shows field labels without help text link" do select_fields.each do |custom_field| - edit_dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + edit_dialog = overview_page.open_modal_for_custom_field(custom_field) edit_dialog.expect_title "Select fields" edit_dialog.expect_field_label_without_help_text custom_field.name edit_dialog.close @@ -143,7 +143,7 @@ it "shows field labels with help text link" do select_fields.each do |custom_field| - edit_dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + edit_dialog = overview_page.open_modal_for_custom_field(custom_field) edit_dialog.expect_title "Select fields" edit_dialog.expect_field_label_with_help_text custom_field.name edit_dialog.close @@ -151,7 +151,7 @@ end it "shows help text modal on clicking help text link" do - edit_dialog = overview_page.open_edit_dialog_for_custom_field(user_project_custom_field) + edit_dialog = overview_page.open_modal_for_custom_field(user_project_custom_field) edit_dialog.expect_title "Select fields" edit_dialog.click_help_text_link_for_label "User field" @@ -171,7 +171,7 @@ context "without attribute help texts defined" do it "shows field labels without help text link" do multi_select_fields.each do |custom_field| - edit_dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + edit_dialog = overview_page.open_modal_for_custom_field(custom_field) edit_dialog.expect_title "Multi select fields" edit_dialog.expect_field_label_without_help_text custom_field.name edit_dialog.close @@ -192,7 +192,7 @@ it "shows field labels with help text link" do multi_select_fields.each do |custom_field| - edit_dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + edit_dialog = overview_page.open_modal_for_custom_field(custom_field) edit_dialog.expect_title "Multi select fields" edit_dialog.expect_field_label_with_help_text custom_field.name edit_dialog.close @@ -200,7 +200,7 @@ end it "shows help text modal on clicking help text link" do - edit_dialog = overview_page.open_edit_dialog_for_custom_field(multi_list_project_custom_field) + edit_dialog = overview_page.open_modal_for_custom_field(multi_list_project_custom_field) edit_dialog.expect_title "Multi select fields" edit_dialog.click_help_text_link_for_label "Multi list field" diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb index 3b51779c5fb7..74dc342946b2 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb @@ -45,7 +45,7 @@ describe "with input fields" do shared_examples "a custom field checkbox" do it "shows the correct value if given" do - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.within_async_content(close_after_yield: true) do if expected_initial_value @@ -59,7 +59,7 @@ it "is unchecked if no value and no default value is given" do custom_field.custom_values.destroy_all - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.within_async_content(close_after_yield: true) do expect(page).to have_no_checked_field(custom_field.name) @@ -71,7 +71,7 @@ custom_field.update!(default_value: true) - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.within_async_content(close_after_yield: true) do expect(page).to have_checked_field(custom_field.name) @@ -79,7 +79,7 @@ custom_field.update!(default_value: false) - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.within_async_content(close_after_yield: true) do expect(page).to have_no_checked_field(custom_field.name) @@ -89,7 +89,7 @@ shared_examples "a custom field input" do it "shows the correct value if given" do - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.within_async_content(close_after_yield: true) do expect(page).to have_field(custom_field.name, with: expected_initial_value) @@ -99,7 +99,7 @@ it "shows a blank input if no value or default value is given" do custom_field.custom_values.destroy_all - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.within_async_content(close_after_yield: true) do expect(page).to have_field(custom_field.name, with: expected_blank_value) @@ -110,7 +110,7 @@ custom_field.custom_values.destroy_all custom_field.update!(default_value:) - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.within_async_content(close_after_yield: true) do expect(page).to have_field(custom_field.name, with: default_value) @@ -120,7 +120,7 @@ shared_examples "a rich text custom field input" do it "shows the correct value if given" do - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.within_async_content(close_after_yield: true) do field.expect_value(expected_initial_value) @@ -130,7 +130,7 @@ it "shows a blank input if no value or default value is given" do custom_field.custom_values.destroy_all - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.within_async_content(close_after_yield: true) do field.expect_value(expected_blank_value) @@ -141,7 +141,7 @@ custom_field.custom_values.destroy_all custom_field.update!(default_value:) - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.within_async_content(close_after_yield: true) do field.expect_value(default_value) @@ -248,7 +248,7 @@ describe "with single select fields" do shared_examples "a autocomplete single select field" do it "shows the correct value if given" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.expect_selected(expected_initial_value) end @@ -256,13 +256,13 @@ it "shows a blank input if no value or default value is given" do custom_field.custom_values.destroy_all - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.expect_blank end it "filters the list based on the input" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.search(second_option) @@ -272,7 +272,7 @@ end it "enables the user to select a single value from a list" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.search(second_option) field.select_option(second_option) @@ -287,7 +287,7 @@ end it "clears the input if clicked on the clear button" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.clear @@ -312,7 +312,7 @@ custom_field.custom_options.first.update!(default_value: true) - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.expect_selected(custom_field.custom_options.first.value) end @@ -337,7 +337,7 @@ end it "shows only versions that are associated with this project" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.search("Version 1") field.expect_option(first_version.name, grouping: project.name) @@ -356,7 +356,7 @@ let(:allow_non_open_versions) { false } it "does not shows closed version option" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.open_options field.expect_option(first_version.name) @@ -368,7 +368,7 @@ let(:allow_non_open_versions) { true } it "shows closed version option" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.open_options field.expect_option(first_version.name) @@ -400,7 +400,7 @@ end it "shows only users that are members of the project" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.search("Member 1") @@ -426,7 +426,7 @@ end it "shows only groups that are associated with this project" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.search("Group 1") @@ -442,7 +442,7 @@ end it "shows the placeholder user" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.search("Placeholder User") @@ -455,7 +455,7 @@ describe "with multi select fields" do shared_examples "a autocomplete multi select field" do it "shows the correct value if given" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.expect_selected(*expected_initial_value) end @@ -463,13 +463,13 @@ it "shows a blank input if no value or default value is given" do custom_field.custom_values.destroy_all - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.expect_blank end it "filters the list based on the input" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.search(second_option) @@ -481,7 +481,7 @@ it "allows to select multiple values" do custom_field.custom_values.destroy_all - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.select_option(second_option) field.select_option(third_option) @@ -493,7 +493,7 @@ it "allows to remove selected values" do custom_field.custom_values.destroy_all - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.select_option(second_option) field.select_option(third_option) @@ -507,7 +507,7 @@ it "allows to remove all selected values at once" do custom_field.custom_values.destroy_all - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.select_option(second_option) field.select_option(third_option) @@ -537,7 +537,7 @@ multi_list_project_custom_field.custom_options.first.update!(default_value: true) multi_list_project_custom_field.custom_options.second.update!(default_value: true) - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.expect_selected(multi_list_project_custom_field.custom_options.first.value) field.expect_selected(multi_list_project_custom_field.custom_options.second.value) @@ -563,7 +563,7 @@ end it "shows only versions that are associated with this project" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.search("Version 1") @@ -583,7 +583,7 @@ let(:allow_non_open_versions) { false } it "does not shows closed version option" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.open_options field.expect_option(first_version.name) @@ -595,7 +595,7 @@ let(:allow_non_open_versions) { true } it "shows closed version option" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.open_options field.expect_option(first_version.name) @@ -627,7 +627,7 @@ end it "shows only users that are members of the project" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.search("Member 1") @@ -657,7 +657,7 @@ end it "shows only groups that are associated with this project" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.search("Group 1") field.expect_option(group.name) @@ -665,7 +665,7 @@ end it "enables to select multiple user groups" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.select_option("Group 1 in project") field.select_option("Group 2 in project") @@ -690,7 +690,7 @@ end it "shows only placeholder users from this project" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.search("Placeholder User") @@ -700,7 +700,7 @@ end it "enables to select multiple placeholder users" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.select_option(placeholder_user.name) field.select_option(another_placeholder_user.name) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb index 80a32993c321..4163085ad885 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb @@ -112,7 +112,7 @@ end it "responds with a permission denied message" do - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) # Change role to project edit, so the user won't have the project attributes edit role member_with_project_attributes_edit_permissions.memberships.first.update(roles: [edit_project_role]) member_with_project_attributes_edit_permissions.reload diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/render_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/render_spec.rb index 646a8efa2ea9..965682fdbcc4 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/render_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/render_spec.rb @@ -42,7 +42,7 @@ end it "opens a dialog showing the input for project custom field" do - dialog = overview_page.open_edit_dialog_for_custom_field(boolean_project_custom_field) + dialog = overview_page.open_modal_for_custom_field(boolean_project_custom_field) dialog.expect_open @@ -56,19 +56,19 @@ expect(page).to have_no_css(dialog.async_content_container_css_selector, visible: :all) - overview_page.open_edit_dialog_for_custom_field(boolean_project_custom_field) + overview_page.open_modal_for_custom_field(boolean_project_custom_field) expect(page).to have_css(dialog.async_content_container_css_selector, visible: :visible) end it "can be closed via close icon or cancel button" do - dialog = overview_page.open_edit_dialog_for_custom_field(boolean_project_custom_field) + dialog = overview_page.open_modal_for_custom_field(boolean_project_custom_field) dialog.close_via_icon dialog.expect_closed - dialog = overview_page.open_edit_dialog_for_custom_field(string_project_custom_field) + dialog = overview_page.open_modal_for_custom_field(string_project_custom_field) dialog.close_via_button diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb index 39690b6eda9c..9398a99d2d30 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb @@ -53,7 +53,7 @@ expect(page).to have_content I18n.t("placeholders.default") end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.check @@ -72,7 +72,7 @@ expect(page).to have_content "Yes" end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.uncheck @@ -91,7 +91,7 @@ expect(page).to have_content "Yes" end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) # don't touch the input @@ -114,7 +114,7 @@ expect(page).to have_content I18n.t("placeholders.default") end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.fill_in(with: update_value) @@ -133,7 +133,7 @@ expect(page).to have_content expected_initial_value end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) # don't touch the input @@ -152,7 +152,7 @@ expect(page).to have_content expected_initial_value end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.fill_in(with: "") @@ -173,7 +173,7 @@ expect(page).to have_content expected_initial_calculated_value end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.fill_in(with: update_value) @@ -192,7 +192,7 @@ expect(page).to have_content expected_initial_calculated_value end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) # don't touch the input @@ -211,7 +211,7 @@ expect(page).to have_content expected_initial_calculated_value end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.fill_in(with: "") @@ -234,7 +234,7 @@ expect(page).to have_no_text(expected_updated_value) end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.set_value(update_value) @@ -253,7 +253,7 @@ expect(page).to have_content expected_initial_value end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) # don't touch the input @@ -272,7 +272,7 @@ expect(page).to have_text(expected_initial_value) end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.set_value("") @@ -378,7 +378,7 @@ expect(page).to have_no_text first_option end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.select_option(first_option) @@ -397,7 +397,7 @@ expect(page).to have_text first_option end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.expect_selected(first_option) # wait for proper initialization # don't touch the input @@ -417,7 +417,7 @@ expect(page).to have_text first_option end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.clear @@ -442,7 +442,7 @@ expect(page).to have_no_text unused_option end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) # Choose the unused option as the new selection field.select_option(unused_option) @@ -501,7 +501,7 @@ overview_page.visit_page - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) field.select_option(group.name) @@ -525,7 +525,7 @@ overview_page.visit_page - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) field.select_option(placeholder_user.name) @@ -551,7 +551,7 @@ expect(page).to have_no_text first_option end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.select_option(first_option) @@ -573,7 +573,7 @@ expect(page).to have_no_text second_option end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.select_option(first_option) field.select_option(second_option) @@ -595,7 +595,7 @@ expect(page).to have_text second_option end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.deselect_option(first_option) @@ -616,7 +616,7 @@ expect(page).to have_text second_option end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.expect_selected(first_option, second_option) # wait for proper initialization # don't touch the values @@ -638,7 +638,7 @@ expect(page).to have_text second_option end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.clear @@ -661,7 +661,7 @@ expect(page).to have_no_text second_option end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.select_option(first_option) @@ -673,7 +673,7 @@ expect(page).to have_no_text second_option end - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.select_option(second_option) @@ -731,7 +731,7 @@ overview_page.visit_page - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) field.select_option(group.name) field.select_option(another_group.name) @@ -761,7 +761,7 @@ overview_page.visit_page - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) field.select_option(placeholder_user.name) field.select_option(another_placeholder_user.name) @@ -813,7 +813,7 @@ overview_page.visit_page - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.fill_in(with: "new value") dialog.submit @@ -847,7 +847,7 @@ overview_page.visit_page - overview_page.open_edit_dialog_for_custom_field(custom_field) + overview_page.open_modal_for_custom_field(custom_field) field.fill_in(with: 567) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/validation_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/validation_spec.rb index ed83bba6cfbf..3ac34f3785cb 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/validation_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/validation_spec.rb @@ -48,7 +48,7 @@ custom_field.update!(is_required: true) field = FormFields::Primerized::InputField.new(custom_field) - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.within_async_content do expect(page).to have_text("String field") @@ -71,7 +71,7 @@ shared_examples "keeps the cleared value" do it "keeps the value" do invalid_custom_field.update!(is_required: true) - dialog = overview_page.open_edit_dialog_for_custom_field(invalid_custom_field) + dialog = overview_page.open_modal_for_custom_field(invalid_custom_field) invalid_field.clear dialog.submit @@ -148,10 +148,10 @@ list_project_custom_field.update!(is_required: true) list_project_custom_field.custom_values.destroy_all - dialog = overview_page.open_edit_dialog_for_custom_field(string_project_custom_field) + dialog = overview_page.open_modal_for_custom_field(string_project_custom_field) dialog.close - dialog = overview_page.open_edit_dialog_for_custom_field(list_project_custom_field) + dialog = overview_page.open_modal_for_custom_field(list_project_custom_field) dialog.submit field.expect_error(I18n.t("activerecord.errors.messages.blank")) @@ -175,14 +175,14 @@ it "validates required fields only within their respective sections" do # Test 1: Multi-select field can be saved even when other required fields are invalid multi_list_field_dialog = - overview_page.open_edit_dialog_for_custom_field(multi_list_project_custom_field) + overview_page.open_modal_for_custom_field(multi_list_project_custom_field) multi_list_field_dialog.submit multi_list_field_dialog.expect_closed # Test 2: Edit the required string field string_field_dialog = - overview_page.open_edit_dialog_for_custom_field(string_project_custom_field) + overview_page.open_modal_for_custom_field(string_project_custom_field) # Submit without filling - should show error string_field_dialog.submit @@ -191,7 +191,7 @@ # Test 3: Edit the required list field list_field_dialog = - overview_page.open_edit_dialog_for_custom_field(list_project_custom_field) + overview_page.open_modal_for_custom_field(list_project_custom_field) # Submit without filling - should show error list_field_dialog.submit @@ -204,7 +204,7 @@ # Test 5: The required string field dialog still fails validation when empty string_field_dialog = - overview_page.open_edit_dialog_for_custom_field(string_project_custom_field) + overview_page.open_modal_for_custom_field(string_project_custom_field) string_field_dialog.submit string_field.expect_error(I18n.t("activerecord.errors.messages.blank")) @@ -222,7 +222,7 @@ custom_field.update!(is_required: true) custom_field.custom_values.destroy_all - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.submit @@ -272,7 +272,7 @@ it "allows saving the dialog even if the calculated custom field is invalid" do custom_field.custom_values.destroy_all - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.submit @@ -320,7 +320,7 @@ custom_field.update!(is_required: true) custom_field.custom_values.destroy_all - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.submit @@ -356,7 +356,7 @@ custom_field.update!(is_required: true) custom_field.custom_values.destroy_all - dialog = overview_page.open_edit_dialog_for_custom_field(custom_field) + dialog = overview_page.open_modal_for_custom_field(custom_field) dialog.submit diff --git a/spec/features/projects/project_custom_fields/overview_page/sidebar_spec.rb b/spec/features/projects/project_custom_fields/overview_page/sidebar_spec.rb index 7f5b00599ee1..c4a0217d242f 100644 --- a/spec/features/projects/project_custom_fields/overview_page/sidebar_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/sidebar_spec.rb @@ -662,7 +662,7 @@ overview_page.visit_page # Remove value that is used in a formula: - overview_page.open_edit_dialog_for_custom_field(float_project_custom_field) + overview_page.open_modal_for_custom_field(float_project_custom_field) page.fill_in(float_project_custom_field.name, with: "") page.click_on "Save" @@ -680,7 +680,7 @@ end # Change the value so that the calculation succeeds. - overview_page.open_edit_dialog_for_custom_field(float_project_custom_field) + overview_page.open_modal_for_custom_field(float_project_custom_field) page.fill_in(float_project_custom_field.name, with: "0.2") page.click_on "Save" diff --git a/spec/features/projects/project_custom_fields/overview_page/widget_spec.rb b/spec/features/projects/project_custom_fields/overview_page/widget_spec.rb index b5b8dba499e8..d8176fb05ed4 100644 --- a/spec/features/projects/project_custom_fields/overview_page/widget_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/widget_spec.rb @@ -156,7 +156,7 @@ end it "can edit a project custom field from within the widget" do - overview_page.open_edit_dialog_for_custom_field(string_project_custom_field) + overview_page.open_modal_for_custom_field(string_project_custom_field) page.fill_in(string_project_custom_field.name, with: "My super awesome new value") page.click_on "Save" diff --git a/spec/support/pages/projects/show.rb b/spec/support/pages/projects/show.rb index d414a1f71323..9d6f030ef5f0 100644 --- a/spec/support/pages/projects/show.rb +++ b/spec/support/pages/projects/show.rb @@ -85,7 +85,7 @@ def expect_no_custom_field(custom_field) expect(page).to have_no_css("[data-test-selector='project-custom-field-#{custom_field.id}']") end - def open_edit_dialog_for_custom_field(custom_field) + def open_modal_for_custom_field(custom_field) scroll_to_element(page.find("[data-test-selector='project-custom-field-#{custom_field.id}']")) within_custom_field_container(custom_field) do # Link and user type custom fields might contain a clickable link inside the edit container. From 7a96165208d2eeb0fe9b0514d54c00ed60540b99 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Tue, 3 Mar 2026 18:14:06 +0100 Subject: [PATCH 14/32] add dialog helper to not repeat dialog opening --- .../overview_page/dialog/inputs_spec.rb | 23 +++---------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb index 74dc342946b2..42d3f77e57f1 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb @@ -42,11 +42,12 @@ end describe "with correct initialization and input behaviour" do + # not using let as dialog is closed every time, so new should be opened + def dialog = overview_page.open_modal_for_custom_field(custom_field) + describe "with input fields" do shared_examples "a custom field checkbox" do it "shows the correct value if given" do - dialog = overview_page.open_modal_for_custom_field(custom_field) - dialog.within_async_content(close_after_yield: true) do if expected_initial_value expect(page).to have_checked_field(custom_field.name) @@ -59,8 +60,6 @@ it "is unchecked if no value and no default value is given" do custom_field.custom_values.destroy_all - dialog = overview_page.open_modal_for_custom_field(custom_field) - dialog.within_async_content(close_after_yield: true) do expect(page).to have_no_checked_field(custom_field.name) end @@ -71,16 +70,12 @@ custom_field.update!(default_value: true) - dialog = overview_page.open_modal_for_custom_field(custom_field) - dialog.within_async_content(close_after_yield: true) do expect(page).to have_checked_field(custom_field.name) end custom_field.update!(default_value: false) - dialog = overview_page.open_modal_for_custom_field(custom_field) - dialog.within_async_content(close_after_yield: true) do expect(page).to have_no_checked_field(custom_field.name) end @@ -89,8 +84,6 @@ shared_examples "a custom field input" do it "shows the correct value if given" do - dialog = overview_page.open_modal_for_custom_field(custom_field) - dialog.within_async_content(close_after_yield: true) do expect(page).to have_field(custom_field.name, with: expected_initial_value) end @@ -99,8 +92,6 @@ it "shows a blank input if no value or default value is given" do custom_field.custom_values.destroy_all - dialog = overview_page.open_modal_for_custom_field(custom_field) - dialog.within_async_content(close_after_yield: true) do expect(page).to have_field(custom_field.name, with: expected_blank_value) end @@ -110,8 +101,6 @@ custom_field.custom_values.destroy_all custom_field.update!(default_value:) - dialog = overview_page.open_modal_for_custom_field(custom_field) - dialog.within_async_content(close_after_yield: true) do expect(page).to have_field(custom_field.name, with: default_value) end @@ -120,8 +109,6 @@ shared_examples "a rich text custom field input" do it "shows the correct value if given" do - dialog = overview_page.open_modal_for_custom_field(custom_field) - dialog.within_async_content(close_after_yield: true) do field.expect_value(expected_initial_value) end @@ -130,8 +117,6 @@ it "shows a blank input if no value or default value is given" do custom_field.custom_values.destroy_all - dialog = overview_page.open_modal_for_custom_field(custom_field) - dialog.within_async_content(close_after_yield: true) do field.expect_value(expected_blank_value) end @@ -141,8 +126,6 @@ custom_field.custom_values.destroy_all custom_field.update!(default_value:) - dialog = overview_page.open_modal_for_custom_field(custom_field) - dialog.within_async_content(close_after_yield: true) do field.expect_value(default_value) end From c19193c5bdc34f49ac0655588566cf54466a51f9 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Tue, 3 Mar 2026 19:51:54 +0100 Subject: [PATCH 15/32] extract method to submit dialog in overview custom field update spec --- .../overview_page/dialog/update_spec.rb | 281 +++++++----------- 1 file changed, 101 insertions(+), 180 deletions(-) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb index 9398a99d2d30..9571e3f22513 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb @@ -35,13 +35,20 @@ include_context "with seeded projects, members and project custom fields" let(:overview_page) { Pages::Projects::Show.new(project) } - let(:dialog) { Components::Projects::ProjectCustomFields::Dialog.new(project, custom_field) } before do login_as member_with_project_attributes_edit_permissions end describe "with correct updating behaviour" do + def open_dialog + dialog = overview_page.open_modal_for_custom_field(custom_field) + + yield dialog + dialog.submit + dialog.expect_closed + end + describe "with input fields" do shared_examples "a custom field checkbox" do it "sets the value to true if checked" do @@ -53,12 +60,9 @@ expect(page).to have_content I18n.t("placeholders.default") end - overview_page.open_modal_for_custom_field(custom_field) - - field.check - - dialog.submit - dialog.expect_closed + open_dialog do + field.check + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_content "Yes" @@ -72,12 +76,9 @@ expect(page).to have_content "Yes" end - overview_page.open_modal_for_custom_field(custom_field) - - field.uncheck - - dialog.submit - dialog.expect_closed + open_dialog do + field.uncheck + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_content "No" @@ -91,12 +92,9 @@ expect(page).to have_content "Yes" end - overview_page.open_modal_for_custom_field(custom_field) - - # don't touch the input - - dialog.submit - dialog.expect_closed + open_dialog do |dialog| + # don't touch the input + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_content "Yes" @@ -114,12 +112,9 @@ expect(page).to have_content I18n.t("placeholders.default") end - overview_page.open_modal_for_custom_field(custom_field) - - field.fill_in(with: update_value) - - dialog.submit - dialog.expect_closed + open_dialog do + field.fill_in(with: update_value) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_content expected_updated_value @@ -133,12 +128,9 @@ expect(page).to have_content expected_initial_value end - overview_page.open_modal_for_custom_field(custom_field) - - # don't touch the input - - dialog.submit - dialog.expect_closed + open_dialog do |dialog| + # don't touch the input + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_content expected_initial_value @@ -152,12 +144,9 @@ expect(page).to have_content expected_initial_value end - overview_page.open_modal_for_custom_field(custom_field) - - field.fill_in(with: "") - - dialog.submit - dialog.expect_closed + open_dialog do + field.fill_in(with: "") + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_content I18n.t("placeholders.default") @@ -173,12 +162,9 @@ expect(page).to have_content expected_initial_calculated_value end - overview_page.open_modal_for_custom_field(custom_field) - - field.fill_in(with: update_value) - - dialog.submit - dialog.expect_closed + open_dialog do + field.fill_in(with: update_value) + end overview_page.within_custom_field_container(calculated_value_custom_field) do expect(page).to have_content expected_updated_calculated_value @@ -192,12 +178,9 @@ expect(page).to have_content expected_initial_calculated_value end - overview_page.open_modal_for_custom_field(custom_field) - - # don't touch the input - - dialog.submit - dialog.expect_closed + open_dialog do |dialog| + # don't touch the input + end overview_page.within_custom_field_container(calculated_value_custom_field) do expect(page).to have_content expected_initial_calculated_value @@ -211,12 +194,9 @@ expect(page).to have_content expected_initial_calculated_value end - overview_page.open_modal_for_custom_field(custom_field) - - field.fill_in(with: "") - - dialog.submit - dialog.expect_closed + open_dialog do + field.fill_in(with: "") + end overview_page.within_custom_field_container(calculated_value_custom_field) do expect(page).to have_content I18n.t("placeholders.default") @@ -234,12 +214,9 @@ expect(page).to have_no_text(expected_updated_value) end - overview_page.open_modal_for_custom_field(custom_field) - - field.set_value(update_value) - - dialog.submit - dialog.expect_closed + open_dialog do + field.set_value(update_value) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text(expected_updated_value) @@ -253,12 +230,9 @@ expect(page).to have_content expected_initial_value end - overview_page.open_modal_for_custom_field(custom_field) - - # don't touch the input - - dialog.submit - dialog.expect_closed + open_dialog do |dialog| + # don't touch the input + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_content expected_initial_value @@ -272,12 +246,9 @@ expect(page).to have_text(expected_initial_value) end - overview_page.open_modal_for_custom_field(custom_field) - - field.set_value("") - - dialog.submit - dialog.expect_closed + open_dialog do + field.set_value("") + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_no_text(expected_initial_value) @@ -378,12 +349,9 @@ expect(page).to have_no_text first_option end - overview_page.open_modal_for_custom_field(custom_field) - - field.select_option(first_option) - - dialog.submit - dialog.expect_closed + open_dialog do + field.select_option(first_option) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text first_option @@ -397,13 +365,10 @@ expect(page).to have_text first_option end - overview_page.open_modal_for_custom_field(custom_field) - - field.expect_selected(first_option) # wait for proper initialization - # don't touch the input - - dialog.submit - dialog.expect_closed + open_dialog do + field.expect_selected(first_option) # wait for proper initialization + # don't touch the input + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text first_option @@ -417,12 +382,9 @@ expect(page).to have_text first_option end - overview_page.open_modal_for_custom_field(custom_field) - - field.clear - - dialog.submit - dialog.expect_closed + open_dialog do + field.clear + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_no_text first_option @@ -442,13 +404,10 @@ expect(page).to have_no_text unused_option end - overview_page.open_modal_for_custom_field(custom_field) - - # Choose the unused option as the new selection - field.select_option(unused_option) - - dialog.submit - dialog.expect_closed + open_dialog do + # Choose the unused option as the new selection + field.select_option(unused_option) + end # Display the new selection in the sidebar overview_page.within_custom_field_container(custom_field) do @@ -501,12 +460,9 @@ overview_page.visit_page - dialog = overview_page.open_modal_for_custom_field(custom_field) - - field.select_option(group.name) - - dialog.submit - dialog.expect_closed + open_dialog do + field.select_option(group.name) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text group.name @@ -525,12 +481,9 @@ overview_page.visit_page - dialog = overview_page.open_modal_for_custom_field(custom_field) - - field.select_option(placeholder_user.name) - - dialog.submit - dialog.expect_closed + open_dialog do + field.select_option(placeholder_user.name) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text placeholder_user.name @@ -551,12 +504,9 @@ expect(page).to have_no_text first_option end - overview_page.open_modal_for_custom_field(custom_field) - - field.select_option(first_option) - - dialog.submit - dialog.expect_closed + open_dialog do + field.select_option(first_option) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text first_option @@ -573,13 +523,10 @@ expect(page).to have_no_text second_option end - overview_page.open_modal_for_custom_field(custom_field) - - field.select_option(first_option) - field.select_option(second_option) - - dialog.submit - dialog.expect_closed + open_dialog do + field.select_option(first_option) + field.select_option(second_option) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text first_option @@ -595,12 +542,9 @@ expect(page).to have_text second_option end - overview_page.open_modal_for_custom_field(custom_field) - - field.deselect_option(first_option) - - dialog.submit - dialog.expect_closed + open_dialog do + field.deselect_option(first_option) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_no_text first_option @@ -616,13 +560,10 @@ expect(page).to have_text second_option end - overview_page.open_modal_for_custom_field(custom_field) - - field.expect_selected(first_option, second_option) # wait for proper initialization - # don't touch the values - - dialog.submit - dialog.expect_closed + open_dialog do + field.expect_selected(first_option, second_option) # wait for proper initialization + # don't touch the values + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text first_option @@ -638,12 +579,9 @@ expect(page).to have_text second_option end - overview_page.open_modal_for_custom_field(custom_field) - - field.clear - - dialog.submit - dialog.expect_closed + open_dialog do + field.clear + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_no_text first_option @@ -661,24 +599,18 @@ expect(page).to have_no_text second_option end - overview_page.open_modal_for_custom_field(custom_field) - - field.select_option(first_option) - - dialog.submit - dialog.expect_closed + open_dialog do + field.select_option(first_option) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text first_option expect(page).to have_no_text second_option end - overview_page.open_modal_for_custom_field(custom_field) - - field.select_option(second_option) - - dialog.submit - dialog.expect_closed + open_dialog do + field.select_option(second_option) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text first_option @@ -731,13 +663,10 @@ overview_page.visit_page - dialog = overview_page.open_modal_for_custom_field(custom_field) - - field.select_option(group.name) - field.select_option(another_group.name) - - dialog.submit - dialog.expect_closed + open_dialog do + field.select_option(group.name) + field.select_option(another_group.name) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text group.name @@ -761,13 +690,10 @@ overview_page.visit_page - dialog = overview_page.open_modal_for_custom_field(custom_field) - - field.select_option(placeholder_user.name) - field.select_option(another_placeholder_user.name) - - dialog.submit - dialog.expect_closed + open_dialog do + field.select_option(placeholder_user.name) + field.select_option(another_placeholder_user.name) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_text placeholder_user.name @@ -813,11 +739,9 @@ overview_page.visit_page - overview_page.open_modal_for_custom_field(custom_field) - - field.fill_in(with: "new value") - dialog.submit - dialog.expect_closed + open_dialog do + field.fill_in(with: "new value") + end custom_values = project.custom_values.where.not(custom_field: string_project_custom_field) @@ -847,12 +771,9 @@ overview_page.visit_page - overview_page.open_modal_for_custom_field(custom_field) - - field.fill_in(with: 567) - - dialog.submit - dialog.expect_closed + open_dialog do + field.fill_in(with: 567) + end overview_page.within_custom_field_container(custom_field) do expect(page).to have_content "567" From 1432c7b74797dbedbafb961c0d6f7d1d5a4f487e Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Tue, 3 Mar 2026 21:29:11 +0100 Subject: [PATCH 16/32] use an before vowels --- .../overview_page/dialog/inputs_spec.rb | 16 ++++++++-------- .../overview_page/dialog/update_spec.rb | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb index 42d3f77e57f1..5da0c646444e 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb @@ -229,7 +229,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) end describe "with single select fields" do - shared_examples "a autocomplete single select field" do + shared_examples "an autocomplete single select field" do it "shows the correct value if given" do overview_page.open_modal_for_custom_field(custom_field) @@ -288,7 +288,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { custom_field.custom_options.second.value } let(:third_option) { custom_field.custom_options.third.value } - it_behaves_like "a autocomplete single select field" + it_behaves_like "an autocomplete single select field" it "shows the default value if no value is given" do custom_field.custom_values.destroy_all @@ -311,7 +311,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { second_version.name } let(:third_option) { third_version.name } - it_behaves_like "a autocomplete single select field" + it_behaves_like "an autocomplete single select field" describe "with correct version scoping" do context "with a version on a different project" do @@ -372,7 +372,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { another_member_in_project.name } let(:third_option) { one_more_member_in_project.name } - it_behaves_like "a autocomplete single select field" + it_behaves_like "an autocomplete single select field" describe "with correct user scoping" do let!(:member_in_other_project) do @@ -436,7 +436,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) end describe "with multi select fields" do - shared_examples "a autocomplete multi select field" do + shared_examples "an autocomplete multi select field" do it "shows the correct value if given" do overview_page.open_modal_for_custom_field(custom_field) @@ -512,7 +512,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { custom_field.custom_options.second.value } let(:third_option) { custom_field.custom_options.third.value } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" it "shows the default value if no value is given" do multi_list_project_custom_field.custom_values.destroy_all @@ -537,7 +537,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { second_version.name } let(:third_option) { third_version.name } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" describe "with correct version scoping" do context "with a version on a different project" do @@ -599,7 +599,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { another_member_in_project.name } let(:third_option) { one_more_member_in_project.name } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" describe "with correct user scoping" do let!(:member_in_other_project) do diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb index 9571e3f22513..778ef7300698 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb @@ -494,7 +494,7 @@ def open_dialog end describe "with multi select fields" do - shared_examples "a autocomplete multi select field" do + shared_examples "an autocomplete multi select field" do it "saves single selected values properly" do custom_field.custom_values.delete_all @@ -626,7 +626,7 @@ def open_dialog let(:first_option) { custom_field.custom_options.first.value } let(:second_option) { custom_field.custom_options.second.value } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" end describe "with multi version select list CF" do @@ -636,7 +636,7 @@ def open_dialog let(:first_option) { first_version.name } let(:second_option) { second_version.name } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" end describe "with multi user select list CF" do @@ -646,7 +646,7 @@ def open_dialog let(:first_option) { member_in_project.name } let(:second_option) { another_member_in_project.name } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" describe "with support for user groups" do let!(:group) do From 4d61914b93c5ff401a2e3f6c296dbf075372485e Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Thu, 5 Mar 2026 17:38:18 +0100 Subject: [PATCH 17/32] [#72832] Feature tests for project overview https://community.openproject.org/work_packages/72832 From a6deb71c28da8269552b147121be33cf9c1b9008 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Mon, 2 Mar 2026 20:33:07 +0100 Subject: [PATCH 18/32] test conditions for showing modal buttons --- .../overview_page/dialog/permission_spec.rb | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb index 4163085ad885..a0f9d73ea3d2 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/permission_spec.rb @@ -33,7 +33,13 @@ RSpec.describe "Edit project custom fields on project overview page", :js do include_context "with seeded projects, members and project custom fields" + let(:overview_page) { Pages::Projects::Show.new(project) } + let(:enable_comments) { false } + + before do + ProjectCustomField.update_all(has_comment: true) if enable_comments + end describe "with insufficient View attributes permissions" do before do @@ -44,6 +50,14 @@ it "does not show the attributes sidebar" do overview_page.expect_no_visible_sidebar end + + context "when comments are allowed" do + let(:enable_comments) { true } + + it "does not show the modal buttons" do + overview_page.expect_no_visible_sidebar + end + end end describe "with sufficient View attributes permissions" do @@ -57,6 +71,16 @@ expect(page).to have_text("Input fields") end end + + context "when comments are allowed" do + let(:enable_comments) { true } + + it "does not show the modal buttons" do + overview_page.within_project_attributes_sidebar do + expect(page).to have_no_test_selector("[data-test-selector*='project-custom-field-modal-button-']") + end + end + end end describe "with Edit project permissions" do @@ -70,6 +94,16 @@ expect(page).to have_no_test_selector("[data-test-selector*='project-custom-field-modal-button-']") end end + + context "when comments are allowed" do + let(:enable_comments) { true } + + it "does not show the modal buttons" do + overview_page.within_project_attributes_sidebar do + expect(page).to have_no_test_selector("[data-test-selector*='project-custom-field-modal-button-']") + end + end + end end describe "with insufficient Edit attributes permissions" do @@ -86,6 +120,16 @@ expect(page).to have_no_css("[data-test-selector*='project-custom-field-modal-button-']") end end + + context "when comments are allowed" do + let(:enable_comments) { true } + + it "shows the modal buttons on all enabled custom fields" do + overview_page.within_project_attributes_sidebar do + expect(page).to have_css("[data-test-selector*='project-custom-field-modal-button-']", count: 15) + end + end + end end describe "with sufficient Edit attributes permissions" do @@ -99,6 +143,16 @@ expect(page).to have_css("[data-test-selector*='project-custom-field-modal-button-']", count: 13) end end + + context "when comments are allowed" do + let(:enable_comments) { true } + + it "shows the modal buttons on all enabled custom fields" do + overview_page.within_project_attributes_sidebar do + expect(page).to have_css("[data-test-selector*='project-custom-field-modal-button-']", count: 15) + end + end + end end describe "with insufficient Edit attribute permission on the update dialog" do From fa60968f8a53b66ac4b6700c954ddadab7ea26fd Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Tue, 3 Mar 2026 18:47:54 +0100 Subject: [PATCH 19/32] test custom comment inputs in modals opened from overview --- .../overview_page/dialog/inputs_spec.rb | 77 +++++++++++++++---- spec/support/pages/projects/show.rb | 6 ++ 2 files changed, 67 insertions(+), 16 deletions(-) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb index 5da0c646444e..ef358eed0670 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb @@ -45,6 +45,26 @@ # not using let as dialog is closed every time, so new should be opened def dialog = overview_page.open_modal_for_custom_field(custom_field) + shared_examples "shows comment input only when comments are allowed by custom field" do + it "shows comment input only when comments are allowed by custom field" do + dialog.within_async_content(close_after_yield: true) do + expect(page).to have_no_field("Comment") + end + + custom_field.update!(has_comment: true) + + dialog.within_async_content(close_after_yield: true) do + expect(page).to have_field("Comment", with: "") + end + + create(:custom_comment, custom_field:, customized: project, text: "bar") + + dialog.within_async_content(close_after_yield: true) do + expect(page).to have_field("Comment", with: "bar") + end + end + end + describe "with input fields" do shared_examples "a custom field checkbox" do it "shows the correct value if given" do @@ -80,6 +100,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) expect(page).to have_no_checked_field(custom_field.name) end end + + include_examples "shows comment input only when comments are allowed by custom field" end shared_examples "a custom field input" do @@ -105,6 +127,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) expect(page).to have_field(custom_field.name, with: default_value) end end + + include_examples "shows comment input only when comments are allowed by custom field" end shared_examples "a rich text custom field input" do @@ -130,6 +154,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) field.expect_value(default_value) end end + + include_examples "shows comment input only when comments are allowed by custom field" end describe "with boolean CF" do @@ -202,29 +228,44 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) end describe "with calculated value CFs" do - describe "using int" do - let(:custom_field) { calculated_from_int_project_custom_field } - let(:expected_blank_value) { "" } - let(:expected_initial_value) { 234 } - - it "shows the disabled input with the correct value if given" do - overview_page.within_project_attributes_sidebar do - overview_page.within_custom_field_container(custom_field) do - expect(page).to have_text(expected_initial_value) - end + let(:custom_field) { calculated_from_int_project_custom_field } + let(:expected_blank_value) { "" } + let(:expected_initial_value) { 234 } + + it "shows the disabled input with the correct value if given" do + overview_page.within_project_attributes_sidebar do + overview_page.within_custom_field_container(custom_field) do + expect(page).to have_text(expected_initial_value) end end + end - it "shows the disabled input with a blank value if no value is given" do - custom_field.custom_values.destroy_all + it "shows the disabled input with a blank value if no value is given" do + custom_field.custom_values.destroy_all - overview_page.within_project_attributes_sidebar do - overview_page.within_custom_field_container(custom_field) do - expect(page).to have_text(expected_blank_value) - end + overview_page.within_project_attributes_sidebar do + overview_page.within_custom_field_container(custom_field) do + expect(page).to have_text(expected_blank_value) end end end + + it "allows the modal only when comments are allowed by custom field" do + overview_page.expect_custom_field_without_modal_button(custom_field) + + custom_field.update!(has_comment: true) + refresh + + dialog.within_async_content(close_after_yield: true) do + expect(page).to have_field("Comment", with: "") + end + + create(:custom_comment, custom_field:, customized: project, text: "bar") + + dialog.within_async_content(close_after_yield: true) do + expect(page).to have_field("Comment", with: "bar") + end + end end end @@ -276,6 +317,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) field.expect_blank end + + include_examples "shows comment input only when comments are allowed by custom field" end describe "with single select list CF" do @@ -500,6 +543,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) field.expect_not_selected(second_option) field.expect_not_selected(third_option) end + + include_examples "shows comment input only when comments are allowed by custom field" end describe "with multi select list CF" do diff --git a/spec/support/pages/projects/show.rb b/spec/support/pages/projects/show.rb index 9d6f030ef5f0..00152ada935d 100644 --- a/spec/support/pages/projects/show.rb +++ b/spec/support/pages/projects/show.rb @@ -85,6 +85,12 @@ def expect_no_custom_field(custom_field) expect(page).to have_no_css("[data-test-selector='project-custom-field-#{custom_field.id}']") end + def expect_custom_field_without_modal_button(custom_field) + within_custom_field_container(custom_field) do + expect(page).to have_no_test_selector("[data-test-selector*='project-custom-field-modal-button-']") + end + end + def open_modal_for_custom_field(custom_field) scroll_to_element(page.find("[data-test-selector='project-custom-field-#{custom_field.id}']")) within_custom_field_container(custom_field) do From 214ecdae3589dbc542d242bce62c0b9ef71d86d0 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Tue, 3 Mar 2026 19:03:22 +0100 Subject: [PATCH 20/32] test preserving custom comment in overview modals after failed validation of value --- .../overview_page/dialog/validation_spec.rb | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/validation_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/validation_spec.rb index 3ac34f3785cb..43ead7a04b0b 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/validation_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/validation_spec.rb @@ -67,8 +67,8 @@ end end - describe "does not loose the unpersisted values of the custom fields" do - shared_examples "keeps the cleared value" do + describe "does not loose the unpersisted values" do + shared_examples "keeps the unpersisted values" do it "keeps the value" do invalid_custom_field.update!(is_required: true) dialog = overview_page.open_modal_for_custom_field(invalid_custom_field) @@ -78,13 +78,24 @@ invalid_field.expect_error(I18n.t("activerecord.errors.messages.blank")) invalid_field.expect_blank end + + it "keeps the custom comment value" do + invalid_custom_field.update!(is_required: true, has_comment: true) + dialog = overview_page.open_modal_for_custom_field(invalid_custom_field) + invalid_field.clear + fill_in "Comment", with: "A helpful comment" + dialog.submit + + invalid_field.expect_error(I18n.t("activerecord.errors.messages.blank")) + expect(page).to have_field("Comment", with: "A helpful comment") + end end context "with input fields" do let(:invalid_custom_field) { string_project_custom_field } let(:invalid_field) { FormFields::Primerized::InputField.new(invalid_custom_field) } - it_behaves_like "keeps the cleared value" + it_behaves_like "keeps the unpersisted values" end context "with select fields" do @@ -92,21 +103,21 @@ let(:invalid_custom_field) { version_project_custom_field } let(:invalid_field) { FormFields::Primerized::AutocompleteField.new(invalid_custom_field) } - it_behaves_like "keeps the cleared value" + it_behaves_like "keeps the unpersisted values" end context "with user selected" do let(:invalid_custom_field) { user_project_custom_field } let(:invalid_field) { FormFields::Primerized::AutocompleteField.new(invalid_custom_field) } - it_behaves_like "keeps the cleared value" + it_behaves_like "keeps the unpersisted values" end context "with list selected" do let(:invalid_custom_field) { list_project_custom_field } let(:invalid_field) { FormFields::Primerized::AutocompleteField.new(invalid_custom_field) } - it_behaves_like "keeps the cleared value" + it_behaves_like "keeps the unpersisted values" end end @@ -115,21 +126,21 @@ let(:invalid_custom_field) { multi_version_project_custom_field } let(:invalid_field) { FormFields::Primerized::AutocompleteField.new(invalid_custom_field) } - it_behaves_like "keeps the cleared value" + it_behaves_like "keeps the unpersisted values" end context "with multi user selected" do let(:invalid_custom_field) { multi_user_project_custom_field } let(:invalid_field) { FormFields::Primerized::AutocompleteField.new(invalid_custom_field) } - it_behaves_like "keeps the cleared value" + it_behaves_like "keeps the unpersisted values" end context "with multi list selected" do let(:invalid_custom_field) { multi_list_project_custom_field } let(:invalid_field) { FormFields::Primerized::AutocompleteField.new(invalid_custom_field) } - it_behaves_like "keeps the cleared value" + it_behaves_like "keeps the unpersisted values" end end end From f1eb93ea0bf9a1e2183b49eab69d4d8bd152dacb Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Tue, 3 Mar 2026 20:06:37 +0100 Subject: [PATCH 21/32] test saving custom comment --- .../overview_page/dialog/update_spec.rb | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb index 778ef7300698..1a482609a174 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb @@ -49,6 +49,20 @@ def open_dialog dialog.expect_closed end + shared_examples "saves custom comment" do + it "saves custom comment" do + custom_field.update!(has_comment: true) + + overview_page.visit_page + + open_dialog do + fill_in "Comment", with: "a comment" + end + + expect(project.reload.send(custom_field.comment_attribute_name)).to eq "a comment" + end + end + describe "with input fields" do shared_examples "a custom field checkbox" do it "sets the value to true if checked" do @@ -100,6 +114,8 @@ def open_dialog expect(page).to have_content "Yes" end end + + include_examples "saves custom comment" end shared_examples "a custom field input" do @@ -152,6 +168,8 @@ def open_dialog expect(page).to have_content I18n.t("placeholders.default") end end + + include_examples "saves custom comment" end shared_examples "affecting calculated value" do @@ -254,6 +272,8 @@ def open_dialog expect(page).to have_no_text(expected_initial_value) end end + + include_examples "saves custom comment" end describe "with boolean CF" do @@ -336,6 +356,12 @@ def open_dialog it_behaves_like "a rich text custom field input" end + + describe "with calculated CF with comment enabled" do + let(:custom_field) { calculated_from_int_project_custom_field } + + include_examples "saves custom comment" + end end describe "with select fields" do @@ -415,6 +441,8 @@ def open_dialog expect(page).to have_no_text first_option end end + + include_examples "saves custom comment" end describe "with list CF" do @@ -617,6 +645,8 @@ def open_dialog expect(page).to have_text second_option end end + + include_examples "saves custom comment" end describe "with multi select list CF" do From e13e4cd006996bee7b31bf0236bef84ece868add Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Tue, 3 Mar 2026 21:55:19 +0100 Subject: [PATCH 22/32] test readonly custom field modal from project overview --- .../overview_page/dialog/inputs_spec.rb | 72 ++++++++++++++++++- .../projects/project_custom_fields/dialog.rb | 11 +-- spec/support/pages/projects/show.rb | 6 +- 3 files changed, 82 insertions(+), 7 deletions(-) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb index ef358eed0670..aae1607cc09f 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb @@ -35,9 +35,10 @@ include_context "with seeded projects, members and project custom fields" let(:overview_page) { Pages::Projects::Show.new(project) } + let(:user) { member_with_project_attributes_edit_permissions } before do - login_as member_with_project_attributes_edit_permissions + login_as user overview_page.visit_page end @@ -65,6 +66,27 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) end end + shared_examples "displays readonly modal for user without edit permission" do + let(:user) { member_without_project_attributes_edit_permissions } + let(:value_text) { expected_initial_value } + let(:value_expectation) { have_text(value_text) } + + it "opens show modal with readonly comment input and readonly custom field value" do + custom_field.update!(has_comment: true) + create(:custom_comment, custom_field:, customized: project, text: "baz") + refresh + + dialog.within_dialog(close_after_yield: true) do + overview_page.within_custom_field_container(custom_field) do + expect(page).to have_no_field(custom_field.name) + expect(page).to value_expectation + end + + expect(page).to have_field("Comment", with: "baz", readonly: true) + end + end + end + describe "with input fields" do shared_examples "a custom field checkbox" do it "shows the correct value if given" do @@ -163,6 +185,10 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:expected_initial_value) { true } it_behaves_like "a custom field checkbox" + + it_behaves_like "displays readonly modal for user without edit permission" do + let(:value_text) { "Yes" } + end end describe "with string CF" do @@ -172,6 +198,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:expected_initial_value) { "Foo" } it_behaves_like "a custom field input" + + it_behaves_like "displays readonly modal for user without edit permission" end describe "with integer CF" do @@ -181,6 +209,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:expected_initial_value) { 123 } it_behaves_like "a custom field input" + + it_behaves_like "displays readonly modal for user without edit permission" end describe "with float CF" do @@ -190,6 +220,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:expected_initial_value) { 123.456 } it_behaves_like "a custom field input" + + it_behaves_like "displays readonly modal for user without edit permission" end describe "with date CF" do @@ -199,6 +231,10 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:expected_initial_value) { Date.new(2024, 1, 1) } it_behaves_like "a custom field input" + + it_behaves_like "displays readonly modal for user without edit permission" do + let(:value_text) { "01/01/2024" } + end end describe "with link CF" do @@ -215,6 +251,10 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) expect(page).to have_link("https://www.openproject.org", href: "https://www.openproject.org") end end + + it_behaves_like "displays readonly modal for user without edit permission" do + let(:value_expectation) { have_link("https://www.openproject.org", href: "https://www.openproject.org") } + end end describe "with text CF" do @@ -225,6 +265,10 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:expected_initial_value) { "Lorem\nipsum" } # TBD: why is the second newline missing? it_behaves_like "a rich text custom field input" + + it_behaves_like "displays readonly modal for user without edit permission" do + let(:value_text) { "Lorem" } # only first line is shown + end end describe "with calculated value CFs" do @@ -266,6 +310,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) expect(page).to have_field("Comment", with: "bar") end end + + it_behaves_like "displays readonly modal for user without edit permission" end end @@ -342,6 +388,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) field.expect_selected(custom_field.custom_options.first.value) end + + it_behaves_like "displays readonly modal for user without edit permission" end describe "with single version select list CF" do @@ -403,6 +451,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) end end end + + it_behaves_like "displays readonly modal for user without edit permission" end describe "with single user select list CF" do @@ -475,6 +525,8 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) field.expect_option(placeholder_user.name) end end + + it_behaves_like "displays readonly modal for user without edit permission" end end @@ -570,6 +622,10 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) field.expect_selected(multi_list_project_custom_field.custom_options.first.value) field.expect_selected(multi_list_project_custom_field.custom_options.second.value) end + + it_behaves_like "displays readonly modal for user without edit permission" do + let(:value_text) { expected_initial_value.join(", ") } + end end describe "with multi version select list CF" do @@ -632,6 +688,10 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) end end end + + it_behaves_like "displays readonly modal for user without edit permission" do + let(:value_text) { expected_initial_value.join(", ") } + end end describe "with multi user select list CF" do @@ -737,6 +797,16 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) field.expect_selected(another_placeholder_user.name) end end + + it_behaves_like "displays readonly modal for user without edit permission" do + let(:value_text) do + / + #{Regexp.escape(member_in_project.name)} + .* + #{Regexp.escape(another_member_in_project.name)} + /mx + end + end end end end diff --git a/spec/support/components/projects/project_custom_fields/dialog.rb b/spec/support/components/projects/project_custom_fields/dialog.rb index 57d5fc471689..ff3c39c0ebe3 100644 --- a/spec/support/components/projects/project_custom_fields/dialog.rb +++ b/spec/support/components/projects/project_custom_fields/dialog.rb @@ -55,13 +55,16 @@ def async_content_container_css_selector "#{dialog_css_selector} [data-test-selector='async-dialog-content']" end - def within_dialog(&) - within(dialog_css_selector, &) + def within_dialog(close_after_yield: false, &) + within(dialog_css_selector, &).tap do + close if close_after_yield + end end def within_async_content(close_after_yield: false, &) - within(async_content_container_css_selector, &) - close if close_after_yield + within(async_content_container_css_selector, &).tap do + close if close_after_yield + end end def close diff --git a/spec/support/pages/projects/show.rb b/spec/support/pages/projects/show.rb index 00152ada935d..be6ef19938f6 100644 --- a/spec/support/pages/projects/show.rb +++ b/spec/support/pages/projects/show.rb @@ -103,9 +103,11 @@ def open_modal_for_custom_field(custom_field) ) end - wait_for_size_animation_completion("[data-test-selector='async-dialog-content']") + dialog = Components::Projects::ProjectCustomFields::Dialog.new(project, custom_field) - Components::Projects::ProjectCustomFields::Dialog.new(project, custom_field) + wait_for_size_animation_completion(dialog.dialog_css_selector) + + dialog end def open_edit_dialog_for_life_cycle(life_cycle, wait_angular: false) From 9eaa0f87479a165a9c3e41c58e06ebdf4acf449c Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Tue, 3 Mar 2026 21:29:11 +0100 Subject: [PATCH 23/32] use an before vowels --- .../overview_page/dialog/inputs_spec.rb | 16 ++++++++-------- .../overview_page/dialog/update_spec.rb | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb index 42d3f77e57f1..5da0c646444e 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/inputs_spec.rb @@ -229,7 +229,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) end describe "with single select fields" do - shared_examples "a autocomplete single select field" do + shared_examples "an autocomplete single select field" do it "shows the correct value if given" do overview_page.open_modal_for_custom_field(custom_field) @@ -288,7 +288,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { custom_field.custom_options.second.value } let(:third_option) { custom_field.custom_options.third.value } - it_behaves_like "a autocomplete single select field" + it_behaves_like "an autocomplete single select field" it "shows the default value if no value is given" do custom_field.custom_values.destroy_all @@ -311,7 +311,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { second_version.name } let(:third_option) { third_version.name } - it_behaves_like "a autocomplete single select field" + it_behaves_like "an autocomplete single select field" describe "with correct version scoping" do context "with a version on a different project" do @@ -372,7 +372,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { another_member_in_project.name } let(:third_option) { one_more_member_in_project.name } - it_behaves_like "a autocomplete single select field" + it_behaves_like "an autocomplete single select field" describe "with correct user scoping" do let!(:member_in_other_project) do @@ -436,7 +436,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) end describe "with multi select fields" do - shared_examples "a autocomplete multi select field" do + shared_examples "an autocomplete multi select field" do it "shows the correct value if given" do overview_page.open_modal_for_custom_field(custom_field) @@ -512,7 +512,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { custom_field.custom_options.second.value } let(:third_option) { custom_field.custom_options.third.value } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" it "shows the default value if no value is given" do multi_list_project_custom_field.custom_values.destroy_all @@ -537,7 +537,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { second_version.name } let(:third_option) { third_version.name } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" describe "with correct version scoping" do context "with a version on a different project" do @@ -599,7 +599,7 @@ def dialog = overview_page.open_modal_for_custom_field(custom_field) let(:second_option) { another_member_in_project.name } let(:third_option) { one_more_member_in_project.name } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" describe "with correct user scoping" do let!(:member_in_other_project) do diff --git a/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb b/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb index 9571e3f22513..778ef7300698 100644 --- a/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb +++ b/spec/features/projects/project_custom_fields/overview_page/dialog/update_spec.rb @@ -494,7 +494,7 @@ def open_dialog end describe "with multi select fields" do - shared_examples "a autocomplete multi select field" do + shared_examples "an autocomplete multi select field" do it "saves single selected values properly" do custom_field.custom_values.delete_all @@ -626,7 +626,7 @@ def open_dialog let(:first_option) { custom_field.custom_options.first.value } let(:second_option) { custom_field.custom_options.second.value } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" end describe "with multi version select list CF" do @@ -636,7 +636,7 @@ def open_dialog let(:first_option) { first_version.name } let(:second_option) { second_version.name } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" end describe "with multi user select list CF" do @@ -646,7 +646,7 @@ def open_dialog let(:first_option) { member_in_project.name } let(:second_option) { another_member_in_project.name } - it_behaves_like "a autocomplete multi select field" + it_behaves_like "an autocomplete multi select field" describe "with support for user groups" do let!(:group) do From 4ee00a86df4a704a1b0072ffd63c6d4c3b73dc78 Mon Sep 17 00:00:00 2001 From: Maya Berdygylyjova Date: Fri, 6 Mar 2026 10:33:24 +0100 Subject: [PATCH 24/32] add-docs-on-budget-widgets (#22235) adding header to avoid linking errors --- docs/user-guide/project-home/project-widgets/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/user-guide/project-home/project-widgets/README.md b/docs/user-guide/project-home/project-widgets/README.md index 468ba9f333cc..4fbec4d27f9f 100644 --- a/docs/user-guide/project-home/project-widgets/README.md +++ b/docs/user-guide/project-home/project-widgets/README.md @@ -31,6 +31,7 @@ Click the **+** icon and choose which kind of widget you want to add. You can add various widgets to your project dashboard. Available widgets in OpenProject include: +- Budget - Calendar - Custom text - Description @@ -44,6 +45,8 @@ You can add various widgets to your project dashboard. Available widgets in Open - Work packages overview - Work packages table +### Budget widget + ### Calendar widget The calendar widget displays your current work packages in a calendar. It shows work packages that are being worked on at the current date. The maximum number of displayable work packages is 100. From 9ce05eb2f2786661e3ebdf400cac7e061179cf76 Mon Sep 17 00:00:00 2001 From: Maya Berdygylyjova Date: Fri, 6 Mar 2026 10:38:38 +0100 Subject: [PATCH 25/32] =?UTF-8?q?[#72754]=2017.2=20external=20links=20chan?= =?UTF-8?q?ges=20=20https://community.openproject.o=E2=80=A6=20(#22164)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [#72754] 17.2 external links changes https://community.openproject.org/work_packages/72754 [#72754] 17.2 external links changes https://community.openproject.org/work_packages/72754 --- .../system-settings/external-links/README.md | 11 +++++++++-- ...ject_system_admin_guide_external_links.png | Bin 28273 -> 38562 bytes 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/system-admin-guide/system-settings/external-links/README.md b/docs/system-admin-guide/system-settings/external-links/README.md index be77605c03dd..6253afa25980 100644 --- a/docs/system-admin-guide/system-settings/external-links/README.md +++ b/docs/system-admin-guide/system-settings/external-links/README.md @@ -12,14 +12,21 @@ You can configure how OpenProject handles **external links** in formatted text ( ## Enable external link capture -To enable the Capture external links setting navigate to *Administration ->System settings -> External links* and check the **Capture external links** option. Don't forget to save your changes. +To enable the Capture external links setting navigate to *Administration → System settings → External links*. Here you can enable the following settings: + +- **Capture external links**: when this option is turned on, all outbound links in formatted text will first lead to a warning page before users leave the application. +- **Require users to be logged in**: when enabled, users must sign in before they can proceed to any external website. + +Don't forget to save your changes. ![Enable warning message for external links in OpenProject administration](openproject_system_admin_guide_external_links.png) -Once enabled, OpenProject will redirect external links in formatted text through a warning page. +Once *Capturing external links* is enabled, OpenProject will redirect external links in formatted text through a warning page. Here is an example of a warning page: ![Example of a warning message for an external link in OpenProject](openproject_system_admin_guide_external_links_warning_message.png) +If the requirement to be logged in is activated and users are not logged in, they will first be redirected to the login page. + ## What is an external link? Links are considered external if they: diff --git a/docs/system-admin-guide/system-settings/external-links/openproject_system_admin_guide_external_links.png b/docs/system-admin-guide/system-settings/external-links/openproject_system_admin_guide_external_links.png index fee15cac6619d6ce65093673f6fbabab9e9cadf1..a2aba6884020f6035099f0d4742ca41141534edf 100644 GIT binary patch literal 38562 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
    uFM?9y4 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 literal 28273 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 From 06343319e682b0c77a46d87854d4d3977c57c274 Mon Sep 17 00:00:00 2001 From: Mir Bhatia Date: Fri, 6 Mar 2026 11:43:03 +0100 Subject: [PATCH 26/32] Add caption to project autocompleter --- .../meetings/index/form_component.html.erb | 2 +- .../app/forms/meeting/project_autocompleter.rb | 13 +++++++++++++ modules/meeting/config/locales/en.yml | 4 +++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/modules/meeting/app/components/meetings/index/form_component.html.erb b/modules/meeting/app/components/meetings/index/form_component.html.erb index f889b28fca83..b6243a47c4e3 100644 --- a/modules/meeting/app/components/meetings/index/form_component.html.erb +++ b/modules/meeting/app/components/meetings/index/form_component.html.erb @@ -31,7 +31,7 @@ if @project.nil? modal_body.with_row(mb: 3) do - render(Meeting::ProjectAutocompleter.new(f)) + render(Meeting::ProjectAutocompleter.new(f, meeting: @meeting)) end end diff --git a/modules/meeting/app/forms/meeting/project_autocompleter.rb b/modules/meeting/app/forms/meeting/project_autocompleter.rb index 252adf96facd..e0488d266bb8 100644 --- a/modules/meeting/app/forms/meeting/project_autocompleter.rb +++ b/modules/meeting/app/forms/meeting/project_autocompleter.rb @@ -34,6 +34,7 @@ class Meeting::ProjectAutocompleter < ApplicationForm id: "project_id", label: Project.model_name.human, required: true, + caption:, autocomplete_options: { with_search_icon: true, openDirectly: false, @@ -47,4 +48,16 @@ class Meeting::ProjectAutocompleter < ApplicationForm } ) end + + def initialize(meeting:) + super() + + @meeting = meeting + end + + def caption + return if @meeting.is_a?(RecurringMeeting) + + @meeting.onetime_template? ? I18n.t("caption_template_project_select") : nil + end end diff --git a/modules/meeting/config/locales/en.yml b/modules/meeting/config/locales/en.yml index 89e4c92930f7..6d8d19e23943 100644 --- a/modules/meeting/config/locales/en.yml +++ b/modules/meeting/config/locales/en.yml @@ -143,7 +143,6 @@ en: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -213,6 +212,9 @@ en: label_start_date: "Start date" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" + meeting: participants: label: From 700fe38ba8b6b1025c90596c2eb21d7e04e8e84e Mon Sep 17 00:00:00 2001 From: Mir Bhatia Date: Fri, 6 Mar 2026 11:48:25 +0100 Subject: [PATCH 27/32] Update blankslate description --- .../components/meeting_agenda_items/blank_slate_component.rb | 2 +- modules/meeting/config/locales/en.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/meeting/app/components/meeting_agenda_items/blank_slate_component.rb b/modules/meeting/app/components/meeting_agenda_items/blank_slate_component.rb index be81cccce94e..088f46cf2326 100644 --- a/modules/meeting/app/components/meeting_agenda_items/blank_slate_component.rb +++ b/modules/meeting/app/components/meeting_agenda_items/blank_slate_component.rb @@ -58,7 +58,7 @@ def description if series_template? t(:"recurring_meeting.template.description") elsif onetime_template? - t(:text_onetime_meeting_template_description) + t(:text_onetime_meeting_template_empty_description) else t(%i[text_meeting_empty_description1 text_meeting_empty_description2]).join(" ") end diff --git a/modules/meeting/config/locales/en.yml b/modules/meeting/config/locales/en.yml index 6d8d19e23943..ba49af599b3b 100644 --- a/modules/meeting/config/locales/en.yml +++ b/modules/meeting/config/locales/en.yml @@ -684,7 +684,7 @@ en: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" From c4a65d47361bb5cd90149c56841bf6b1b07ccf5e Mon Sep 17 00:00:00 2001 From: Mir Bhatia Date: Fri, 6 Mar 2026 11:51:52 +0100 Subject: [PATCH 28/32] Update meeting template page button --- .../app/components/meetings/header_component.html.erb | 2 +- modules/meeting/app/components/meetings/header_component.rb | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/meeting/app/components/meetings/header_component.html.erb b/modules/meeting/app/components/meetings/header_component.html.erb index 97c39222044f..d3aa26cc5be1 100644 --- a/modules/meeting/app/components/meetings/header_component.html.erb +++ b/modules/meeting/app/components/meetings/header_component.html.erb @@ -41,7 +41,7 @@ if create_from_template_enabled? header.with_action_button(**create_from_template_button_params) do |button| button.with_leading_visual_icon(icon: :plus) - I18n.t("label_meeting_create_from_template") + I18n.t("label_meeting") end end diff --git a/modules/meeting/app/components/meetings/header_component.rb b/modules/meeting/app/components/meetings/header_component.rb index d559e107a4ba..8d65bffad1c8 100644 --- a/modules/meeting/app/components/meetings/header_component.rb +++ b/modules/meeting/app/components/meetings/header_component.rb @@ -102,12 +102,13 @@ def create_from_template_enabled? def create_from_template_button_params { tag: :a, - scheme: :primary, + scheme: :secondary, mobile_label: I18n.t("label_meeting_create_from_template"), mobile_icon: :plus, size: :medium, href: new_dialog_project_meetings_path(@project, template_id: @meeting.id), - data: { turbo_stream: true } + data: { turbo_stream: true }, + aria: { label: I18n.t("label_meeting_create_from_template") } } end From 97ba1061b663d73f175a5ca5616fa181f41c0e6f Mon Sep 17 00:00:00 2001 From: Mir Bhatia Date: Fri, 6 Mar 2026 12:23:01 +0100 Subject: [PATCH 29/32] Update specs --- .../app/components/meetings/header_component.rb | 1 + .../create_meeting_from_template_spec.rb | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/meeting/app/components/meetings/header_component.rb b/modules/meeting/app/components/meetings/header_component.rb index 8d65bffad1c8..22e131144371 100644 --- a/modules/meeting/app/components/meetings/header_component.rb +++ b/modules/meeting/app/components/meetings/header_component.rb @@ -107,6 +107,7 @@ def create_from_template_button_params mobile_icon: :plus, size: :medium, href: new_dialog_project_meetings_path(@project, template_id: @meeting.id), + id: "create-meeting-from-template", data: { turbo_stream: true }, aria: { label: I18n.t("label_meeting_create_from_template") } } diff --git a/modules/meeting/spec/features/meeting_templates/create_meeting_from_template_spec.rb b/modules/meeting/spec/features/meeting_templates/create_meeting_from_template_spec.rb index abb6582ab304..fd6aa7e050f7 100644 --- a/modules/meeting/spec/features/meeting_templates/create_meeting_from_template_spec.rb +++ b/modules/meeting/spec/features/meeting_templates/create_meeting_from_template_spec.rb @@ -207,8 +207,8 @@ before { template_show_page.visit! } - it "does not show 'Create meeting from template' button" do - expect(page).to have_no_link("Create meeting from template") + it "does not show '+ Meeting' button" do + expect(page).to have_no_link(id: "create-meeting-from-template") end end end @@ -229,8 +229,8 @@ end it "can create a meeting from template page with button" do - expect(page).to have_link("Create meeting from template") - click_link "Create meeting from template" + expect(page).to have_link(id: "create-meeting-from-template") + click_link(id: "create-meeting-from-template") expect(page).to have_dialog("New one-time meeting") @@ -274,8 +274,8 @@ visit project_meeting_path(project, template) end - it "does not show 'Create meeting from template' button" do - expect(page).to have_no_link("Create meeting from template") + it "does not show the '+ Meeting' button" do + expect(page).to have_no_link(id: "create-meeting-from-template") end end @@ -290,8 +290,8 @@ visit project_meeting_path(project, template) end - it "shows 'Create meeting from template' button" do - expect(page).to have_link("Create meeting from template") + it "shows the '+ Meeting' button" do + expect(page).to have_link(id: "create-meeting-from-template") end end end From b249d6c1af4b95dca5240a86c4002421c44c7d01 Mon Sep 17 00:00:00 2001 From: Maya Berdygylyjova Date: Fri, 6 Mar 2026 12:54:36 +0100 Subject: [PATCH 30/32] =?UTF-8?q?[#72759]=20Rename=20status=20boards=20=20?= =?UTF-8?q?https://community.openproject.org/work=E2=80=A6=20(#22238)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [#72759] Rename status boards https://community.openproject.org/work_packages/72759 [#72759] Rename status boards https://community.openproject.org/work_packages/72759 --- docs/user-guide/agile-boards/README.md | 6 +++--- .../agile-boards/choose-board-type.png | Bin 41968 -> 176452 bytes ...reate-a-new-board-in-the-boards-module.png | Bin 23709 -> 102209 bytes .../openproject_userguide_boards_kanban.png | Bin 0 -> 149466 bytes .../openproject_userguide_boards_overview.png | Bin 22670 -> 101933 bytes 5 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 docs/user-guide/agile-boards/openproject_userguide_boards_kanban.png diff --git a/docs/user-guide/agile-boards/README.md b/docs/user-guide/agile-boards/README.md index 7416fb5247ce..ab47d3320ca3 100644 --- a/docs/user-guide/agile-boards/README.md +++ b/docs/user-guide/agile-boards/README.md @@ -69,15 +69,15 @@ After [adding lists to your board](#add-lists-to-your-board) they will automatic There are several **types of Action boards** available in OpenProject: -### Status board +### Kanban board Each list represents a status. That means that all work packages with the status "New" will be automatically displayed in the column "New". -When creating a new Status board a list of all work packages in the default status (usually this is the status "New") will be added automatically, while additional lists need to be added manually. +When creating a new Kanban board a list of all work packages in the default status (usually this is the status "New") will be added automatically, while additional lists need to be added manually. > [!TIP] > You can not move work packages from or to every status. Please find out more about the [workflow rules and restrictions here](../../system-admin-guide/manage-work-packages/work-package-workflows/). -![create status board](create-status-board.png) +![Example of a Kanban board in OpenProject boards module](openproject_userguide_boards_kanban.png) ### Assignee board diff --git a/docs/user-guide/agile-boards/choose-board-type.png b/docs/user-guide/agile-boards/choose-board-type.png index 77619412aa0b84682c86b6a9208bc6cf38e95aa7..de67a698e5d92e9cb567e504b7c150acab0cf1c4 100644 GIT binary patch literal 176452 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%0A_UAM4+lMX3#V6?n^5^Ty2rMAI%$p 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 WfX_HI@8a~P0;#I=pj_E9=zjqSHw#Pv diff --git a/docs/user-guide/agile-boards/create-a-new-board-in-the-boards-module.png b/docs/user-guide/agile-boards/create-a-new-board-in-the-boards-module.png index 2a5a7c8461769c319b4c608909d3507ce10347eb..ae91b4750fd1aec5c5b0e6e59b19fb03a1c7b170 100644 GIT binary patch literal 102209 zcmaI;byOTdw>^Lk4k5S&ClFkNyCgWl-QC@S1cv~@3GN;s1b2r3fk1GF;10pvU(NUX z*1h-r@!qV=V!CI#ySlon&OUqZlP^jNQfM!TUO*raG#P1e6$k{89|D2hMn(jC?(OCA z!51MumNu=CNBnoRL7z|7$bmf6enqIR|o{38v2HjQF(I$4hXYW({j_2 z|G;nRXwPD7=4fKh;%V;$ehq;Lig-F1o7$SYQJ9!pT002Q9=CSVQdpY_(Q0zZv&lQX zH@C8u_I5E>^;S?b^|m$TGouv|MtdRX$q&w8Z|-JH;c0K@;L7hQMERc+^MlXO-K>F#cA#&2P4!DV7*#>H%6%wfj-_N|#Q zv#}Y+TV^v34l^FEx4i5YZ%ruwdwDl&i~qg8gX@300dxo}^c&W%co zRzNQ){8sQk-~WH@6J&)p3@3H+yQi{2k1Md#8gxWw4L;ak3)b%w}x*ta|a8ypP4{R z{C{6&VVwJT|GOzJeiammPWivD8r_#}m{|YwieECx4G#a`*FStX(*JX`S>vl+ivK;B zvb9eX>3@#J!kTAB7tS4MfLv9?r>x)={x z{&J|Sea%Ae&m`IXLjws=E|6#lhGQqukKbR9G2?OkdrB83j$wFNK}P(4T2TTa;b+Rs zH4rl+fK6CeqJNDj=3%mCHK4&mAk(mnRlODDwA9JI?gKkLTomztnpcxg#Im_-{B+jK zd-j8Z!PRD|DLigY+SBZ>DvwYiE`g#r;^$S9KArt+MVi475gWFd}~++$Pp`$buFK~ifUj7O}{#OBczD6p}#H%-MCLAWqKHlnTynDJ6*VQ z$-3U%%8#xek>Zzdm}`06Di&cZv7C(D3bb7Qh<<~ZdRvywlfL{owt5P8!+O$Gl?`#`y4AjcAtzknl4paxpRPlmjqL6`qk;*zWoDl zDOE$xm%j2(Y5OeVW(1oQVZvnm*TVs2kX=4eLpvRqF_f`Y260nNBNx-EV6w7bnhLpV z)2jQ^MJ#l0@x5!YPKEKNRbSuVcRiv2Y{ zt6XQaC3r7}y!t%Dy55+^BcMMN_{y02eCtNj?DK(`?CF{#jERmS~{<;!= zDb-Hii3krryL)Kn<|Rq%g3f|?Qo{KLM4gbEjV<&0DS2@dPp*U|p zlKxYwP!32zMfYXH{B`!HnwcSU_N2(J64C%x9PT zJ`6MdGHX;3Q?NGmzNj!2<}@28N`|UX6v@_Ii9YT{EV)J{O9B|r%IgS&x2Nhq;l*C) zUD)UmcD79rUNYQvnc*9AMzXyc9(bG16xnSRI?fc$er=_Oa`5d^)GCfZTzNrJnI0z6 zQef&QtzwvV5D7gYAFs<6w}K=!CDkG_q(pB7Z6(S!Ojy1QIuvks0tYe8otBv*q=z`W z-WaZYBIIkz$d2B0+v}7SA?K0$a5#&ZBTR~@oLDhmKoc<$l~94k@Y9I1$B47QeHfy4 z@{#$!^K3rYby7;arYg81GBd|>Pw-=jNyJH8NzoU^1 zZrf4pxH)6Y>&pAVos%do816i@F{Cq$<4^w09O7T{P?tYJ502%MqJNj%+|t^~NLTbN zwY`0tutbhJ;2{Itscb*o-Cx=%*Q*5y20_dSqnb$kF}$-7!9Sh^j=0ohgpvu{B*ZNr zff=-3MOKfW;Qg+@C6L?xzcKK_F#n|j-RIiU&8k;?N!c_hv5WJz@`!4Qdws_1ZYlf-sow6d;+Eu~cXj8gw=$7C(S!iHpNzy*&-#X&Hl zY%~i7YS9ygN8L+Mq}uUy#Ja!`_H^Ac?xnTVy6XeOI#TYbJ5a8XLNp+y3@+P>xk!~^ za3j%Nwu@rO=-uC?mwy$0zk4T3<4|n2=Jo;m>3FB-#^hX^cfX!3l9J~7J4U;LDuZ>a zI9BS}1`M?0bQM>+La3i9s1|Rug5(BGL*YI1-)D)smEeTOK@=ffzU==0jq2l_iAI{i z1y`SElV#t7U<7;gt4uS+3&a8}Y=TmQ$F5hqbYd3DA+5D!S^Ee&h${%lydIA%-ab`W ztUk3!j*mXC{`0O7j55x7j6Pj?f-Cs_5{nW(Ix)yb^xQ_GBFFfvrBhu6p^=PCoz*$t z5EIg8l^&DsZ?(zV6r}so9_IvG&SY*zPhyRX=v!|&&wdb6dlu@!MN_P9xEEu&(xSn_ zPa&U(2M=~kaASA{e73L9n<;BlIa&YefATk_)oF9kKBM6Qw_)_2ez0L)5+}-qzuvAu zX6eI!AL+CAV3#-+BKGcU`q`$qZi@UcCEB|m-bqVzzfCQ33qt7N{)h=zoVa=D}m*NJ@-JN6^NgXnkW4)@$|lon4K&kwM&~mUTJeBWivf zeZ4S*f~p@mxOBBGVs9R?aOm@I{j3Y832SD1*+3if(6BQ{OQfu=XnRsYW!0E|v*ZZ9 zR^I*9t$j$jplVUBH^oeB89ZfTzw?A#fAK$#&cjHCGmVI?6+beS?vDk0*VRdnWtD;M zt1xHPsS;S|{LF27q)hbHiKZIl1;3eoT7AvF530ziQEXR$W7S0B71*__2=>mIIY_kK zU@&yd@@Y?^h<(SWd7w=K2G^f_wSo3rQvkl8uY7;j7(_w-D<}INo8-o*S$ubE!u87K z=q2Pc=RPSa-L=iO*Qq@D)cn(^@0`3an)vru_eTs|r{h^{zx6zz>}y|K^}xNy*$|7JhDM)yId zg#bhtqoE4}Zu_c*88SM!3wH)@(}RoUi70gB0rpo|S64YrS(JFW4c{h_+0rH27FvZ3 zju$ccBymXGbj-GK+vNS)^hv92H4GD7J>Fepak{0}qw^sYzHxD%GQR%d2gMXOn=hez zOSKV^VNYz15s^_&L~XvoJU5=PrE6aI%(2vC5$z%X)PSv0Q*~s;*|FqIhFD9t&bD9IW!V1Pp4KTCq4RQRkN1778eo^Gf?EYfw z!E{gjw}$AByF6(1jLgY->@`P!c*$ZZnDB^Y=mz!hGKm{@SnILHi_;+#5ZhRB&#m4=Tt z%rk)EQgagjFr0ZDWwOr%FyrvP&C~&wN5fTWut#Y|O&o}rbt>6tFfJX@HBhMYbnSNF z<5Z4k5?>XC@V7+5!t_oAR(O*eYR_Jy)z(HU#+7B?3k z9wr~Tt^zM$hHI$DF4-b5^$&uhsl2tT^VC{1dj0BpNl$weiBIQ&N}$J%z%Hj}#e3!^ zfrI#D^RDYw*4O=3p&C@H3ChM+gzK^CE=C*RV~KJ%&T>VJlj}qQ7*Y$<6#*9AesgY= zh?2F0L3*g~af`J1py*98L|uy7kjJx`|L2l+tjm!CGTOz@F8pbw?jZ>xpOm4u)?Bdo zf{Td5-|wMM^soGAcgkp3ftS0;jTdjv;xyJ%_K20i5=J|b=FenRp17~p0UA{L0suZ_ zA1a|Lcrydgdb*K4lq?$jj_TT8yN8_gK=x7P~Un?&LR-{Vk!@4VtW+#tf?Ox1VyQ3S^PX zw8;cU`(6VanWe$txm@N<-8NT_{w}!9>D&SFDzg(MOOoHeT_Kn?+cwzxkr;X#L&EKP zq{@Axr252a;$i%ObM7qYrD-anvdzotkAF`O81>mWnO-FgHg^y8y}tHF@-kM6v? zjv=+&Fyf3%UFgKRU)Wy2!V*HSytG!z&yfmT zW`X`(_)`Oy#Y+d1W>jmH>z3X5CU)#2^Yw`7A0l9l^=6}f6vzyhjYKXVa_%Y>$LZ7x z(X3nRs0xhJ~!;+{nt z5yxjKYpmLVBKfFI$;u+F#_U~V%Z-yKsud@!3J03!aqNbt^KSz?Uaa7a*&_;eVTAZo zdftzh=umja*!S?RV=}G$cv<0aDGqCe4}}7QrSWcOk-J?*y1Y(%_$usZ$#vp`4Lha@&Z`s5 zLrm!Ax}Vgw;_{g=;k((x6mSElKEOp;VCB=T7m;03Aa{+pI^VcI<7GyD%^oEwKml2Q z>f0t1ab@(A@BjeLRup%`7sQqU9;|suV<+GX*GbwGqt>y7*WWef)wT72o_G{3_ml5i&b4SXYNxLKVLiH9F^x?`1MYnAFyYNq64tISoA-JL zy?EE!Y12y^VA1tD5Fj@oAG9(o4l@5W&^?55WB!cyuk{s%a^eW<4+}4!TOVCMOe#{d zkex0HfLuWm` zG013VHG0S8#g21=nvw~G!8&R^ZSl-75XNgsleKNvIghu?H961@J(ssUy=*wYF>(Ek z_Y6`P#yigPAX1Kd6SsaHx}77l$?cNad_Qw?ri?L|AzF8FBf{($J^bNUf8nbmrA&UU z((KdxCxS8nMhVg!|R1qM)!xrPcP!pSLS0bLtB{?fxz=%-Dxl-BUsiPMbk z1Y>Dqx$5|$#p3e|1QDoebmajU|B#9)QU3p=W8gE}0l&bdH(5i(JbF|pmp zZj9O11DM6Bq(0cJZ4na%xS7{5WNhhwK*0O_I>(`>*6`?OnFxt!B?gc2%&}D7v=x}H zo_TVlYUds)aMS?`RCxOzCv1&5(@xK7d|%z1YJ7O|6Y(Bh3gIhL>{71$JkFH=eo1ud zMIz$$c|lU74P&H2Ss;K=vr8x-sA}rn zOs~lMooQ%L4sA3=LCTe^LkvwIf<@*dX8i;MXrHcmvhQsOYN9P($y?M_sFSs4s5O*U z=HWhTyoe!|w}7rASZiEHoN0N}FH)~2U%yQ4M5ui9gcRT(btRxa{Q~n79LZVoFIbHE zyI7)ab5vE!a-(Vu+f72b=h2XU@{Y}dVi*N7Y!nSgXx&T6^L@WLXKsA*CokAC4E3D?gML+t-fR1>Evff2 zO(qCTqyF?@{it-j9uJ^V*O^R~(^{=@xV|7Z7;EciLA0m$W%^jyt9eIHmDk$=lHs>5 z@L-85YbouOC!czCZ+R_sk-wH~>kp37V((~Q(!0+y?oKvsG)SCPy64B6%1A7k@aZ5E z7n`Ns9>U^%-ow!nF2!l#@@x|5E4d(jGNQ;QK$8Nn1Q0UfW=QZ}OyXtq)yC4^(m@cx zm1=y5(P6yRo8q04R$MwhAtV4~;Nq^7XB;moR7TKHa~$Cyb54|q(9sl<_`$sqwvX1* zXt#K=>iV4^XHY;NYu&Ib&eFze##dyi_YL0e9ohOf+`=7ASmcI(!vl{$DDe=Ks63|M z(3uE9_g4OR(p!p3yZ5X4H|y>7JjW1qtj5Ka#sI_z^i`LeU4IDg5fP*Rf=GOO}ULP8VbQNU0hNl)44rj+K7X2BwTt(Gh z81HcSmIs_ZVACQuAWWwmwuK*Bn&c(GAqGL1mhl6Ji!0t!NyCJEbb(jJ3;$$LDQ_Bi?&BRIzCE9%jOKKw zw))WNmahi2(3Z$l9TD0LY2+_J9_n5dPa;E`aXyn>CmWcgyYWpiVNhfCo)=I=?~12I zsigbs)^mn#ybRw^APKZ^{ji#EtPLKiA-6;#t#fgbE2H0){u2IAv5e@+)5D6xiVJo< zfrIT|ZRcByQwO>7l7SmspYv<4y7VX7jwL@Bn%Z#0B;P7CpHG(+vQsA~n07hiNLl+b zo$q78Y_6S6fI!M^lloOZx=1CqTdVhwhl#ujM_Jm>&#xo~DS*?%0x2}~0_^L}{XOK6 z<8HOj!F?(tSsRd$yncrY*|TG@I07b~yoORUvpYBS0!{9$I5FPLAWQ14K_NW>vxP4* z63|gkwNPvZh$TpXqerGD&q_*-Jf4V0UD>0RW1W{4ScL(>6uG-t>bZ6QxNiZlQPN_{eMwsY8lA8lTVFxNnaZg_^RyB6!dWeY>zWntb9-l>1#yt4HF_FFWrN zk-x+Nmm7bOhD*c943|c~H}FA5O2Gm@^RM1mlOs~p^V)m&*>^&_eDp{Dg%Y^V8!Vyz z9i%xGBKF#nJ{@ob8((1{l|G&1uFrzj))`>wXuInPgl!~ss6XsXCONxEL|S##L`}Bx zu$Gia3JCtqWb$}w)g0boSe&ZDbonj<I-6fu z>mUHk`D<<@@5a`~!_8g^i&Feml*J!y-=8(*E+a(Ih#&!6zP+T2qN$~pE=WLnF1u~j zjdAb!@=9)yrIzj|lWc$UnkVN6i&A7?brBD%qw`IAkC+#*C&l}1@@K-0*&Ts(Ou=o6 zJfb6cTHT8Xu@z;J26OPrkX?9uVdI^ubGna zuF>Iq$9@|*4`O6V;TBg-KSl`Cp z-PX*Md}jq|W@P8LkD5G7DVLXf0*)N%&nq_2b1dt-zXXXeh)*3;7S4~0z9(v^nU7|4 zp`i$684>0n3A-9SimmK#Q0K|()3sGHUzfEL_R?R1a#0wo&FB+$F;tok8-Fj?XFZ`j zT8v(NO%dHaL*zSH!LimaZW||3{#oxN8!}Z4W^!vVxIY{O1~PyDIogBLais8Stc_u& zbH3-RvvfS@I|<#wx?_-DSK%`F>$Q>Pa!YC0@VCJ|j$4S6yQ`8J;5{gn>8rk~Jr-Hq z8NDVjl|0W&9rvMIw&6r(G|Y+3{KJ%3h8-@fnxpB#Iu@LnP>+r32I)Eq&$uyrv>vM2 zd61XW^=`m2v=g?qzBf6a|Lcu#Yj+KF3V8I%PA{6Han z$vsi~lDo7h(H>{AhG~%@kOXU@OK|hT0#LS0aA(|$-^}D@r6F}eheH}Dbnu?dt3z+s zphSp|Py=%Z=`4C}DEIrvK^6NLyI>SnmRlq&o}+iPQdCLWO#IOSljAZ_5;%xLh=-=R z0&&wQh5~|^fP!+(ey&GcOGn8k)UU$!SGlsjv^1Wa$FiOJBq5ISc=D_z{wgimTvRef zEpd5R8zY)xxWj4U008l&I=e!1xmn$L4U`VOHZKghk9u7m0xYX3zM6Jq8R5GtOk;}( z!)0=+W+_K)0Zpxh`z&4`?)NYq-W0tr!(v;i(9JYMx zzvN%SYf69XsrCxCO|J?-jf=EK!uV4!)X~n)JKkkIFJztQ0G>N8HJ-(2Ko;~y7rFuD zCROmgW8b1xwIGPrM&l%;1ODL37cAx%X{{(I^l4T~^GFGwrZqkCOl4|1!V11_@DS0iWY0Q z>;0)bn|N1!{^>{E_#jC#|NSDzbKEUc*;jiD@05Jp90gFR8xc&_mK|4YNA- z8VjrEf1uO4Wlz;=^Nds6GuxgTE3)pl>zd8qOYH3_)L~Tx29d0i1a0=#%10BLi1S$& z3zV!ZG5oxH^~rUjgRAWn$WG1!_NsTS{QF9bW2n$zV3nI9FCPO{kT$7ustfl&#yQW1GMUE|1J)^yf z^7YS>jOkffD&#R8eV*`%X2$1W^{#>RniUYfQg0WP+s+r2?Syz(d(J}f(_CC#5iC@L5_xdVT)rPeU`xgJ9F6+lh-@iug0*S00FIj;D zOAT7TsgnRTa3~zsGVLpA$`ZCcX+;go&qo+u8$#8Ile3z~IXtW|QcF{2o)sid{<2o8 zA)}uwmW3)WNw<7OSXk!w_SLVGNKyi#K9!be@xWiUgp_93PwmaYS|kwiuu7C>MD)f{ zKkA#XZ;8xgmxbhEX?&_nX+#wPStavSF>l)H6M&*PBAx9&+IIgkX-`Yo)7imM?&k0LItQyr{VNxrZ%&Ffcv zC6=94IEC#s_K1l!PrNmTG%w$evmq+|kV(=uDsVZ#Q~t z$87wgegC%HpDM!_*9=HGV>a;r1PL??(}aj))vkwo{s`!q|3m8tl2-)XNy{gpr^1LtwY>Qgq6*CAiEX=QZQm^8lqZ)tEw*JZv8XpyZs9M z&snIO=gP~jHlW|6{;kJzm*)J)X)Ioxt@A+?XC;aOQNK};wKj~aQP6Rp+g8HY;Rm_q zV}~%b*GE~lnurH#i$y+ttKWLSlepDWF;LxTl|3%Xj%Lul8v*QsQoG_*;;8f%FZ4#A z<{#gdNN~B&V*7UjZMmZ2wf%|gjq5FoaS|~cguxqe(^@roCmmh+_$wI9_PE9WHlc!KrT57FG*hqe z@f{2`o`PP&zO>r8f7=Q%iR)303WEs2H3=M~&L=;t<#+xe2iz*@ZfvS5L0p!>#m~c; zpbVLntkGkJhfoe%3~z-95dGE8lJ;qQslObOc=C!-Wg2k4PRIRF)F?@GqR4 z_G9k^!J_GQ+&4h17k2xYYlPT*{1vPeL(kYBj#~XYJW5f_%;yD5|4I*FvV=3#<4}0GVY(}O&z90Y$%CvpY+}oaH`PAbVUcK zeGLNr?wtII~g3e)z^BE6)x>3o2p+db(*rZcc{<- zk04|A2@1RbBDwj*yEY6HeFm=+;lhFeC7vwMtRp~Zg+87%M4WWQ`?U;$1>@g0SDr2U zXixf6cstF?o7WxCmVhU$yZ=i6i()spa$F|MqnNkwRmGN<3htIG{aY^7 z{>mk>DSLW#F&~#ua}geF)XuWw*x457rB@HO!=ZF)GY_^Vj*9a5ESh1IgDFa4NmB29 zba=R(@4}9K+r)OWPfBu9;jye38I0FLqPay%igK;qG6h%C4?tS|T#|_e)UL>p*9~#G z|6f-Wkfr_2x_C8}f8n6T%3#Q|=SW~a<7y1WypCvgFQfIY8*=|aX19)Mi?|&0F|(R? zIjDae-mWR80=~>@8q)x;Fmcp|IZT%8OyS2$kwZ&mx;@dx*2+`Z+3O@{n{yG~mTgD( z6j*3#E6X%yJo+a;eB?5?>R%r^@`+0z)U0xW8L79}T~o4Hez&(NaCFI!<|p8UFzL^y zLUY`qiMUlh$*&!|!T9VpVLP6uK+(co63%iNJXYj~$v=zn?m9GS4B!-?HSTi4>Sb=? z8cLAVu|{ppZ644Kl-6^)I6G=hm(xYu_tMH{(nVOQl#@W6W+P`@2Pz`SPyqrkg-*^> zV#QcMqox>s2;_t-X_CEf3lAqtY2BMhnH$_H6g$ed(UKtgC-))YD8wJv;@O$xxKcPK zii8R<3O}z1p;X4b57O7LPy|!yG9%#6h~-!H>nZsxzy|ma&h(ZSz+*Pnq{EldRt?gE z(}@XRD$cF(6%=2AAW- z)_B0mk$e8{a#z@rYFWz}6C{_C3D*9r*KnHlSCi#p58799bBmIRpZv3yN?GcV44CV3s_dBwB&<_jOQ% zp*MPQ=R}3A!meDDsoQZISpFH_b9H+8^7OGc1_btp77<7L3UqfkEO!CCL(9j{xu=X! zP8kxg2bTf3-@f~@*n-Qb`qVl%Rsj72p&bY^MKDUB5N*13sDO9pq0g$6_hDv|N6B)~ z5gMbQ`ZTm7<`(^7A$KE-QI*fa7$q+v{cnoh-mA%|ObiMw=HZ9dy^sX+X-jbV_K>b+ zbUqyFBLSN8g`L{(?OVFRX2GbD%b=61N-4I@N&8pzPDuRit>}PDvH}TB%M8ZP=SQEp zi5c@NZ@CQjlYHLM=zL&IxH%ccx$US-;+KRHywFyB$mjfYbkI4fn@uaBES&N&Gx|Ls z7MMT(QWU4wxvI5Gx$qku&7{pJ0Lz+QxSZsTfbCmw!DQErlO+Q)Gvc=mu7^Hwd>H3` zRFwG-kA4<7==vgQ$JiOz7!c`Uh0)1xOc|_)VtO_~-i_4xVxm^rgl`a-FX5h+I*}6R z(?D)B;!8Pvp`IMBm?L`YGr>gTE+_J%5NxDEb=_xOc>+i&jnf4zQxo5c4z>RdYq>a*}b1m zrNhWRUWB8cz=o%J1BR~ll|JBvAl$);aGfL<_WgRr{^yNFR|1-~e< zNKpCY1d&Wg{8_>Y1Pj&J0=B`|=ESZmn=@gh4;&y-s0inU3RC_$ zUxq#Ay;#uuD`Y*qlP;PgTuxn-S+@0mw)($;7wZB`Z`Ib6yWQxHw|z?GJW#QLm60A( zV~RE=d{@Nk{PzJ{ngmdI!Sfh*?c+{BO*L%4bV3+A+9@l?+Pyg9xBH5831uFE9JGDg zv-*4HHDGK{_A&15XW+W_->X!;{=;ziha>W%$>o}@MteYT3XT&%^iQ{i8w@)~A@x%E zCw<$s+y_ami^b0_Z&rRT*?ukyRb~uVIhFE6L)Av>^!@br|Bm%GwV#`IJ zkfzCjfZ!35SgCosaU=(rPIRc#q_X~Z`+m<#4Es}uxVU#M zqn_T_*oMgaLqIEF%!of&nI;V~iuCdANUHmee-9M_T*F2)YoveJTtQ*m6@g>qfGZgi zt6VJtB-c@uen5k0#|5yoLmTh>^hr7>Nf$dJ8_(+K>G2n4<5m8EfLQ%;bMR2G5@pL* zf4p&5Y;)a@1y3pk5f3bcsZZx?f~9*i=palmiaNkTIs2wU5oee#-3H2LRasan;Av2 zSIv+g$#~^YB13f$^N&t`L~1OaE3reQd|9@}FeC%kH#yJVJc#}^cnK+otegS? zDy>v&%NxGsueiJ%M;N|8ia0_boJR>f%yzAoNU)HY@}&v~1|wHUO{mdX3q zawjQ)ycsghgi%gmwC$*(Pz7jMr;EWu*hb%}?BiE2K;E4yKCbeTfBz!`)I(O#xe#rM ze^{rT{pdoFt;#&=*L=`nf6KhIZ6^*SxV2F#<-U#$1HxWb$+q=Cdboo$zGiD7J6O`Q zPRFI8-tbWmT<;O6C`0Zc=TApZ|6{OC$}<&EK&6c6#uu8cr*6Wt2iCXg^l(CbX{QD7 zixIVGSn=%wgh}D9JcWroz~}qhqakDgAU{kZIy8rJ0h(!R&&2g33!^{lOS^)fguoK` z8GuNTQOB&EWlcaZ^_EFvyvyZ%(aqDi>ImZ$jn4rgYqGZM^dn;i4&+qWu;8dJNX48yW)=%kR5QZ|GYsTzdp=~by!`H_ z05Dhg&*2@YCG?MO2G0NtB&_nyCgIBpW(=oeK?2)a11t|7IH1*gO$e0Y?PMlVba%@& z+FhOU^6nLh6kh4a9kG|M?}P$5y<>@GD_!H>D+gDtgrQiRG1~RZ$j+nr*G>_`7B9sm zv$XN;*PS8}=YO?^j-AObeD(j17Uh56-H2dpR5^op!o6pe8MSri)32#t?^p>BALx*v zku)8M_#!>{=e|`nKG6%~y~c;$q+TS}5qm|8N53f*10xW80dL}qDUoYkMZQczu@vBN zc-SpJR;a@lP6_>ndvWCMkxogH<4f-#&+HCQkE;EB+8k`Brj{)>(-KAT->&B-GXdOV zfwcNse{#`>EvqKamV!k&Dy9R*>B=wP<@YHz3>X^xP7{W?Ki{4|_CYyb3r_Ng#tigs zDWU$?+fx!ZNSZ%63_n15-kwYxS@yAbQ_j5Wzw*dLoj+?{-gz=cow;RS_U9{m{ZveD z_@1C)GDN?Ju?w*1X^r}g-<;fEU0xDbq#xLnB=Kaucza9 z^}=?@QTd5?#wJ1pv)m_O&L{4#C2jt6Dj?#LGgYtWe<;mlyf|}XEusm%%&$*h%1?UE zWr!pX`i!Lx^DQVmpKdsnKIGDmcn66KrQdu?5lDOCQGI`Rj<(eH0B2 zS8@dNu`4l&UvmC`8Y;AJqToNXGj3Q2e;#@k{Q8W>Ypso#k(0FGI&=AAYADUB^rW53 zT|W9Atm1`*ZVYya3Vt4$^!++oHmnH`pCxX|zUHiFx=J)xvX?wG!F#vndV67rugKK4 zVLS+B##_@hX~a$_qP$G})r{NVm~i{#&j?+JHRd+(rJO}lB4kUS6VydzQM8JZl#oJB zA;&zFlr{b-M|wSRcsS0q`Yo>q7qTu|U)7jUvMg0+eZF!0cy*^w(&RQ&^WeNov|TBH z0P(EW%@X91qVs1R*8PO-PtsyhdpLjKRcWnVeV%zC(D|uH_I5-~88mM7Pyc&o@29wT zmj1i$L>Gw%NkT`*ID|16JUx$_zl0zGh)X@p2MayK?1g)fK&a0-2Yz&(&?0upAEiK3@NU)Q-YZA zs~MeCaf!)jfEv+h4h7?8(ne{#A1}#gi765o1a+bzwCyt%zQDb{>ps!t=NBnS=Bsh^ zhXMT{&}FMUeT7te2H1dh>r`?;h?Y#K!x5_@YHH-iHP3SK%_Mb8c9-=Q=w>i_9nsuZ zIUV`?yTKQij_WT7iKJ(@Cr!PE*3pJp)uSW_5bPctoQKE2#|`z z^nZA=(e$}dLzRPce9u|*MGX;oQTxp6@EfC236ZEAsdhS2rP635VR#(mBhXAmV{$h4 zDscrm?V_~Xi0KI%;7%hR5Zy4OWIfpEJz5q8wlFec+>1DcuP1?i6!rx0_mn)sGQu|> zOLau`jfA4^6Zd|TGeN__vy1#J?t414{eYK0Vy4UDaN#3*-ywEHx{mN96a_?POg>s} z3d&C2@dN?KTvMh3-r1)SZPw{{#t#-ToJ|HQJL~IC&;341eO?Z-3&B1tcuDN2#dJC9 zgMV0n6}C*~?W?+Vi43ED=qLoA^yKdx0jmA8lQFV+FQip{D*hq6uF-ty8_tCM6(DS1 zO{ugfQ;GnaMwPHF=f2x=gNZV4UB9z6RMW3=g!oc(*REt@YXA!~sS ztX-HA)=sUNtyG*EpPOD63rrxxf;qmnv5%~rc(kmlqWs0=XtlXE7{4NhAK69OaRBZB zD5ejuX(Os$wlTt;L4d0Wj;3*mK>$mY%2!Cg?3+&*TK82r zuKfD&=pV!qX|Gv@4yF!K-RG^NxZEG&aqI-|sag~U`q;8b+0p5q&KF<82g!;~8pq8- z0ZOR6whyNwNB_BnphyXLW36*GFj3&qNaaoSk%QE9Vo(dPDU%)KoupW-6SHC`?WJHVrvg9YQRhU{vxZ+ z$MTYHMSm)BN_3E%fAG&2i|#GEyCexsM;Q*$h3OI9A7p1)_Vo;&K)5R&6PSr`9Z`0X zeN#j;vH@j}0SEV9vH^?y$M14h9DoasM($u&TxG|P7|%ZBt!K)CA_||SGsQ1zk64JB zk>`IC>%QLU4Jv{Xi#LU4_;=dV9SyjvZJ4?rkJ+gy^Ct)rNW#Pz4a9x+?R$%tf92w_ zQqnZ99`ij@=Oafw*$~|M*7ebFO~)xV=8d)uzq+sIgzL%%#YBCf8!DIw^&M!d`>D@p zG{lO%6u@``^tj|Fo1+o$4@cC)UC)nQ>T)_i`l;uc9kc4!Bj&tbLB`I$knQq*q$A19 za=Klm*At;iBJtGX@4sJBGCwpPE$xLR9n5k8K9F8;$+dz`1u-h*-Gy9A3Pr4lmMj~u zVDS|NiP2vZYB~4z_a$HQIjxungNG0kw26>4(4KV=6A-$@ijyW#ep`P|6tjVuSgkf- ztQWB2;)YwNmZw4nfi<%=8y<@itd6gyYKZ>i1Ku-ThO+4WS6J*G9nHo+g?yx0R`X%F zyYc8s#nTjmoL%gg71PqSz!(phBUt7gXZfcM7HTRa50x6Gz~o=*MVY?M9NL_~m-x%0 zEL!={#st_dtyJXiOb?Xx622A+R`Os^QoLh;U;d`y6;7Euy*+Y*C6Vi1el~W%iTRq6 zoBpw*bT%Km(Dw!GSe^p{5POKczQr2Q9@c__mbS4X?q6;%`c&-;+Yado5r;0X&Yj)` z4+?Y7>UveAYcL`eXoqxLHOOchdzHTst?F!jxMRH^MF65FNTA^PM-5^h2^_VBQ}juS zv{U1dhM@ieKpr`uu-`QCncNmCd|v*2P65+mw72e6?=3do1RloVjYfW+~FhGTf z)qkGJke=(wK~jZ&@NJ_zq9kbdK67Vk@W4U99SzqW0z-RVek`Lx|C=?l#EbU*9p8A6 z$BuO<7-hqrL#mwIny3#)Hm;UpPzMIM^L;^Q%$3Kq5V~gDzJsU zGZJ_jMSdf6MY^(_{!SaS2@!mRx^!g%FX?c1n!S_;qrQkbE}qjJ?Wo9p;~WBpXXT~D zN+B#B)Q2B7hQ+Xe$qNS(Db(CFDJd?F3+9raNJjv8cTt2z(82asEH}u=y94)YW>a!w zM^ZbmXYm5_B`84a3))#I$$)82mRg$id%scYuVvAzGl>k_;gy$_xX;-ij5adXy1sx8w%x`ol; z$jc7eV1(zGDId&_0aV(wY6GBQWA>$~fsOqe*wx3lD7ZPgO>}OMp+*#SgK75ULeO zu7t9s7a0w(@Tp50f0Wofa`p5?17?-wvrNJ$3$-)%9^GIfs(!j6shfk6MB=|p5py1= z`0!%h6&C2$FGMgF4@g0f$v(z?5l(r*AHCHK8_-+FG}Pdmt|7K0y9~}f%ZN4JsSGri z&?iUY?;rHO6yw|VPey)R-;)p+_nR@adh#zj1@sAYdM!U)hRd^=jqh^bqQ4Z5Qn(DN z+ABBskAIP;9BD@WAP_YNtp~W2zyLP68=WBKinA=tjFEW<3OgG{cY}dUVDvPgF~{Cc z0Nq?YYo7FO%!&`91dfJ&L)BJOK%*fo^J{8U-Qw$Cz=+5^dtJ)?T6&m$RlgZR1<8z(?XA%#0RFw3lT!RSzFJoN81#Pd zJFL?^oL6)C-_14tZQz3d#Ia@S|49kwU(OOaP#pV#ITRE8Vs|E&5*QJKf3F;CI@%O8 z?Fep#JwkiIY>|jp*pV$+aX;j9K~J^0H!F#!e?ZX+RIN}L6-#n)fL<#($}v`AbY~lr z<%78)&(J5kr8+Wbx6Yj^7=r3YylZwBwzbxFEqWv-TvYDt?r#aRSgTt>hK74V%#)wy z+jf9LcY1hr&Tai7!kcC2S}zEA(!iyY4{BX445RjNZO(esL7^~WndB7{@2 zJuUj5mHTThU<>)gm$NRQQ6k86coADR9EFXH!)(20pn7uQ9C`8;T`He@2xc_?(|Fw7 zH%Zz^Y3gM1$l{(NSaTU8eKFww%|SUyE0;>@DM;_Xwrd3m>+doRg3`8Z>1#(npq^`J znFQI0_Ymahv4NS9$)jzEs}14y`K%Skpi1`sf-Y@~auP^fCcq!JTSo*uCR*HiRQN!- z+u@)333b^yn@IU^ePf0fOE0PhC7>j&-n!|-uQ8k$14*$00DG#@xr_!yqpqYjYm>!2 zCp{rCV*?U>7*aH=H`4;iu6hjzloK^CLB2Xwz8Q`7Jd2}x&(&K?YGd5(T3&6YCjcs$ z0D(M17Wp$tmmYI7QHG{W%^*1-{sCjif4KSa$E0s*BkR6Z`@}HQEPDKv?IL0sF6BXt z#D>d*5RhJ=HC}i14xZ1yw>=x)Gq>G~b3Aa>3k-hZ1C{BRuC&A0o($m{RM4^$kTIh2 zM?<8t5JeRJg@cf>4ytTUu5xL#o-Huc=y%XTHU{d&tM8l~lz$Wnuu=#u0+1k@6|oGw zh8S(*jjyv0lu&a7Nkj2i-Ggd_Im>o?>jmb#??Shl`ANJM&z8@fU3C|gSGkt-u=?Y7f_}>cUx1$q2!P{& zKH)6YK+o6i1!H^syeFF1Q~P^--tKL;B-4@?7O?0+zXqj^nE#Fgd*U14ZuS3V&4tbd zkd9DNb0EnFKaK%e2DqY));&Hk_Z3FIe{34{cp+%r5N1OIh;qWW$- z44$_Q1H#uprv+oYQ59-tfhwTe(~rQp6HVAjMqgERyHN$aJ5X7L!$qka%n1-pF!$yq zeVQ*x?*1??km>_w7qHZ0;6CU4Pw{~!2>k`Xx)Q(+E0^`EuP!Of>A-*n%3aRhiAl4X zv?G98#-UF?Wa?c&cR5qNMKg2|3cIU(jsY~!bOrS8POM z4V~W#KB_VSMmkWSusXK+3P92uem^z_*ciBY@U_B7m0JB+n1>ZvWXYO7AdR&>>)RG5 zP1Fd+vB@w)gBB>eSTKrt(8D60qJv8ui*W*5jxT!w|NAvw)0FY6m*_&%@}Xhk;r%a~ zfYUlR1`$*5}midAiEP5vi52L8N8o&=EEmI)lbnUG6%H$s=km3UR*9h1AE@gnU#Ka>-TzhR`rRRt zE^)HbWgoPk z?;&2|C4ebHmG>M3q|^p$CQPy?)&D7%1WKU-0TBe-P~U@II<|y`0^aGWl`M-88XK_v z1iE~vARZ{58bSeDjLK@V7(G~ovrYgwkr8cj*HZKH7I#G&tXQ!?Z5dGX9cnl?-3={M z0|L3#uEGQHrZ2`tK=mk~1%L%P-bESRQLgG_C^Hqfz{s|xi77u&Xfy!BrG=)OWIa)c z!>axapYbv#6syr3w7u!$N_4E}5#aqq~Af))^+ zCiqGa^y6mA zi;1m<=F0()M!b~t^+Bo$JHppAN7{rM3~KD&n!DZ%m_HC(-sdmgn7kJhEpP>@I{4B> z`QXCT_j!lAet-om5rB{|pfQJus(rjV(#?K+?|TJgIwFANAV3@;kcC1ROqA5zFc+;? z&ln1W)G=1Rm#^4?YB3^beE`r;1lC()yoibY?Lr5TA~#E1f&9lU92JI#r=VD*5Z;jIeKxM+oxt+goWZFIe+EB4&eI4=~ z?$z-zXXMQ$_>LAQM))2WzUU~u_QABP6${t=Rz2WvUfGkc0LTjf?RM0rOZH}Ocg+g` zUVqIiA}(DL?~stV-n>sKAiFnLYXV=w{&;vD;j0W#gnV^NcieP(M05aF^bA@F;> zL=DvX(u4=DJ}qlAyHE?fmnx&Y#KiGll8fXHO%fr^C-<wx9!25njR@MAE`AL}w+fYcVt{JmihlAILsg}Q z6dcV%4FccKP-;B|aM9+ptAGcoQod`JD5@Nrz7)XRo&}%t)fJhHI&Efb!r@J~@5gc8 zfR;s0>Gr=eGapmZs9MAn&5=ItzS!bychFbI13HuBarY$1Pa$Y zJQ^6V2Y=Lh0?RW{>-9>3EJ|D;qYh3TFQ-ZN_{-MYJOApm@u;LPyxZ5mUTTC#5ZPbd z*7JI4S0U|t+wQx6^u5NXMm)K;0%$_mNEj^M=c*crZPb-;m2+DF73ALBrDLzbB{Ks7 z4JJ{Dnv+h?(9J$}+J<0wa@r^#$Gq>pXOI2Lxrx6lHn^@Apws~OzJ=6!I-E`pd}J^P}Z3EM2xvpo-@>acs*_)0p>tNB&2$aCoL${!P`r$EDVA7{?yu5 z5LnB`ip0JE7EkzD+6Xcj0PtAZD|uVYgYQd~SGvp+yS1*g-y;MNCrP%V zC09nx3~;->l%H^0NYf?`kC`yeIMGAVxV4BZ4zIo7EnHq)wCpF6Dy&q)vbv2s2kXi2 zrjNldZpSeLi@1BFYO0IaJD7MkuE{laE4mbB65%%mj3;%P0J6 zHfka6WYv$4lkUNd?tHK3EInQ~`F{?3>-6a=>lIO&g%&CSI`U5W5_6k7ckq76CveAx zSlM6)1i&z7LX7^TdZvYB2af>PQ`E9YOh<(Sgwi0cfYiBYpVES$9)9oGjE&h>2p57QT*eNiIj z1pqrh)&&Umuf%Fz=6HW`M!p*;c`NuK`}0+NlzI1Dmh6l}zfXcKK*Wn1!^9L|CAY9Hp%0Kn*#-MQ{xG>-D8I zt6SN1uZ9gCTwVc2+h7e47Jk5MOz}GTbf4@X0kEKHp#zKt0`aJmMM3#Pl?o`aPs=Mv zm{_|X>4dB7q`(H5461$cYk*M$2(Z+Emu>je;1HBsEC=Jg9yfoB?A|X6jt*q?djPk> zq@mgI+Y+!01?6)9(SSL#bIX$>)ZrH&=E4jj_t6dp@a!iw@?pSRG+tsCRt}SVAgiMu zjiKlLw?H=kQMpAEnBB2Q2oyT}b?iGlo*|7dWP1boHI{b0@oK~`z#4#rELN3>FbPc7 zZ^aIhy)4y>;y8#JW!C`n8wdYTAvFU2Yiua?{K@KOE94HAGJw_$R+-|}`X?ib%e^;$ zQ{l0BHvd8}Mbzp7$`gx{fhXjLzVLzpo{c|XJ^)l&vWX<(j(Wic?Pfl|3?UegV7(xG z@sK|B!rK<|NQ$+9g(}D8?V+EMms2NNn<2B4&@pj1P-YQigKYy1KnCslJ{dAzJ?k)x(sf_} zlb=7E&THMc*AZPWJbv2J#?)xEW{fDIjKjDyaVnhFYmO$ATQ~KdhFId7Drigy7&YUI8ETYTkgN1Ok~~ z@ikibK#jr3c|rK#PHRU3^il2EtP0|Rd}FC9tk{)P!$Q#|j)G71B1(g$Y(Y2vx!hIRJca*SY%L<2-wb(7Vo=vN5`c3fMV z3v6d#$rU;o2yN$%xhmmYG+FZc!QexD*3IDUyqI_?KWLu&ET~fW!>W<^# z;juUMr=@~Ioml_-XiERzHRC_rqyR?ff07~f|2+DCU2X=_=Iboi*CTj(mRek+Qd3JT zJP5&%9M0FRZg1!PHZp#Tm%{rORWci7z237rQ=zvv^&wL# znOUV=+uOyyK>J^^TzsgPndCsk$%(6~s_L|x6aT5sLc`wHoBMVHRlU^>%l+XyhEmfiP4FV1BfC5V_8wv(7o!gN9<(_BDxouOXiKw{(0#*Ri%Wq$fO!{JYX!c6v z1{dlc_}$`Lak1zXA7e)$ufg>F*yz4>55mvVQZNZDip$`G+So>i%}CPl>M3eIw^(^;&X#r)icd$AXmzp=Zo zy=Dn*b#db0Ha9P___=ef!oJ_;pxFw?SlE8PtFLo0nZ^3tJFclu?l?R@RISDYO{rJ~ zVE6)Mvfy@XpJG?zjzMg1Uv|i#vaip>rk)=9S3;E=6knx~FMzRS-<^vmFsAh1`<9(*(vM%K#sjhJ~4C&=j z;6OQ(=`Zc0g$7X>8D$m}udH!0kQ-fQ0FCdaLI%ZjW>kV5##E6a-;Z{Xy=@emGPXa9 zzhaCB?T?jUMlrv?MHSzh9&op#lYCtF>>>MuyK^CF^hEQls*QfZ4=2^|I_15)X`?!o zyU&5#A)UTWXnqHm*M=2h@gj#m-kL#{>r|>kXD|D3Uh+_ye`DDwt)5K>8#m3<6}_i@ znM72b(7JnbMr2Y#6MSyxXS{xOkrBo#gDM`4M(3~0!uyfKYUBe{_G0~N2z=t>(`!?$ zt zD|?)y9c43D7^yqF)wkTDz_zoa4jm>iS)y8hbIy2SK8?$?(TG2_U&lW^4p%{;>3*bI zU+=)Jd9Vz7X|nwbWIW}G?a^d1Kb@Q5v;|A)M2^eEZ<2LaAJ&jcPouNhy%gs@Wi*L{ z>e1@wGth0Q`GCfdHgrfcMUd!Ye|BvCw~p&A$rotL$tPj2K8<~HwukMJQVru=KQa!7GdY9_;9z;30A3`-VTzqk>;=#8X1JM%i-+54Cp3^IBauxHd|5(!zpmP;@Yf~)^ ze3vbv^Xx;1*-A*XygvGj`>k9@9O)wQ0pUs{hj6es;M+GS+HB&dPGL9NW|mwtQMqGs z0B~SR&78Hy%+m)3=1WP37jfGaPFar2dTS@;wAA-t||cEnvH+ z7*^cqV-5H1^YakWXGOB>8(@}}mQJp&aWkR8M9>_V8-yGekJrn3PY<_yQ`r+a#?JLC z)JxAd1P7vxo|?p6HF`UbTS}4~aZnmH+CwgdbX(WOp}D2P-G=#hnhO!{C@hJ3VA?6S z?i#YrFWeZq;_j=2PZr!a7pIx26j_KVK%H_ z1~aI(J3SIMj&g*+q>}?*>NTSrAslzVa%;ANNaKlF{^ZCUN3|3{lVzg~4gf21reFLBePQ!F=DjT1dWe>?z;i#|i-z=8Be7_YFzs*m`^oQ5 zXPu^eQ*oE@-8$UUd6Ex16{fIsGW@cF4}Q`qA4b=f0}X1gQ=%I31X{0MDq^&{67mbT%peYzLHMIL=^^zmx}SNad6GeH$KW0mWP^P6Q9vK@W; z{(A}a5R5s*PBpbsqG1s4@hgojMY9w-n9+wMM-hL9^YNx-N=hCVG-E5@vIr!%R4LI` z8>sDIH%SEoU;`;!maY3+SlKphdE=o9wmag)B1Zf zqq|1nw=cB>R9wd^k1fgMErIf`Quz;+m9)3Lvshj1z+8$r-u|3|GsbMRqd`1a3~|R< z_E9ioLcKQ_?KT*FQmMZLT^%h3gfYyuBY=i_D_mkZe`bGNyV9Y#)9dJgU@do~K|Fqh zEMv5W&=wv#Q&n-$XyJR>PPiDvadI5xN?7%0r*ZR5h0fl$(_ROMFD?cfx-K_7YMQZ1 zCzKrUccim51s}37r`21>KUk_on0Gk%vE?}5F6AysrbcJpNw3ZX!X8C;`tm~>m$ezg z6$!V!2U0+`7ZwKpk*n5RE%dvMf27yfkw-6z>TVu_aV$zmgVN0 z_gihUax{9ANw;^%Gq%}O#hNV3+unugTi3=O@om;3;iTu&LF&S5z4_@MCr_(4#x63F z1!nW^`=!bG+!=5qG`K-CKQ!oOY8zA#HRx9l6CY1hpBpjn1z8RfRUn`GI)igat#W16 za1$ngd$4p~kS(5Cl!N5W7?s}Y^>iL-SR1i8mv5$MV$GtuE)@mDVM8!KTf>V?;Vd); ze=&}&u)Ct|rp6C?l!<|k^rLCz4udG%XSfO)xpCD*YL-Q*uhb(jC?JI>#FRehD92NU zA@~IykXP4BF~DuW%C8gfor zcrP(H5ccOGEU7m^OF(}X`3%p>x-Uc-$_Sb}+j%}!N@;Tf-yTixy+x28AHefkeU09F zfirITJ8FQ_9uKgnbjExdKUs{V3+UlbA_FDZiKdFz$RPiu38ISC0;|50l0>`UT2 zdio}=j1!Upw9Ra(y$UBqY3}mOoY1Nb?*m3?OQ2*)NjYJS*Y;43lnBBOPY-(`lc4;LL>`L}Zms3s}++j}Wj09hE(MKecK6kjgTb>G~dW!v+a+xPo|bW>-Mc73-SI)g??Jyj_)?S`-PuETZ57`y^856ACudVh6AsD`sy)FeKrT2bH`ingo zl^C=)RS2k1wMBKa*}7|;qeyC}qX5%}Dm8eV(_wP5Yt_wdbiEEQ@ko9KFWZvsayJXd zdQf{9lZuC^MgHTPRxL*OnwW6V1sE~id&xUT$&DWiP;gYATUwFz_Q=~Db9$eQ<;g)A zXSUB>(0Je*%%ln~Chxe9bS^<4FS~3t1Df3x?b#@NH1<&bbk5!SKQ=7VrIqFE_cEU+ zf|9PZu;sN_>DcUQVgKZr@8V&0yWOf}dDY6w@D|F|eL|1Yi`q>77i0YUOx3rui^D=s z%Ba=*`tFiUpEO4Nbd=;o-wJ7?R)30UyRYW`#=DztT;L3W>O3-Tg&)76K8G-A4*FC8 zG1qq=(rTl+m^5gGn^!9S%z0@|+7Rbo$r%=FGbF^8tCzPi@4SEA6}h&Admp#~>i~rQ zp255P5%kKl0tdb_cCrw_ca38RjQ0-)W^r6)ZMs5RQF7Fcj`!&&toU0D2VXTHEAeD^ zzfPGhLeKuZ4ud2DT3Ry7OiEnYm3t5=(c=2JtcL)13LfcQwATpN`n03DRBfQ^S(~)Y*_Vv6r2C5QLWsZa50qGw4DI zPeRP4{tg$7&STM8P)L06Hg%9T=PQS{X!po$7p-;6L(?7qE9xXr26*EYqT(UMnB#Gv z63DA5uv)y$STv};Hs}0wE<|svP6LP0eDbaQ^=I=05rKs+C){=?-Dz8*Jh zLkObvJ}45@{A6s%jx;!46#TC-d+RoRK7YXMn=*z=;LAigL-_PIJ~`yB^zr`VaS(eU zK-mfp!u|BUeGWqt<_aqEOS$^bW}C=p1j6!4bqV4&p@Oog@ML4qKtoop3(JR{0VZQ8 z@k^7!1%0IU204o6hc4U;YbY-TGmRRlMloV~al|L1?`@+)F*nH*jw#(tsN2lqN0%{XHkM9cnN^}f-D3*j-qyK1%2 z*VuL?WXGKw#f&RnBV(jzXhODQm@hv-l1f|r7$N&d84jLsWI<$^%yZbY zJP?Bd8BUt2``xQ?nPla1&e*v0Ds5mT)wjakuYq`d_i9Y?)oh(7dCT1jq>rDsxjRBY zjKxKEOTl4cdsh#MQrB3wWPH-n;zAficgHrqW#k_eev;#ZBZ8yUod}Gh;;yqfmv~^4yF?z!BRnkbAoj7)kTi4 z6vS8vB3wnh$|;(k+-PM%EnoL=xA%!LDM%>oGcGDrE&?~)esi~|T^}gHvgsL*#7hYB z`z0(z1zPB?MQ{!Y#Hl^#<^%BxO_tu7m!yqnU1~@#EA}zku zduz;3miY>r%`1xTiEoP=Jw9+2-y0%m7J`9Da2Fcn7hlLDfn%rQqpx?k#LeAie1-O< zj=Gd+Ec8T`)%6}VWkNNkTo1Y7WGT&K!4cgJR)eT1u99>@AR0!DIlO2~Ie2<;44n9a zNZ99&i65d%p)_sraA`Pi$}LB5i-$Rc6&va6)?22hiTJ|FG2dM2j5K)?qJZ4)wN*G2 zpWT?cPjr~RgGDx2a+A2*;uie6Pi}st4Ax%9lXj$}ViS|Q^HVW6LEpj?Y1Gqpu8_4E ztN=qvZ*NdbpmfMPR|ZK$3c+hgAc4UE(cuSqOBHgHDSqoxsacV4G#&BN3bi@~rw_lN zf@IyvE|9OqfUt$vuH0LX zig0QiOWlzkHK+C#?&@xVypvg}d6Bj%OPVdgV5nqnjG&JO?7`+OA9_IkonI%y4u<)L~GRE>t3~147~Jn@>VK~YRYob#{O%1brnX$ zDx__XQTC@>CpS0A$HHbGE$$~Y4D&Vj#J)&R2WtumF|xmQ8rx|rhKFMJD$ajYdFpt@ zIbKBEnZzVeWw5$)*S)WT9|gq=G3sEcn9(E8|j=lJYOPgm$>9@AQ2@mMZWH zYJOSI`)$OX6HJ(^RGVa^%JI5J$yR;=Qa%0)TtMD4W(a4R&UnNU#@U<-%CiAauWcc` zg5WV|&N98*!WV~xa}hJnPpI^=!buR+TxGdhnSGY*Y7!UrBO=SPC5tQ;C^f+DP*rnqr9lu1y@gSr1X z-LauHt=9opB0HssggIe-eWamp!X;aC`ElsUE=8(BC4C95{5HOBjDitV>H_ko++cOe zFxi*I)MgU>X*Ix-FkbK`g%LEQO3UVy=@%V5e+T zHk2<*^LB9gIAnLq3>81t^e3dqQyGfC60+5;*?WUWH*ia{kRNDHnS97- zx1FPr!OJYE?aA}U?L}Wqi}6=(d3R&QeH?#E&z$&?Mu%&5;_#&Zh>x$5El~RC;Za8c zg|QCh?p}jF^Pp+ktT~9~Sf<`loGzpNt8`xU1irI**Y`vZCr4ENogEtO;UTxmQa=V5 zmg8wxE~=B>u;PK3W2cwS;)y-Z{)h!8r!`?MVv*k*KQ{9*YY2-6xA$mxE*KwoLk+Lp zJ10*wn9haD3g@4&L)lkvruB%xwUKD2Njj!UvnQu-@* zJq!1p-n%;&wc~1|i_7J9|2Bi~%JwX`_lPShEfm~0rU*+gif!Z&5C)Bu<~$nYC@I z5@(<@HbWs)Cfi{6kcnLMKi8N*W{n3bYdS-I|Neb%3*7yzpS0fXmj3Qy*O%Myn;E# zYu!Ptb~}+S_CZFAjZECn54M+kz|M{$WX?n0;Sf9z;qRc;PoGFzPSj=hy#8#Mi6)CB zsUh^m=N*_SMhPD-sJ=#61lTDJze%;q;Je9G;ocMy)%*9astkZl3`xk@dPEK0iD9D-lT7bP9pEe7jZi|$;B7w|!*XXEBOA>wn zaCPaiTsH_ruKUnv?o?IV2*7`SAF{J@L@yYUOlZYI?{KE|PnTg_do>N!(kJ8uq2-#R zx)Xl*`TO6MuWuan{>h6UAj>NQSCdJqiiU@@=YEhMZ*o?aTtY_jZAAL}z9_L|FA4B* z&lr3QZtfFBz-KfnNtUWBcR2er#M%An58Opo^*8k8QRJ)6)v7ydE~SXf%0Oa`Q`6Tb z#dMAv`wsGjs?P#{Fd<*yey7G?Zzo}%zxcQ#8eiCL--?vn|Cu$iiJiZJhx1baDTXaD*Vff(MPh``r0qjoC7Byk!^w|^*VXD*Y?#P6kd=kl>9K$o8{ zdQchSS4G`cnYiJ}P*gY^vD0>zpe{`)=BI_jgw4n7FWib-5^|Pafvh|%lqHr6->sKJ zdA;*M+Tuo|#uF*&adNIQAr{~acVj_tpWnncy}UadzrNJ6rjwtlBlK5DQR5&O-Lh?7 zebnlV50INw`_lw2x!=eERk{Ne|K+uq^o4QHg>NU-heUMUdXM|5;~DF=PS1II^(is_ z3z7a{#$w9WH+d1X)$SbdPYuB-Ga`Qi-sv=Rkhhk_++L z6;t4W!08<&e2bP^u*NO!ahR>=dVFeJh{)gLqCox|>IAMW8r1o8Op>`6f)n)`G)Cmq z&EGsNR(AB75XDsUAVAEsXA_DA5UsOQ@0T=3OG<{~ujFX!gLBy(uIpk&LP4A3INTU7 ze2b~%Op)o4o$(rAr>3)kMf`%9(=ALlEb|&2eBpy6E@+Nyh|xhSblY?{G*in&n`u?N zviK@=(M8{Btvfu&;<_pW*3d+V<(^;qUkF@orp&*&4%t7hrnrv%5u_YpWFc9FmrZEN zsp>43{nOLaT`sdK3~&ouD@0nDkxFd8*m>^5xt%FUsZ4#S3w$ymWOug#8;ERk4JlB$ zT(r&qGR1bjM$dV@A;OyfilF*?LZdyfp-%syt%n6cvz7Z>bWc_od#+*#a;SxeBUL|7 zr-d`jj`eB1-u)>mu94Bh;4}$~J|4ENA8e@p8F?q0b@Jmi(cf~kmRdh6?3{yn+?NxO zll7Vg_Lg4vY9Gib7yHn?MADd>3pNhtPOzmD~YPZw~)>&Kc=~(){moQ`VJZj@?fI!=yM|Ex^WU?wN zJMF-hX}BzYlIow4AE+=&q5k#q83bv4^gtG8JFYV;K+p1Rqt!{1t_sNp;wA7xJTC1P!8?Q7?>oxr=R*XY@DG1djD!HCP|*FeOyz{XsGPfq zi7qKIrp}Z_o z4k4VKko_Q$v)=oLL3bWG zW#ys&R+oxrlD8`ERtV!QzR^Mk|51c&ywy@87D$_SphSM=YXA7gZR>rgrvq)LS~XwR zT?yTJLZc;LVWvQi*#}8f*KcL3}aa& zPyeMydpf#cXR#R%YIM;z`Bv-W-_Oq!@&64etRdGJ`>uNwk=rK`SZz@!Dloux$*un}Vz!EJ}s zT0Z%plGf>NK3@tv+9*{CNcOYV>f<)H)T0OeO8!Uf>Hb!Gn>v0S#hRpWlt=`FNZZyM z+B))>a#m{>!wWA8n;Aq1r8Tk~sNh`VIZ9)7GsI_h|K%OJ=Ov;hKJ!}{hf*jFohEAX z7Q_Zr+L3jqce~|Bc-%plmje&1%KZD=+d7LKKUv#!&>Le%-Tfvt;7-k#9@PJtEbzY< z7jl1w{qo^P6Q^5{3OzTIamcTc0i?v4i&H~Z4PM?(D+83)s@Ig0hhvawATLx_dsS66 zFn6sT@Z|-IH(l>=gFcnHfuyiia#jbrYYCqFJbS*bQgUlKsJC3TrkEmhv4n^a_El~{ zQEQa%^8fwl3(?=AsIS92(C`KG@*+Zs0VidAxBtn;3*4)ff+W0e*z`+d?OWnBRsWF0 zI7N`xP)Olp{dH#yozmBSDhu6tEkkotFMZ9*3)O-7#657{!EIUan#?|1Q0~|*FJwVD#i*Z zv^fGM^O#mx9tut-R>+>xm%lW^ynu2i&6mkh$8lPcPSdebCPhp;C6Fc#aGIKor)iB z#&oDN<1Un$+ix2*#%+TpW)Po49d$7rxGs~}74Izpm347>velzSTN9;h@dzi69v$nh3e9#gb$a3G zsRAgw40;kbM(mCT9Abt$OlHgZ-&1e?;H!nL@=6YJkrcj9>l4n6y9KG!w)BA)*?F4V zl3Zk0(>dSY?Gtbi^n9I~EY5nigfgNRE z+)vgAdu}j1Q>pYHF(^{9UA?FSTakwT3dQq~>pZs*q==NAs9;Ld|5%@IY3e}f4_Iro=KT?|0Lk)q~-{0@_csYH#=(t>v zJWwqWPyHQmNuA@+sXlA>MZTM&H9$-!&L77rYz;0UEE^EtZ;tULMQMjV~=N{ai>GKtx4_09rXX z2whpxwr5Z((+mT`2r7FnegOgNoAFx0{QN$R6wKyxeo@3CM3j_6auE6(eNlno;kCPU z+8yA7PnDIGv;eyH1u!U|D_L<76dKwc`A&fH(H|bmr>{>m`B5bV_$Yx+&kWxc=)k~; z2xZ3)f4$SoUl$`Fy9FSG5t0deJHNs`EAk=wc6dz{DeE21)quQMmfaX+?onkpy^*+Y zK&PjtV@8Z)`;OwFBT_pfT_OGAm)&K)v1yOdtSJ zNKP(#_zCT2u2feLDk%s=@(mVLuG0ktPr!{UD=P~Ek&==M3JK}loUGQnUY8DEfq>Q0 zd$lWI9S{%@2)Gw32gl1uk&%(@9sLm&;EW{o+q|WuSX)~=8Dbb!ftmvFr(f?b_lue~ zC9=j>3i8q_CtE+lQEN2%0rx9Xh5)&_yH^1H=I8G}SDemZi1@2m6(UU7_a*9~T&C$Y zH561`&G-rmY7Ia#f^YPyRO-VnxgK+|vax~L%#{IS({9GBH<>S+!0Aj+IJ%?K>c$3Y zA09>s!Jw(-Z0*qIoi5dgii`6HL`m;-?Z?UWwTO}udahKmzx(|a7-+8ASdT2@>EV2I zeX>A4U#*Thj#3r8MH2}G2=?-GmE-m*U8*^5Z`?iQ`l?` zQWDv&ozs$W*=$&G3y6r`ynQPOG&*ef9}zf>&K9vNR;}u>*Z>e!uD54{H0w1($t)27 zSbVmGh71l7F&CJIlxnqE%H|r5}KaFp1ZX&7Fn9IZW5}3`g3*_^{gTl~( z?UOhrL)Mvu13%yPNhW98sk=ytn3ldUzIb)wSL)Qlll9I$W~3rbHX zxW7I&e13X-_3G89S~FEi5>!Ca)_Vy&U#$T00|*w_3!1$P8vqV+Y#o0imFaoFd-JAq zB1Zy?ULQs(iSfH|81}>6ei_|k_+*jt=+PAbSO@D%w+6DY5;)6sSGCsZq{D1U{7^4{bxNN1q829}FgSv)B2YaW^M7G#aI?r>(;6j6~ zUTTI+q0Q#NkAvANJz+7yh&5K%D>F&S3+}){p63UMUyax`rqc#MB=KOT!WU?ie7QDX zrGCF|b4V&Y7X8d(IJLS(vQg!xk!z#Fp?IEjs+EJo*4A+HPy(GV5SXO%d~(yv|Fb#; z28w1{xuJ8w7JRNDf0>!X!(qT6j<>ivS}fG-z)M^$EG+cJkfDMwXf$8#8wDEyy-w%J z5zS($33MShH#g98bF?_y1>=3=HI~d7r-1{@D+Zd7e56hnZhTPACbIB&8ZnP{{Hz zfD-eeBPIuiRTl#Z850xpye=<~)NnK{tl-;twis#?J63I$z*<*V7ew(TPbMnOIG{uO z0jW8dGs_W=4GzcSsMP85Png5ydA#^WC;6{>*eLiAA_(mjACHml`NT#hpSuAJ`Nhuo z`d2XrKR>^dr~BjH$#tXI$`2}e--1hBE9`dVm@O7CZPVrRr0F~!oIv8SR^k9*6dcsPj>SDlr0?XHGC_(3XnfbUFbkD=VLE^mhU3tw1j4 zb!%%Y2q*`s1j;W!SI5hi?%e@q0B>vA7y3jiN5}0BUug9vhhYnMVEJ7KR1}@O)nbb) z#JINk5K*l^YCW1FE{g@fhF2!a|`) zDGZpDz`VvORd3L(YX#JGg~4!Ag1ICxM8E?!yO4O^tJUUtRt5Kk?6!&8{h0=RArz`4 z>>!K9Mj>EgS=-w)IRpiY(q{?={P_iEn7({g*GE8ciQD}73^+G$M4M;+6Ont7s-XYq zB^0sRn4Ld99neEj`V#-oUk~=1F(-$G0Xp|N7MMGg2E!(1=zn!>)OPkn0(cKe)O*9@ zo1b)^rvJVh@E-5g#Q$jw@ULiPPC=2N;6}s5q~hNSTrA{pQnB_YL=dN?bqfpA|Lvut zsXnm(J0k?&&&vJ(r_b(rA!&wW1eSHRF>h@h@yZF1S|VrDS|XU9|?(GOMYS(p%Z30 z@KsKWK6%w2UcZzal(Ykb;Msn;;@KZb%~T*?zq+yE7ZPIY!=fZ8n8s5zE2*#l)}Sh} z9Gc{40fAU8PWg?yUBDZ>KawD!PWmnV>&|ZIuSdMTmCf})(J%gQ2P~S)@da10kGk{B zdnc;vSpdruc7UM!a!ImUu=f#~q!elqXhC(hoo(0D6dDFb%R3>#=%&8DmtaY~B|Xr7 zE*t&fn0#W6e`H?l^BQ|%%1q`rTxjYCp?jM9H&H#X>S3~Hok5`KPYlbK2|{ewZ(zk8 zem_OBdwAZFikM9Rmqmnx z=&XO@4vHdvVADh_MUEO6>Xxz%46dBia-KWI42li|dddrnVOK7%dzk99^b8FpD!U6< zh}=b}yH_X8Y2 z7t3X_2?}by0kqtUbpMfG!L?z)&I}JG+8GHGWS5}o4`+C_*x=1ZPHy}jVBtt*N)iy< z_>!^S@^>3KsQ`xuE09(#mnu45-jD6|xxBQRkS+;3qj_v#-ymPF>)(1@?5&KmjhZHM z&p3uuyZQ04dLJ{rdm0g`)KLjHS&6Lx|~?pv6eWQ2+|Mo-iCNRx3hc;n0_=D@v_a zz%<=DSq&hVC{m^YY+!yPqx{p-f1gNn7A^iJD7;9yjNWX9w)Osq129{_+9}GK`Mtp* zoi<~YL9~gIW=qY9D8#~mnTgef{U1e#UuL37GlDqZ|GebXJM*D`(pJW9q2AgT@N=xs zx1<28ia!FMD*>?oUu**c_Y0Jlv+dTLZRF zRKz7s$v@Ei_4~F`c7npfYy10yEw0xem5MO|^D-A$$g^eAm#C?MvPp$9&D8#Hr1I59 zvYlOBiGaa-eY{*3f(pmO!^3XB*L{1w9i{omWU4r zyvc{h$FO%YR76BR2sq5N+U+2A$0JF=YScvso~`!>{|huqG)1_zDa5u5esGLn_NOzv z``H%;|3Orz(x7m_AO%19rDhpLt--EWCjc1CE5j_yue1T9ujeQam?9kk1Ri~rUj_q% zgEJKhm<&wevPllB(N&!fpL$`f#dsM{o zx8rsIQ<&26XrTj`fI#vYtBIiC#pq{aLwWP&Z1N|=>}wd96~LjWHk}SnWH6++T4_)C z(i4hRZ9f0Y3FF_VMD^AWM1(A7eYG#(XoAR+UVK%T$w;Qwk4Xu8vG4|Odn6Tt5E$k9 z#zyQW0y3b#^hZ*#y#6ot-a0I*u8kW75fCZqZX~3n8F!qP4(U*7>F!Wq z2BZX}ySrm(zQyyt&-*^-JKs6ib^bYVU1$C579$LxpcFEYF4zGI zalrqC!J``+Ac&038V^Dq`shBY*&^k2Suyzdu-_TW9a$lIy%Vd_Oo271%+2 zWEPj{V-}6#chj{t07LrYGpoI7_4a54Xsaso?q=T);Nx-t%(b?oLPEZ{?awt|ZWW!M zpHG}la@oRx*3sZ|<(fWCfrIn%#R~-8I@{H~*(L;&UkRa*n}EuLLE*l6zk(gr4~jx*7UuUA*YR_Su+t>j~i`qc*C_@IdP~MSs$aOrNPg_t8-k zdTG*0p^~NjEBJQ4f`g$HdpoEmyR*i01+%%U`EvgiqoU4-sK|V^b`3?jprez**(BQw z1IF+)7O6n{+hJ@a!6Q;C-U2K}hSzgCa-b1nF6I)HjK{w_C?yuDbb0x=l|;?|BaVicw5FChK^J)D}0 ziz`o*n%W=eO^&BqZ@0!u0BzJS09~YX)Hw$F`QmKauJBDEE~sl+|Ey_X1gLjky5I=$ zr5qUa>q&;bUqO_uwgVfXPgYiV!EI$Ch;i`LtIU*X>F6e_%%f+05Pk1%-1g?%R5OHJ zBJ{C#=UUPTSTqixWOfra@Me$Woh7h@_y^!is$i6F4(EbZ4%G`lZSua{%*V>-K}Sbl zzQ_9@Uff?sDTV9)GOf3lR(Yyf1K_^z%V0pvTLCwFf68BshXT!`|KHdUz~_te;+|lP zg5j=3wZqe4gq2@0q8f%LT(v6Vk6Tg)>!&(nzdpw-^6rbk^?1}&8N?h!FUwrUd|tOF ze_ULM){5Kx4XNmnfLGvwbJu%ayJy>$pDV-j-NnUoZA4t#uS zY<7%tR)LUXuGV7kXE2VCsJ&~_)4?N%q0jdUPmC!cIN_@wj{Q4=UKRcJ)tb6wov!#d z&{29Cb}G>x`^O*sB=-&#P!yMFTR{T3xLD6Z!^F(Jr~9GN=k>0;q=<-!2s}1Z39QX5E30(yBeW26v`T6-FOklD_kn)CoKt|^R>^6*mMdrr`0KoFG z7**02?)&YYfrci7?mh&P*W&K3a;x_R)9Y^!0kK?K`0+6Z&}~}jFoc6~LqCVDKg@u^ z%YgbIViEV}B|0?^7P@2UfY^}*HG85^DuZV|Ab7|Zn)?*I0mYU-z0!Q z4zr#f$Pm6yVSooRN{8Wd!W~SG*ZLnKBOh)Rl|enDUcP(@B&$zA`G^ts^W`!h=mRPQ zNckYkblHNP*?jNwx$n*8;tsi+ZNF=i_{B=R*0j&rjy4#wWL2|Z`PTYw-F%+KNZv|s z61J+U>V1d?_xuR7pG4qe&h0Zed>zOq&N~yaAe~N^z|RktXWIO-Hb?T+>+Khl$JYQe z2dM%Yu_d=*#ePKV6}RlGCm|_`cS7>-Rp_*XV;^?0ITH2^irVxIjXBe3o;{13Y-$aB zq@CY}xQeZ{t-;8a&k_>_QXxPLK!G6wX&cX}#t-Z#ad3PLwlMq2ZVN;JAjl54`dn$L z^8)D^yO?n=y9TU$)R2IVjNr8|hD3p|FkJ5dX>zffC`a@M$r0wMBnvW;IX`kzQIS<& zkKeLfpzJ1ylf|&@i3&OdAfTaAgH0+xZu`^`j6JbBMd4sE^i8^W zm;LQ`{Mgu7*XdcHH5q_elRS+e9Zrb69jcyvvN@s-#H{4$q3tf6q%PO1?{AAx+E;s% zAXB)PsegNkA>GHEzSBxmm#0qkQmUFRE0;Z5K0}Ijci0VH;%6SyjBdeBnpnq8E`rx~ z0%dF4KgadgxrW#9%?rb7nAZur4%@^`<0?c>yQICnS6E|JE(-L99T!CqfWVZbtXrOD zvNNC%b&Fn~N84f}{9+3Ay3zD`Yd-q~Pwkf$SrxsXa88(?sHTl)eN|@ktw@B87(=0l zZDhim&*Vz*i z68VoPQ9*Ko8bDu!sP{3UExQ`F`DTFK8J_!GIs@b&39?W7k5*J5U-9#G6_1}MN0qYs z#f|^R(3W~wdbGR*e{ZBuI%uVIL*<5-@QrDfG_un%kNmrNe<1q!`PB($#|;~nzL@Nj zh0N7OYd!>%LJ2r2&JXKxj=8IU@d~po)vp%39U+VNz5DV3Z|uc4>{@x9 z5%q51gsK{!mfB*^wLd((mka?`gqm=10y-P)LSUUC;t{7Rb^-Qp6nDSK5Av;0#$ zs?)6raIt<6rnT#ADS$kP5BgUnLx`lqSc=huJaiDku)_Oar0kI}(iZ)0GZ(eKSuO7J zg3V@gRtUzAj3K<9tJOWYO2AvL8;Md;MdzsjQ zdPX%BY|5l+NNzuOwgc&j26=~KpS^u{-($ZLn9;DX%z%tttlz|^L37}Ddl3wt7^I!^ z7U=II?oJlmV~=50vY)KHz;isu@8k znhKxuioQ=B#T;UQTo{LyGa>^BP@zZ(VzgSG5{XKtNDqKB^#H{(s%GYZ26u%kVzk|y zk%5_?3mWZSjf@t*O$KJg((bMehBD7TL4g$Iy26A$HNj@FsUO|9Z~iAH6%1m=J$H{u z0%FRkdv`JP&%YQma|Q3Mb|BB;-!zLx61B;$yKoEQnl&FU=Q@V-4!x~B(8Ht9QYG~} zUktv7!@z$7s%?)yBGSfW6(i{FdwvO0+9$voKGe8M1401OxhbgNO&4|>sQ+b7tKS$* z!sY(}`SA-8E3R}whBsMpSR9zpFb(-5*RY7>OeIn$7T@f9hQS;cRLee{xM}%hAIy|Q=MN3xRpE&hR-&m znB==7rje5KDG)Fzv45*~?DdQqZb9(SquFqzR@_nH*Q8avX50>FONkamO6eX5G>RkbPbY6*ZS6F?0{Q}@EyVGY7e@YSeb`W-Vrk>*? zM2CbdH0`%mZTqDI{DVV6(gR45F@daKBH&B!-Gl+t;zg1cA>kh!cea{x` zI~L-mC?~ZzdRz(w;5+011K}PR-SfgsQLkaZ3oqgOg9*&)pat%s9N@XJyjB{(hLUb{ z-n?%h5Czi3Y&6wxLjiHh1d#R!ATmx65bqK0Cp5f!%mr>AxEXW|d?4oXSWm?K{{0FC zgSh>hboe6-3=@!LPqs$GtIP+Xof?H|$o>G71Ie5ejJOT}Yvf~TrInPt0r3n5@%vys z%a02v1lQNs_veDlsFeKt2XQ775K4Z6BtZf)0~x=q32+VWy&m9=4*?1RdJ)o$4kGmm zfPBE~rO8|HHZB4t1UoxBu!B&6%mDn9ZqV`36vruus@>$oDP zma8BQMm11(*1#xr@z(mUd4EvsLaHH8gx1p9vrZo-!)d6fD9eN;pSjja{`B9CKwh|B^+Wv1Cjz7g@dcB8Bh=I z!xhMp0;~p^#OWCsB>cAIfchB$a({kxwY;;V1XP&K-(Np+lKbE1n7dma5Cu~fgy;`H zGpbUeU{flAU_4oEfybg*N)HCf{RUjbsRc_{|HUqH!za5xc&iVus3iF>h?_FMVyyIQ zM{tehYN7CdxSjlke}{-6W+HCY-@4mk(dx_VwI>zB>qgO-U?qLrJQ?~J%jDND_=YLb z9nyYT8f=a1YtEoXhU+TnD>k3!EMuq3sN2q3hprA-qBrZhW1n+z`+IA0USjd9P?F0| zi`$W8$Kx|rObheu!vHSzRc z|0EPM)J4p|5k4JDPSHZZUxyFs3KmyPw3l!JcwV6o;B|1_X31_cEL7q@cM|8Q^vivviB5&dY1O#8H&n)myH z-kbkN4}eG8IXc=k!TRs(;BwS5)>fIh6MWlgTs6fp^|>j@WLUgcx)YdZ9<|)H-yg~G z<@Xh~T*}Y>|D1NDg{^9qhRBpMf=8RM>CP-IrETCB;vp_#QAzh2m%>6lf5||rzCs(Q z+%Moif6Au`eZK$CUoU#2^z;JFYSQEgiX*k>Mjkg=&l`+b?$1)oMc|%kATk45dMr_Q zhL_R1T1xoe1U@q+J|0iyMT^8+=FcrmBEJiwl74+;QZVIE0B<>XhQ*Q(;XWNgj1hzg z+1`>#B59GMqkb%yNhG%W%)k%w_L8;-_wI; z&d8Xqug8>9^(a0SyMy;naV!N#BkJq=pwyH<-o#Ix2!Bj=A)7Pi=frQc3kAN7Do&{< zA{`hdtE+e7hyao-BpFzLNWfSGZ2-N0n}}2e9K>V#w-_x_vk^Z9N|(S8j;ED=yhZRG zs!5Tj#^v<7p2$?*ooW5hIHZzZpq@y&r%(Fgd&e7agiIJdv+*2~$m+>k6|<^IwE>aX zz##Dj11$kKRdT}46CC*Rs;fNe|G8LbiS z3_?quc4AfcZiJloe|(3y>P{Cf!HSfAGobf@Iw8&;tX^FCgh>nq`(}akbO%?*pQEG5 znwsOu^ubj%VzS|#HdMLRVxY z;{OkC_?ClMRg=t4@d%>yp4g62N^f6T@$uiIAIzK;!Ej3CcV44yi7PF{hA{J&e_!!F zBFH;NF!t5Z&#!8$|4(l3=)Z1{_is-)j&NG&5v}}Z%YRzT-RS?DZv##Qj|&)eBATg< z3jdzAQkg+A|2ze_(*LxQ{uie8|Nk*a3IBU9|NlG9!lC>PBI(D`+}ym;_G1E1cSj3v z+;6^Xe_Z)2;JHQqQoGHSJq$ND?&Drb zXt#OMD-MmF$-zv57ABJ&JRJFFKUFJw{fP2^MpDoY4kNF5A7B#IcP3HwEjL%_{(H2q zkSI=tV(HpSZywuvAbh~4SV*lf1n#Su&U2r{b;MAWF9>6 zaHd?o-Y5P~0ZC@zO8f@GjGjK5-wfs=R(sHGA}M9Rx1bRj@$6ptQGMt!BGvD2mdK!e z3-q!Hs2-;Koir~odRwe*I4F%zindXeG#9D;=tbu!d;I3q7hBxaNNPpgB_31qviw{E zAK^6-;fT2$!Z?-3J3RS^c|P7;rbJ&kF^wLoq(BW?;D0}fctSBQ1rdiKa{FY*acF+b zrJJ&y&eiqHso_!P8_#F7`x$ihKbtV*-!Ed1;Fz_|rr#d>Ezan7zinjTwMwKHu4~8* z*Op!pcZ$cn(dBZ5>o<)xH8K7+>qfzKH^GySIYwuw66yX;Tpfgl&Q47Fcf`ufSc%ZrBgIhh6LQXw(hM&al1{5+Ev`VkA&6NpF>&& zAs<+4QjR(X&pDEz)fVVl1RJm`)zm-`{f5?wsp)vEUsWt$0M2Za_s zdf-3}%0Wa($d7=EQA+4|dYBD`{oNklwqv=7W!f^EGly05$~W8DDITV?X9$yFqj@i9 zQ=5HFklIAZ*JzH0J!bA+Ufo4A@WI)vT4wPLg9B~Z7p8xEW(8HT*4SG|Yu1LFdwl1k zf_|7UC5aLYT2?B~Wf!YO1tzM;%Rr~YBxwxWJ>^Z@E{GWFv);~N$0wg!=)PF(eCTo*n^xoFw`p$XCz@Uj z#M>88^$D~G-nX(NTdT~(Eqgyrne^Kj#Sj_on{}prv;#7?ms`K_nN2sL5;uX_^h{oO zsKTq*^zrv!HSYyGv(R7LuIzIKJB-do#2#uC*w{VG4QpMM8Dh6#LbPASVBDppS|!!3 z&7=A6v}S_gNup++ zVh*hIF*uMq@vc_kZq50Oum*xgQ-bZ~rphn-+SM00Kl0dEb(}gTF6R~0L+^aV!W#_x zjBVGyA>i*@x7=KKHOE5TQE?plA}{yrU=;r9#kYIOoCsLn{loDHg@=0=SRN5KwMuRc z&hBhfb!D>g7JlMg_oaab0zaBaM!q~4olE(-)uDO8-=}7dNzJvxmxN_!I(f$8>K4it zSME1hZnr7R^L=a|hY00q-!4J;B)$_=JZi9Gz1Z8Ca(W!r}}j-n{#-+wMSf#Xn))h!j6|l=8t_;Y-u%4DEqRfoYuY=eS(= zXUw!U`ptf)N%t%+Z0F9dLk-1`OsAXc5n}Ibjjqj6BNyK_4?@JP_R4)bUeX3|UE*GPEb3V>mfOyEoiy*xA6C(SYts(T_ z_26#}xr|<$?5vsN&`Nd{obsb;PJqn}gxn6O_@b!pA|DQ`Tbu};*_?m!tx=3+(NyVG zn@aN?(Wq+n!&%PQ&GpS_#Dfj-#jmcN8oDyPbBz$tyTEGmiG6{yS4$90FRc&cpzN75d zO}gB8mF4^>~B#E@=9Y70goN=8GV(GENM~Y@4F1o z9QbZ^Dnf$SFKsK0YQ;4X)`#t0^@yF|JbqoJKu8@?!Y#HuXb))%>8?6L$Gc=*`(WDo zY(}`>NCyHtUN^NBi4@G3VMDzvKxf_K4ls;(i5pzabLmb^py&VPv-k6-0V8e6wF_-* z7;?(9W;F$Wim_4E4Mr?bu1?12X80)%WfQtGD^p z1`OF_4N!m$d7}jKVAY@{?k5map_9D(KUG3MBNoJAN;YwU~#P1+VXHgq5|=l*x=_7rCavOfyW8U`vw=I8Y-_yniq{IRGh`> z;j6U8MkAD>N1zhyX<{=Tg|wAA8~PKMkipcNFIO?G&ek*W8Hp#sk|}#OIZkX=)-BM8 zSs$YGSr0ckmZggk9Dg;@%h#gW+^>nQH*|_nN*b|^x?}dLkM`PkKD_~6fd}nCz1wB# z>J1fdMiv>U@@vmGs5S8|_fx5KHs125tw$hgr3kar3&f*%j%-W)979e&+-&Ye7XwfC zL;HxDB6i{q%wNBoGjr?Vt)}xjVOY}w<@SOwe`~h+ubHNKWPp;_kC?yk8Agb`x<0=Y zc{c@X-dE9Y#%C;D$j_zsWcI`CPDV9ZOtg8ovg5h$#2)Xe>SP#%5oAd46C7>3sGLs&>mGPuC2E!aK68N z-)yLgyhwBbfg66(Bpv)cL^-o{Jw_fKN)b>Vf*` zh}k1KkGW&h@_clu%;j+GwJrrA0oP!HdF!Y6a_UWJHHZZ-syq`9Z(w7ru*H2Mvem}g z+(+#_tKO#k+IM0acFl+@d8Wd>*zK}YoaxP!nP-aqh0#9VI38j%Tky4v8H9YT#slg) z%|2s~Cowfok)}HD(DN*gUAGCovL~=o35z-!y$qj#1??e1fxzrRlYG8C@w7KfaQ=%1 zCB*M%@*cU-kEU!bDzlWhLaQ(8%S%`dvmT{H zbzZ8ZS3IX2V{T&4^7->8#!bL?D{*yjCbuwVXu^(TeOs_Xugy6W&tdiX(TVW@7*kJr zQaC8a7l2+f37CZJ*ITQ}Hb3zzA2PBgV~5_6bmm*}D!V)1v;E1Q?}u|HwmW3ow~;>Z zD!)5l@3i%=7x;d@b9Gr@VM4jnD83GK%zVo$zp=gf!P}afir(Oyqc5uoZy(+^ z4<5N+`7+p#nry*DzW`2M*kH;cd9y{?S!Rjz;+e?z@qDFPSiW>;cZQgHW9&RKZM5&e zZ@UkXh!wMQ?TtvWoFf|2;VG?K!#b^1Wjy4%nQj|zesGE01lM4ri=^^h9p12gdFM1G zKAY=A8%IyD*h0DLfLLm$*H=)}h7*cT;0e!H^Tt}tdoo~~qENJ$#-&1RTP0(eD!U^kmLge1oF4&cXy+MJFfjzr+{vV_vH`crNdrumE1Ub zy!+~5`5<#cv*viR5R>_8Y^}p&LwwC^4Xw42=*-$@I(;W^&w9{dT)%T1w0nC7c;|J3 zcVwgS9lol;+(O2?+?TZss`qg*T)n z4YgU%BpGz=SD6XVmo^~YH@TO9&)by%CdgR{iP`L#$ai6GO zg!+Zcf>E_kw^=Qb!cRQj2_b2Stp$gI3?y@}lf=q8X0M>)ZN?Bhx(Y<2;}=`{UWs0; zXGLL0SsQEXD!DS>H7NAq<}x+cx~j?0nq=Dfn~^28HPQA1WqVE)(w7>6eHR*)KcER++V&+Sf5l*Lz*xyj2&21ZQ0FBe8&63)9BTT-T8%f75d=x zPzQN<^|f}6GYO2ATOLdD3E50mDdPS~K9eZz|8) zX8a4F);{^Gx}FkN@?hDlnt|*|NvC7F(|0`XOr<1hFe@s{HEj5D`zCo`M3=oy63KV<7vadMkZVH=gEZ~H6#dGr0YbUVXUnBPmNc4hm|I* zN@K3d#CSihM(ZpS^^{b5E3~t#$lGCC?C$eh-{>ht*tu)NsYKz7-K*`z@B*57Hdas_yiPXO(?_Xiq40!TDrhmZ>f?)qHuSJJLoPUTxN8K?Ho6h zYz+^YQ}}i6>=Q&-yv-m)AHYGYU)hFM!^!tiWoMdUTn(D6i=U$pLN2R9T(e72O)yz4+kW(o$*QiQU_@XS}S6 zEp9;vlW^I3%aWAC_tG184vLkC|KbA1k#BrY%=_OavS0P9CDFQxrown5Xdq6cx^346 zcMhVc5jTgQWA;1wDv*1}a^{2~7iV?vl zw1e*KS9o8++N2(ADq^(zEw`UXu7$(~FvQC&?jGDnq+a>IBGSX|VPo9vBAsw_=<^DX ze%D^|4tCSRU3YA&FAlb$)#d55kEJFsFdy|UVm|5noj6l(%ic10!%npL@7H>%{> zM2^gzU)As&7U`UFtiHI5eO~Q^*yPo#Lm?{iTgkY^UwaWPt4qayveL}phuePOUY zEwXq-6WM35E&zIKzPspqINchZW!5HrE9>1K-CsUvC{N&o7_Yb$vBItq9AJ3eEp}&c zsFFF+Gn`&XH%}c|p%1|4>R(0CG9a?vDg132C^|09hc`>QEsCBpq3aS0|3?a9i~PT| za7yuBtX^qQi;N;_4-{pcb_yM5smlx7%Kf`E*iY%c1wBgtvo-}MHvjAW8ma%h{$I4} zN$UUE1zGL)tqE4Dcc=0eRS3Sm@mOlEkpH{2;{4+RkBHN7|J|y$;s2GWo9q8F z0`7<1U$6hWOC? zDL5XX^x0Cup>(aYBz400a23Oflbdh#B>z!%LBjzUWsOV0&yVqSa0xx9kSh`S=JU!w z&0UkYjpz4jLH+EfMmOVuYN$YZ`Lk<$E3j-#KJu5lhsWaT+Z56gG3tfp9`+q02M4@$ zBs65r1)B$Q!Xa@rm?v3uVI| z<9wn(a%t6c9V%uKc--Fb$8X7o9hCI8(boT@aynb9ef(vRxLd53jV3BKx%B+DCvyaq zr(`EkGw|g#F&@r9AurYMUssF1)lY0*7LRO#tf`Byg(HZ0V^nw@j~6;+7^-c1ckpUs$%w~namDqNWdmK2 zNO&!&Gk)c)O5C4&Mu)}s^vCql1REcwMMn&#QG%cO!)z4SZ!&wR=@SA0V>afHx==mi zw}U9vX(veQGYUht3ryhhQlsQXM#%z29jp6NRek!r3`M;ecs5O;eyvaHBm@(=2 z0(DNt?_RAo_3#3xxY$V~R)uej->?jjYW~yUAilRwt*yOp`F_t^u{N=|ei<1xWo^|? zaj^3Cc(Z#*Wv)tZvyEL4w`;_(vQ}x!lkEB^T5S7pJC&lC4oir&^}*)%iLw!A|4?Pm zMZY4}j=F*TwC4jq$MubnPS+oUHKbyMv0hq?kO z+^q(f9q*aE>xh4ffOs2s$vPFI`gYlbNO3}q=+{B!FtC`Ud(Mn6tCmf|bK6I$Nk+}> zcl0Y$aw~5e*|ixH$-BgR>EL?=q|I(QnG(n25E&WyzGMkf^>;9kYo_1Dp=e`+Yz8u^ z5gq3p(SiK|PUomhlU5MA^=j!S1Da?mVB`r~qCdnOmNcSJMhycBSoG>mMr=Q~jo3HQ zqrUjA@Nq-!@i#16bFaQfA)d|RzxZenVp1xfRw21Llry8v5yFl}Eb49Ikf;ehqquy< ze@#BqIxF;j>4|Tz>XXl_Y*6TTmnE6ZOsWG7!bfwJnMjkB{7e2L8H%3R09qw=*8<3>Q60wn$g{L_Xc6 zHqVK%IUUR3(o#6(z^UoaVy;4JT%}%YvSWn1Ig*Q5>L4~ou2A;s`^+{}h8oFKaqS_y zm$PmObLH|x(I+Xrgh_grWPORjx$sA+}ul3?$jSL0arOvGwQ zMM@{`m|nR|>U|`)qJ3Yj`1;X2RbJIL*3pC>p`u311js)94)tw3@ML!+p8h*(gTE>1 zfV$Q#wQS+Ev4TZJ2se^zcY*a_jo=Wrswe4Cpe{BYnGXb-=gY0GHILWemJve`?V(+x z6K6~oa!GR&Yss745_5&R;ZYyGwJ(kZe^wEFbv%Y|==2;W(tGPJ#V}ADPIU^?%ph~M zm}OY~3TXD&k+r117F?zGdkN8f1pnz@T!sUu`%hUksEdZsoLNlV$kh35^R9jj4|GAwbvH}b zpQW@Efk^vgh&)P4!(;_Idre*+hCGtT*?KqaPUJnNi<@Mn#WzHtNqOtFO*Oqpdd51) z%#x@lM=PG+M1vKc^p9I|a$SDpBQ`0qtma>jcSKdW9`Hr&a8wFt z5_oTo|5u8+|0C9%I<5#7ym>+9TP2*^PX#@g)6ev=r)s zMzuIPRD(wU4>BQ~L}Dj^LbJhpXf1E^Q7d;X!_+~lWH>{`>>j5w`5^^t>s|L`HSel* zQ>g*eSKT|Mg14fUo;_HL$3pll&HdrLLlGJSqq457oso-B-7mBsMI=N;d!eDn$NA+# z6Dbll!V}{M?px~#S!S3=k`u0G{hT7Dn~$8#Y*eeq6@W-#Z_-8Tcxuqmi4M)oS)yWy z(vc{A?Imcuqo5IWq_Y2XCDj9XvvEok5Sfp0_y=3C%V}uq-4v&{rDt5-+M77|T{%Ld zr+ZwTmwyFaisw)!sPP1#Hr5JtQ{aX_$QSPQAyI6k?$~1{9$A#XhXK^|G#v7*IXl8G z_H3ap@TZ>dWNVLjKtY%`PEnfUEKVg-0tIXIh{JP zuzfYZ>-FfbkY!si%7T-XA3i=k{Ho|n#Ll{>R6=;edZ_3_GF8F3yGF&R{JElUi&TG7 zr>7B)#j?J(h5zf zl~|=T)K`Bx;+sFioZ2UtIdZZ`NY%a^Onc*5x9qAXHB-7AIvn8O?aYVcQfA^82!9rj zUs`n-d{OSlp@452GHA%rgGVT@pfo%oI(Dh+wyb`XO}1&oJFgV z)2CG!rwpBZaL`%-xTD{%$hlp+2wfkv(b&DNahBiaOU!Y<$voeyCxnec83u~UWk&da zy=n)y71;Z#@aB!HUO0tKV=el8X(Y4$w|djr`?oKiUq=O#NmA7N+er=zL|+}^xO(Gc zG>46h&QIW_ZBDU6d6-Drd{FFZ{D*c))dyVL-tLE}reF29R|mE}73tX?3U{~8455EJ zsaUnN%y6B$kc+kdbf@~jk5>DsP8p&O`j zxRqk?Yr@MH8qq#}-6iGuVIYCLGI_Iq_!zEW$e@xwh`p}I1a>WANrLCU?~70&DS-Fz zN1VAbE?vv4siybU31<{=`(RSNRZ3?Ijdzj{V$D>kI`OL-cB92xziSsvdcZ^461RF2 zKBc<3s*wOsLRpxu!kx6EGTA%{RZ4G75dAS(AnZsYe$L0>q-0Mk##s051bz(3sT0Oo zud8yulrk$3RIIJ#*5)n@%MAjOMVxcesFN$_dLy3nmd1L~v&{%ZTH0v)dzp8&RTl9G z)rN)|hl`>PNjzKm=IA8U#r5kWB;WJ+kt_3I`s@nTTW;C>XE#=3%|n3XM$tHJEK(;feAuKZqzh+EzhEId z6*0Ar?65Gae&5sWqA91@Nbr#%%G?>QVA67gKGMXWoz%uVLf+AtCDvacY>bq|^)?sQ zeTZSXHE{D0eRHOq<7_c))3AtW1pZ0AV6G`5Qy}xD@-d!=F&kZ4jk|T+S?!(FS_V%o zRCS`u=G?VJxd*C#zBw-ksiPRlpgYI3PzfY$IY0Z8UDq>^B|M3n_%U@CWs%!KB)e&x z+HHfX&!v9eSom@ie+XF+=c%ISruoL^~i@K))KJ6 zR(&(aYUQv>v}8xxy;e@o%yiSp&w7^4SGvP^|6qO+qtoU3H9L`pf8EjfS~vM4sxE`Z zw}J}cN&A!3aQe#W`JvLEQp4x0^zZ~X?Y9nCvSxp{WS(}v&T8b*vq#%6lm#a1MA{qj zj(jupwc*do!a;G~cfrWNM;gOauTN%lTL0#bD zkT9Kqf2m6lo}5dbU50Epj9wa7Rw8SV8^1Z3&(8a23nJO%fkE7LIi82Z_49}&q;bdb z6^Xpz%$&PrJNA{R<#TW6XQOHC^fwDH_?nYCCa#Dw%;6~ddXa}}ky4w{kq^J+5b zckc~6{e-v06&&d~wWo$kY#(C{UMSr$N@doRKesRI4W73#o&O%?PJCq}E%gMgIZ^bh zJl4Y5GeR3QI_24y7*Q&Y2=xT!2Qfl9i}*!t;SkT<>?-1hEkXhv-ls_wgI{S+(#_<+ z_F5ibyV3d=zxS^_SB;JX0(%96P-kVumB1$!oMC&&G|s)x#$e>(q@1onK5~)QNr{SgG(2gjy;tr>-#HN$Ze0?+Ycds(uDeIQ&>B3iUYqRjCF<8u zncbGxyVK{p?dB|^j-9vm7M^w)smK~W#Zjc!#NN#vEjO))8%UIj^)m50m=~WSebT>9 zL&O_@m9rlwTYA+~_Y@1q?U7zZsN+pyToD|1=BgxbQPZIW)>*MDY$4z%=;5VX%f0W< zTdm{x)95;0G~edUUehN%pV~@3hM(Y|=>p#KMc?ABrYwE89Syo8484Ub<$U|Xu@DB^ zSEbtem4P;I2G3HDGRk0A+sWl4L+qWc1qE#oP$+~xXc^&lPptE!ki;1#3%|)GS-`4gp%@5 z;EsF#6ug~%o~ps2`f@w{09ny%#C3-u_|OQJ#9iOu)+ch{V3U30v?a@{s(M7|n{~>G zvq*kdI^S_)P>)g5IIxrt8(c6l-%q8g&uqlfpE7ywI{65C*HQ{*G>To;Q|vPLTFBB? zl(uuJA==>2#C44?QkYYhJ5b+v>#%UteQ2GPkCnHB$oxjg;9#`-10%)*uX$grn*r{~ z?dWCEP5W82Swj9TH%p1Na{Xd-=Yyp%xg`tE_%{B*9IuO==r;THKZ5LJ(@Wd=Sr=@$ zzeWp4wjE}gi(X^Z+wa&H4^jv~t9=a}T7TaqPaSTm=CoW|qEM&*{=JbnVtu!Yvf}+w zr=s%r-kgBsg2BEho|- z58=5?&%4qnq7ZTAd7K=sdHhu?+Zih?yUBNqziz z_L=E!Zt@;tkIgvedY&#R*%+paUFZw?Y`BpQ3hy1r zDofOLRiK^^PD+j6#J(xgPc38U>Z7J#fsd$vS^H4BX^T#0dG?k$@|l`>)-ZMa zxoq&*&BAj|cTGPZc))ff^;ZEE`=9qS-Ht!=_3%hdB3J4#$;exS(dH!XQe8GgoH*{* zzRTW)E+3Lyut$o}p0AU}RN-_mMw!1DRYJhG5T(olpQTI)?lChUuzSlk@uzY-&XUah zay72*_nw(Qvr@PbSX08r+UV8IBBz6=eLNtU{G2+u=j3=C%tO^UYt#(kM{_SD5pBiJ zR*0@RkJwQVg`<*R+)8forP?xm@(ReM_^$4Ef}+y!`RjD|;r#&_dPX~jLLrTj5nYW) z?rn#%-hP6jqjMBNgPlev>{*H2Y2rB^hA>8Fr7MQtww;9Rss7!MwvQh{+ceooBjjOM=hD7iXQB2ZBF5iFeEzpcFKclzC;_fFjC4hT8;6~3O#3XA<8V@UFP^hT46KSd^3(KAGebc73a)`B>QN>M7T*Cw3*V?zhPF0 ztN(TE>?dpB{Jc@5kXgvf!la-*@?OpRjo0Vze6o)x6_;k*MM3^>HtaPkzx`gsV!h>G zCX>UW%Us&<_E7fX(&~dY%4X!ka5VL*kAsldh?uW120MY}lFd#B*X&aJP{6AzIwz2 z=BM=5Df5AHANRndOlrT`G3N2OO<2k?K9k*ErQ$c~_8re1c4 zplU$oTCo0le^nYjH~6AI@98x$ z>{?7NB92#`dd<^tvnx@*j^;dFkKWdevljhmNoq3fSejOP?eIoQKHm zoE$TX^?9^`{mk_NlV#OiI5wAEq{a2zOzsODCrZ@q=0g`$)GJn@){us&iH||2hP-~0 z&>vSuw*tpWu%Fg+{n%$wd`aMA2-X=VH7ONgM~AZG1X?2=6j@C_ji zL+LC~N;2%eU-^rXlc$s3V=`25M&YTR!zXa_7NoIVze*oMGpt*m5|5L#)qW3! zI<7&d`j)Xl$+UfBt45MGyAV0Y>R;nWO|2t?W>pv0luoM#QMP4#e%^D|e0SH7xZ9gz zockIK8OFiq`;93)dxC|B1u3%rW_BR_RE6tL7X@<1lRZMitg}Kbm?(H=H(5F|n!z8Q z`>Ei$iea5a-LobA%&4H#e0GCO-wT?fKLmVT5&lel6tzUGQEtso)Lcm$I{+ncbbT}!cZJRHaUkZE~!O!{}4_fy#%Wcl(w>s$+Kli zooL?dt+5Ic&Y!@4myCF|A<-)IL_QS-Z@Kl?ojmz@YFV^QT*++bggSl0YWDmDpUE=H z_V`ZKKGHLcWJ^QgpCu3ao4H@EJRRs14X6u1ZGqPC_BmySS!R2x1<0M*P8y4s=l30)OFomqNYR=t-(!8l6pvKjo1rBsRO*<0?oQ~& zq7amPHDlEEq5o5Tg86y=*>SBTp-zM^<1H*y-CO{Bh3!@Q1jOYtZ@4Rt1ePT)JGqq( zk#OcL@qEb>*Q%uYw_m(Dsdv~b7{q)3#K{NUB(CgVOt$1}H(GkV-|5)Qw&9)rC(@*lznm;%)gqkv=ynY6Cv@%VR=mf(gj^|54&PKdo%@{0gEuXz zUQqZ9%``NyW}SVoIKN2p7}0~R*d0=o$3%sGmXtz2lt3PoofYLZ4{^(F=L3jve0h0B zr(|3jUIlODtVUQx3TU<9a2b^8a-pzo1-^x4JYY(4qPfp^*~o>(0pq`6hL;GhPS zch?t~727OS@b<$@HvOg`vkz7uU$&qaRqejqmMLB>wb!3|R3~SRa~R9l8!1gk&oMe) z&TQ7b)&PRvo0(YnuoWxf_Z$ion9+)fOI{|J(kp7M(#Tam4F`RaQki89_pvoA`!WY> z|2!nJipmk{=()OhhXR`5o9dzgs)bP^GeV|wZ*TePeqR}W_6hV05Esp-T^P4qG)e@z zIpeM7X`=B4tff9Nrr-U^?Y_g8RmTa{+e>$AzPBp(3=m-U=kjpG5 zly+t}mLXWRyB8b5kIj?qKf300I$v#PvvQ3;ux6Hh?*bh0EJ5G?(I`zHONae#K&fC^ zqIj`35wRqrg-sj@qxH%%E_HE)1c=yB<6D%c%(lS(&# zi2oSUcvw@``MNKD;c75?Oj*~14Q5Pz{7d8;OiF5bP%Tm9T?c!>_cx`MxXXX!Di*=-YBU5i2FssaW1!`+~IBKwM_@U_&%Tr~1vQ#>%(h zl75>fTDd_j;KicK=zVq}5AgKedpK~K00R@x$%RfZB~|dJG+2p@d?bOQ>t7gqK^yjjhmF^THc)rhhQ-)G+SEQT6#qL)gaYwO)@VjtZ-%FrUE zR4C5GZ$$YN$%?jsr9SyvjvZKGj|AxU+U?lMBgPP9z8))d032 zyt^6_E<;~N3O?gFk&#}|)4b6!cOq=iBv5H&PZlVf@9hd!!Q^R#X@@&h0J6Dtquuaf zrrpwuh+X%wek74ul}44In8u4A1o!SAD92>2O``qy(n?>}GQtu;yXilIP3LwhSz&GO z$+FMMLC)8VTRSmy=&z^`TsQtP=3WYAqnV+D0Seoc;o_0vd6}#DnjW8$*uCgxzuBKG z$^L{Y0%C14#pN|4f~m4WhTuI1f!tRC|1OO-yr<3F-vOf!t@hPvyCK(`_=`JhU#fMH z;p&arwr-$Y1T*^bBe*iIE>8*8dxAb1OzzBY=aw0e=V=-1)V&v&QAopT&|DE<%6U%v zH5CKYkXdWVWz%c8|($)+aRZ!;#2BUc#0^vp8buB#QbS=IX<{r21rIE600NbrC zd5CRMcFBo2Y94!I9AnPvLh@TRBa-8Zp=?Yv`h{Us9HHm5p)*jjCr8{6;WJUL2x><( zCw~x`>f0nB(S{)_q3W%ayJ6GBJg&R%MErNf+&SaCZQ3Vm-@}pl|+Ih9H$5`lk)zW&5^581h#0nxB3w*n;|wvS)*h6N;+3 z{!!4BCLvc8qOJZ5D@90N`?&w#x*aa-7gC1EyBz)Rnw(n~sQ!^<78eOtuWH#@pGYHt zPh9@Tv2wAuKkg@=jn$9$kE}X#@kLuIjk~Txl=|w$rNwZ3+=j9pWA_u zq-+U0)NB4q#KaPdo&J5DEs%&2SoMIM2FRojshs?RL5zhcy4FaZX z0;I8*UM|%}wKKI@n#AK+s@AF9yC2Z#TKr`&2Y_-hixVRo{zu9b4%VMI?r9gnJUhI> zd-kN-m?7&yZ~a->u}X*<<$8NNyafiu%AlWMby}8xP_BIp1{A+KpYaY0L97<$pDIk` zkMM_KSJ?zGG%|k&glf9g1Af%#+?)lkn@BiY4mr?wLwnJFD5$qvtn$feX|n>SE6)SC zxjO)*_N*@FG`17g@0?O2Wv5+o*&D0&?d|A=0kl?I(_U~xz$$n>4pGLO^gb4w?6 z1>s4e#+SG!EEC%|2_-r_-~+blS{3Y9Tq_OjD#cG*T*Q7Lg*`mkaVunSvt62`!L@xk z&YixwCT28f6jFHNNR7-UporX64*VrA@X3}A;A`!vJHP46YiIKmk7*xDlY%)-%x2$1 zre%3PBNU;qr!z3N9I14^qd@%J(_UMf5;^beQo1PEN zuAtoYSvhFM@Z*;^01(-+LhS#x>qPkEjjNTd5u|a1VgkZ$xGS|HP{Gr`k7H^M{ZceR zy)p=9qi;(jqg_kSh!n@Jd_5`oT>JVND~H{;8^(XEzk$Y*+f?eieQI%{P$WnF*sxx3+uC%cdk*i8&18(SJit3|foBfqSLP_IS#j^Z-vU8TY-Be2E_Q8l7+DJ&koUt`^(6eP z7uq+=iSerm(BNUOFu&xhW#ndOdLHI;S=S+_RaBapRr2qhqsZHw3wB0_s+RXsxJT~( zZN~U+VX*bw9tzetr=Knw|EBx4l zs@!)o+k7b|uoTQ3J07ld99)3)6x2}1*|V`M$QrB-i=S;fPCgo)0n@Ih?bL#_^-3;& zUZnc&UkYWZ+e}+X&TXAE1PaC>g;9m&n2o)TeEP%wLM(`^QEz(y&T}92t~Dg|Ji5ZI zssgSF_;b67rgOA@#3eQPXzySv>~|eBl?q)_TUjgYt=<-((>Gaa@d@PQOk~G~v$)*L zn8%$&cx0y*F@6}4uH)VV6CAoO`!ZoqN)6YiYrw?U;PDep?MlI)F&+^rP8-zOS)&Fm zm;zn*WNjZU?&>2wOXBw?zgAyGRV#p&Q_Sym5uS~hH~yYL&H3Sc4lh~FZl30Hpt70t zt+-2P)oDYGueWl=0X3A^+^&HCdxlC4A|FnN&;IGmztAm(Edbz3n&d8}@0ntCtBou9 zU=Z<=_e7`+2R)h8=RGgJ;l^SP%N4JTeVk5T&O$z}64BWByF(Fu?-^pFWLv@E7&wZt zqva4>7HLfnZ#nPuCjt}iL@hdF{`HNTY zgn`~EJC)zyKw)H}Gu#Aby;G94+uU2!A7>PQ7Jx67rDAc%D0bl<1oT;U&>?;PoCN>RnmZAyZ1;z`s}w(RQE}FN91=}jcsQzQ=?4isEa_>z^ZY5w z<_)^S_suP!N5ch-8aV-YK^NRqcirus3CDd{XZiKC8)9+KYD=sVsm#K*SX8W4!|SU} zONg<^#CqK!lyQyCez=}-IO9$94mcS@d=7V_@;XrvxQW|-_?{}4^+&rHbaT^~k-LNj zyl!URP3SqR*7VN^H0W4EN01jl+q5_m{so}>Fgk!`Gz&7R91UR&bi&D7Q*lNgPA+jY zDX2ukyLTIuOmJQziC69S^S|09UhsEiu(dJXlg3?~6tVdFgRhZ$Rleq68aA=3K1_i^AdaAuP+Mead1r z=`E$DD(->BY9r-m{)}l`Gf)xB9X+4ejmJTqiNv*JPaIqmUzc<Q4Bpgm*chR zPSGQa5Hzq^@OohQ4M8kzs?g(JZf&V60kKffWbBYXW~ufos4a%hQ#5nK_&lsGrL`$; zMl#l@|7#b_zHe}lfkSiiRWY={wGv!yIZ3UbM>f{_6!d z%T;m`AFa=MxiKH6)8ps@Y>mNR4uzNlxd;07%sTb<-Wv$6LVG^Fs)0F?%bkZNcx{_T zw_g=;1g%&eRn(&Ve5J`3(H(Zf8Jy^Q^y(ugMWbP}HP^b>X_#!cz|(QI{>0Rl?LV0o zD@KERR2J&w9v|$co!&c8chDzeO{&~ zO_JjVYt1y&DS-jKJ^$^JG`0YHz-~8~60vc-wvcYY@#P@&-CM<7ZbutCz#UaF<@_(` zI0>S{f-!#+qjWZ3z`y3SaEGd-E#%xC&l|;NtTZ}%>Fjad@E=u-45-jgy z-B!}rknbJMM579NY{5L|J>c=gS{6<4KL}zkqBY$dh&vubXt#r05^sW>=aVm3(>k&P z5VCFx*y%-?%2HW6|G0T2$+e~8^u{pOoKM`LYv${Qi}k&T;ntBMcLC#zlMbZbP-b3? zc$~DN`;#_yxEIf=vw`uef!v3 z^TNY>i^Trj#?t<+kn{FhlI`C>?f=DYp8vyT5&35Z6BsN1uhUI}Nuf^}SxPZ{OIM7# zTpN)8OJe8q-q2simVYBP|NmzrKr9IdFfnyLI54{p&LjF}du{)mOvfCqHr=di(A0<6V6_>Sh^=j)lITRuOr_3JDgp^J#5lf)Y-=;j{yzH&52*hCBWj7N2tL?=9uuBeg?^OT{avyD0$h zuj(w*?o)0l6#W@?b+$esZ?bpK;5%1{$U!SP;x%tQXimTHyzB0A`dM53tU$Cd5e82K z4}0Ft{qg3T(N83n)deRx2%!A1aG;|?6|UF_B}b`km4I@a1g5ud{g9FGUl{$}nU|+p zwMYfJam}hSun4!CN-hWeF0eSY>#UqPg4l$#pQq^nTH8zG``2`A{g35y1)IJ%!?!&D zbq?ehV_dUN#%Sx0Gr*R|d#gFW4}}ufMIv#`{swFDpa#XI!Kq@qBaBMHGyeVvsQewZyn;S(Pj4o58}hqKVu z;4osNJs*B{6%=D#xdrr!{6mn7{dY?)#}98vcCTqvmdcI$1+oL(LB9Cr6G4 zFO(vc%tl>=oZgNBf7d%*QgnrUV2E&aR$!?VeMQGum`Lm)Gfl#T)x^b3uTspPjSzYZ z?Ae+}jU0~Zf6vJ0&*X@*-H~XlN@l&R%{4l`XL$^kvjtSU&w}5@)2JEgAG7p+l|s`! zx4lcvbq6q+SiiP_b(X0Huq#a-zuuT~Rk93Ep@IcOGmx#K<}9Y!@kZ#zAa%87$|L+? zY&HAuz=u0`4=83_?VY65ifBJWomUr-lhoC{gH%Ba+u1m@X?~n3dR?787pkqdFlw#M z2m%n+YqjBrYTwnrg#QMfb3OyRo1Fya#c3IjSxQy|8&Qub2h z?-4s&Hz&W8K8By^_>2dCNsl#Yq}V)+GxwyNmgb(#sl8?PLlzm(F3xmgt3jve>v zi5jCGwhlAQC{2PiL#|kE+r)a4s@B{XWj7IH>t;4hi_a6#_F8QI+k9>%$)N!H(-Z3> z=gf%3=)3loa@lpfRNM~yE&7tm%g?E{vmZQw0a`+}6wkg~PV|E!=h2oJBjK`3T4nV7Af)2ti|P0$2LVGH}TD&siF!ZhO_T*3m-T}IuD z!e~NFI?{Id%n|(fIP($=rL(y!>VI~jN~Z{Md$J?((<=Q`N&{Z&?lCw2 zWvu-}7$7$qg6}RPek5%=OReC%@w^Z*HoCXV4a#5xR=hQki`3W}Gj${oPy1pChwo&iDrhH85Le4b<>fZD? zUUz0AEL7;!2>3uTnZ+5qEuiydx)1kBm53p8=asD^P5#?FevR{P`u&w1PmCNL0C(}=H&LoNlc&}?vx_VCg+dVBWk!qS`!%YG9kXm(nqKx&w3wa14D@R9T zJMMWLKOz^)oA|!AoHJ$&doGT2;P2FWw*50mZ+|-{R0X@P`6|y2glCg zIDo)4MTEOC9NOqirtQCh>cMtx=iz8?&~{Ur5DU0KAs$~i>eYy}8*yH6Lg?d-{tAm-OF`?K1cTZx= z*KmMCwCEbb)6h&+L7)4dapaGbswNVO+ngS_nK07G;-VR^rL0LlsLgi(8bQTvO84Gh zyefd_|AV!ZpNB<%b8LZ`kU`o5(~yTHpLPJj=jo@Ld>=~A0`IOklxw}Ho*tn~Ki+vz zgBW*5OM!{m;}Q;7AFRial3|UEr=b*GjC0WCeZ~I?L{8rg0m}9Lt@7K*GG9>8b?mf1 zbSSs%X90l1zl=$YkF$9FY4?porlnU%m#tCgbnWVB4w<_eYt;SrFWcwqvxUm|2_}DD zBh+}@k7f=29}(uGY_2ID-b^HmlZC@^o)6)Xg=q;k3;J<59Z9Jr>*%D$t_v-Qu*e$4 zGv1N|v45Ffd*3}yJ`t9@4*xjySNt(&@!&2P-$6RylFW}u_+jT6mhDjW;G_MC-sDwe zgQm-`T>pvg?Gu8V#P5GN3WTGgpE^Bx!Cr=@v&HzP_RQ~vdR{&>0bs}V4`gDrnbT+w zLG?bivJWFv%iFq1B+(`F^v|1>SGl8u_d<@--yvcpYD~Re3zh_Obd)v>@B$rXWK4Vf z628w3V%eUSmW9 z#>MAafOf2vJ7M00bkK@zj&W8)zH*f8++|no&eVdXH1w}A$L zQ-whrtjJ5Y?4-Y`@{t(5y3pKShfy6>2EDoVSPB~b9;$A>>LI75x=1#<@Y$ZA zD2aG9&axTqV();4}XDw(+>NaBzNjeCZ;>SBjxq_ zSW?kbN5whcq!(lLh1LHNWlI#IaFwGt=fuBa0|UT)n;m3@>?iA)v{;CJzQm6qU0$DV zJ~SeK$I&NCxFNgLbo+|Vf zeQlfY@wl87$tGrKv9CKf=3dsH3DTg7fMnc>8s%m)s4DtyHb;?GG1V3r386|;>JUP@f|d!Rww>l3`i0I9UWql$mtVnj@s z5BT1|&jv=Q*F0qO0qnPydJ+>l=(62WD1NonsLY?+GXreA=#;t)wI93Z^fFfIytP5x zFz`Q`rX8UMT$JRA3#Kbz6HG;0hp8_f%XT?8nlw-I0GfoR7gmW=zU=WLW7| z%Vn2LtF>H5wEtc{pAbAQ&iY56lq%}sF}A{}T0E3_4c2*)CZSa3 zwT1X2=8}>|zPKxHIll2$NBH^q!QM~MU^lavHq@=d%qzhsf-$u+B!io>XU8%to@dR1 zVtF0FN@T{~yTo+SI**LUA^M~GkQ4aySq82U+sCBu8Zmv~`{K+f`T(_lJyfiu!xo@3 zuND8%E|W9@;-ZUV?0{{uou6?mNHJDi3<4saLi)3aYUGs32nJ48`Uai9;ZWcHyvn9q!b-F`H{4lNrFO z=K0~5_9i>|9;=Fbvmw4#$-Lc(v5Ho^4tt${q!4fQc5dm3c&CmJ%&7G%nC5SVr4?5z zs*G3JTlvMo!YZR~i(>}tK|M-YzQY@Vu)e&VY$q$t#j9sC_eL%Rk5km1EGF1`6n%<{ zpOZK(G?Z5ru1)>|$jS4hrFOEx-r!?HVBa&aczTSq>q50&Hdug$4J;834zflkCaSor z@b=(9&Q#NEs;Qtm7jw3OT6A~`A@jzVb z3}jUAF`?FcB>xv6oDt{Ic+Kc}bY?ldjlyoX+=q^IOnC@vif3h2;NZ?OfRDn?r{zF6 zIy@BXe-PpC$&)I=Z|1Fzk@&$L=kBeyI`S1CfvrXn?0N!yrDZnMb6mXkuuTVqze?zo^S1$~Ly9vDl0Vb?9%mATZ1MPifkblKpiJ~EPM0IDiuBbl9SA33d2 z^}~F?M72K+G3DKl%O5v^)EAp4&*Aw z>Vxl}EBqI(>!+DON=Z9EH;u!laMKF~-Nuf#4-NGlFf}|T3tXOMJh7Vj6@uQUmhv4Y zF4{+dp4(N9ZmX@v)R?V-@(9Yc=Rs1(~TMAX>JfAMe14a^qy{PH5 z*r3t-2^aBscyn)iI;9dJlMhq2N|ZuKj@;{gbybk?ley3uGoJBv%ss%`ExUQm9zK3T z;~y9mGH}!boBJ6(n?pTgjj8=>yQ|M(aw3g?C@A$dzxqFFr|jY&y)eroLPeV0^*e?`**ugl68|TTT>`Js($R=nM03? z&6D79$!h1&j+M>J%tr3Wi0g9zL4aCOlf=oOf{d|&=n44^LYW^;c{z2r5<{wt(u!qD z+FgEW`7Z_O!n76R&0CJT)2|30X;&~VAIXwU56r(VWZgXb@`DPecz_#iE~E`>GXeng z>jQ(m5Ha-)2c@7{23^aH6G1+%(?OF#ceEuK=KkNfwSXb69e|{jH@5sl8T6wi?|#NQ z(3rP5^_L4NcL1@cVY6>y*FZsJAA1gQU*=-{Y=bzg1lPDCsAA-h{Q!q579Qgsn^hcO z=CT~B|4f`*%|aF$T0c|rkn|H7s$&{}CgWa!qO z5lF|nLdNM!0J)6@+~UA9X%f%mQLFne1!k>N)$gkdc0R;>Vm5qt%H_KKqE@lU1ilko zs64UA2;hVg3M$aw)2OXX4>6A@r;MZL2-w{nTkIGb26Xco1fq9?q?5QmN99_KY-A^N z7yXon4d?NOqt;KVZw`i}*116a^p!3C;fwW3Uv;7IdA+LKoJWT6CNa0hnZU5`*^fO# zCaQS_cS6W;TDNod8w?Gf@2?48N^g0{_)nhv#Xsva!@lLhl=nFJH>{B(LR&&biCg$tn_{fB;q?bl0k`1DW35R`l6`lVy zEuLRq7yUGWq* z%E*9yut(|XPQB753AQ@7=!pNw=Wgyxxwe~oOjH2T{`qSu#z1s;|B2Yh{c>vztY(wo zS7V2tRJNj2jPmxvbiIuZ*e~HPlwxBt$3#|Mx_~Ttyycuao)^+()hW`lb?=_mpSXLo!v_XpFCJ_GUEfD$arNu89 z%QGOT-ZS1}vu@xx`?t96N6|u`wWU{lvDF*1>8?2xyt%&VR_d?tu({oK5gicBCDF(@A7j~9Agf2Hl?@aQu4i=wj~aj z`%-E*(G3f=8hs&m8`Vl0M*XAJjF&Rzo5|z%N9nr-f)Xcm7tXscs|m>bd}_3NO$IZ& z?(Cden*^5$i#U9B7}K{xAPP=DvSD9~>};_4)S$$R47+~^QxGH>!qtiJuJdvPl0knu zVb=V^V>r+~sv8sfL($SeRN&y6v@d!`Q;wisu}k%qkK7eqF8R8e%+T?36sJFan@$n_ zykLX2ixXYes&F?cdX1UWW7;_?S6*a9sGrxW@}%$1YO@FVy7mK!gJOqp{_V()gL1{+CrLSA-E`t+ z9VM?ZO??1M88pCiM+Dm{-}>Dd;Bx}?LG}{+k}CX%mk4+G=?Wab?cj?@Z^Rc$y&0*J zjq7tor3C2Fl+^OJ*jVA=HPvx6-JU7Lz$1+%LR4JciyeCcWMRP#`YWWh`{4CobR3|~ z-Lvjz7&)DZRmf4&(xjEt zKmB{Bl$y;}PtAT*(VGmySK0yXz82KiR_#-XO>78HtxS5p{AGLkkf&DILD2;9J=G~g z(P(aL13?a@o38KXoAqk}WNW{FG2ZCIg#STBrD*^!I<`Dqk1=Bdk3Ya6+sY%F*+pk6 z!P*%`UZ#VK;iQx~6*jVzA(gNLgN^;pxT_?_(>buRfYapQI-pXPlwCn_R#jlUXxx4WZ)svQFzn0n-U!~WfeZFkxF>TufaKY=RKLU?ltO_8SyrR7efc+&!&();kbwUXf=Gf zmDhMk^_*(05Qmfbz});Se`O$?hJs`nkq{U40@%tGOe34nATI(j6J~u?Or>Q%;Ryq9 z=4|J=NdIXDjl5c$a~uP5u{IfuByKN?1iC_)I@pUEJJ5-l8oQ_y2lwf8!Ct>w;H1K_ z)8u@V(P_Kzu|B6Q>kXx|+ZehoSwAmVs?zYJY2RR9Z>t)V;HI2sy&6<8+tXDXyuJZp z@m9zD(#xYTEnc)&$Hx)aR;O#Dva(Of$=jm-3*hpUjntx-$JyNrrD&ndL0v&Qd-SgM;T@}rLaD{I_ zjEhzfV6P!FJz`WlghGT6k@#@xc;g!9P$kN`1|MGR0qT3^gSb!JeaHMN10jadwku9^ z90%u6H{{~Q(?MqBBNf^Y&p*<~DP4Erpm$F2j#6UU?_crnM+kR&VbWjk@TJ0C+yn9D z?s#IJ(VbbXO??#ncLxeKt`V$t@+j|>TmQgp<&D{&J14&8bvjuU+e_-aP)@TQCOZ+d z8ssKs-(ocT;39Wt_j38`S?yU{;HH=m{dt%&UhH$De`@4$aEuZMaPBhfB4OCXSxF=7 z23Ufez)})>A8EHx2Ay9?65W8EZGi|10M;9bVlsj@1T+en?P2F(c|KYC7Q{m(&ip(z zBWx}tuIy>At*1t;5AIHd?ptDWW|?T1zkkLU!C&rn7?P3rb0i^h?olYJZ>=4+rcT4b z$LB#Hsno})nW!SH|M9T6If0W~s?931iz4s((R1~h;Y*2S&jb|UssL{7NMKHsPqu1P zp(3ELfu8Ee6r%kZMn~*!PGTNm!~BGTeyqO3=Zxe1)kB8O^-u%9BozSuLLFD+OP<_d zD-F4zH^Igcw|idr*RP`cx}~NK-?p*RiJf7E{2(=+9`D~Nb3qU4nuCaTBiK`HbO3b} z^Y80C;2E$#^FK}77M9{4-_0)}5X2i!7$kIQ5=BApO(-lcZh^)S-0?@C93$PRPJ@#% z%~+vy%?x0^RDQ~>Uxwq{fg+8kga7UfnO@!S6K4-nu7j-7`fJ1!d4zN7W``2Eoxad)N-h%Mzj*28U3oIJS~;+xPr z3XoA3ZZ7$rL^iTPl}1s-c)822qz+l-H|5Qi@cs%%(37fksgc=I`A1UdgnUOeJg(Ak zi?Tf;=B)329W3|WsNMQ3;r<`zap5(~g!i4%9L>3Ol6~!kX4yPQeZ{O>1x@=4Xf4lgmkY~J~C`;&? zjPVbhYm#00b=G=M1+4UE&t0C5cy=en8XK2>lujJ~w&^Fq z#IjP=-EI3BgW$s?h4Ysd5#1^bpgDlTOaFYe<2!`R1;_(4<4Nz<)EXix zf?w$G%=@$I zkfy|R2Zz>%blH8KJw-r?qhsy@GsfS1Mp%eE#`U4IUN0lw&PKa`!bKWMCrtGsw{^aDT9N{h+ z=_{6`fAJ!`AA^oZmRgnQ1o2E#{^aXjxz7`E2|UA*Sr}%rSHxVm_5ReX6h+ zgVE0Ww><QfHJp9*3W#cMG+WjFP zR{>`xqk?eNt)r0|IhONvEH%% z=(|3e$jmJ;93rGZ)k!r8Jdy}y&eiX4 zc^SC3=U{*Khc&Ur`LoTvnD2*bVNayh+wvlIj?WQpms0ZDNFnE?N}(|_hjM54kGI^v@MN; zStXL-b5Q;+s?a8UF0Fy6c70lu0rG62xjaMEtc!OF)_TxDo} zd(r9ckGuJRPGPxEyytL3QIU?`=xq>(J&I8c#kJlq%zi!CZyjl;hxJxdHR^ z6n=5?6?$!QJ!Iyf+UR>!T(lJJbrjek4AZw#o{(Q2bwtnlC0Xd%SSZt^fjwvcY{A-ceq-0 zUm7U#AI!(zz4sv$;Ye`SE(rAUTOND&Z@KWF{+CPrcH!`38+owjdUk7@IsB)N3N@Ye z_Jyj9nbwMbO)B{DX{6IND2_i?@XhWxQU_iGLYGgoDHeAi!($x(e*uPGGtwFV*O^?j zDm#4}7;IutIk!8Jo}zVf<11gV?SB+mZ8IY9vgat=xGh#_x^v2Fd~v1FK-rD4w?+SE z_R*u<6P0qo^T%FBbsfcTzpRDIBu9nZurSAIQvw9X_~hvDxv>tkpY%nVS0IP9|3g&BZc&t_U4wi>t+;X?wVQTyQDvAP+ zo|^SszX$Cq@&CdBb&@MPeA~SvZ@~;lsu34{rUTL~d z5iem=`tBF-^z8Fvj)N>cE(Fugj~{w|_EY;KoQt3sYS%rXxljXcUsk#NM?p``ktd-D($24zRpK}EDZ~f)tnM5O*A<>N^`PNX={1#H;$i&)G z>PQ`KZ%2AMxRz(0A{=gsxlQ>0YdS||k3ar3?(9}gyB_dc!m>u$l>eeqakDGLW^Lj2 z;O0!C=bLSX4!I$K*u9$Iz!h7>SxfazP#}1I_8j=#SC!T2)@QN$+@o5T8?rXWA2hI} zY{K0UoYfy|c4fm8!;n&RTSWX@eU8ORvLg<2p_7b_N$i0OzQIyg)|ukiIsOFj_`~B+ zp7x>2$oi;NvXi-stco(1JOGG0d8&~#D9P+(Z>_N+Cm`{QQ>fPY3yt3#zu?EM1Hvl01ZOcTKYnijfZzOyP)*1?-I?F;wB0RD?IU~! z+bcJEeT#91JorF~q5^{XYVHx*T`2;HC#Z+J4uoJqO^Km;uRy*vh5DjhB(C+R%q1F@ zQOMblN$r7L_K$~;p>IdUmxp&PDwWUv&$NwBFkHj&LV)y)f#YQ`XgI>Rzfdi|l;90C zL*#51Q7Eb|V@*+K9H6J&I7B-9K#bnIz4#_`^ZLOI&L<1|qyW?ZS)RcUi3?vK9}X!&Zs&X)f+I*@3E2FdgB3#JC?`UDEi%@Q~5p2V0#CND;{5 zzec{66D+3xn7Ly}+bLUo+nproH|}lQ&`D{cnR5!QNc<(VDg&Gg@!!S16qB@QZ3r`1 z#FZ@iZrWpoQjr*BQ}Ohh$aO(kWtT-ya8%z1BLsSN2@|?Tqa05Iy3i6=cV28V&yIjO z4t5J-^=44`W~Y@0l3;Jt>RSOegI%<%COAf(h~0q=+I?KI14d?wa@8*`QUB|9^aiz% z%?(0}&Q51qfg!c0e~bb!H1WJ&sn%nIp(7YO&B64Hb>$RE@?5s$HGiLr+<%{WdVVvQ z0>g)Pwma(9OeZ2IiHO%7L7ijut2pU<9jBfSpV$Iv7!@KI2gG%4gC+hw-?JmGnS-B{ z(W&o`BzVyru8OR)_DU&WchLP{{ENjXY1>I&GLzkikcKDgKR<$}?2L%^7kKQN*Ua+j zk0sN>lIN7{v>9O;O)rgCsK)MRwqN0zOQzBjxv`rF+ZlSJS5Wy_m@PT``ugNhk7XVm z&=ZOcZFtoh2(x?Z$e)X2OT_y$6<(LJAt#8~BGvMoKk%|=aGt=wXXne9`;Z1_jrjaZ=GGN^ zdo%I)!j@q%oO{W>PhXKsU2??{2~y`{8%4x?>Tud+4k3HOO>D>eV{HIeELc?XUu`sC z;JWaNs41(skdx)Hz3y^9l^2@uL&;3zxohczIm?ypRnJ zPO58FreUE&Sby+tTVJ2V)#aRQ;m4nhGHQ-?)SU`+>*QObifBN>TfxNGl(!3^=Ve!m z$Uini6MhazJHtmda^|$o-;7JWGelr9ouG)@bAh8_Yz!&M`q3vFmkxg0p1|fqQ|PxK zvU~qkD^SMH#w#8Q-UJt6RPu)R+WosQU)I$9ZS074lPDh)V7)8edBSDAInRi+je;YK z|EsZ@*XumSRdYvAs~j#!y1{={-VHC7IfKZ@8RcQ-ym z(@{#2Xff>0Umz!r;uy=%ubzi3g6D=zVB-Z&@^wJY!RVL+qs|`*;Lj0FXyJf?iHvsW zqExTsFzh=U_ntG^Rx;{9AnRoF9+TMvo2q75NF6Kc7icDgCH`C!yi~AZT*v=$h;mkZG@`k*-3)t0mS4WCFq>0)Ky$b4Xlg_D8Dfh}rF3Uv#QkOyYDy8pvF))U_*^SaCRS#ZJ@kDwF(k|vaJ>Gv`?1{>BnA{&TxE*;qyhCd)4FK{kvk%Z_ApGuQp-h3 zd7o*rZXJj3eJ9m{TxD8|vAVjuQfI~oC*4n;@f4&?P2#&2+dd0R4+u<$9v*LT<6fvY zc$}qewdA`qHOdy-FohPG-31vGy@L#b&=S+ZzW^n!gob(F_u2B{_XQ&O{;j{qsqljj zPi(uu%D$rwj(OiGV{v?j99e_}KRNYasNBRADm@KZ&nv(!`iJw}T3=pAAvSVUx_WYB z(mi%d&-`q&3x+Hnfbnj!xX2{EGI+#)M#8;qc;6H;?IvWRQjA8w!kHp7`~tHrM_3DY z%k-c;`_R0zcO%3VG<;3zTxS32sN_C@8MRNKjL(s*E_TGlP!wABojK2dkZ&kaVfIpG zFFWBwlsAL_fpTj8aqc|Hc~~e_R)c3r#_#zohxj$JU$dDqj4a299acg=>evJQYdS|V zz)nU?as()61^4k7s)XICUJfOW;ug-A=8KquX%U_5@1Y2-=8^=b{ER_5yfH#0^0E)` zw~=0F7jV4Fnq%63W2YCEk-0|u9O727D+ZGi@Zhl3TEI0Z1|D_1sMBEu9t)!QEW#T9 zVh*q})>?L%?>6=~HTUhlhsQp4cn$^j98E848g73 zoQo|UxxZB{z$p;FUkA)>9kE_c_&Vr(|Me$%v{d=EIWlp-_eVKTzsCQMySEIAYx~-L zkpKY#gb*NjfB?bWEd&C=gS)%CG%mp%f;JL@2Y07&cY-?&jl0vx?PUM=-tRf}o^$Km zx>dL8t}k7^x|zM`)oaZ$$M}usdAQ|VxU}rb#GALi0?hwalccB=Bc7ApHbA%E6^!s| zHB}gQ!!E^7-)b_*rQP6p%)tjQaQiGF2;>uk;|Oe%3v<9o=)_kh zbrGu7d6>JwW(Z|^I0)Jq9CqSDWX|R;6y({Hp|y^MKjksw&>m#ByH%u_jc?gFN?F#yrMg81Rr8sg3Pb`uOjC)!OfK6+;Xf!i6 zU_wCAy2AL}C-RuRP0A!Ai5Lyd&QyNk^f~UPlelf+27QnPd$VD-Vn&nXo)M47%#T<0 zLif)lR~9m>h_0)GZIOB?wD_@p+;Kvs*nz+3x<}4b zS5o?LA&+3WBT?>l$`Nuu65`Xrk})qgB)QFVscGAbdG&q3s1)G|xF$)zQ^%jAc{#}5 z6oek-)a__IDS4Df-cd^6dKd3#I>UPIak&*StAViA3*hKkiK z4Th*?VLwBDvGEYhv;?xeyn`ijp6Eil#t`hjG(}dTyjO~U)t<**u;J6z;xCI&t~b*3 zE(}E=xT32sj7m69YO(PRL_J*b*1x)d>~VgqCP7D{JzGjgAj&&tOMw4sciHcm1%_jg?Vg?jWSQQw4YV=C8}8i6u-S-dFg z(K%vYhf(*JalR3kJ`Tm~+Dq;^hBzx(0H7(@*TgV><7f0YYwndU%VD;*9AdO;AhIvpTssvPDT{l!daR=8O4yAkM5pZ<>L>5OALqcIWe70$M z%XPUy#H_bYx3+dtffHD)MiD8iDnon^(NgW^`BLkR@@mjpa6Mg+Gr!A=-4w%(gl?+R zXyq$}VFf(zcEAFq_Ml?Vq6NAsU1-!jj-wpMq4ZzQJQwnDXT^e5UB&-YUBA6o_xI~< ztk96ntb40+hUmM@U1A?fbvLFCOuCp)Kk#*EAQNd%X)Sr6$7%Hjo`5JYd$F|hIf@>=mbSWs|a>_{QMSzwb$m06v@jUJV@(vDhKW$DIqPrb74{T zZBGu&mAgc&5dOubO<0&|=NhrI_+h2ps)EUJ=5Kdp%+fe z3B%2&XSn%JlrU!8&Th|OxA@R$KyPwR`jNYsh?~#HC7y2eQEKN67If7Hmdl6x3$5EL z2U^d!0Xq_ACN1Ya4tn#TtmeSgqt+`QIhE`98CpCVK5o9`V}8DUqO<515;Z6M{0;VC z?mofpuV$gg-wB=6Dn-uvO6>j=pwztoemyU|{R3Ka4tb!o?oyNye19J>NY|g=w_?#F z4<=ql4D;9Yv#$7eNWlDg@o7;7w=Oq)BN+To4Lmg8|@P}i$@iVV1=^&#i_jLGi zzsi*HseQRSs${|Shx{7%w(vh@@20l+MT_L8Y@$mtMArJecQ?S2RM%+k^3Bh+H{HEP zPZ)Ha3xNcfUZM~Afhl#D0V>faAq}+=t@s_;9-^Xy4A|JW@;B#o%inTP9k(U5v*FS~ zy0NUl*(!batcGddso5%TXB)QFmC&b(>6pSwgTFAJSF=QZ)z^K`kh}Ag4z`rSto!mO zvNbvRo}3}rF-C`^eLg$lmzcs%*`K-bm=@E^Om*$TJtXlJ&}RO=fwb>0~;7C!9a zP0m2$RR)$=PK=$d#!}0yjm@iry{ZQMgY_5nD|(JG9#(Uz`10lNBF1DVq5q5uuz{XeC4W|3l!%O`&t}AK+(mwKwq< zQ~OA<00S*fs*M`Sw$+0$OwOme-aW=tWBsUO`RlwZmHl57kdN(89s>470o5ef^|3li zm$8wJ5m|~ml+V1t`t~CG*w#VD>}Hn)tEG)kro*kE^5NQFnFH_Kl|CBX9=s=N<}V`` zyi}>6^=6@jTxWZ^16;g1$D5aEaB1?xm(NU|!t(rii=YP^)RnPKw=%BC=1f4~Q)=S3 z5l<1z8Y>*`6}R`oA=VIcdv3J!RO#6=rEkG77eTcD)YqXjx7H9UiYhz<$uAO}5+3Z$ zZi3=>-+nCY_jbg#eXz*)naDJHJi2g|mJn0tAqg%uiju9gYp)dm0Zca@!w@+#Jznvf zFh6GVi!H$uPsS#7KZ!p&^zpECYzaRiPp+qvtRdt0U>ZFIrbiOaXC|!PR1~@i1}r2M zNVdH$K(&8S}B*+lU&*CY{M zNOsvOgDZ)4U#C3q9JxUK!h(H;t?XqbBqgb){W1hX3d2Wzb6Og!5w>|v%Ezy=bBGbc zo06iT^LZ?{a40CimOMN;9+PKfy6+m@i2p){v@C&(EF|mwpX}c&pf%6Oy)rKN1j5?{ zb3t7f_+xRW3=mq=SP%4lyzs5xb(aS(PvgZV3uyQ|6@XRwh=>I|5Z=p3?gtzykUJNz zX3WH3XCZnpN~ zT_j^_QfMo`dE?uSbvIL@Ps{p!S-s+G?$5Ly0}gu5z7W6Fa~*6$c9R#cSmeR;lP=*0 zkfo=;PrzQIgHrezBJF+~;i|yKe+kg$eV>Tl;G9v~`xZ-ofy6)s2PQw(?(83-Fyl6M z1a3!N8-X|v8-2ca-6FqzOML$2wpHQ2&5@^evd_`@l%g5m4$hudKJ~)ht&cjs*t@yUdE?PTe5WE~My#KQkT}HKp1N!;d)D|M zu+Js&Vbs$7-7h>;GZ{}`uFaj!PR`Xe8+YHjQ`mPO^EE0jY8B71jXz=BK{j5;1U3ii z{rD63p?z9uusNrK+$Ckmv=~prX@jtBZhnCOUqyZjMjV}|QV%2N>}U+*O44h}H=p@_ zI+-@?0G=+Yzd?}#a8?e4jOL-&`C5gD<5YBh@dwY~Qbc~@ zt-}BQf$yyj@x;fe*W-K((*D`40}({<5Azo&wfD6{Vj3E4o-pm#nb6K zOxq0iaz!trC1}s`^y=9N`J#M;0(!y8zATDVt#uC(m!Rs>!oQJM11yVS zI!t(EYTFI90Z)lCn%#uZhkicG<_=%`uFn(~*o2`Sl@Z1?w$)r)@8CU~RfmNx2DcXK z)+cUk%4~G6w%CFt{ySp(ikR2rOl3g$5oC6ks%F8a|6!6tT~c5@{Q=RcV0iPQ_>$m4 z5{VSxA(?Bv($z*LHooG?MF}qx(#r}U;!!S&D5z8t+eC8jvE~9sMZuEnW75XP?_e!n z99$rGE!6}&h{~SJQTG_<22nYiLj4 z*V8TSI3>EuwfG+n`t42K$7ZB{VfVKJqZ z!wpOcQT2v39yz8|o>zGO+dC}z^>CfyO3+eX9%XZp2t3=(yK@F22(xhy?Fn&fz;4p! znt?xtIoqM(hEKPSG2v7RC61iXTkq_%nyb@ne@+Shf2B7-s~MQMQ-g z!(8fLo{czHO_ozO0Ot9A7#ttSRVLer$r9gs|e#}ea77WLzE?cTS~5U@Kb zv#*eyDImu8fY;N@b#(~-IZcHvI<*Au4{=$1HZ3=*e$grNtchU)TgJ=0qrU7fPgXPX z7ZlR4T=1hnS$wrJiRSIEd=|6$T1$+f>kJxdQJdbf)c9Pku+Uu6h~BZz>-P?;hv?P? zcl`*(JxT+=1Ru z`Qj<^2eSJ&RWbhbOpY74Gz-qw)Pt5%}_iY}fCa~paE5fhKjLx55-=g^8tl&V-U2;CA$T6>LJ*|7y6Q=oq z0$4d;T-vAakGBQ0bH^~OX+34%M5T3c4Nmzkyvi5YqYE^$K)$aFCuo}^CdgHeJ<0C4k)}g63O7;d14qs(yTV<3{qSp_+G~V< zIkxp=18`2x$p-7uG40viaD;%(y%0lamp1>aCm}1dMVARnV^>WXt&ZWNEx_SDTiYd> z)cBxq|LTFXsumLOs~&q(V1|)q-8iKxZ$+m4=wn=plXaz&uEQd7iTs%AAY{38RZP6? z61hBMv3)ZR#&_M~49VwjjktkKw^WgM#WuIHasR3t)cngEJ@#yI^{C(?G8eV zzrSz7>5;8Rg-%6^rVgebCrol+jb$pT{TEe>`#z3S$2`rt+5R*LGlh{Jl>}tAKW=_> ztkM@d6{6y3JT&@&86Rw*i>CQoONsfL>Tl5Y&(@zX9u7mD|JfvK|1<^s{X9-t`uCFI zpY8ugFYo_FlE4%t1eoLE;x>moY>h<5HhP)W}J ze(v*!3Bv?j)TV6|@xX$gzqfwh8R<7Weo`wK{ceZUYlLxS zb_7dvqspszN!~xdR1ZL(*~nLQQ7-d0rpRmdWw~+g)m)iavh}g*EOsid&bZH%#IvYn zmI@oFPU6U>tBs{8hh^b3Z<|BY16E2UaNXQAZ%EJp=>MN@I%Lr5+p-K`PAsv|7hKl*>D%le$qr-@M z80C5log3*$ro!RL5qF}_#HhRLb>Auog;9syk=B`bS@Wve6LU#e{L3}`z3a7Xlh>X+ zR{4(>yxN%5Ht$rQ4jvxBbqvx(<#~O&y{)94udhc9Q_xgism$SGe2nURrsqYbLe2S6 z-!GjB9#7Z4RW>yO<{-8*E$KS~xr>|JqYGeD1Ss5NYWepOMGX*D!^T}sHIKZ6vrhmZ zdZz+*@UZ-#*Wk`K`8ha%#R4*RtnS!)5v=stHHq9(M>rv_K|< z!rh(vnmx7%Dx!d@r=SM#6nc zQWq8!dAtc8mO?6nI9?wJz&f#|UOm0A8}^LpHNuRY-n*q5a%5VQ(E>YxxFU2{z&x?F z7{VpQV!Uuu;>g@Lp(?-hZ#LehEo8p;AwjN!n0~sSk;$vw+9iDgyyh>y&Pj-vuDpJ> zw#=T=ta_eylAfMHn{p-V^>l2s2Z>nSMwsHSGn^c_cg|$Z@}a`<&C1UasoCdCILAug z6);0hqQ#ASiv6ECU2FgY^L9AqcXw&K@H0Ofa&q-@$+;USwc&fI;^%>Fi*HdraA6^X^x``RnM)!stJ7P$`L zwB;ngZ+(m3qS)(Wp2rBk^(;2v62XKWZR_rS+)BRezqiXxht?W@Of-&c9|iXcUtHAr zWSMM+#n*_R_NQ|F@(u?{F~vFp8M_!RX-l~6s7X-D(!r6_+3<8TS2d_CA2c*M=s%|k zCryI#m__J28z0o;f*%erJmHvBiY&NEH^h1zZ~eiwlDeSA{K;NPoEr+*3~8z8nj{bMJ{j8i)QNg8v(3P<%>i94>Ox&YX9X- zka>h5lEfCcI1QfqJrt{AM}?`7?}th%#U+)NmZiW7)0%JZrhn9!Pf(zNJo*&ZAFf7bl{jz^^XkCGU&2vW6_r{a!leuJI{HG7U zX*P)33_-}d_tF;lYn!fIL{|22FGnDUG~}`hQtvci9uma!cE_n&q{(c`MTE18Tt{N_ zwohVVD=irbx!HwVVq?T;l*nd#ttxmxI+7&6elXn;AWEVc32ZGPs7klNn*1`-hq5RpJ8iB_k8_Xx@x!=6*C0C1>_=+0?HXAl zHe36{G=t?}BcF69gz~)V)^R&ZtkTsokvkO6R2E~6cn&r0nW#-@D^|ZU2uCO;*?_L+ z@%e31(YE#2LvIzi%pBD3f>U$D1h6Dfx|%P3hjNg?^3_CA{#)GY@s>#bopTlM1W>!p z-1~rt0lK%HTgyw@+eH*}Vec`T@-D{HXg;Oy{^9Rf0QUIqG9HDmeV{MI(n9|_nnd99 zvA?{ikqWwmCDxnIhYa>UrfP)sWS_?m^aBczCtHJ1R`g2VowXU@H`igWsQ`mB7@#Qf zR25d9ZGy4E0j2y3BRostN>c_m)1#fsj9umn6*!^=npejw0g%8M`)YkNYK-y+&;9}>XtyktGQMJ*$@fE*34=Ltbc!OaeZf#D17$Tp)nF3aFer^;RUVcB6ay* z&DNNKg6M{A4gRS{h|g2%zD;4`?viput@Q5AxhCdhtFh{~R`A+B`H^Wj2ogo1j2Xy* z;$xmG8t3fR52dirMHrUr>Rzq8Asudik>bS1b;X@`2p=kP)`0SB3p*`AvfZ|lBy z=N_@3#u@ZU@$^{o_kW?dImoo#ZA~_3+D0sQTOs!DQ(^|3>ewyCE5Z` zdLEtTHm;0?u;h9x(IqkiZ{F0BIq1$XY^zUsJc$cFmvZ&RDZt14p>c`!+Q}iuJ`7Fy zkR|O>Ek2q{Xa4h-`uuM(zK>LNU#87oIz=zDW6EB@_^_8w2NE!QgM6)uN|bi7?mJXx z8|CRUsB?~bDjx?COO}x&^?dZ}QK)blIyT^Ti*_u4xph8nqg05j#aINh=6AA1wB8g(0eWsuYJ}IK#r(MnU0OdluIxZdh~AXS7f3%|Nn|OULa1zQ42`FBW=o@p@O1dwktLNzADWtls$(2Xa@eWeB5MPKH*}Xzzfo zxbJY;FzZ-?#!G9+vH?m^FTvo7O7}L-1TVcZQ&ZqUuP!zKStdk$s_@cz)PzZ{Ylg8f zfjp8xn3?iE=7oE-ZpQ^)oo__GsFL}z2{Fo1TeMYcQcaQ4o6!T)ElV7o8J~#y5%a*p zmrc{xloy%oDhqYFCfUvRk5e);dLADpj?UG0)%Z@UuO?#(@4PuUe@^E*#zo!(OexWQ zHIfei^L#xGy+V=v2?Vp2vL}`s;=Sy}shpnlW`+lcb}(fXCrz1VKP6PGh1#F8!8z48 zr}f~a;V-~StNd6VFRIpMA!FWA|FG!KrnKd|AVP`Uxry>UAUduSC#ZRD?wk#k-B+b= zTDx#`7LxP3mq_irxkq~>Xazbw7ZQ%9FH9{r!jBXi|?z+c6p$ zBcI4vA**1!^STbsk)T0eW8L%mN_nx&HYbQfln!jqH4Af_?X=eeY|t&(bE#|gC)#Nm`VdZ6(!qEX30 z%_;k5*GO}eH&^Gdk`U~8GMj@TFm4d)3lWDMZ{8|&+L|3B!ZSr0--)yNQo}?}0Biyo zgEDgKaS1$tu%bC;=^&O&3kK1*SioqS)M|H{5uCJSZhS`A-pxG=+g%;T+v~g4HV!CL zR0W?N?5_K`=(RR<2l?0|mAW|6WHNQG9uKVlHX0O~O9y&3!oh!?ZsGcEV=BD-+(X;S;6!wnaH>e@5AR&Mq6K%Uxr`jnj^Ciq1j+Qhq3SaqPg%}IE~ zfS=PGqJxwb%-hh+^)>P8>|;NuD>F=H2~maLh1};f*r_i`8NO4EL6X{Ag+n^|kP1&N zt^Sdjfz>J3GRC!GMR#=Pc$A3$)278Dd*D1x`=yR=F)sQCSF+&NeFRpk6cER0)b3JE zc?wx7L6#l$IF~%y@h{LNx^P)ExoBX_&D;sg3*BdiSci3z5|{r=B+)XhuL5m3uIjMmy%YnA+e096=)kDwAmpQ%Vga|- z&C8i${m%WI!?E&-GBu*Bnts#jv7tYl3wDI%^jUlalws9l$<}tkW|5+y*Q%yOg`x7) zha;Q3_~gbO^VVa8Lhl%$OxT(+PE^+s|K9_I2p<>9iL1$qec0IHkz}(0{XujLFIQHKw*byrJB?d( z-Pk~~rmgL3riqX|RLUa<>oU8ImgGV|iF#CPDFgDb!wBDP&AYpn#TnX4)(9*i72-9q z=T2QE5?V`WA~-E%Ez!t<(=w#+SxZX-1rpnnkN4nQnQ<0_Zc%yC=hW8P10L?1<=mHBy3mA&Z8DW5=3tv@AMnU==ltsg_+xR{i~j*W z+YQn%v}~@4LmvYDSQj-;)G+Vrird=BT_~}|BAq=+XDDeNH21PL&BtYb z%H`hmv41ueMteRdzQ@#Mx^DD9vcKwN)_+DeGmPeE1%!c~Fe$e0^jM5g2Op-xVkpZ^ z{S=St!Eme}_KRKJkbAf5^J+VGLL|~U&k0((T;@{opoFK=nCHYxQB94H8{LCrCj7a8mO#k+P;Z>|@IK%ws|*r= z8ro_HAXRvFebH{!Z#imOG7JrrcsW;q#49hGX9XQd=OBHjv0k$3h(kBsd8L_*vm#5s z(f%nZ;CNOd>En%5E|PvY0AfumOmnFHZV=>ei@b(LR3OL8K3X!tH*s)+=&D}5+A!?jl{v&Yw8TEWvFffYr^LJ zu5~ki?)N&qbBNz)B~jNV38d{W&XBouzIt))Q@lcm`O%n<8Ifj5nl56XQ?7(RjPfA2uS9WXC4YYsYgn5d}F52FSY0 z1>&b#Va%I9KBQd=DL_ssO;a<3pL6*F7Ot*uuXk-Anq=LADAPN!W)|1uX|SlqGX-Dk zVQNXR#*~eBkg=8|T!jl{l^`Zqv}xt6zGwJ)-$3qw&n$CCht8tS`FA)3t>G=y_#K#W zj)<1La_l1$mK3_aA>Qoa2bu}8k-ObDHl!`Dq?+{~k{GS{4lTrL3boCUZi zzP_au&}^IeB!|@HRQ>B^k<#jcf^R5b`Zne3gzxZUh zpGGzZ-^HFG;HvdgEnt~)PrhVVtwXy|-ROJ=r;0+|Wk@!+M4qMB<{4Tg z4Rghfyr@}zK%^ybmOA4@^xmxlO4+AJgKJD3PquH&z>7vR`muIyy}%tS20@%zS1YhX zQg_S8T2oF7lf(feI2wEeBD21Ak=GqsIBNditQ8YTkzVw<4v7$~9kqgN7T`mrq$7lC z&A&}qW`QMAeFkL8_7YE-H}nMw`zR7`Yf4U&-=2L-RXqo9>>Hbp6WSH~rX? zz&2FRe9e_XcGVr9?Et4_9bYJ%Ey$jNjVE1p1%IQlEsbK&5O7>kx4FS5jelHoi1^cs zXMroL*$6ky(==!GcOShZ`cuo%3})Czjr@Y-$bg z0HjUH^6GZn{rELoR4g-7OKcVS46k>TUg^i;ghQ6M-SRqMM=@ox@xWB5mqXK{{Sg#Yp30Ak;n>-|}K$j$coV{9W#4$=Ql9;-5``TYuj{OaOUQa8$Tm;zifR&!N@fC+@Ga?hPlE4hL;LMIa$1UU z2Yi4C_4Goe8J{(3>9B*>$e09j(X=JZxTk*Eq z_8A3#80p10c(i#?N_IN}6YdtN(xi63N?f8nhU3OO>bfdtVK$+oZgr2Na_a4qKE`IY zLRzUw9-@>sq0=m2X>5rQjEh|#X&^q5RLPanKxqJkw$9L4{`bm^@@Z7zKQANCn?o`} z471%a1P*lG&?&*PNthkSFj~Ap z`5*KdX)Of5Z!Ux9u$Bu~*3Fn+@Ah_5A<|lHk6et}cmi~Awg#-WaaWy#F1s|pK&KdU zORuSl+t`tNzykB>4^H{?LeSn$Vn{ndDcDNJa6Nq%?)T66KokyrjZhc5cu6tm{!r3zHU`Zmj+?Iqtk)hU%W! za(6|=EXINEquHfnsJ=kc7VC6B6EJ}9-@mF+L+KDRggxum^4fccv7Xj#e}?2OKcKXn zZvMU0M2o81IkkQJsRe`AUq^Kg@u7c8lGOPjeF^e%0YRg(Ek5Is7|%RH8}tW?ty)v*V+n5Gqlk&vp5t#29o z0r?PN!>Z!l@_h@2*}h`>JMMMUYlFdX+KZn%?L~T^{G1Se+%!x>k@&&2I^7!(0X869 zn|2*xsbx@fR?ft=3Q#&ad*@qMTe+YF7Mtg6 zv;cF~!6&{k#oNcU(YG#D=klJ2hR??GZAEBz4$fLRZQn2MdhO*#xadpv`4hNLxqhPo z=1ni;jMu+u{Cq~-#sJm~;GE%x5>xJDwEayrIMFriaW`EstZ;<#x9tnRDD3o0<_g&{a%yLBA`sJ+>u5wDBc9nXb2U73wK z+;DDs%ju)E51Cv%8{Xj`W+7qmag3qG6{F50ejPEJ_)EK3Bg)a)9!_SnQEd)sy)ASFhcXX|!!-kC`2AV1o2buA~-q279#3#nR)*QaA)NmaDYvTbO_}z{w10 z)M>EcC)(P$LNxp*9qGP@1H}|CzreuO!aN)~0{>!sR?{C5+v(i+FFP!{ez3#INbopf z6H9%QB21}`%fNfkjEz}5ShP6)pehrBdSTgH5qNv5QxW$PL^x2w(l4D^(%v}bs>V$A z|BQVP8HR#ksla~p+&}tP3ccLs>t|BhcRzQ)U%vt!-lt_jW@bmuObQOHUV1_Z7faHz zA}PzJi`ksMq8yurEJDXBI(goSkPdDmQIug@UVrp?k-a_t=Y?e3orm(KHm;x_PMO7pg&kzni<41uRY=Us2t zI}q~ennPOBH%W0Qis+wmIx66`j**SoZZDE~wEZ|~)B9#+6bsfx+^Hy?3yun>8u;*H zk?UPPr)DyFw*4N^)~&+VPD77xXeW$9-%rk??xCI5JhFiJQj zrBSp{#oEZQTip3k)ghCZ!`2o^@zd~@+pqdy>Fne+J?(l*!K>xIuN9D?J>yV}?c|_= zEU*)l+v$-a*}lE!l9t)%6*f`g($HG$u+?Cri&mo;rlp7aBj%8DkD#D7$h~6}1Lo_- z9sAlj`)lP8g>>TC>vu`Zi}5ojtU-wSlZ2nb z=)N?jBc{)f%)C36+}5b)MQ~K@qRg)Q%wx0wttOYi$1A%!3|8p2p1X~* zn~Qv1mzHI~CURqAY|O*sg6Yvx&eYK!?!O*H;NgqysOyu$YjTHBcLlyj@OdsB581oR zwDIzsl!2V}SUh3bTKfQw0>znbhG9Ezj zbT`y;YM8w-0=~@Id>5foD+SbkhV|>*MiUm{p5NaZ9(P&MwkR+#1z0e!*(7g6od?L= zmfA&wrCIXXBgxwQtT4-*50hjBgK6rL!?H>{s4w*SWWKK=l*MJ$W&Bhp6x_LV^$FE( zZ*T7ko>jpq=<^*o_>3auvTLc;1)fAI!KX>VjH1>LdT9UY-D5sA{JXJ!kEjcrhIu}c z!YSaY{;Tp?PsX}-!|8pg@>#xvTtl5L1*I?O`7Lm&-_=PcG+x0LNmJIKsRm-Yt6pzyqb*d{h{>moRVz%`m^P--7P zsPJX*llv=_dbyV56TVH6o;<#~6Py}rkxGC^jL+|o+CbetAXDczp)SxX9s4d%H@EWU zLS2#Pm=;$4i^G@rGZpby{bG_?=BU_Ge^*()mDdHt493R%Wv7?aOR%nN{vKDngi3!4 z8}ijUe>yg(g?F1m4dWCY%EV%R;zjpN{c5!W*x^4!;ChD}K5d^D?a+|O!1)tf9innX zx*Q0lk-lZ=u6mjUDPD#QiETL=_|zMYS!)1#epnFTzx-IN(VSXsAPg@8Qgpdeu`L*r z)mN+UZvP?gZGX7C-XS1he`-NG9Q@Cex zX}g|)+!>||&P!iEWz_8`)RstoOGt8+>#{yn*Em4zguB`i!MNQB?9gNG^}Z6^OZM&m zBos$e`A3JL3rPBoXd4dgmZLLKy^a~RGFRqje{7N9`#1=LuybLs1Qa_m3ls~Ok~nvO zir+BRE;JevX!~b?SB!Qpf+CLz{9Ni8)r1~F4PZH29i$lBoLhs(k3P@u$wn-1PYx$u zxFgHuT!Xh3qr<*4Bk4E_8yv^ zgERZs+&*{aLMNx+CvI5SeqpR_V{IfC0miFzO?g;T>tXQ^OcFJcYzB3#4qZ}DV1DD3 zEAHJIy$7!U)YJlug31(r_88MUy};hAOle8r_F2{9r<#oXLA1-9v>j;y1&P;L*H)=@ z)AKUMMJm~K#X=&zR=pQ}i$uG6)uc8dvc@a-1kbK)KW&ARqpt@r-~;% zfHRf4bkQ5*8o8Dig{-49`#`DYNo4|Xx5eO7vD33PkNvh>yQ=iw7qq&m%q)#AHiXxtBUtA&Y`NZoKYf~T6NWs!rUf5ec+wrB zh7{*UfDWig@6pa4``zA4@ffudO>x>IpXbNqTRlX}2qnOeWd{}|pRAZ~EWzrx8my-- zmiHA$9L0MgPnT}A3lIFk@5D%9&Kd=TJyOa!*NW1yzJ0pUaNILKvgKHJ3#<9>%CMa; zh=)U)QX3yUeSh|W>|UH?x2=jF;Q{*g03vgvflEly!+Tj5DM^RttFMmJ0QbC}gq`!X z!pP6J%~o@_aqGPY?2`Cs|CLj)y={q$|5KU`ZF&C(HJ?kU;~^RB)d7rs`T0`zz$DDU z5gZbS@kWIS2ePl0^121qgTVYMlbYy3xNwXn=F*!QODHkJo$<_a>Cq{sn&*yFv(Bo0 zuns_mo!c)~EX1fjUG}@-VRIH2`i6%)oi|x8TQg_x;EiUY)qtX}er9b_Hsi(ULd zv4f7`=Rm^rjBipI@Z%HVs2FL=(0?RbYq`-C zdia{*ytI%~ z$}|A^NbnZ~-g8*K_W>t6u#FJa-0g9z-X+#$Q2wj_`ZUATM#lRZ6enCM#Kt`WdTy}I zK~}u9FXt|wGBz89X293_)$SqWeA&|c?g6d$7YlL$Sw|&@k2D^8l>)g;!7K}4^9#au z2DN-LZ3&qgbR8rS=#jBXp*Ae;BP}%PuZ2P;y*85wDLrh};8Aq_z(Q2u0v<`9H~$hj`U`{Ja8yY&2%+G)FMARn zmn)(mY?W(b#~O6W-n9O>2k;>gehmsMzM<4pg0;3j1F;3GH8SYREYzgLT~<3dEIYTI zWVN@PIR84y=H<=iht3ynO}zGnzkN^ijRnmom*@(OkDiCG4|DPN)mUdslsM|c zL~(?9R7D-g#c$#4P!yU`TR#C ze+>Ay)(C;VjgpD*l(?HP!v$D6h?qndUf-#oZBL$8_MVStG3%Jkd+=4-*KQRQ7khVJ zQ8ealjlcRkauuUtU1Uqmjq`jPIC$@842GP4yWoVD;I_LR3mDwd|Ax!}6tXSaMM;O8 zRr$9O{c~yqakrfRS9f0-RaN)xeF#NRKmq9zq`SM74ke{UO1ird1*Ji{J<@Rii9@4E zH%OmDcS<+hO+C;3zvKP%j`4oDcYR^7_geF;-oLfxoWE&rRI%%@uKyy-Erxikl%ub+ z*)=}S|H^Ho?P2CslE_@a9NBjW!Y|Q%G^o+b$&TMRQ@+8Ind|-%RONj?aTpfrHTzxoTzh4J*{?%Yqj)O5?rB~QI zU!0OVnGEp`!m*#iqS>huSr=ze?nt%W%&w`F-x=_8eySh*_V>aBk*QSs5H|N~wZAM+ zJ*{32f@J~U?|O-S*6jEzwEJK^;paN`irJ2$MJfJi6rbV&F8Dal8fWS_%k6UWQ;ZM#;8i?YnD`{=}-9hHFpw(09S{XTX+r~+%hMcV`S5xAHVo{0F`eS7D`@S$|m-(_LmYVJQE`*ECa&Iv^N zLZ7ao%$g9R*jfPk{*dW#VTNP)$m1}#c{}-n^;2pgB`3qCFZDR3W4ETZdQf08kV2pI z_8S1qi9@6}#DZCCjo+*!N-p>rltva*vfH!@@GA~6Nf(31t&W~4%pO_}hGqP5^E#fIg#aT^A1?VORr*RQ;;XT(%!3vArlRlj~sk`UC-+^24>Ri(vk zs{b2O+wh(MNvE(?_pNMx<F$PK@>+H!~%>~eg!DW3hk8io^u9nsAla7v~bacI}l3|mhX`_eSW-1 z?*k~;fh4^e2@k~7Ui#SPwGOph|C-&-Clk?>YFkfG7Gc4s&Awv@_@DT$5kWy36sh|x ztGG+d;-5{@wkIl{dg?KO?L?FR>c7D!mHW(G{~7SgwY2HaUsoBu=ad zt(<#%Uhyik*G;yh;15H_&7FMlB(A?NiY0DK3haOWrstKc-TRD2+SR8pwzBVoL~9|! zZ(z(K(j_GG>3)it1#QpvXlt%oQXU50SefvzQOcXGjfG7L1!bDlWlM`t-t-M?`ct*e zuZlU8{g#asmK_p+qxF?N6lRKnSehg>#ujV~@5juA+pph)hjjO7ZR-xms(eG-sW|KT`v@zq>i~7hK{|6WKY; znrTCVAg+`XO*V_RdC<{XNSj&W)6S+{KA*bc;!^Od%n?u?VZ#U0wnmFjS*BoQq}YH` z+G4I|GOUEE@>39=YsyZ{L;RW?{+&B*cBz2;z!(p)?;+Qq#XqFc^8S z33z)#jwsa`etVG#kChTJX9QR2RATEgEcxfxBwWm4g-tQZL-c`&4lVXnf>#Bt!J->I zfGu=z9p2nkiK#^ayL4~e6si4dG}13m>>o{WB)L4|p}^u!9PiGO zIDE@}a=yFk?zl>?J!6b7R%xxX86F5Kc>X* zg+e!);OIyO?I;Tb&`f4S%rMHTd{o)1U;sOUIzU7}a+lP=dwi+UIgj0)6BLaKLAY8= zJM!w+S{yjf_;#w(cp(m1D?rWjnCLV)@7oQaZNp}L;$Ux7nVdeMLTBOjT8%ev4jWt))r25>?IGV z+AJhIrd}6lam3Rn8}Cf7Jb!L%@0d9k;$)d99C0{ap5axQakk@Q6UlVI_%j%@HMHvK zuf~k)*muFh^34!!q8n}9l;$61f$fK?vqGB=owGub5;T~?gXDoL9cU**R=xAP31;}b zomkMZt`m}ySHDwMTN)7>bARX{qCNHCTYW<&;)L235MAd`4)vKro}uBrXVj5AHkv|v zAbc2V)thh)U;rhul_hXimsFVmRu8u}5@NLWLrZ@7x7S1|E$dsJZPx3ROR(N97%E^h zE5k@}p%iwv!0Y<_wx^gnl`DSMc-D|~oc7GeVWJ@lBvdU^sIL0koOPfDuiLo2{)~UH zQKrDEnyU!V4zTrnNimGB;}A;v9$1`W2?QDFsS%;H822V}D$tDC0cij12&e$%?bze! zRB9w)&hJ{z-`88=xz_MK%+!e=c7T24>8qL^DaP}B&hw=rL-U87yS1Ll(QFYJs&134 zoA(2*;(NN$Z66O8UP_$XS8=OWZ;pQ#SI9209a zQKYn3k11^J_!S=U$sWq5DY;&oP_BIbr?Da<+>{R<67L6Yw-O}Hir(*hoRH>S|H?jESetrTgA&x^gj`Ndx3s}{^PImm%Ru4?A} zO!!%`-Yff^QL}e;VEd?dxOP*6R@y2juvEVsCgh471@N;ZTXPYBgm1AQ@~--~cc;Qv zw;jB)$xaG?Cv9f&6Esy8!*vg~oq2Z>X!y#r&m`;u#(uR`?dZQ-gpIl-PvixS>RKJH zUHOCLUZWwod;^CHDYdY1xb5&o_nLHuMyK@Jf>c)%kNk#APJPEU{R+5_u29RCdJvI~ zR(E(XBs$+1k5H40BeNA@8YjEQ?}LOr4G`J+DzPLw#Bkfufv=|Wk35{>Xa{<^^1}^J zvNB8VDI^kG`59dw3=GVPXTs>pI6s9fRDQO`ZK+Gy@>rOS@0~>S)_W7JNrgv;?Gc1n zwR@Z`9XKXnDE!R!cA*Yj`qmlZR6wkkRNDgSouT2w#Hol&T!m4@28dNGZseG*dx(`9 zcOxb*KPdyqs5lS_Wx`21M-{g`DvN){|Lx^-P=JN5Yb?L%3=tAOP$ljk}&n$K~DWD1YgKp@dp}x$U~EWXH*)9 z8hB`kSAj_RS|%)R7d369tptIN)=Eg~D6#{ z0PDZTNkqmzyMxQF=^rc3plv{&&BY60>s7z4(5O$G8sV4!A`y4A=Juwn-KNwxrRAHg z0_}|R($k~9!dp0tkfAAd%k!u5@j=2nlp6wyRHgHQ@~5@39cT?A4ht(hIm`(VmaHTV zvX-;5_>Ur?-|G(XEM>H#XCzjsl5JuS()z%x>lfAcy3eV9{EcgtKP%=V@vaw-bdl=Y zC1A>uLA~y;pnQw|p$+N=PrP4DhWdzPS!s{vu6)N@ITpW6ov`*4kp&U`zDMnS7GnY2 z!09H<5{JJN414)U(EH6fkDB|wnB5KGMx-iZ4W^2^e1=b`rH&3aaEX_3gig}F=fp#I z0oV#Y#Zw|zsp~HwR0(|OP~X_=L#xlo`!bBsE56DEjcFDML6e_#JJ7l|;R356EZpO4 zI=(WYE}fx=Tgu^=M+ch8$uLFl&{N=24d;>t&lY9{3a;O!$nPFCy@ah-)p|25`4R0- zl`#3H7OR>54g0-qjby?$2VW1kfC$?_zh(|hG(>E|%?dC#WyZdGdif}px`rAK9d5mv zEDK!G51;;F6Kgw`i9Hnjw~f0>{LVCj1%A8DM|mqU-gd!eIrSkFoF?+27&D^lg zxCX&bGB5R=nyu(b?kC*?srxG~)ktz0hn48Q*T_C72=o|$x+03sm?q#U2U-Cutrw=1 zy`x%NR|t^(;36Af{0PJPxPzahZ+?5cNUD^(K3*^qcRqS6ez?wf4rTdSfhw-g4D{*N zn^Bbq_M)nPMTK?KQZQQ>+HON7v7o5D*Fjep*{MJ+co7A@CN@Kq>NqK!{v(`ERe5PY zrY%3ySMv1HtFO0il6v>=SWqMS_y%+@>LbVyFQw+p zHvpi7v~b_^<(6sEhV;eDe;p(N9J|z&z+PTz@6c;=mUh_(om~{MT2cgPcDP+o8)`3! z&HdUMK7EM{4mu00dj#oZQDL*c0l#Hn}1T2dFF{|;F#rbmO@g+<@!JI zQFip>=#fZTf<0Rv`iuiR?t%Vj2*d{fg_j#}FULPaDXrVRTRhPSZVw(HN0ZZGp(Bbv z_WS0`glI6fTEeJCSNKZyUWv9*xOm0rCnnY5X0TAIR`sYm>=$!I`GW#-bmdoC48^$q z$f~6D@ed+VGXnm8?K<1MV2d``QR$pVU79)PUm`WBKkS)5L|MA96LHwO2LjUfZvoX{ zN_PXB^ZLSZs7tVuzU^Q4YQ+#4uGF^o~_XE4ASFXZrZGTomi?dun0I5BP7yzEe?uo%@zG$D-Q# z%V}{Fn9@`}@CfoH>p4tj&-~ZmRY^3_6MXI_)QK7`T;(`QgSq`8>#1 zX(afzbn1I9~TK|Omtc~Ju=D?LA(;2&;U2m)z55JTyEPP4am zD7O&j7z6oHgMIrWwjbZL;LkBv#Lm2|iX551BeCwo>&B-v3?XjKDJoL;!V8b#cY`%W z{BF?|5kKeHg&E5X6!P(`1q-39fLGD#%3Q!T+EI=tX9RVBi3?v zB57f%^^zSj)CocZog4UG>YomN&LO2+tF~FyZ`e}{T^Uy(sjVqU;<)OMN4MiA*~gdSaT0m9P;bqG^-ndg~m=*GC- z#UZZQQFXWS(bmNT$>Dp|xcs4>SVTPGfy)@-Y^N2>wa1UwXno9?*?{uc9`)^r;t-4lLX0mELp3za&N#FB#cb?bH04L{!KGPWlQ~-U(QhFu ztl*AEEQl1pkQh1B(>xX#SoQDksOZV7U1zFWY)D`4dPW!t*W}_7Gj^_(?u(TDXQfa) z;C~$VrKRijrA3iT9F@$7bBAj9o_tD`tNN)Dv7?Jzlwt~G7!0|nF=tM7a^cdVUAEO& zQ{DdQV==j<-$#}Y?pRUTpV;!0YTBz$^;kh*q6=PKQUDqpJwF9|*&2kDIbQBWPeAOA^;ozjyevZIZ5e`|UZmj~D z6vaHKYlX>1Raw(>hRaqhjtggFEj474+<^4kMM39(wbC}*RuTo?RXcx;S*}-e05(l# z97ol)wi5Ofv=Pq@`#;$ZQkr;&YsW*Fl8B*wcIx_l8M>I}XBJy8eH2tLolY#;$5 zvMo2^{=B(?4 z);zdfi86laNbkQj)igjZ=^!!LyP~06BzaEqyE6RXXdkC=jET#Vv#9a!P7m;QxLi6I z#yMAN620cg7s~Qgn%kA@Do(9pYJ>^x7UR`xWOco)sD_qR_t>;W2=T2rzEJHHHMeOM*zSXn(e5K2+;W?efynOfOn2cIr+HgG0L&we?f<&l&J?W$; zt-ZYZ`go46whQ{LyeJ}ILotF6{m?~`!Bcf$Rvpt+dq$_ivoN_#$|%#(y8$M(cU=FY zCo^D0AoNF4ZG3-HiwjEfj5z4Gxs%#Qe{;yBCK#q0CAo6Y#k@&zEA{z3e~k3c_BI!I z3Y#-3e{HsMcs*5z)@mxuY#P`^$Mq+cm+zKIBmd$R=w(R zLrzNVztP8)djvY8d?)3RKmR>N!tI{dlF3tWyAO(%k^|c{pVvjm^W0UKnTrNPhw{&J zk(308{_Umi-*a=a=kpYX|5*l!AB8JyKURh!!YCq(lsheGhoW=8qk7gL{(+ih{8 zTg_=~li{vq&(v_Llfl4fbAu7uJ{kMiOBORCXKz?Ujsoi86|!V6&-Xj?yv5{P>L3ng zUYrg){B_Psk+@+@13ukvvehI6^2%yE&QWihFO7ywBF)R-Tvy7lYS%mrv$l(9VsQBzkv_IJ!XO`DiNNugLx2 zVsQ6d5$|?0Ov2Eygw(san4kC>bmY0IVKzV&LPM#Yt-a)b{F)l7Ieeo)=2^2-Csj7< zv$V`J11`U<4Efl9ei*o*k?9DAAt7w`#Ng^`t$kfV_0@ShOeBzJ?4VfPX;ZhX+-`dX zlcsu3RWm-z(5Z#KnLKtsispOQ!CZ!il52DS-h7dqL8inAqE^qoaBD&xd;=7#NWR9a1f~4W3 zBtjCC4`Xp`!x2H!Q2-|M&yVGDhlEyFt`l$tY!WMx&aUPahyWbXh&IR8k?li z?vaBc%*9=7-;`Q1*l)WUZY}%=X73|L#df5nUk}0%5-(^g!URb>$2nUBEDE|npIEeI z;Ks*kBZ}RE+C<6>|1kGWDdz^D1=ARuur0%WhHXZe8X7i$hK8Yv zi}@glbLR?s=HdEH{QCCr z?*8KH;_hPS{=VVY#r5T%<)f?PyFV@a7k|z##%FHtmM;HZ9q!#9b=~gI@1TByQ6O(8b+4Wm*&G(253cK6r`n3k`VeOgF4M!3VdEF0O|^d0 zzbC8vC!mdU71e2@UqAHy-YCh;Zku-<{k>8NOjf^h`Mwsl{^%TIOFb z7UI+vVpY;JE9z6c%fCo6^iMc{>P<*awXXD`h98QS@9BQp0H;h1y_f6^6SL1~6)0XX zOY8KEEB8xCq^p?B0QW@%7C$ZB63v`bPMosI($kA?&2lalNSdp65%h?WOtt?c6)~d~ zUalO`ROk4r){(~zQYINTQESgllQK`1GEW^pEfCfPb}V|CP~hMZ_|ZY=qp`EOW05`B z<5jY>C6Pt6HxM>@;;~0}miL>Ur1QmXei6M*HeaURcz-q$6s=)Blj)R?pfrFRfg**eZ(2JLB3@_NMf@5Exp&8q% z$jj*aEgvoNP2|3!8aQ>Zva%edj={V_TT9NsbVsW(4av(+5%)VwMQ7LHs`*-zE+^!4 zCZvg{q56DIDSyotFPZtp?KwtxbhJ5|1O^k+Zf10J3-kZ%t$~<-pa0XB;2Hec<>DOc zI#(~@;IwPkwMgGBZzHt8za=)?`-DLGOte(n08SnTv09Lzw4q&iKu{qptxvV9rY2!d+SQgEd;d^Z@`od82TvnByoGK6nRuNvx%Yb4 zM{2Oyp|1ND7iXE;Ap`4i$h9Y(*}|452qPthT~K-qNdyW4z$M<*-rSN!N+92FurZWr zGl~vmTuQz%RN=0x{Do+9e?eNzBi9Acc&tCh?RoPZKO*j`D5tQw*K`m$QAAgZL{_(( zx?Z;sx_pX!N<5%EB&Y}&+nj9A*Yr5v{5%z};%kO!BqKgNUjO*JC+UkRrgqExYc=$* z&XLQJ9d^LpB$0_Lu<*;MrHQ5_{?A19vrT0pOr75(WFKD5D2qwcbukKh71MSJK7C~- z1k^IVvwHi8>p1g3)w?n;5js^|f-aDg47_nPur4Z_USRmd2UgB8mR+Di5H+kuGs$SJ zE-7xl&(ikUUK&l-bu{zM&5D|*MkK0r&WwJgnGzXreKX9p1+GTy7Cx13zche-FGF~v zi9jEGV6H)bp*#>;Eru)f0AgW5=@N_suQ~8R53`Y*m)P;?h$Q(dZx3HU^~=oS`kbQ` z{jeQc)Tq)khVx1uRmWt;Xa52TJp8pTd9~sDs4@^MQcXV}1#g&m2l@eRGpM!J6`&Q2 zR)tFy@ZP35B#nqM6CYC)^2f3U@l5oPcOOH0mH^s_wx^55S<@Z;R@LBAe|N;F1FiGq zCTB$|7clD1^VSl4eDDN8d1tV4_v%Ko=kv#pYs8aUqVljHoxGB(Da?(+0FM?WO0=E| zCyZ9{l}PX|*8Fs0H}9|vnSoy8WQp&}fXBFQMQb_dp_^+LRIE+o8qWZB4R57$k6ZO@ zR#!O>VSDZgZN2@z`lquQQVjWZ}knAZlA$h;6@^6#k)1r zm-~;=`TOSy_73)Y{nuMcYyS4LcDLIz-?lLC-|bW$Y&FN1V;i@1Y>mD2MF+j0(s**- zXXprrmnbiGDQ6U>;QJK5T&Lcg_hGCC2kLse%qFVdj)gm3ceq#jhzt^(-)fG||( zbrF&-WlHq~ro-k2pn3gLxVBBhT!j)u4i^v_h3|^eY(l|YNKJIeWalSC zbjx)GL1ZR|`;DtCcC?wXrP5R(z9~DN;%7rerga}4qBNJkx98m0fBXXAE5U+~O=ECC zTvcArkS3}H!#{G~*=p1tZDGOa*4xOaVQmay7BL2tva@f3-yscg%)|S+y${0?8F(v2 z!{?Lc7|bCl+3t17aK)7xE;PrtRoRTiODkRAjoW=;R{h$Xc=yU?*{x$VX?e)n?6 z{ov?u#QM7KMiFKGCmp38l>3Mv0mrr+i4z|U6@RrY76o2ArUk-`j|>+k;4>r&Lf4n# zas#P2>eg8`eL9gBI#}H`*>DdGDHC@ffW@7*`{fh&H7NEQcc|HC)Hgql&8S?N!K1+7g-V7 z-alm~P3e1fgb^15&l%`oYYXuCcW!GDf~1>_;fwYK`g+T|p0R&(oIC?d9d`n; zbdDlK^}1oNP6KNUXw$*E=@7m`tHNdF3*+5K1QG=uG;Jk` zJ}>rv(M-|}{Gs3=b$cRqk z>00$@23!>+ z9uFTcmA4e%+4!mX7J0njg7fZcb@eSXS&t(fMfwzw^F>RLUvYiD|r0 zg1xL%gM+QS)TVRc`txSUM-982LO#A`CTNk_5r|D4TA|V?o3LWO1U>!6RzTCi;wZ6% ze_IFJc=qVMKvA@}ucM%6|0hG6zt^fP!cLmf0dbexdFod6q`;+H zAH65i8KaB0=JZ+Ci{v|WNSg(zz(_Q9P|k>+3w3qwu8BVKBB(t6m`K-J*UC2ZDU4-W zm>*ENT<1{lEcmr^Cv*x!FPBUachPq z{39*<dg2NyggcMN1!C3svu=a;AK@_6Ztz3P?1CmQP0QHeS z$@H>*cOA%QE#7OFLPI6@sG6~tKVTeM-!>%2X5S**!;$fLE;XNWjZqQcZ2zkw!m zCQ|50C}^${L*me~ zuW&+=6~#XA$vBn=Q6CT@21gO{_Q{PwXgr5T>lT^=KH?VkNkBTb*S&mSc2I;Mep6$2 zaLW0EW-A1mYl*O)`GeH4K1jGlG_|F>w265=g9JLP*L9ufTN|jCkOA2DJGx8c+gjWL z-AN$&_NYGa6wcexGnEek@<MpoD@|kk&6wDiE_W0_Y%54zjnQFSI99mw77K zHxfo1vzr2s%+;W;;d!a(OrKR9kkya<$+~y7NMHuojLy!olGzA*-6rb~DneEHwu=t04`%8@pcg$aMGx zzuly?U>A_tG~7I81Q^2F^ylwfq#b!HjMSCR#^OL?v~!(Fi15%`Lnn@Ur=P-6-VV8P zw3sV1uLZ0$H-&qM@Cd0xZ^rQvDUdcklH480k;Ca;WusUjq^a9p_M`jg>#fW@i$4wRTyi4kh;wn{WRzO z5`H{~LjDaOP#Ub9IV~V=!tm$k>@R|Wu?UR`5h4{4J{PrF6{J-7GjUwl-F{}6nikVy zraLp%>BW^zrv&ntDjxJXJ6Ta+<59$dAjMMS49lvh`_6(EFUb)lEha4Td-ZuC49!lQ zA6Rpr^gw#-GXZ=g>Ji;-Wjia!Ie;|#$C2&W3_r=&z#j_U$~wM;7nw}U8mh+_)J3oF zb&d1A31DvG8yDPdY*SF|SPXA;9_)HLuC-6xT7pB%(IB(Ux@Z#j{y?Vj8~8X~y}qGL zEZKL?aF7I!`s&+3A8-GPx7o)C8ssrG0cw_eB&9!|t4wp#C;Lo5-fL7RRM~}u&~DEA4}dXWs?W8; z3yWr4BBB9EyQ!SEey=J&>xduCCzofKDA%G6v!WP^mdKS{Fp>MgwHKwX8ZD5_mNOHu zYW|FL$%LH(5+_RksZYMPab>B^F3^{piksS)>hCNb`6K@mJfKjQ`lHxs_YbQn=ulFZ zeC=OK(tHFB`vdj0JNgvrK`DD(gEdxt0=H|50Uw_Ms9>I`r{?J z4`Ez;xE&;r!>U*ff@xLcbjbu96%jpOXKb8qu?=D9St-iF%i2u-m{-{)^g#jnJ!FZn z{VIB4rZZa5yNJZr>=kgcxAG_#j}%5Nt{zriVMU$O)wD9ey{#_5$+QKI)he*0-VCGQ zCyC!JB-eO-tD^`*h_xs9jW&NZONHr$C~~6lRs?*6s5uPxLEfN)fe_-|XMw33Cl-%e z9_TUEfbn9=SqV8}HApUXbdLRNVmA_E86;!$Q!q!a2z2o)Gj{w5tP!;_5++VD_(~aP zWB&8OqwZko+&MMc*UP_E3svJ^CC74pZL z{=#qPxO8p;eKz?rY~DriQy;X5@|#-6PFsR2>v>xrY7c@39|~~dmKPvXrA;^5MTuQ% z+zbA8%@jb3`TDKJX7fIvJb);5D!5#ox{=IJI*eBU-LEAHL4P1SCG3~`LDN1AOfkxp zjtlD`hpo12#O7MB8p6H8$Kg$|j7s}yB)l-=4 z$K$p=-U|rA+e~};TI4hbt=d0;65?_R3B2M7o${Z5kIZKkB3z&LGBfJF`Cxau#v%Ug z4mz83)E<}kl@IE%H0{)J;JP_~r0RvZcT&CxzBtZrDrXDX`f0pekRHb4gD(ol&Fd?O z*rY`E_45_cDR@DW!_>xKn*Bwq10Am?7X%z^K9NX1VZ`-uZ)joYD)x<{T4~5Vh0|eJHJB8GFJuQ=`rrWXPDec(~fZ7#O2o6 zY|wF^0^}_orpt%r30>fDPBm+&=t<)MiTZCJS^AyKO2>JQf<~Q=pvgqp9_0L^-oOgs zZ6D(##_zmFpq8Cj%^x@K&+XegYvxu~iqczFmXq|1pxl9Omldp2?H$UinV_s>dv9*8 zrY2_r#f}bmvj;(PGt3UWLupCcF@CQHYQa{PazCTmp=3Po8b{~==+lp2@lYg2F(I&; z^w7VY1ormEQ60@U&?`=wH0DYShtpz(7g!X?vWQlB~yTHlNsuh79%H#*9+lCLr z41v%monsg+8K4JI21pu60cBMpBXgNy9t0ko56uwwe{UXU`d9LAqy8Fpc+y~KZM>C_ z9O34A4~#Ce%r8Fph_L$(E)v3CYJCt7p#+DZ$S~x{Kc;d2z2Ss~{3H3li?{rzxMTM^ zUnjG{+&;Iv4x!q2FYZnX*;+dej~2>ekv*<^7u_SJ$O&(tZDkX=)Lrq96L1C6=O%VK z6xn0FcQJRpr4G39z)(+mP-So83a=Voz+P>&j4R@|QU~xXY&IirK>*GaHO7)NvOwix_D(hwd~~$HPbBF6??Z2Y|~+#Mm06 zsEfg+06@t3?J@gFwR?|<6Q%eci^Xx;P2sVmgw?2UD~IuJUE)^RQO^X2$P6Koaxc({m1bIh8q{__)$)+GB2kuB(cuuNNg#9 z;A<`B00p$_oi=xxozZZWV(?M@D?0B<>Bpojr6t)i56M)+F&5dsI8{qK)nQ?fE!pHH#aC0+8S2V$ z_RpUyxD;tH_GK}KH&Tz_(ST2PiT9Dbm+jdLE>lA^-J_QT`MzuK7j|ylMZc9o2QTAR z^gC)dFryG=5YwVPy&c9ru;eJGyw1u#2k3?sSQw1@+=N3`%4LplC*VvXa?gDUrhv&# z`Wx?!x0@v{*%9&72s!kR*!Y3sQ@p40M|f`xv)%1WY2iGpx*=DteYq5b>QVt_h=uuv zFvEm{Kgzjs-yF8cDLQo zs;ZYg{p99lG{uW#PsP>| zo?Cgrt8v^K5(RHx`>-(bVuj~anbAAdwn9FK&ZK=WKOll;st@V(S6cs5`v)qZR)>Vt|ujEtZ_%8OiG8%CiXq41tcI?nP#P%7QhB`M62 zGmvLCVavy`Q{S!l^w>SFOs%ZnJ+3oa1I_nigeCdT3Yy|9GZ#Ix4}p?!7{V#7*Pa&U zCm{NR5NL}0f`#PJ0o5U@o>2MMi2~k-rKB`)Z)$0)MN&6X1^+0}6)f%{m6Pp8z=BqT zf=A2+@X>z%BOF4~jivv-;Ha6j;I#b2Jv4Mp6d+KpJ8 z9oBmDNj-$QrH@;||L06{%uhobm>4%!FKHdJT?c6`H@2R<=rSr@@21g?`BVqj5M8jT z($%9ZMhw3rvsKM0E#Pn4vtI5jTEXLz@dMo_j=8;vc;N!c4UIxJVhF*irk9jJ_goM~ z-RxY}BeF)!!V|il)}ewwiw2atO#!3Oyf0E1Wt0MBFBAW9Q_&g5;2h(fe)&%4x*pVwBNnzv)B(Oei zh?>qn4N~_(rrXDT9`#;)9?bLz?NxjhNi-pSh|>Bqza&82s|9B$@~s~R@p0-y<*->I ztmGAvs!5bf`SAhflQKymFu?dDk7K7(YotGu-{c$D=MVo0qnxlVLC-+;hsd1v9kno8 zr`L9C+Mf9kcgy!K3{WUI53f}FKVf)y=fe2^ckm^?_49cM>x{66CIra@>#F+)4*mxZ zNdFIB_%Aa&h|&I4{euzP|DuE@FHB6(;YjfLDEBK};H)ZU>Ehflah&VnQ4u)vceT4P zr}^H1#E|ndMJP-yzPE$q?@&@nz#6_bC#8#~fh_lty8|jcq0Pe{1dl%3sGe z_}Pfuy)!N={?pWp6=LOy7?@2%+^FC`A8V6oulV3k<7}G*pw&mW|o&<#F!l*Gj|NhPAMN{EZ_G@uK6VY035OU8DBK?7cze zf0(RIfJ-E)wJ}J@QpdYZpK)*FOJlDS7?;hPsr=YP|!x5KHc{b zA&ibrhXy^8GF3X%@Rmlb<>)dzq~{vsvgo`^$X$O$%8pk-C)6qD84 zWPh7U^MhrUz2_ohrX()QqY4})-cu7g77;Kvyzq7Z<-Y|tmYZ-*T6iVXSy(GJ%#$O# zoN4zWQaj%CNtk}h+nF(z!#|W52d>6+frimx%N!o%)_)}ozo?DQ22P5Ei2+GYVMcdz zU_u^^;vapj3Y$QdH;t>$ezWx7>;&%{DbB7Q9HmymxK>*)go2Ff(k9y6@ES?z#CybD>)Y_@^yaeW9)8Zsacux#J8FZNW`ZJ+)V@V3yPzvebcNbnGTd z3btCy+Kr5KS36VO4u!wJpm209Eu0YHkoY@+j-4>FUA_VNAsM2=%{5<5_@Tn2^`9B? zvEc7LlR#VN?^5i5Y($3#Cx1oWmlh$gagRB7CljnL6GV~8RW8w<{WGqG&^>O)buUEt zjiXRZE?!Cnf)VD08Dl`_|9yt3b8{~@0M--s`BY;LO49I!%;7)ooL`MShrz4A7P&b} znv3-!Z3BLP8O+7gfuHM{O|QOF#orZ{)ejMV5;OVME^(E#@{R@mwEoF!4uRmSEU8wa z-@s@N=)9mxBpbBrQ-jh7&-FiGJhfKnMRR4&F{;w7{40}GrwROYLIc`hu|FF#ehxvb1|1T4|$}906ef&?RBsAFE zY5laJ83EeydB1ltP^p?Vn5hKo*)-E+Xx5SZYmRrecmWaRGQYo!O|Pw;ZfX;#9z|Ub zfe-EuXI8-PmSH(99TJCOgVTp}p97eGdmN2JYgfVaH~yt<2`4v(0mSf_~FYWq0Fo4d>7_Ux~9XC37UvX%Ww zWIaq8t(%rRy8I13_fECq2edGq^=5AmeO6;4ppKv$HS)!5jo3#oZKlRwBtY@+o$;Q% zR*Ww?9Q#vt{onB)zlC^zjLRAS{=BVNf8~F~xR~cxB_-yN%TJ)9r9eKgwwl3x?x#D`~&rqm%&~^h6GXBHEL(Is}o^ul^7tc_fOsoDVbh zht+zy38$JP2=7Q>Inj$(TDtP6d@|Vjd`mW6z5VTa=se zbrpVZX8Q8zo%tmeZO+To-PmO#S+%rb#BcKAJeox6bTtSgVc*5JoKF3WGdq4)M1$Ph zT7&}LZ|w~4&eOsm>y-X6?!V8bT*NDY@f=LCT))6sUmnGG$YcXb8Apa~jIqp9^@AH? zQcp}O<}yO|{h_Jm1lg1dP!dR7#(dG~NlMH@a-J-1RHyov3+*|maiGsc0PcBE#zcSg zAfd6HRV}{NM93j}x$gHint+f6kw$EpmBJzQTv>&OgG}(K)RE}EnECVyJY{A$3R0QO zt#>j9QDfTIO+vJ$&V_8D!(c(=2Xjwgv4{;?*y%dukT=FkdNDc-T7e2erV83NYWGFw zy|vRjrFsMvYdU_UO>2**YV0kmLkDZ0byX*`%yQP?^}qxoLb7ilYH(auLUg{TMPlA$ zBLT(E^pPB~-kFvLU>ydQkXv>nKHTuW-ff^&151WVQI_Y6M+TD<+n4WT^6X!4F$DEf zxU6pY_8qm4GBHjW9~l=GDXE0^Vag9;y087ZkN31`iLQRD&^En-nwS`qIkWqFVtVcz zR{jGgHEhImrbz-{20E4Vr30$8{c?knNNrsMzQc;v7Ece$(|?2`f^6oa2hek+M+G-B z)zm4}S8BRU$Zf?pkCMv30~LROcm%K{yfOdM_aXqNnBteEZ4dWHWv;C1o&M!`TLffc zq!X+PbaJ+%Ex-x$tKE(_4BLGYuOWw?b+hZ8+y&Mkm-Z9a1H_BdNzy^E?VHxX`I);`X-VOGJ$0HKHjy7+- z#fPOt3_gJ+&+#&|xpP9h-6owtJJuM5RT1bv1Ju=r;43k$uHuPK>xRaDw#Y~Qc@#*K zwtfy|J#wl1ZX*2hd(aQJEZZl(EMvyR0^Cdglq2^tM2y-VpG<)hxl zsylD@?zhD8hB)yE*vIR7^%oWEHLR~~UW}*hywjD^Y>?{((-dtOzVa?P(4wwA)AnA@ z{rS3hr9MiB`e&r^pWho9{o$!O#UH-Y+6SbiFX`cQTd-+PUTn^kzPuY3p!+lyT=05p+JvcdJnvcTkaQ5*MhA{l4+N0rhTgh<{ zKF=_NWze~KszYt^8Jy+giGyRROO9}8(2d{6%L+`uH$tN%i-(xuyOzhnRUfx!76WJ; z^*vH*;q4gu<%C`VXA*LM9vbMk!Rx8*R(2isXY45S`1hW8=Uh48`%j&-T1_YO#>kty z+Qy|u>@Y=m5I~_PDNc9u$u&E9+lN2H;+Th{auf=SRc}{`iUIkTB7X!evsm$!bn)Z3 zo<53qV#O9bvP)zAY)>{lS4zjsxWN3J}ve^ z{W!Wb{()!Zr|TAju#cYNlc=7#`7AjP0>%g~B^U>E6gmpoa2B6of}#ByMZLl`(#kNf zIZOZ!3%D~&`F6Uph#u-tTENN^H+EP>B{(?ymOn5O+wsBCMX@SG+o6 z)mFBF6oKJHqeuVp=|kBnzXkk5KMUi~;|BR1rM*C4L-jHn?3}FjP_)VfT{bTV2x)pC zgy}wld>OgMZUC*lwB{e+-ya^(ksZcg&3rhTX_S$jty+a_1?7cpH#hlxkR?w8q22f7 z)wpPCsn3~h*eh#SqL?RiTFwk0eDqzFT!T6xfK zQ~pnV3pSd^!#a{d9uKBrNR0n!s?G6U0sns)CJo5^ci8_rLo?!b(07Qt1zQ>z<_>}S zmRy`V9-j+&v@Nwj^N~De>pyOcTqG9tBp0h+i?;n7Ub~uqyVZU1J*dIvt{N;SLo4DV zG;1vA@A!xpuQ4BMC5JhT=eY*1ZDn`5@VWI-m03M@J-NIJc&0qU{&cdxNbOZL)8u+^ zS9hc?zHm35!X0M7+FqMPttgKpp_&y1%jYpSb!;WUqxMu@j?UD%=Ku}a) z``1%ybyqMFWM*Ic^TQJhAzQ5%YowIs)g+uL?t?Du&`a{~UI$+|Z8~L@GNlQuJD1h# z6vB*Q(F%=N+l%Edp8KK^#}5-x-R^9vko9rmG$JTXK(FCUupP8aB{{LsjwF9N}P z^|-$(89P$%9=WfV^dy@y@%|5?Z~Dkne^^N^s~;i47ZB`j8*ed(SzHSmaSM=$&Z3YhgYsq~d8(4Cm{LR#0r3;^ANhYv-J)&E()|r+>)Wzn( z{{(w>fW5vf&aZ6_ZeWo-!%RcZ|0qs0>i}CofP-xI;vXkA7kP7-=Rr8GvOlAQ^Dt>% zK9>pI6Omp=B4dK79zyp2)NY%)2URl!w94YLhM=jc7l#D+;9=?y@uK4mj>Tlh?5 z2~E7f?e$1iv&NN)*y?eX?NZ43vKi~HpuHjNOw__xEEw%hiNpR2XBJyul`E?Eu-lK>y8(5JOIioyr2J$~xA_~FuZlwBXb zP2DoJY z*VlEpFg8}qF^^ZW$&1qwK7=q=-9Ok5M=U7#4N`Sh5<)@G4d4ly*d?DaD%BrrDAnN& zOn?r0%tAmIk6)ixRE<=)tNn|eA{1n*4@HhyS42{YJB`j&)*!d-d4VW4VBqo-Pc+GA z*W`XmN@s!as||%s!-%QkAukzjvzNK4GI%26v&h`%8amDrS8>@0M=@ zoxd#J&}t)*CRv*1!+ExhwVeZ2bz&!?C;PUOV5w=n=brm0{U@){6W~6;=%bC7d-tMr zu`*4BQT)n*fke+F68GXj%jsQettkY-_%zooZ^Gr`?hTUv+u4!x)B@7uE3e*FksC39 zt>=&vRE#dkFrt};Us<}$9mr;YIq_vINeb!9_dJSaA8AA6#{psKlN5g-)5MwmI3(`w z9&2;VqzQUy!+}lbw(Ofz8=`rLnc*z3Bpyrslg%b%7}Eh3bZixpJ1mv_jHr5y-bPUJ zl-60duZVfgswm)o83||+^mPyi{NRVk7hf4n(ky72dc!J@WQo6GA?52a9B_*@Q4N3hq zYlWJhl$6GmSJ>DWd!zT=+ax*uT2A1j{|)-i*7arC!BlL?$k_SEK(g)InoVyQ15iZ- zOGa5Y(40?2m5qR&k=>(NoXjVmE15-et=6wvt7DpId=3^K`_w2&()G30)zv;OO3ndx z%M%HTgscl^Z{7WA905TgBtf2SXo|X2I)a9$J zVdY1d<9ZrQC~kKeW&)xLI8?V}WOMsEcr6do~>O zV;H`v`|qmG`?+1^!)Hp|5qaHU6O8dyCS*N&+Rid!U)UbjS%vtISCg&z3w~=ryWM_i( z(wQqFbqYZQCxz!N8CD7(N6v8EusGj%r_3e9mp_A5x>#o~uVlL`NcALGqSfbtZndzc zMcyw;t5zh5?bp2p&iNjJEnZG;u*tlzWRX{-F z@gggb^WAmAAT3(4D6CxICiN-t=>wE|&g_6?>)|^Vvk!2Ow|_|zGejZs53=Xu{?q<% zOrLj58ZwiBtZ&8c`jPn$(=-0F75ERMqx}c<|2K>O>;gU|zY)dwufP9CLrbgbwGQS7Wu@e~0h9U6mO>a#3%QOPD`J>qWy0T=sx@a>oXL0)m zv)0Q1ddUcy4)3<{j(u<%qJ{hYv(*^b>ESOX&$b=Sx6g27YK`j4+%)sw#k$;9t9&l$lJGl)T%rhKo->pW-sQ*|KzF&iR{5XP%UBnsyB#6yLO% zvt8=QQx?+#W>OL3D~Kv!&*<4*qHhDVUwjwoEXv?CDqb?|WUeLF62yh#c(K+x*QtT} z;R*d=+235B3k&RZhO<&%TurmK)w%sWm-C|hWBh%TYHJHIg0O))#^XMm6NRz2i|t+3 zA9fF}c1CRrbGMisLeK1a_#Ay%=hILpabw`N!};cO$DAeB1)?&^=GMl>Z|RY;%OKwq zqWcDi0S>6V3>8nclSeMpmFt3XVbutCG3Lvn6DL7^IGF1lTDJ#{N-fzeQ-nqri#16~ z1ou1i=RTB7i`&?L_k4pMg_S6f`ouPP+TRJ_G+$-q2~A^U{&w^)bX6|I@9#P_9)+~Y z$$zU-ExK;IFD?yTMkx%S98Z2))dm@yppvMO6L^3E=&BZz-{-cz8V7G>Zl+c7%tdN? zE8S11Tp;tNso)UIBO~&=O627{$v*E3AfoN@`yy)PcX9U3n;VkAps*SKsK%8YEtkfh zoP9)gwZv}Rfdl?D(@!e+4w#Pc75-=TpVQOz?Ziy;Ikl7IDcFu~;wSfc#StdDLa+%r zZG(^uzQkR_)URO~W!(#}ILvy<$m|J64M3}5TRtvVF*H;y%7z3CTim| z#0~iqx|h4F#$AOp?>`(c%Is3}Bu&-A*v?(#Dh8bPJMxW&4@>&FMX&Z+Jbv4SEGI_d znFg+T&QE{6G;AT*3QD!?#~_uWrX?)z&o1FO=#WiXpNo)qGRwl`r(vYwx=sni=-Z2n zdV*zNntv57h$QbWtDsu}XZ5q;X+Hw`jf`D`d!YFAP1H!?i#WI>ef}8HBag;HrkZ=z zL$##!ksVPA6{}7hCt@nwm%q(l-i>gx0>iJ)bEYI80pc@b!9ZvnLpfRUfTR|?@(6zU zNLqn>U98dSoR32kUf&%TVC*7Oiih4^Klz#8qqziUpzd^uAepEf7-=ojoouQOHKV%fZK>=F+KPoxzuqK*rfl~zO zARtwwsG)|Y1}O^CL5hGN5b3=wy;o^UlaA86AQ0)<(4+_`gd!p}3DTtn1tkay-tfNP z_ulWh_x^ML%FLXZb7s$Mo@e)*{hc|emgp+Q3>o-CQ?a*2@ZzEU)k(Rkni0{L%ggeq zk&S_;;y%U(mw2aBOf^lheS^yVbk5l~^b)Jw(?zV6$nVN6NG*6x^P{~1^*)7mkTQ22&Jte`N+OZW9TA;LIJm>)tbr%(ksie6( zpe7}eGDq3ms=iP7ifDQE1ctS})vG(ktr)=tZZC01%2&m1QUT;GVg0;P&gx+OZ)RFq z%Ss;r8ysqI!+8eo8HJ#lkQ$biVnptp35cwdB_XM z-e7qo)qgpY8PwEph~A3zpW`DWG-!Y20;dJMxiw>7DK+*(gGn5twyt}12yQi1wY)1f zS9o2bIV>VYVxNyX=}Om`74|}3Hjv3_Wz-`EWZ#w3gJq~rnD;M)SFJn)hyPl2@-mb% zWjIzMTWqmZ$TW83$s-EwJ>yu!T)anTNt->^oOZzDMrah90vjsDKWaFQ8OMednYpKY zcQyO=X;xa=-Y|7hLj0v9mj{=!2UHUF4>SAEKqDAQ3N%{K>-~UZ2HIkQ4U9KNYlP9%H@F^HeutIA;TCBxfNu0(oisG z$pvhB-pSKeIX3G!wi!Md>Gng>^HEC9pvLcCWkHpCWerZWeJbkcDs^L&T0}uHD_1{9 z{Y>@{6||nG?w3^@^;eUpV=)M;HYwCo*i|KzNcO(C%axo6LrmdjDtmTu1?2Vmxh+r3+jbd z?vz+emVXFoas5e&btm8S@sfAX@V&p7GZ1k8luX_2u0X!z6V0vTRB)dRWPH>81Gl;^ z;7$9k=I$Rl?|VB6+`z={{4A=Ktz1@Og&BM78OZQsFGed&YgAuDV-MA)iQVnK6K~%j z9#F^25K=m-L0v_@uD54iFK8mYkm9XKUk1M!Qpeb*n+Aj2Aq6?BUm#M-2d=?vLUlIo zU!(fE-*oqcIm!cTp44eB^)PQPvh91x%$xUCfuW6{5|(oAnM_RqZ&&y&ik6n%ZmzJH zMepR#bj>!)(3J?B`dcxamvnq)(>s+L)aX74+uO!6jEyljfx>QyjcEo`U*H&=0!KHs z|ElLda%Nm{HXsLMLKxNuZgG`7<)~sjDyVt)6_&pCCh(w>CsTqeCez(@s;@+kRS9J20+nUVn8n+ zG)T<*o<6@=_@05uw=`L-r2b{(Qe{81BZNf8GesAQx>k%Gx7qvnW4qVy_*)OERm@Em z6_=uUtMEK%Ob$xX89|Dkz}cdQd}KC^$Daabt8I_4mUteW`ojoGq7iduV5p9Hu5a{< zAo1PWM0#xKTs!^Q-?;~R1JTg0k*-rh0m{97>zsh1|73ad?-goyrJE%6_@Jr7$CGT> zkK9|;be2t*fH=5<%GkPrS%j>FwVhut)WY2Ou4L@wAi}}SVgR~VE~n&kJi+hh!5ZD$ z55p3UW2@Vk>dM%EWp@nJS(WcEPsUmECO;OVhaKp(3quC|f6jN8K@F%J&wOW$-50h< ze<{wbWN6|0;n8Ebg&iM)=Jk|=-q5+qCo_@auVv}pvx{Cw6HWmd7xG2-`A%Ja)2@C- zL*29Ul1s!i&-~V~B(+{_TZFDqu_N;NAyq;S1GH>Wzlan$VKmgsBuc;>$ z{_zUGZf>dyl2>9L-Aqs|ZBMTE_s>s4cWnm956#$9zYJ(K&DyFT3Z9vtC=lCwx;5RI z=Lxa8#CRQd&BAvRSq(cmms@n+$lkSkQ(=kHP%FYEKBE1=c}!a;tIFRE0{cynXrIEO znQ+R*{%)&fvfi6MU+tnprZ!FJMXG8Zjy^cK8CaC`ymifaYdRjT_I563HCAzFUP_zX zfN5|~+46#DZHoz;Y)m%$ENu{(neMZ6$oX$1Fg6$g#%R{i{G5p?_Njvp$!DEY`^z0J zO%<~aPIq%~g<3Xyc0bpJ!SZZI!%UO z#?8RcF?_x+MhobDz#4}UoiwpDsxuCHnIUbAmFLw~>p4Z4H>iwg?Ak zww32r+aZCf>|Zy(;CGzsi?&4!;a5B4W-yNVc?Ixpy>X~hA8<1aH*~b0ScMds95RVF z(`khr0o}%QGCG-@Fk4?6FM)8y4dH+-}_jwH81S=iLwXZ@du3r~_^xX2brt zO=aFhaDoq91r@1Lx7P_1ZTQPz90wX}F4Ex;X814#p6Cm>_yS8NP3m`HTYj{ijKhfE zvSk`R=-zX>44=AhgGN)#k6M{-u_M(Pt}0+ zvaN}jJ#|Gx0}E_1z+^Ick@5b0q-LX9zjDJAK>F z)}KQfWOPui{gAAidNsNpi}k?e?dpS_1PafEh+0-Z+Ctkjz-_FtC;j7Sy#Xl4Zuj#8 z99MRicI}kICUF73q|wS=0;m4@Ek(CI2Jl|^1dVmGD((BmAA20Z7)$^RSPgEOG^~ni z=XEHAr#+j>y)~3%os!QWVYRbIoi7ocyBiArrhnV}#g6i(^e5dfuAS(ZrRgZl_&|MrK^$-@b^`+n%aOi*p;P@bhbYJ$V}$UpQO5dP^EP!&Tl z=vi*-h%*NVUo1|zcGYa_`*&F)QroAXthW>nHmBQf4yJLB@B4$l)WCM=d0H8kI=Gz< zZQ)i9vXaU`aY5Cs)LfwMH1CEohxD?J-i6`D(XzVX6O^TTPe04{G{@vaoZhuDmy0h8 z`@LvanyUMOo7VFmHPJI?hfz8Yi+); zzkshH^2pb}EFh#_cDIKs1aUa&mpF?0!`FKK*!U@usq-6khC8n&Wn~(*7Eeo^UAg5U zpudWd&TB%!sO=^!Q`6O)@Mmeyr;YN%! zJQOtR7txkEGzz~eiN%6MJzZ1K8#FfiRW$6O;I)sRuEh`>mDz0AK^yAOH+1xn*z$vPjlKq{}J_APo3Sq4V zY;s0DAx6VGD0+7P&!E=-il6;wPMjDh`zI%Us?l*06N(Q#v*7L+h|xNd9vf&((N48Y zMPe5OiCOm^$78*$Bo*Lfsz0vWJN&PSMR3fNoKu^BDbg~PfLtRzOU%Q@5VZY{2CEh3 z#2Pq40>qU{JZ)X0Rs%EY0cRchwu1$neU*LNnQdZ^-ahwX`g@4MgJ)#|XG%Y%!+i_k zfrS|6Gi|Oz_t zoUy>dlhX{$x=-kj(DC@jy2bGwvP78SpJ$=!6Clz9eq*Gvk648{hK3~kWh zH#*MZAo)FKH-qFE%XF*VxZRgiY1^~%p`*GKbuigTap{peL9gb%l?k0bvn}-h5-jCb zKZdY8e6^BgVc&dpay&Qyq+g$Ab|r--?#+uPreW^S-nFcdyTs#bL>jnilJQmEuznZh zNnic#Fo%1KlK->exjwC#F)Fvvw(#5I*M!y_W_2bhXy54*1k@!enm12AfY#DSylKXo zTSL3Qvb(fG*I$$EzQ^BBJqS7OC$yT(6YxccwWIi}=gMhc(D^t z#P!l4tX`x7(pwk6Ga8{07PiIC(2uS|78KY_%(Rx}qph;gTjQAEm%6{ldDm4m=$M)reL1<>@5@8-guiK{Q zHzp^`lMJi!KF>16 zaGyi*8@jkH&zZOOf#s~7Q>uIX3k=@*T~7nBjug9T7jh>UydEzO8>$6qmXK`FPtE5Ibe4wV4lP7Y2Qq-?~>O&ZU;`&M}7D! zD>(zMM@&0tb!u8+)im}f_>US^h^Df17MC623cM2Tav{U>HloGSWmW8s%#R2I@~s1* zRyFLFU!WT5wwTJbpxT|{#c2ulzNMUzotAc%WH{Tl#BL6=S*;bIa#4W!~@XjH`digv!oer8?;j-^R7^Jm-De?Hf3}MG5RNN~B(K>S&%x8H;s8 z9cfYD)+=p)3?^^<8emvtGv0QcN--xqHuzLbv+6Ot^QcWL2%=mm zgbWmn8brS_h9ts=-XdifRV%9K{+tRe%3c7z#C$Yr>5(J_G=?n}kyD4>T?x+DT3f!4 z-7VSuz}Q5NvZ&HjQ<*LMnaGu>odh>+a=Am#dBs!<{zOctIcotQCix)8H6gKK;$mJ< z^t{E}T2fT9%jL!pjVd{^fsQ@0LHQ&J>x$|u)a|LX+iMN{0DZOWppL}zU!u*=C`x2F z0aBxKp+0pu)l!Y|{A+98-+Gf5#VA(y50+WgPROx(^^45z&)`ZIQKN+?jvpxjqg-k) z8=E&sZCc*`?g$4wKpJuaN_*5zDjgECq$0r!Xj+SAeRBbtR9_l-8!(_ z4lM`3*93rcbs~(}ibLJ3n2$=Js)4I!EKNJpVEaO+8j3=vM$chDYX~1bN^RtniO6tz zumE>woJD3g3M}pmV7a9H*;0q%*)tD{e6eJW%h=l4X?+G+biDCc42X8-}58Gjs=MPMcw9i z@N3`^;o2D&k$U&vMyzG=uWA)UWz%T9 z{;tM9BI{f@`JDX!!Hf(e7#aSdMM7_ax;$3Mb|OXk6AP0vk+4Wk!IF`GL9$`4P7@*1 zJdCT6a0nk-Ap(e_uZ)MLvUwl=AjQ z%swan7E6PbL^kDDHy&{EWFYPvbABy=Eu)b*ChrAUffR*L{%VH-wL{Jh8tDD~_A?^Y z6Z!dw>kT1k(ztDu$6_arDL}twy28SL2GVgJV>8dlLqoJofM_gvYKZ#4#R-W`HP67L zENs@NU{HIlurvI#v5avrGZDqbJoyTsePFJP;g+=ndIksU;kH#Sb3E*!M5qRDt`E_v zZBke$G8wvREaM`v`U+@YH{s+1-9C%JcTyP8!RF9>Ich`}CRK3rFiwz#q|Jf|{6tH> zd5_;{$cq!epB)88_Y1OGoStR=c-=->u7d-jb7uGa8dA&%Ffw~LwQn+a>v3nEQanv{Svk{UcejzHswn*Wqwrc`b^`}lYQrKJ4*{U!Zn zB|W^Iq@)!U6{T*=NXf_mm?Z$HKzART0DwD6;GYT}I-u;lT|9kUJlwDUuF%HT!`DaU zrmwGyJ3Y{kzM*<3Iy%7YAl9emAKqt^A+-|MgB;>UT%}N5@qEe#0CqGxmQe z^P5cnm%0w_Op^LDX(y4GdiK~c#zoM>`;Y*u^;!Sm%LMMuEfERq$xAvnZ|dnh`|D3_ zXJhq*xrZl3Up>2i>kD-CnepX6kH7l!xQp?^c%O_wwO#*cl-`~N>XcI^LEB(ZvYv>y%m8XJfv*PGfwo2rlEJ|RZ8 z!a8lG{wndabQBw$(6-aSfc(4sY@9g$JZ}^k-udc5N#1J=ewkA2W{7Pg9)YVbnm4Wd{x!mC6ab@j!LG21cbVXX#w7W zCzFcbPw{oS^eaYJ9-Qb6?5(hhXJVg2v&74`IpPgWQ}e2&x|Tc?46_Wh+r>Zp?Y-4+PLZRwU^C^WN0Y( zMrTvd4RnOnX0yI@{38}6XX1-OR=K*ToK?>ID^}F)VyHn)_WO?p8L?~^y&mv%oj2-j zTHMu)54zE{xjo17Dj=^>OpYN)4r)Gihakc~mKfFtq-<6``JwVR`JdP~i-39;)Z7UZ zD6ZYzYRYBB+_#Q+BVFs(|2$f1Y_28N>C1AG&uGKlDC(AdX&F401B6=L=Fs3%$%*6- zy~PqGFRB%Fn-&OVel@GD6d7JJ^~viMyxv+oCKlf}%QtO{P_ua_JjK5Q+Zan8Tw9ga zO%!fXvvi8-$A>$V--O2wUBL<-dB&zs>k1_#WVAnD`vsw7_&tIho#LKQf^;hZ{1818 zic=STq2sa8ZXd_)hkAz&Z37)Mw_ycQrLhskPFx9P$g4Rwu*$*ezYjKMctRUc0m0ps zLN$!vPZ7^PT8gXxDQu(_Cr)kGVBzR1Z)xOLfQeWqe@9#sT%G4>ax2}DDG6~qv33qN zE)(xNC2-}$VoW*zevWy%% zoQJ=Fswm{&r|a+5^BYA#x*128Lpn^8Uxp33E+qA1wyjg`AQ)l^w7~6V zYp_8uS8oFkyYB@GG>7D|W|K!UJ|)#i4nT^wc(K6R7HJ z^3O(}#hTXC3hj>O!6x6nNOuCvu31T&ZkM64_-R`QSYEwXmi+cYEt7fcZhq&Al&J)Q zUeOnL@J99TSWib5-}3~86GQZ}-L-p;B{13g?n4$#TuaC=-Cji;7cCu;!Ui_m7DA%MBA7Njc4W@`>SK(FVp_I(!RNNOb z%1^>6Wr(+|GAuZ6AFeoXdRkfxy3a@dIx;(DQ6HPtFS$A-6JkKT_%{pOlbK1#UzBz5 z7OR#deKK0BCADXEov-DcEsF>VGs-5LBvn4X!G_=~d`rnTOw)2-nUPnYR=cx$FzMv` zJt9BDt6pe5et}d*z^H6Kdj$#Ad5%ymR8}ZQFlwyj9`~x^sl$@UpZ!<{PMy-3z%C9X zRahPR1XZEqXYMwd`D(2b7*7sK^T0=VjJ?U;$_}^uh8CV`9;`Nhgmt;3K-#f8>K0p# zpcLYM9bQxMxU2dcu>_e5lUl)+s9}jM)u6lQVRY3^EyBT4&45F9fj{qB16n^M;;1-B z%Ti4Q8){wk&_>;VwOLKJ*dm}{?w&m}J`?fOV7t-6B>dz+7xTO%C#hZ||4CZ;$Q>NeFE>~q%K{`1z zl+0!hvHRjk-$*Wc30cl*-klAPVP$70FzZ9-8ER_KTfuB1^a~#C;*6bb%#|4HV&MEc z!f@n?u|~60O=3UxUD&m;=sd=d&4Lc&K)w9D1@0rQR1Dtwk{l9!Kq9T`>S#)u>MYu= zc`jMhNUX>KioAMgxpPF$CvyEd_@T37E1~CmC*sb{8kDb z=-OZU;mNUsG~6qdHtVxgdDwLMg2AEXVPyu%=N$$qy{9&ij0M)XJxSk#^Bwt9e>!2z z!=7AOZ_bTr6$V|gjD?ry;4(zpeOrfxP7rK=@gk#|gu%pPERMZ`35%HXIG*wpZhU$F z7VdEAk65?ucXO70#>5z55Ue9>zAUQTZ)~~y;8W2jYW{sY3L~^l(xFcq z&#k%cJ1y0lWdN!70pn@((99;p+irz~zACZ3kqbDkX|r#!YQyg1EXGyVz*1@4-0-u7 zab%c@hpC`hO%Oyj-2WYBe!w~fDtw@7PiVw}DLV8E-OZrK^g%d>xTv5-ZFLjuq3gFb zz1^M(jw#e!Ze$h9t=reJGM!n3EPUM$+rrX6SkL`Lz1Dubch>Ony(h;{(36I(>g+#6 zQ$2}(d{mLVDwdPCGRnLCl)L;ObcVTG*XVk=7TGsm5G?F)wgM*}#9DNxZk?+nLhqDI zXPrQknA)`80o+#<5x3V!zaUW#PYMy@BTDHGHo^X8)noT^H$WpYu8XhIjXSKl2KdKy zPh43^6Ah}}had0m9Q`C~>&>gcvcsyS(q~yA znr|1Z##Wa*dJj~f}v6}SxFFFBDD={ z^8D<<7c{lOQCJ|T#;>0%{HVMUl|6^9Y$dXtA&hcKPy;{uO)5Q^-Cn++*Gzp;82a;> zzCo~227D>e=YF={6waEhs|ef+hfC*Xp%;^KVaT!f&pVSEtJf`xIANA1Nu1m+xSKt4r3b?2LHH_l(y-@sBQSQPE)_M}`kc-gBQUCQthzHcbXe(je-ZQb?s> z*7{tU-c)*CWHPxD7erg8xRG(EcL`&Boy0Rrwff?ecdb(u=8=2rkg+TcZo@h2c&Jt( zzDSCX$7M42X?aMFnnb*)(}`F!JlH76k2Lfx6HY9DcPM0bJ}k#Qk9`L2ud}x{2E@tN z52axJNfY0+ackydcTO*+7*%O+OU;}2?yWtrjPG^d zZd}|6qe1vfquwT34(iPnenIlohV(jWY{2vXkUuU6qG)-H?Ey|e2(8+Lr@yl_k=8>R z;bey;UW1a}9|Yj#M(A|C+gO>(wA@0YmJn#UEi+f>3h1Nd?rd^w`ske$WR3+=&M6vc znYT7+k|<#!M^m2;EH9cHE^kI|;zP#$=)lIz2W-~Qe)ibJ=bvcyYclzl^KUXa-*_AR zD_XA>=Tyw?*qrkP*9@s&J}#f>|Imp|VACv=rj9Dp)>w^D^1 zZOWMm|1fd`;jkug3nUZy!-P)_#A>*|ob3tH|Fzm!u^wNx8kbN%H4j=c7Lu>1pp`c- zJuxOxc0Y|I?ZCaqa5}FBiXAPn829rj4(B(<$40%-rN)iZaR#0D@Pv_MXZpAC&s8Or z>CM|Qw#Uyp-;0&l0HsKD5OM-ES9j;(Ve0Xv@Rq|D1LDzh8}R!E1?^t14aSBSny&C* z-#9HjAJQNF)&z*_DylFzym7Fg&@U4p<4oW(pp_T(F&uLfx28VRs|6eQm^wS}#puU*est9%s&> zg+A{c9(sNHt3HYqw%@G|p?h^{s+PRY#+Timy!hUgIDsC8CqEii2m={g`KBww2bWO1 z&5y*kNta_WPSbBLopp4r#tUoE3bY7!Y+oXj#-%g{4q&v>_~1|SpB=LM&3abx-If;* z-8+{*i%#F3{Aj?POkL(zJVlmw@Hv9DUIYc%2r;yoV5zqmtVz7~K8};>M5Kzd(`J-|~ zd}Pw14QR3&Ta(lEnAq1HHh%Gb;P+YLtB;d{mZKLI%A23YmALEg=Z>D1BDKh1yuB9c zrc~0@3uLv2MHt?Di7m5SbUzvWSE{8`ds$IsaVh>YZ+7Ey2ee0Akct;XRQ4LUx$A`F z3p(FLE9$&h?NvZb@>6QREp&2Q_T``G9bYA9?q%V_vPbL0jhDV!Z1tf;L4mtIq5P{P zAtZ`?KX9RGZ)2t)C&2_m9@^Z6#5H2-N$_V;Ytw_eH0eP~Dx!0oCbuk5m;XGv)PNHL zuy*PCUVwJ&kwhMfue#hc@egwwUq#Y_16UsPVB2?|@AihjL)<>(iS_sqzi5y%V?!iHJcCepU#f}yBf>svxHZXIG*?TZ z))fwR=t%)rhGxXzW?m$Vk*(gWc?CTKG8TS5taWnNFi?*rm~Fj#*t`#8j(ta7?YKq%HnJu+NlU^nF9OCom)r`Yg`w4bEj+rqY5EQ8AyObK}RpZ6YpOb&Dy<>l6 z2c_54NQ;hx9pvpyFZGwKh-AhYPj}ZZu_&VstU+-b>s_-?kFM8{K|> z-eVSOCmj*_Z4 zjd0()R|PWQ5>qOew>m`Ua)qve;X&-)s+3A;utQJDW0@ntf`a0_y#sbx`<73Ei`t!q zo^98*6waOIEfCmKWAC{-ALNv%D1Wn{F+vmY%aCn5RcOtZ&r$(;}VI4fwzm@8-bG>t{9ilJ@R z^@S3fPyRj2Pkv~}X4`_l7<`jb%lqS?AXP=Arrip0=RmuuOm?g9(y#ZxkgX;`{8a_sp9(T1ZnfX{4n$(vyMhz<>Qc%J%nY)M^SU^E zcN@HydrID4-aqx|Lta`Ec%*jiXwoV}=2l*Qo1~?DoevPTss>6+R5Fa0be`GOCO4(2 z3q;h8d>huQ{Td6W);Nd~1{3bZD@jKQCwMrWzm?CxXN~9B5acS}wfSu1qk}6T*^`>@ zTk^&f>pI3l+wbbVyRCmoYkveAD}Kw`7L)_=UYZF62|Ki?L?;%%<&OrZ_YCNH4e}fad{s!$pDm zYT7SBO4e1O=tJnvbL-0oUHasyDjl_8f|l>4mV+BO%i*N38C~zi8g|RzolZV9ziQ5d zk0p)PW=S3Mrb{HZn_(UvPIdE#-jr9!3G@1<2mO?TDe@G4MZot=*n?JKtZkeWtlsfc zf}H=_))~6oMuo;U`*;Om@4$E*FtqFMD&+cQCGiYX)D7A*Ss5Eo=QQ})yuUceWWaPB7*%<;Vq^$?LNy+@A!C#`={o;Wi=o`6jd1MR=#r* z^W)PI;dXVlL1jXXA+xyO4?%RRfoclVv= zDX;N5K<7>7VA1p&AcGR`ks?}xAcv&oqcjez_4o$U?#hjdvP$Q_AQ=WC=79-&6pf~& z@mC`Q__{XhK!iN_K%%~?>}?pYm#P64x)3WAw`m-uj5=N z(b|k!t6q<3r*7|0A$ET2b?iOng-@p%`np{dJ@0O1=zIsAR7&`K^!ciL{zNXWt(l`? zr@u(2{Phs~8Yij0J>H(MM8M9bo9e$KvVaO7Xh0@#{}_9ZUG!s*PYxq3oN=xFnZG3h z?)J7Rzw!{&lQgT?_Be~11tP8fE|hNbe920C?slqv+>)WFS~vP<>Qa;6u|_YLdJ4lO zL!tjfZWztd?wooM1Ml@b;@WHQk}V6xA{fQT9nLW-{&eI(&s=`D*v7#9p=)2u0xODm$&)O>sW~-MW)GplkeE6M;0)aY9a7#U2W+Cbq6msLyBn z1pAFsx)MzYJIkgZ;Utgw`x{`ZIeKXLID5SiyIo4j^4k2}WrWW(QLsv=zhJc4ze(i8 zxSrAHbd>u%-F2LI-c!xND{I-&p=O@HGGy`9G~<+Z{2r2sUcMt~xO`*nd#r1nRag9g z+sO8<{moQaP_S2&YL>HFq{MPf;nBSi)G)3j|5iUAC3Z))CMwBpN0!#ezSRSUOWEa+qCpePsMfr={Rc^0?XT5XKO67!76;mA z^xS9-RY$ZUbW58dMQy%RYJ6jKU4v)LZ^eLmH)lZHJ!`0!gKkgVm!e#2G4%jU6-`DH zNolIsS}~{di}H8cv~)Q8^P|)`OAh*w>3F}Ch)^nCtd9zoZdK&i($T)DB4D`)*?et) zagM-JgMS1=561k0Ti?|iQ|2uT-xkSWVAI@a*&;7R|AVz8=y;dxEyp9jq>z0Pe6w@5 zqttZictj}n&2VIGZ^0!SVmg!pii-3>9_d4a{iCch>UFD`9ZpSaD`tGbO>H`-(u|UV zO`@waw$n>7mbT<_6(!^{aao+Ox|0oA%;X=lJ7QZD zv($Xv?oNr9*t5{^4V%$2!ooy<;H~9+((L9rF+_uuq()Phe#GU+9+vk8Q*P@z9T|SQ z;VSP)R*g+NNNCsMPw^=G(SI|g%|;Qwm3p}rk<=bhIyU4`H%Mj@OHRPU9V%O+hPMrW z<#RL_+Bz{sJpA5}8-gO${#42almxmZ{8+t%01xH6@|+^2MTE%hWgKu%SC{nETNHg2 zYh+4n?LEI%t0O35-d_Xy=}Y1oKE+tEka5vYH4AkuIlb@u?NAr|eut}A{I}G?nzCYU zT!izw!j8N@Nt@yfHJMGBfLmIPSlVbj;2`?CR7I@gg?*J6a zDb(z~+*sO^Yxx+V2hh8MkZ^2E9`r_1Qt6mE!E@S=3@;NZ6M^ks(OWlF*U*I+rfnxd z3*AzC_NVh*;}2bZjm?+um>AW{)U}z6!&>s*yty4dcCADkB=4G7EyR69wUSDbERtF5 zEip}c3WOCJw|siaS!QGu2Z}$xR^4R7Dr#iRcV&v?E)-=~>i_{y(_RpV#C5X`Yl~)J z0^PZGx~G_qBDz?{3UqBSC2+?M#d7_-qR{F;$Weg=CmZ^XbV+f&3?tH z{>c)nUITF*GpI}yDv86D5#vZa2RW}BvvgDg4l!Zi+zd=c{0ANNhW{!oxe=6>POWr+ zSx)#F;+NJ5%aIId>rD-LCr_lj|7LOgE!4+tYM{0dMdCX)+Q^7o&Z+1W?m&0BdTID2 zW6%Zdptf+czBg4j+U4|ur7=+1YtF3tlbS@O_I0>>Sxi{Zhn zTaB1(6Ed`1QAyr$8Y*h=0mt7fdur{I{zuHpet9UvrAT$cTaRn=&3H7>+rnvpQNpy< zY}yWJWVnXWaRqxjuB#hofy)_CfK@S$QqIymxW6>9PgP9ZoMO>~H-Pb1G+hWB)2*B9 z*S?R;ndkx4@`eo#Ryz+8xD}mJI>~RjeO-zTUNw}-osn5GK4R3$e-~Aoy&DG0mYONa z$tV*u32;CLkhi9nLVLkC+b|AC25la|_f{xB(sQ=qSK@{c**R=l{*I7*9CG9`bg(gD ztia-Z8NXF&9F3j$LXUy|)|*Cx%6;>&+`9sDJOK#OAmuBVHi!T$c+Xjcb=<_D?7piNwZ9|jTW$IebE*VnzXc%Ou?wYio+qmA@ zyaJgMORg5vwmmk zu9VqgMssR=)* zq8VPDb~)&Gix!4%ouy*Db5LuXWocHKrFFg3@L(87YzBgxZT|cZ%;R2e@ONg23D1(aLUgDxB@)Zv-dL*JVf^dulWb{ZU3R4et`vTOW1v_AU4#pYJ;RypmkoIxr5kF zoo0N+KkDY2M}h!;ABFR4YkWsKjn}~aS}{q-o{Txcy63Wsb?+zWKSK5SQlCUy<=4-f z7hGkcDyWAA=AVB3JM4?n%IkQ~^2kV)N~jc|My#c{#+`ft*Yw!9dSKAi!nCD2>yLl> zeC*gY4TIj(MoW>Gc{mF0pUvCF$~Vug5Z}D`FPv)xfc{^&um7F;{{#vwyP=`suHB7) z2dy2ZpA}8)5I2eKc+%xC_`N7N?lgCF0y$KvYjSf;edHhSHWOd+p&K<^1;_PVNY&#C z4vrx_>6(d&9TUYYGDXrG10Jj1-71AbSj`0CrW`*FhjX5V&P4P&8TS|2g>FJ+UfN z_Z2E7%$GbR-(f-5GO;Zq>GVN=N5{)7M=5JZJ+_TD7UzB<{@e3o8^#tE?-=xb>)*vH z$II8$qBRss6*xFKmx)VEcRQon^l}ir$+nD<7j{G+$FY6I{SOe}O!$$+6-)YZI)gqK zUwYF1KXnb(t%qHSuH^nH_CMM&{!h>7)LBY$OmsA=?DS8VAYfG6{vncyN^7L7G<=!( z?CRwADGzUy0$(q! zzM{#)bG#uXm(ve+W_iDg2^RxUo=F=^QrGHOy@Mq+NaD8a*-Z51@9>6LW_@IGrI*ca z%d*V>lNmu~v@|5CMDQHvIW2AOgfP^kR8Z7Z`*2#mgRoS!xC zojZP)C>j~l$(1Tpm&QuzjVPa#8fDd-Jam~?ziB-0AIehj9rQV(SeJ>chk5Mk1+mto zRgL%Qu`79));g2ldOkT1|24h$><$%=t0zt}`yebS zseis=B3Q+Z?t1|6 z!C1F3SyliHQZD7^N|HXJ`+LMkd3kwJH`{6qUaS7uQy*wFIlgD~TymZ?_+xLW;;@9p zlC(NoJ2_U^KiWA(BM!V=CZM)1SiX)W5UQu;aJ|#iCE~c4rH&d%w--TiQ-Eq&$Rrm& zuvS}b_b(MNxMEQT?>J+O7?DVD}J=5)T0~h)%3C_ zjN{yS-xqoa3wXI4fX~jk^F(IXi?@ij5T z_Hml?+qL3~)+D)L_i{N>Kg;zJiC$HrpwnLzDE&OH;q7(2Op3`e@#8?sc<43k;41PT zq;MLvWmzKRuMLka*Ynq+1|4HvJd4h` zC0!+eq;$N1Cn{VNe;h9Be&wr(?8P!YD3QDry&ctq=ZzwxR|)+vr)Z*XNr{{ zj;gu8@8daL?9#;rL>GN7SS)t*{XMo2=+S~1H{{?xbx|qf(1X_Glsu1gSk-OPhHHk+ z&fbnIXhWPo&<615@0@6mvK($HHA1&U&d~I>qsBqMq{Wkaa zf;(mCugvDUM&}Vrsa)mb8=K;w`7%g&y%jTD z*`=A;k2zjcZ?HRl*GPe*j*}x4)nL`*t0^mdXz%>4!X96ga<-UW*~$mkn*u^`)B0nr zFD|Ae>Eeb{PjS3>e{?2hfk z`IJBjJ+Uz_jIeyrkp5p^RecV$=oNHg{Z3RN0NRQBV#PKD2kopF`{=?bJ{9waoOWpY&SF5Se;=08h+cvyO-40KSDBJcdO z*V}A1q?eakcZE5bW(yH3)gEDlbT1b*5%TP|8*|IhIAM*-?iy*M8uoAUU|tO5O@GcB zD{K@XqkLa=gvkG15_m#;a5Vk1z09m|v(nQMSUi zu&V>0-HCt=-JnIGj@1b18kK&7*TT<#@Y z;NG$Q_|RL=kt29ZmQ8l==70%ku)bLE6KTV`^$#@0QI~KlS?I0Z+t7g9E?l_qa{p1c z@xXgKb)%(c^b+n`&z%9RPeN=8NX7k6O5hdbmrV7;S9i>;%xWkHiQ2VUbAm7yxq$J` zR|Y>+nPe-RHJQBzt`#O#+44p4tod5Lf|nZrRr9tpnfUYy)9<;p>$oXaSD?0R9pA9f zvJRjL{p}_3(FU%mfM=D?b_OROyFb|)0)>a=v(N@e7?fFbS=MAZ%ceZE8=dX!UqwuV z_y@W1N&uT3^V3aAiz70-enY@swff8!h?GMsQ`WnRE%}m4iIzJT6}3~sGV)C@Nk-j; zmdtY_b_%uhtha7*FjAIA0ms)5TJE+FU>H3CI7Rn)P2HM-t0oulMi=_qp|zQ0R3n7} z>#(Zg&(Hzv9%Q}P7bqa&X3=XC4&}w98yl33GS{vNn3#20BQQ2I4`9S;F>nKvjD6MW z`Ow@kb~F(}qNWhD<3v7hTwM-jH1R*Q#6MOFQ_HFwEttt{bmU06R#{XN+HY2m{(I>J z)ISmCcX{0ZxigAl68n_D1Oy}}bL?&Z#l}5j@i9IT_p0gKwcPv9BUi}OMlwKRN&%CW z#a{zi=Evm?JdZ3kiA3~p;B}s7D2%S)w+@rJRn(8xWHj2W>vWoOc#gPuCIp>SbwNGg z+Y_ctM@O-8XVpW&eU(2zBjIe+pNc^vtq)mhGiwyK2HaPlbj2qR?*w7n)|8VAkCV2| z43ZvsWBiLke=*)m3YVDFKsgo8gGa5f3BR6N47HCdt>mec?YME9`Fc5o)n>dg^bpD8 zflpSyoip7o(mf8imV8SujH03OIpc{=Z%Av7$_1%8FPcPTo8h!zxoim&QKB8M(X1s8 z4(KYG3KboeS2WX?GTEf+U9?zEBg`ZESAVU!+eMA+nkbQW7CK*@d^k9?#~Y2dYJR`ttJ_M4Ku!w!;*&)5w*_#4`pkw(t<7y4vxJo%#J&4 zx)%faL|jM+W(ePMP1U)}2oZLf_sB3lQ2JZqeL^#b5svKBr@EB%OF=BaN26VARovnu zvB4bXq=PGq$eqVjj$v5l=_604!~VP_j(fea`{kBL9gW&MmOoP}Dyg##^ex z&Oci76l~wpf3)(>tm)TG0KJ9&WN*Vd=USBCS8X;YAHgUU0N8eZ4o?j}Y!Fo0BhR{8 z@b0Tb!-9t_QS6_mwk3(WRQhNuRi;D~z`mu;-1@`v;pZmuT?a0P5n@tHT7}}@Rr=T% z@7)|M?u{JX?VXB!rOaDm7j%b|vWka_6w&x+Qib?M05+AOHR!Uaw|$L-_q2eJHot;9 zp-NVp$~=PmK?bE$`yBxtO6f(zdl%4aG~KH7s*;uJ*~`){Wp~Qx_p8-b3zsyiX1RNe zn6B;J#b$8Q&%(lws@a(Zp$T!_h@L_jQ%M7;|Io*GaIw-aZGRdtU26!vUcdhJM+b9ztNQW zvauz;X5aOn?&P_dbuB66laqsfs!{P5|{Q1>XL3j~<6bP7+RPOH4Z`G<1d0y)` z+)cyXti-yI9hUM_q@?`K_)q$BNYbcO3^&k%8qPkto7J7#4lvVqfup7k%gWgIZ7es5 z4k7yl8O#1@_-0MtYAgRAgIGOEpYabEQs(ewkQi7XM71G#o7$AZbMWie)o9~e^{iZ7 zv3mD(=42Df%L@&TsC6d`wxmO-$KTwI;JHBXWH@1wg%eqiudP z8&z=ZzFe!>$fLLOoCze|GZo=Ubg>5PX|u zQMQ&Z6bm;HHOP7lMa)3+!YptHDa+m^Ug@_Z~#?GZz4rj$7jXmJv>bal1b)qPSUzE;<^JxV?ICK`VraV$S7CW zF#QKNX^D3{4$Ng7z-g}+YC;Y20mFBiv0`^yS*N?4zvzss$dnk;Ca3UwXDMXQwU*%8 zO-^{5O=&v!MWR1o`@MOtc!PHPj+vF!4tD0XRhkuCrWG&7vFp#s`=D^WKC5)h__yD7 zLi2TmqeFL^dEoXBSe9~}X!JKJj#H*mTqA zm&Mwt6+b7a3!AAjj8B~7%?>i;#QJ=%R1J0XR9UPCSZ>0h&4ADEDEJ>C9K`C3q1tR{ z*s!IGku}5nOAigkjr-vnaX;UExMAnh3oBDlMsVjB6>G=yl$A(@tj{tzmH>=B1 z;D{eWe;M${7Abwq$pa!KbRT-pgX5n)dnSika&zcSo;6)e1ep8vzf&|1XXTKAeQQlI z4~$hANmLIUIk3;X27+G+t*S7;NTQP1$9!$Pm(yL}Z?)+|yKZ(0Mnr#DB29g!pAFm_ z1J#dj^xQDD8m4>~iBE?ODGlW4hSo?ZEu}%2pApN3?YqhIC%F{3C*1Y!s zEbb%$hGDH4R%h!8W$(7|1I;ye!dpsQ=%3s`h`bL|RG;l$5Gw}cxA%_W*ZQTbiw%F> zl8)*R=<3A3t;-%%*&CFn+etK^ZA3NBAv~>|z}5c$m>AyN`~x!?)Y2Kc#0aRjk+l2N z?5SZ=&NSs(JYPpy&M{U*mv>YASh62Y1ypd!T)lMvjA-fmXYsE!yYI5D=M*o*Z;Rhz zo*oH|tc_=9If*f5)f|6$22}}Mziue&*bnpkCg^^0L)MJaE@C$(SijJPs(xmb@m@6| z;Rb2`MrWdz6}cQ0?!3nkuM(7AXbZ6 z-cpJwiEj5^I}vKluGp1Ci|p!PN8E)t{WcS6>7$<6A+E*9XVWRn>r6A3fxI2@)g3J@viij7ZMOOSk&6!tWjqk}&s1XAc0fHQ zlxAPU(3JS;7cIrGGgE7fw+PE415SU=o@Tn9 zY9T$y!kXu^)zGRXR&Jl^V^yliXlfa;fd2N_XhzxJ4AvVz5Y;tf4BfB)3{P!$ zom(9QNiO!dNHl99{EQ=?xi64O``xpUT1YCQhN(Gb=!?bfq?9lYW`g9$79I9;-q`Iu zf);T*a2T&?;1wKD=^{`6p)oB|MKLhrc2a=xNF{FS-B0#)QO7$@kEpx}Y)vZ#7EW?` z`*)o@deyTjqcPPS@+%AZ1ri~_!S;8Y`mCA*DJez#}|832D;AZ zRXLDM8sn(|lxWpDfisg-qB;6@D#g%vq{<}EJQ90urbh)OdGfTf>%?d(Qu85YL=ztF($A6Tuac~plC7{lUUHVxM?Oal9o2*Vo)aZ_gPnia zYka(Q@^Y#+YET@Lg;F!xQI3eMu^J!#tyDDwSpm}!l_lOsi$5ITA*xvyMo@*SVR!1k zxpOk{UmoKz-^kEfhz4QpAeNy$`~1(pclwz~R?Iy~kcr*p1z46Yh4kV}J|DGo@TR3F zHo?|Eb}V50qzS8X;txSv8(;HZwN@i;c+;HttTIE8)Id-9{R}OU#uSHs(;23vKA0;{C*1r# za9R>=#vX1GWW+D2bTQ1hJrOi{{CHx&!Z*k`y_08O(Lttr99cSYnK}8(O#Q6BimW=rH!w|ce#-G#6}wwo!|LoR_7eJ)yo%SruX*FRqWP~6!w($=*k+uKV_#;==YXEs z@#(}LPk%Hr@-kfp`P%?Fm-V%^&64=tpXR*96(rM*2DODzn>5$u>U6D@(`yp@#3uJI z;WzG-=0mlF{SBAHqju|KvU0|or3hwD$?c`Q9T_W`AXKdvnVbANW~@@p4>A6qD-|s2 zjp&ySn}1|_0)7tOT&|d6Ur`l-=5}eC{n)(2`PGQ-^?~C1Aoud(T&59YAPHU*IJ8D} z9>fLtJZd#4Mt6Nor;q9&XR5$mOaXeREOx5Z;Ryz4Uhr17>#~DHbF4-(PiIy0V?XjN zLT{?6pCLAfei1rXr>E3P*S2gw+dcS3x`sCk!)a~(=EpU{mabE_0fs4vZE?y`yR2*d zdo4nyDlx3{et+f3Z81I0DPQi_%xL$V{s)mZQ{IPO!dD`!g_|YIxQp)Ragu68Gw@=N zBbs}-u+J^5R{1(nVPSs!eO%#MeRNz2<9!FUAOIRfM79Ku$2LFz`pg>U%< z>z{Pa!=Ux~;20Q%TvmSR*L_A`%VteSfjPlW>JhO}LtqR~1otF}6jkMSxkIA{3`9X! zaPYOP?*qKM`KYXJns;^rNir@L0?}Y?AZ8Id3GSi;zbxl+k?#H5SZ$-O9k%r9Uz_I8 z!Vz>>zf1_B{%=9}k2H5eLHHXHj&)dtmU$RT{AJfEh4tPgdy3IK6W6*ewKX1CSpDPV+q&%#V%)LAtqax~&JwTjKVqdc zeA|k_tsHScJJTlC@LxnA_~$VB`w`$07FW5cXyYFO4m>l11R0n zT>^uEba!`m!`b8G^L(G*S?_z!TJQP&ao)4e{K1-a&&|HCz4z7EXJ0otb#j2~uaRW< zIfn6eBK+*kAO@XpDIt5zEW{>Bg*=g!TAEqQ_OZ^s)^H1}k*GnZJ z2+141P9Ei|`8qZJEOVKPVc_Q&R9u<+*1(nWw3K<42uEEGqRHu5&bC}-)bJ*%0kr)q z@2b20jD1*1z6}C0~_I*5YdzkM7-jaP9n-$1#Zw+ZB<& z&DxQtlq7VZE~&D`ZI}*ynyp|{SH*bDm9@1uB3db*QshR?_tL0{z1423g8S;w+`^Gi zuEd(2&0hZ%S-DBZy4n&=+TOiO`1n=z5njiZs!Nmu+7!;=WzeEOdOX49p*}q{SVxJ_ zRv^DsLz5^_j8iE3#WdBRVIOC$Eo}$g>X)N!8xOby(X~7IVpkSqcsRq+MEupLQ-^J* zx_hs3+=E#8)I(=U)8(nav!C7{kLlJjJEpxixDICy>;Do1K~p9J`ZPr{Y_t7>z`?wd zLhO5Ok*hkfawc6+B||%5gZ6{(h0pveTu)){Xbb(HDz|ga<242^JM;05^yVsI#R8ry z<~+uhC3{bP=61wP8j03=84RK&1<6EA97zBSQ{vh5t;2gPK-ct%^vTL<7u%feeG-{$ z&lSnY-dqpd;tX17LEA0;zOr$l8DPDcxB?wQ!JD*kzOXx0IimSCc(*(;a<3q#EO<^@ ze9d!oIaTbF9#&r#yuEsgb!XV!!PVt+2zl6I;M7jtSg6zHnvv`$oN?-UasPNPhL!D; zp{Lby#0T(f_RyBRemLL@$P^W`m88SyLu+k(zz(bmgJv_q#mT7k6KK zRSZ@6UzAi&X<=QLwRAhY(DWsFYP-%vyE#_YQcFUbwRd_eD_KqVFw)Vya!z$7|3Hpr zOY!^bd0)$c%?z6o?7FGzu6v6=yAKcz4&3;r2KSa?HCB!z47#`a!$D7}w7fwVJYP zq48L-QJQAN!2qXT$rs^KYCMb!uYR0@mVsf`KS64$c}OA2MOuC=Nq?%fl^KW7i8$v= z*?V|yywN`GaCU%8IB}4IaLmi;%gb2z8`Qe8oQ&F5{L;?1$egnn(mA%Fxc!`6wx4He ztjtbnBbGxvsEcqc7aX`)&0%5Kl>ADgg;*>lZ_E9KQBB;2Hhm@CiF%c+k$_Eu&Q`~H^|iLPRuYkmXgr**fUeKG z{Mve~Z@xj9*}+jxujl5T%8fuAGfi)VwoQMLgJ$%}^!2fW#B^anc9L$*jd5j0lgp8#Y`MH5vFQB#_HL)a){d^9bHw>llKpMTeg>x5A@$@Pxb%eM zau#dDvWsV%hf5ZH5x#F&BFmu**>NRSULjS9;oe;b z*ScsLrJOV)9)S9CFq&|^6?ea^|Dr$>Hm=(FaGh0JM9;{1#LG@MM8r&HH&Eauz34SHB^@o};Vk4qzke*%> z#%Q!;CsBOELXWZ3|3UP7Z7B@jQ z5T?xj5;aRL+mq2^d9$cMjcP~ZyYXOqUOB9}?y17M$uahye3NWaXlN*r=ZVhgIo}+> zWTa60s6Fm)Z56?l#7$^wI6LS2=1W{xtr^$g^ZXJl&TV%5bW%j~ThO`3oK3cRlQ8dQ zeDH933vrgXGwJO!F4@PFr-rntYlH%QMUwl6!v3l0G+Pht{JT_3Ou|3&sY$rN$LV4( zZ_0Dl`0!ua1P+B}7pUJeKf0{whB}nDE=40xZpv>?90nR5o8|2Z-DqE0hkax|r+(?g zG`P*Fyw71ie74)E@ZzgO-0Q)8UoF;pEv%@YaD}eHFPD+!&R7q>6u(+W3`mjKM5_L3 zAJnZW%Y|p%u;|FN21VV(RLbdG8uhZ$&-7!N3MqZYJhtVE;xSY4sGh31^ZAF4qZ?9`in3gw5l7PE;6Jq zJ=8F~Cl%P;N|0SAuC$V~rJyk4ARqw@N@lj|pmqF#EKG$$E2)590C8OVEA4SNdS4Nt z_y7y_bVpcuiGHthZGTzNebie&7tLmPt(wMdhW6vr{-mz6@Maac@|-~r*fI`!5fhuvdmFl zulYok|Hhhap#ZSdgpkSM3Ss`QBc-8DE#m{LBb&JJ{5RcK^3xZK&QVJ6DYLxXEy+LA zgoq-$xK*U&c7D#1#%)av_cC)#lIc1%2$y=p*rS$Wd06DW@#*UtrmpdyCQA@O?zer9 z1s~s9TkJ;7$u78D%u;bRJJ1X-mtg!>`n~&ZUTA6kuW_je)F>R5(0?ey0hEzTYTE_l zJ_hH9z*&6CdZ4>g>HB?FPHP9fB!f0TWxcO*ACjYJ`_FX9_yN+!2Jz}|V#De-_?^{- zq!(oG5EJV?ow4DVpL^mkmn+5}JFOh0e>~6C<(c7LAH4DpV6MS~#0^{E@~H=uV>R%j z{gNTTsRh)fZm3)YDYV)C1J~pG7YZ+d7bh=JDIYKJMrcQ3i}WcG2FSyV{|4-3`Tm!- zcDl~We^Z78PX2=v1ZR*%!b|?3H^CheWrDsUy5N!XIXGI6Sj>hIR|NSc-0UA4Ynj0-c84LCeNZ9jk{Ul2| zSCUE4i|F;NLr@C@Lf+xE?pbLS5iNNiSNsM2B7`l|d#1WZ{wjYfJ3Omv0HS>#z19`YMG}DxJk);!@;PsMOQ|C029vX(w+zU-(fud=k}=}&btu7K4ibD zk^&>+({=?|YOCGSKuiR}YshEdP)Be-gXaUp|7)kaZtB(&23u%8TzEON?u9854X`oVd)a*s@Q=PZR=to)cxt}b7|tR z)Z6=pX50CBW2F|wj@u*O#<~Ys0h0+nNA3gx*om1=pO}xy zuvn$AaJclum-ujOeR3ev#4ZZ-Q1IAl99eZR9k%5!c$fBhYIT&Vr3su5tikw)`rlkS z)3s&N*GDRj?d8F1`Vp}BFm5s#Kc0a(cEKS&d$#`S-rAL;^ktEI+7+j>DC`Nr6Mgfz zwf1Q0JX|eF#Ut}k{X*q~$>TtH6BhxO?Z5~DCY-~-1B8=sp zl2f!Q_tStvK>oeoJAjmhzjk0^E0LVu_ia#Qi!KwkIE+EPL~%5ZL{!R`9(XmUP{x&#}hwz^!OQFBLr zt-X0!qXw;7LpVRaK(9*7qhSZA?CG8Xy!-qBKY3(i9hSOXrcybbvtofG*mx{YUo0?Emt6ehes~?_9om&QBKg$V^OVcpczb)pQafS_ zGVM>rz)6HI_S3y3a16R*FxiF$$UF&@IaZ=QjMRq?JJ3`fV|a~iog6CerJSit`gXg5 z0h%pST^B;cx0GvVtueh4j%hlToAvo^&;U+EM!P;Uwb@W^KydBSgB7-HU$e0V=;u-h zhAoZ?)cFCyLYXnURtonNAWl@9BvP*sd;KFKllZUWHZC|U^9T( z@*jOErqimcfu$nZr*tP9kO#=V|1(jepHf;j<@3V?3k`}g2I!gNmV^RY!CH-4TX(lK z*rI3KXYDbJITMw3P_WGv$W`p}IMMyV`9IMRiP8VD)nQ?P#=lQ(fXk0x{cq!&k&DOV zPb!dbzF{*RjsZ-rC=Npe5oYwrF3N+80Hu1+1WN-JNbu8Zv20)&vFX(H)yW4-w?{@# zuYepp%R%}DGu|^5TUn~LWrb^r;+q!8Z+37K3#6`hn+!Blgfwh!sr2>jqSk{UG+h@J z^h)Dzqv3FkqX#}S$-M)ask2`c3j&NGpSBZspXTvekOL{j5BVI+*A|mylNF*>2m3{f zu+$Wh(AA#V7kZ^*P8+#QdadhggE?JA;53Iv{R*lP%&sj|Tmx(i?}~Z>Q063>Y6S>Hb8*?A<3_94C_ci&Z6_v9xBB`V;p|ZdD3o@G)`4=BolB&mM?pbRC>5iC z_F;%eo9ID8#q)wTs97({x54MX4&9;PFh7fI*W0~@~V$?z-7So1&jg|a_@J)@cY!5>A>xvA&`}&SF2yaJ`RFC zrVTDLpUemLnrAu#u$x#^UNUa+66d&lp60m9a!;KevZr(}&_LWBc&wI7LtPcpyU;E6 zR)pp-58wHV5_v9U&*^vJJv>A>5WzE@poby#>mi&^WS{@SMU7~GmVtg@^R9G_-9FH) zc-dV~eWT2R%XT3%dpJ7>kdm!Y5UvKgZFHG5G?3CLlzp&^4STF(+Pn6a@MJz&O-<=< zXTn;vZTzUaFcEl3)%1E3NjjKh@D9dHmsqv&QM)=BAP8MYz#m$LCwe@=cbm+EZ=BEI zy(ZjLD{<}3gM;bE$fZ~2mH+LgMx1QpL3RwOD~ar_FYz}jgn<}kt2*GDdM(`0v&#TO z_V!0*bB%MDj;V`;5U{b^iAi1b5YDN*dK_Sf?vyS46PSwwTi@Y?Ye#E>q(QSG+<37g zJ#NDd&hlrPIhIXt<~blUQvmzO{PN|y?V7`M^3{U+tD&7xVcdA~wa#+aOpn&CfB^0} z0!>o(qpG2NwSpZyhZ47LO{i>Xwn9QvujSOnR7$^Yq49G5G`zrz?cl`z0MZ%5QDD2= zwWtW(AKRJ>aDsZDYx>u4AfuD0qU`49!_RB1#@`qzr5!X`Rq3!TMyn?2w<^U&0Qnbi71xJ6?PwUj+x(;0^+eYWXySiM@XuOd}T%2>`XFafru0D3Zc&6V1a} zX0Tm%*+uL?czz6AsG!dI!Gi1aGu=J;@_rwofIO;?)Wi@5 z^LB5sUY^!&WrGcxDgd4KmguCZ!cV`xauK-1tKIv{6mI9W=SMjv`#2N2-m;Gb^h1pv z#`8KU?b4NU>h6s>tizdlZQOx|bywppQ>HWRsfYy@VH>+CyP7n0dGF99p; zi1x|Cs_LdxT3!W+!RiwEX?v@E)IC_&ur9yrXOU+)=EWghuMonJ0URtun?5+RR+zaS zZzT@knN+&Y!Rb>=o~N?zdE9xl$wL7h%u#TlMTL-5BK<&3KFiCI zDxLX)Y~{4inp-<@QVG1PL+t!^%U#3MULt0{Rzgc`HpS>K9P`DZ??!FlXn0I}bmw{4 z>ZZM}zuGoKhFauaUS3Fd0e?7u08vWIw$aq+N+*I|ek7bCfR`U^rj#w26Wvu*kS<}H zKQAR))X7-eCxgQ{`Z$6@{G;h?IkI{$7L0otPQH3P?NnWg3Q4unl1@q+F)NH?^N2&j zRIe^wc|=xJ>TIJ}yuT1^*9s_?nhg#x3S2(g=2ps8wNQTpJGlHte9(+_T4H&~$nD4} zyFN@8L%umxtfWz0PoFbL6Va9$Ggjt^r~+ekn6rz+_>)dPjaP*d3VfaNIOox-W;m7| zAG&vRhbiuO(`jwGpd9_})=*(nIMS;kUk$dj;`QC84zhQV2;%g-7Sn2u@Mtt@0 z#$f4)G8A-KJ4^s(J5_#on8ysE6cGiSUZdC))LAza--=0Py@PG9Ym?4^qyzJQ1i%rL z{}AI#1Cbl8)>IAbQn%BFG#aMtvT<^+^VG0TUs^d|WjBJmc1-gxC~4(jx`KG{v#YO< zu^v522H|-1Lyv<@Gp_(`(>Lv3Fqo`shQY}2?gI}kwDxD*D@2mJTS<jOV5HtcpV z+g=;5WI23O=Wc0$)Dst9k5c@;o@wu#cPS6A4j#qr4(c0?hYH}XyYmA`SJ&dy+SH&$ zCB~il0`Kj~Ga*hU`XnzYxTeLnL`XXk79j^wspr>EQ=8-Bb#<}&z}W#~n7%8>*C+mP z349xvM>83;9ZnmwHjuxlt_7H?WM^Ehbzxw&ziXMXb_9W&gmUxdLF3HvV1*2d5g&v^ zr>&NVKtKn!Z{-lYHmh1_?$5%{ufoaMSl_6aqkuBCnNnWmq>#v4sZc3dsTCUS3 zJQj8`i`VUX=uF$POUL%$O8d+HodjYW#&^ax*Od-pUqaem2)I?6N2Q6Le^YAa2*A?6>}7W$93PO1w2jY z?oO=Tf9EO;*IGBG>qDcD7)#?XlwrMfwUZUOHc~NfQVKtsADjk&5E=UaUg<-R_W@oBHHZLB(ju_hX}&G zu1xU38!>{2L!6^Whm{H(HfD02Ue-CO+BPqo=sJ2|NONYKkJT9D=vQpHmwND&S1M}q)-MtrAf|JiMe@fx8f z{$~p{@3`$b#kMid8b;J%ksMY;dO)Y|wh}w>U(bj7$lljWTdyHZ6Zhpxnx=KC?v&=8 zokBy9>LG#<&%s7ScTnV~Mc+J4dWj7^idWN@9&4dW&D_N68@&37(nZXJh5xppw2SH1 zBw#9Xw{GG2&{WX+h=iJ;sj1pF*k3ZPw1Ph52+T+2I_VO1SBChZQ{8fRM>K7XFkw{Q zySLMfXN{wZM~On8e0<2E8PZ8Ipy`YPXKLycK4-JVl^Mt&k{`PEuvzMN#LiK6KJ;9`Rf)PqB8eiQUlEG+VY3rjKD9!>H9;v`9PAPOFsvqVkv7>9|!Hk2N0K z!WJGxaLfcOCH)s8{A^(uHofMYViG~6ZQ2z^Ei&jL;P~zu52JWh>eh-~J5=c7?!f|u zU0w00S{<(BQFf|wx}AUNG^D?F@kaz*{fvbG=OT{DETmoOzEhXa9f)Y%Kn>9?5JAlX z@-}cJ^0dAmep9a3iSWES#nHop%D#I?y1d^@MrOZZt^Xm^>HNsHEKemRZvS*>bNmp* zhn9g+w;D zgCwjygWcSli>9Wuv`F*f^@&)e{E;OkCR@U@yO0_99KI`3&2rtwYlqFa2_BJXPFx~<= z)mVKFqOjL@YN>$h1MSOZD@VvX9onC&HI;V7@^t4hFg;CV*nV&Xc6kVxqKTy(dvYr2 zMDDcFqeE;o>bTrl9I$jhsggXSXVhhY#dNr`UaRn9In!zD8)uMDNlAe_&BaMjf-@v< z#dLCWu|3W5VVEiWb(^()s$ylQtF|B;H6M@VcAQuX(g$W0WRUkxaa?Zsg`!Cz_}lJV z&pfE8fgi|n&t<1aXSwrxK081Q;d%j&Ze(9GAArH{|mP;F4mId3*=IlJnMw;cGdf)nkxhgcB zq~PqAW$RPG3C~ln9LswEvEELL|1CFEDI%grI=b_6B-dEkGLu8Jw&O>Hrbq6ypuk<7 zukJ4c{C{NfuIagO_W1P_6T=$8O~+A2THwCGYiSMY`w=#~t0y-qbbMU9z|q4k#1^01 zQ_YkRJT{B`Ho5w~1gj;pF3?v?d*%_F)hJ>#Uor2*?d1A!cslz^f)Du+sU-fC;CS{N zort9_9vdx->ms|YFu=>M4rV;_GeGyqgFGHGCj#g95C&T0cc|ED1RFzowk7UUF2((4 z590?w00rnAsjTf(D+_Paw=F}3IA>t^2KRu#y6ejkIA#^cZBeCvZBwzn4i63_UxSxd z^CUTKUX_hk)h94ZBAw)->36IL)@$h|F&C18~j`Lw; zvtt?45DzYcIFOSg8FkCQ0-54sj;#4PUn9GC zEJs5R-$DmZ+0=fOs^+<-Tax`=M3Cob zV4?Zs%EPZNw*`#cAn%P%np;|0aMAi-d25fu(?G)1!LcJ$I-^UY)P0d=d3~7M(Heh^ z4U{Dw#MJVFM<*hWD2z&ofv74AuORFoBfOx(WZ zjGiyq>xk+8_KlL|x@ zr~-TgX=HQr=O8c%eg3&h1B>#oHr<2oH8DCqrqxBb$K-sg=QqG~)lv8b4jREkxU=q7 z^K5pyHp4nV>`lk>eROqogA}Cl&lk>Io;{^g7Obb!per6tSgF^Mpo~BkyeKwnEg_Iy z@eQjipIz5?Fi*`gbr250wQFoHE%v4At10D^CQiOq`x*82_GZ6J6RsI9Mfw#rA*>8B z$^`Bpz2qb@RmD&Y@(e&)D5or5D1UzsQqfLR6Z#jM&mh)Tsqu-?=$K8PIo+h1sX*=m zgk8gGlhxe5so|F&s7Xi!8Otp4bcoR%)r5~owKd$-pDpLmXM?(XjsMdU8i3aDg6s#P! zUDbZbQU^ta7@QriZaOjG@suBB(Nm01)Tqc^R-EvZ&(DGJfYUpOgJt>9 z1{JcSNgRsz6;&)a69cK?a#Ut{;FLdV4f|PVs~}JFU}}x+@44 zYcK0L;ETvLc>f-ZiIsrjfImjtGKDPh92ARwa?s-I(c;b>&kou(YsH zu6_lImCf{1C#R=bmT)6^z6tiXKPN>kFWxcF#mZ=F&sYqXdU|>Snv!o>J*kT5Mg$F& zv_*gg8nGzMRv%>s<+XIRbELxn;$cvW862G&=7>miEAx+L(98@<53=060Xd%HTSuZR zU<_HcprZP|y4h7fRSD#66+nVamY3}JapCvnqE3Gx6+4tUiUl_OjDQK$K=KgeDbfD4 zh;kOSw=dx*Jg(e#@NspRTtnt88`Q%7!cC9_D-eL{pQDYB<$#Zgw zM(`7xssD!G)ZF<4#ONC_BjkDUA~Ouwzv5qDC%{+W5{Y(rX?|;H5G*%9KA|E0j~e-% zTSZ=h%xHeip!ogm_n-fscl!N-6J=3I!RF@dmkI&{>YnI}5BWn`$$EY`urCEO;P%EopLQj{E18H`Y{myufC@Q1m&DUV< z;qf*$+?Pfr?(Xi9o!6KKtOj9ikwUo4`p()YtjG$OAOSi0O=Jc7_h2r11U2|39K7ZU zPjIN-Y6XzKM0p?60lHZ6a-lfP?kQXvRg!i*%*h>!uX16Lvat!FtwMbOhS3)JufrG+ z)S#Kfl*lI#z&Y>zf^Wv-oGgrrv@jOp(&+puJb&j%7;=6hOO*rb=k`ewswNGuId1+i9q*amw->b8AtiGl{9& z63{|D1c&-PRMLV5VMQN@lze(}5xO(p#pg3Nd~@gDnfVUFm<^a|`(Iq(?Qp!>+8u)R(if7XrQvj#+k2PzYcC`K=I|g%Uj{+ z(*Var^+v_9c~rq-xt3wG@+A%Nx`|ZtfuRbWW6T1MWo&=G}8q}^a(PNu=TSLK# zg?hsYYzZtiGxG&Ny(#$lymtb1arS1R1|Cp*$4634>r?n2O$6DZ_+ReBCm3gzPAwx7 z5D@px5J3X~1cLJNk>9?3L&B(>Z~rZ*}X90HN8D>f} zj4dla7IP4WfC3nO2N}3VV<#Lz8kn8W^4duZb2n>GCR5YzLBK79TqrWVKpAUG{j^Pw8>b5W*CB4OsF`!}rP=$`e zJQQCMsnY`j1B*W`vbs1y1gmt2b0%Af5?JCSn2k#KfUhVKQteOleMAC`DB3Ip*ut4> zjs&Rwn%EdbV|BPARDAULf#kXMUBz`tP}zw*T#}ru!KG>)AA8LTnYpp}Y@z{)e`Y@U z8AMqYF;c8QHBJ3yiJtODPA-JG)6h)_k#k6O zfVtB%E?>T#4-LqP{IxQZf3FNas@(I=h-lk8#^YXo9gvx{4Ve+5bi(WX`(WiDHa$ng z$Z1pmnKn*q<3bg90jSa~Bgl@dW#gzD5X}a0OjHWwU5s2$4 z(Cz<7t~KNTB5?HdPmBZG@7!9gz6sgl;kUd#Za`vNVE?j|Zi4gLvH`u_mWW;%(IIlrizB$kx4EO7p%s{=r(qu(}ZkxK)%NO!F^f*wjX&zYleII#gUln}2`!EpQx|6j2~y$?tPLU0LJn|Kq?c z*WK>{Ybhx9F9Z?BD*}luR&mv;J4^8#Ry5LGg5yHBAv5Tfh?doZq~5*VT^aUkk;vXi zAxb1)ht1aA`yY)_gAdj9Z&S}QpSmdMu&;K*& zt56^67)q#kt4^R>0|pU0WBtyDKVXA){Rfu!(ITQL+ z9xL!MMyy@{JYfqEye`s5mSesnm0AgU2fhRdnyQlOaU|ckBe2uDf+(+h~|$xy%+f-72AsHz=Or1T9?du9-5$t z1lh+sH(#HjD;9rtP^dM%EtzxZseOh8R&6sNTw}9yTx>|bo z!be(QBxsno+Vm3z47WNbcv#x>BP8}*>RpqPxRxhkD_KrEkEix)mkEj_f_zSCt2vG7 z5YN^@_d&VCJdHxpy^7>#ZlOUwqk077MH10?sQcM(f=hy=MIWPBoW$B?US$WSUahqC zD_84=SDc=gweAhBKXRPOOoj84{;YpsHsq^)y5{hVKQrls$Vd{G%1T)HiF~V&c27{u z8HeDTNSx6Yp~k~6YAeK#z8GYfYxg{8o~&l{kH77)+r;_BEy(B1n^P=QoZHe7&HOt1 zx!dU7XIrywsW7pKQYX=%9`^JqeyNq^E3V?VN>hxwohX7hk@-zPoMGFzDN%A zz3p%F(&`zi|4-S-FR6>(WK=Wim5-CpWj@6^#oj%CR&40u=PY6&gf+#2BGij%w~r2a zmau?{`Sk5lv(Q)fp-3B*sX{zV+~6$@@M1f(C-d69$R|aU3(O}^^hRW$xkpm`eXTix z(>SO`tHdza^v?OcP^&5bsK{k1MB_JKu!i@=3bp$C5?1dmINe=Edl2WH9*l=K;cu&9 z#r^Ri>G&h3ZBOq|&Q;<^#zVZD=|j)3mOQk;hM!d4wd;@P?z+0+4Lj{Z@iASD30iM?%?JaYyQ9r>_};torJ zS+}8#>(kYawQWB?+g90SOGb2?cLH6j!>g^Zm|&YQo3PAO9fDsxdi6@S2+w+n79p;$ z@C&DEl9%Yr=#QgV!5SNF9E&mJOf$;u3P}+$-oH6dGEX7{)yuMZSrBk3+EMDdpMz$X zcz#~yTW{r7*foHWz2n1xp$z$MJt}r`UdB;rCA4#F5$gBTc-I5BUx4IY5n^OV=<*T1 z6Gl(F!w$O3+~qIe;~JacYjkphjI+P+G;c2-vF#KFqr{ zQQNeUHGD<&^(ZFSK*iTLEf{h1B)G=Z?7; zd9|(N*(_8EHflz`_iF=Iv^If00r~Ux+rR&-O$kFF3hy=rJTNSDT6M037Y0tY_srVvQc3=}I-9O6ygbkdt^7pz_58t>x#|;MNnUoB z2CC;Y?Z1M3M*V}UeNR4;)2Wxq)^NtM8K{@xgr0gM`N8i+`5rBL``emk>V8~QTvUHQ z+l~oNW2ySgI^^=wOn zjvKj0yOAdk9?{~YZjPtJjK$j9o`kM+J4ZpRNppjwVe9GEgPVZ)rp0fp20r<2Kl z6HKFg`zh+}`0{O5Jb|L7zo)zh?B-$M{SP>FSR!+a%QoSFN$V-o| z6k6%hYD~iX_QboM$WHvhN1j*5P|p#v=P8&;VIQwlCOjgiKPHph!kgW~l`Fa*{o~1< zGoX~&?k??VKP2;hr@h8N;qjx&c#r+Z0oo5HJh#c*_Qh5jE1V3VoURu{`6u7jScbUD zE!;@*%Y4xxP7rBllb^6?m0HLt_vjg_WK2h>!c+)gLb14uAfK}Zn>hnr0#*$M0Yw)c zU~ycDcHa+&07s`v9K;dU*(qck8!1A=r*z8N?3X!x2 zc!uGQl>08AYK-u%S2tySLm4u(^OY5P6w)#R{m3up-6L;3S>r)Pg0_VCP?5!BraQl7 z;P&{5=TbuNOcj}ZlD_G!Q|Jez25w%(&K;tf*rg-LarcrtU$x6#AxS)WMuu_n=FM9b z&AH?RYn;rN6p4a$Q>`68IE|lm1B(1o_gK*H+w!oPd+HIe1{onaP1eQVXKx`s>{mRS zL4uG3^@AXv&$~fLo2%h3s)|^rXD0-Y7b5wA4 zjfo09E+^gcvVAdU*xz7S&k|Q%d65bs1oq=w&ChPm7cURbwZP^fRmI+q1WxD4U!J`w zRMO&)bs15R#sV{n?tZXvN;u9^lrV}hD_$ncfM1m(YNCVb&-f?M9~jmAc3TAZHNQWw zIo`s5kk-wpgBl{n?fbQQ{_T}3c%IIl(tb-TQf-qA0v!XyKRD!8l)&}a)4&HICY@)G zfNJqAt@>1fWD8*EVftGxvmOtK2fAmZ$hjEh>junh-R)LDmsju-e`diB@0TSlzd=aZu^YFW@9KV=N^ zVT|Fr{I)kO%ynvI;`#C@zLPVP!fP8aLQ7y8qOnG|4|f04BZ9>nO!fDi{A+`{Zar`J zipER8MWyBeH|e7zglO`S&J012kGwh)`r~jeK+BSX{}-a@03x}5s)cf3TvPVzuz&|c z3AW`qO&gN&GRc8&`J6czDo*o+QLk}n=5`0LV~q>)58k|a^9kwV`H3!ZH==;y- zQvg)_Ut@sT$xEm{{`Vj@5H&6pA#LXpAr)X@_E0diXq|NeVmvkfC8z}mAkW< z<1$~o&mFU@LYAEAoHO!*X4tt%12Lw%cr&&7!kAu zH6Px8^?7N!a5qz)#-&sRteN%tk;O#CV~PSAnYpd0mWIX~D>MB>5g(YZy&BYACX-$i z{NG979uN9djSE&|W8#22fa(34D5Mm|QzIF6@Q-lx0 z>7v-7xJH${gdF=s2PzB$N)rlcc!y`^Kgo($hf?L;U8!8P-;8X*Unu40 z)>Qpe{l4NxcRDLVcj3q|wRIL<6Bncn+^71?C+BaATSro&#yvY9;&aSa-ww3dzVdhx zCB|yecQ+9Gm#^K^rh1BRAM}wS1)Xi`Vj1oAb9ypKO}ew=F)5~(IAtF*{Ee@xiKCNF zacx4k1H5q|uq3Manaw8H5mz{1ZqjjIy`M+3oOX<_9{hsroU~w>*H@ufnXd$BJ@<^- zpu&l8#}aS4regFoF|8VE!1shVOXf+n{%8^JEp}SEhr9SIMTGjqeBxG##dctaQhs|* zan$gof948QTDo;}yu8qQ_SMIaAAjaZx*n`x8g?c4Q;0{;9Bq#4{&)-l9OXS;ZZ&^# zx)1XxvL&U#tIzG?W{|m}R?4T7O5)WG`(6VCBY)CWckALd%=Y=WxuvZL9P86rh#_%p zNPK9b|2=VtsB83R!r}enDki?yK7mkaCdz~7QVtRq+ zqGW}UXJBMG4~;u=J?T(nTO0%}xp<$Nn4}k6i+{i*_WHmPY;R5$Uo~es9Ad%gu_qdW z70tMQ(K_I?XEH-o;kwI<6&-1`fitLE{~{I^U77DxMbgIBPZQZf&86CdC<_EefQeYfMTrYMa5`c}%;%KEiNg zYuEXN4p)qpLYNi3!5ib1&1_RYC$}|mbbaNM!4A`HiA$i?$h&tHs!b@hURT7g%)`Ao zvE6P$X7&PDkT>z1Tefu7sqLB+GkupC6NG<7)aXs?^taSEFS9Ip87Y#?nrwMGFK$a; z;p(?`mxFn!J-5Wn2ubmg=6RFA6H3VA)D|zt&VT8ClQ*8VH9Buxre1T1EGejM{R%`2 zphN9W6NZ2&yG~?ULXYF_T+7MDez#1z1TI9-*!acPbUmY$CBQ0)oUG*(SRdz?&G(Lu z;u3qFkRrJSoB*2J?-uZliNP^9H(#j6Q^=O5=Hyant~o_>F4Fq>?Hl8q`@-$i3?oNP zEX=1OwPkNenAjc;Dc+Z`RKRi)DfL-G(;^Qx2_>w>Ys#zHHA6I{4}LxUF|2K-+VT== zYpZQnc(v!7CsX|jK&_)Yc1N7ny=yAHd%xmfMxES(^weuUogf&+28wC-q#vF0qz)&J z$4txaOGaShIcDxo0Tnfluu90J$2|dfEegcCL{4Wh{?OXN8DE`n>JII6E~*I6=G~B_ zuBpb6$(ZKl2$tn%zAjbCVz`@JjoJH!u*)0Tr?{Kv&P{{8E6c_b;D8J!angG(yXB4? zu}Jv!r#YK;Jr|}hNkV9C?mn?6m3-I;W4otJyQ=0Hn^p5f^WIb1-o^|vRhsNYTLqYsQ7k*isYC!J`_Bja|k;!Q1=o@_IZ z$W$(TPNSIXr&?;N0}84uL!C8Q5=jDHAz2Yrb0(%VA1EcGlzAxp7Q@lzKYVPTFm)+mw7|H0c^KxMUd;i8`{C?MUagmj9eh=O!UhqOVLG!hnF z(j_e=jdTh~hagCID;?5t=E5ESIrseM+%fJLca7oR3g5TZ8#A6c-#MQ(t&+$YzW+>? zyJFe+&Bw7wE$%`p`p0FV^{ZN>3DH%|s02SrZ?4?%ru;J<&t68-9gAmIxv&C7|)ZJZ!6%k$G-uR7Q zLV9Lq%&ccoA5&8FCZ}i&yV8j@NAEt$G(WesvU6t2CizuCNXXF+ICrR6Lw;OZ?)W8H z?@2pm9Ib_iNq6VqOm>(Cv%gtTC^Yz8AUxxXgEp%_qVj&yboi%=E82R z)J*$C&@(f}^Fi8kQ&TdS5S#8An*^_oi3`zVv4`(%rWy=u3aN}S@b3|Ml4+MSJY=Y*__w2 z^Y`w>@=+c38nsxV1M0lm`o6<{GP+~$+tP&N)HDE)#9~ic0N^+7l~^*>jVqdA$vJZx z`^}8dRjfXA@Ry0f=Q!7HaFoCZ?vY_LKaWRW=+hzSC=b2aG!e19b7k+C_L) zGM_j_MMkxF8|SF8x-oXH58T*n`owl8BPllAV8_2I()y`(xOHa?5Px@xZJ8+a%|`rJrPpk^f>SL<+H)JwU+dt$lE5jv~3;n+f=hcv)rrz zwzyhU`$KQMesjVZ)8p+0XYj@!e;`?(SFwnEK7OUPaZK|ZNL=WtCPz&SSS{l{c+*in{%y^2 zS*!ZZzyQxkxeKY;aAA1pVq4%m=X}+oZ>8lKi<$$9Pu2SjbM4XISYxZ6uo!w@CQzoM z+kpctynEQr&f{NK1oRdLllhU41dtCIyu`i(&txxlC^35r>-1~t!<7W7ch&22{5-Bx z@2HEJb@FlQ#R9?wNU`O+`-(qtm2LOWI{1NuWZmlXWul8=ZSp-aPm372-S7?Cg)MKc zqm`TUQRN&&s@BoaI%Ws+&RoQB78G05kHKw&Iv@FLW91J5j8%5$UX4~1Nk}-Jr86CO z1>9V?V}1p-Yx$L~J^D6b(dfumqWFDId~SS=n8N5)+Q3SEt)=Taw;Co%#b*M9<8l@$KbXYtGl$iQ~yEz_TS8q)L1GOS-et%3Kr7)N#}CBS4Cntzg z3r@R{eR3$Y_DwQ{Ll*Ulv?a>EytQMIhZMZcjoF4L()?>hm3&eg(-CeLdBdXjua38$ zU~X@3?E$08Q|*TG`UEunEx}dNL)gqb}RR}RGb(~+JRi$ z?gh-{VgLLmqKP{3+Pn6{&k>-m(2h-iTa;&DBC#1(}@q@RR znK4$e$b9;;H71&0R}t|)$2;qR*%+|=cw)5pPI#`GH^_c|)d;`VxR4P)|KaAUtRsH0 z`3Ygl@={mY&dUu3N`}-oZ{My%>yK1%y(d;%3^6`MoMV4YOiav2Sr#sp3Ib(#pTeUI z1sX@&I37Me{likZ4(((Hn{V1oAnTuNq65qxb0H&+#N(t$ zD{@J*)cIx$?_Up)77I2}J@xiN?`brTqf?dS*U*#Sl~Gcw#0uHb z>ELoKqdUBXXDv+gcwX=$_a`FjyDQkDOTF4xe&jqN5%~4=x^M&#z@{0Fy52bx;JcG} z(zod-seMa8N?7RAcJ${mYhK5q*T&C^xNnb&%Z8~EH?I&0T4<9$Q6|RD=BH}e*3b) zI@*8Ht$t)ez0{Wf;CvqMxQN}n;G3|TtlAlGorxDp=gl=+miia^(+C5u53(K$997Q| zI@~dPqgAov)f7BxuiyUtncx)E{}NHK;ptV_Q|d10u74)sf6kesQ}a4X#~|(m4U_Ed z)f!pyhUp{oWA5D--_NK2Ft&0MW~fHse0P?hJF77Q0^YGFp-UF*F?b$3gFG!OWGA6(| zv1nCOmObGB=OXJ7|3>b>?&3G8haXu51jxa%H4YV-oI%;y*{yAFhjWLBi+2Thon7-5H9PG`)O8H8e-U70057vij-~C54|QmN44O|)Q6)2=AGL;y3_>9FKLvjlI@ zs$}nBAgF}iu(A^UNt5535JeHw69dmmbWD5(qNSc`t!2JVZhdLm=jjf*HFO6ezoSU` zUlh1WEJ1Zgn@L~0)AI7n%u@f!t)xo&$hhXSDmhBLmD(-1sJywu)mP@mukvCJ5(^dd zz2;Ga6c^^}Jkv0W_wiFq7?qfoy)agfecn?nc9(7}qF#A^3ufQ1k;|8`Qw`;94KIiw zeD>4M$8MCvBr|Ij&oRx8u+XyGu0WQ5Eo{(Upe1m8z~Ft@BDen9c+TjqMZY;2kHcl= z=$Dg-sWFW#bA1TW#MCry9=B;tY2({tyPFJrZ51zGe0DSbb^EZ&mfs_g%wIOPBH=;u z^QqY4y4cdA{cR70jIUi-V)}sB?m9i?5j)Apr9FePs2Uxeus!GD2FcZzpK#23%WIr>l%6HM6ssfiEMv~u7yS5 zMA`V%XDeLGO_deCVmP;-aJ_f0dE%(pydS$uCQA6>Q;AQZ`Lz%)TRB-?DRfol|HTF= zm{s$8zVTFrx34r`;L67AAgm5HGgw^`vqpV+wcp9Zl~7h%oXl$)s69HiEy2;pV-G}pBu!xRPn)fOv`Z>uPfWlC}1hT>iMunUa`W2xG4vYLeIp{ zEgv2XbMrmBB^20JtBDD{7Mq_hc)g!7Kjstzci)nQrgyNNY!;)kFpwzFYg{zoU11$z zck3;v!5|)DDPVCdw@uF3cjsBz`D2hv;Ai_WU*e;)n`yis%wL28A{z=#T(uaeXcizo+ z38D(mzuH+eStYpZd_eb|lSeK=TH?)+ZxvDx*to zIX6{?+RWR_FTbeB9ddc8a`6GtP#l$sp_HBwTg?pNpIPr>B9!tK9WJYni{&KM~w#MVI*2z8K0m3r7uI&Xd0Wqj&Yp zQoiH{SuK>)Z+e7(NZ0NoaI`(WY9sorisF%&mUqVAKi_(LGJRrJzMM> z3iX?;tvU0RCfSoP4z2}_%%oihjhH1|xw%L|d(5TfWp<-ho44|B-h5~*AYhL6Hc@J7 zY@GZ)%eb&DtID28-=1!{yC#3StWo98gE&asm)V~)ee_xwIXUAp9ii?c4e9w~%f&~_ z2X}~@iHB)v`@cZ+c@EWU*LEbXIkQp0)>vPaQ+XMCzB5^3lM4xkmPSjkfGc$2NLvoV zIx353s=9F@mCsKvQ@PG0^M0;46XYYf?Q5K`qf{Oh+=E2x>DR{HOP~6b^)EgQeMt~g z=)76fnQl1m)w`vXRg;H(GosLb?(%~QI&1qZUq|vH6C9A<%T+<2ixNK#)iAJ>AC3R+ zVp=^Mgrl~PsV1JwFIC%)-<9hdi8=Q%UF#anw%zP*s}TOy*-4<&5s41EjRX*IU`W}A zR)1(F6^7IA&Q=VL>j)hD+F&V~rInp%Z&?pdr5hHcr{6#bQQOdQ}D%{6oG?OJWl%_;9qH8VE zj&F^qYk#XJ2Y=^f|B8ao=HZ9NjtVnUKzmF4me(%X_I#@xE%F^>B#wxfZ*O_|Eg;X% z!+)%o8^Fgzpl!`$b8Xea`U*cH)Q4lvk2%a_WiONKLa2ImEG@6dtVgmM0_)eGbYlj2 zYgYS&C1NMGT$Z)gQ$>$|nkcnUn2h%YXp4XA(%nosjJma5RUWohmCH4me`NfoMgGGa zBB}=mFTDe;Hz`O}`vM*gx-Fhrx#xH@m%x48<(-#|C^YS+>X0erLtk`%zljG|ZdF zdV>zxJqYpqZ}C_Q?LPKu(|6%al#SE91;-`_BK~HnGfz)~M_7M7N_^8|^0WC0AxbML z+zUOt;TH3mi4Kj}Goy7qs@FAzMfk-k_o9ol(%Z}>-z;sdcd@X2cpvQ*Xm9*BL$j{u zVY|RSGYZLGS1R%!1gI~}HRdipB8B7KIkGs~To%i^(a${wojCk?CKW#*Zmck!H{hnB zJW(kH4L^ zN{*6^YuAhr9X~!d6co2yIoz5#p_zhS9dm;5+)dydWSHEZ-Y&Q=xSo+KfxA2;tyuy{ z11J91Q1=Pynsd9Q&o9DXR}Tp?V!um^_dXL-zHh?i)|<|tQD!Js>Ri2}5GQIiMAs4X z=|`ws)u(giUrj5DX#E2eToOC)*JKY7S%6(^^8c(O$R-%b&b`0&3k~dko_W1!a?gu7 z&T!l9%?mar>MMelk2pGBwh;hv4ugi@Nop#la)#2b<-oOfD@^OZ{` zGqQxsr&?Y{P{{wqkZ%`KMzGkp!sBqjW}Y(Am>oK-X7hsHxxdCelyHduIc*8%o7UDt z+^yWy5dsteW>%8#i9x=MZw4hPae=GliF6*$M#Tgoau_g7$?g^{>vvz_aQCd zFe&u#LgUa7iNMS4^Qfm!pH6sQcl|Qe;A{2!mohaq^^Kc1&k(X`egPbm|4eF*JfRHn z+mJ)JatV{7F;=Y}n^bFT;}Xj6XvA{44U~KRTR=O#J}P0DUn@~1lO0|OheQP&{*QeL zIxM#qtUd_5#55Zw(z((bIdacHcAOt|xNhK8iSrhUK+*WeciA3Vo!sOq`^N*r!_$F+!e8&)yDhn+r4tRffmz)aTytUZoGwz|N=JboeJjF20@WQLlJBkw}lcBq%Vdl)8 z9~R`(aLN}_4XX|(=(P{luetIP`kG)VS}p4_gvXU%h`5e9v2kwMDf~&*r{n}>5KyPgvUs;Xv@XXh@oL-xG z861yjSuJd1_a0>A*K*B!O$L@%%2dUZ)LXdB#qz6CXf_OVS*;y+fIJ)f^}Cq|U>#Gu zc_~+DpL%tj>~jB$J6mzx&Hz%Aca~Zi z`V~S}cc4>vHlHA&_$aM7W`>v6g%?Ac zc^C=EvWD}pb!20_a}C_y!dDuuXu!z>`&7LiWZNFJ6_c;c7Di23J8>DATi%QfGhel7 zfE<8kr46z0#aT1G-%x|}AiEr64UUbF6k^?9DMV7!3yHRieMEO1*s^Sr<&%<=*OyDi z^?&tdMDp1(gfpqX389snYPiy)*coLqw?z*bDDKkBZ_NDzhs=v0wiFyHTz%*68=>FO zstku|v`*VA7F`lQ#wwUWU?35}5!qT83$I&+aY$fMBs{sa$@{5R3L7!~eF4^ECrw6O!mv&!Ksp8Do=k}egO%-jUM`2*w6p&IYx>T$}K z{K+$76lbLh<8x*!5M1x=k&WM;Z#WpRrIHwXIMrIOUIU!Exnzb=$L>&eEqMG5A)|9;O`z>7r1Rh#YX<%)P=HDq*7nur+SUMO_^Qm!# zZ(~OoeRjB!`?7w-CwpqWcA4&oY^Nz2fNV=1#=*9{f$$Wm1lu!zh&m7%WQ~?tdVkyg z6afwApX1vttQX|B^Qqa3_m6qS`sP;ha~V~L3K$$QDH(_eVhi7mX)gOSyqx1}#{UQf zZ^_SjRR=T-#zuF1WQaLGEqOz-guS{U4N8IZ49q+QD{>oz#vLu~v#yY)_^Zw9K0dQr zX5W;EwLRlx>}AE=IHi10_n2Gnc!U?pPIErv10OuGu;5jHX&X7%*Eb*g+W)zxc1J4W zfsvWNj>;h&@o#-;+3geSBMZZ^EP6}|K0oh}w5iq~CIe+ISF~M}_Z@APHwd7xBhR@( zQW^?s+{^}j%q{F|1>G#dHM?BdR}>Emro@nA0E?R3`mZgDRtszLm7}vVhigZaE!NLx z-yR>KP${OST^Y%NmC;^w<995^$bb=21Q6+3D`T$sFKx$J{6eFiix9F0ht7LQrqnIv zrndQ>(Ha$e%>BgS%Oh%9!8)jCTKl~Ot=rzNcgW%J{kGvaq(~lR{#*eIK&E(&<}f?CNj7BZ)r<7xsK z67D*;lVfHh13wr*U|Y4AJNj(CmwP z&S}wi)h+8p`B>@ULsk(88<9-O*%%eiw`OyWcJwLuB+3O%an&;Ud5YvM_qu2}7WqO& zjjD=R+J@AU!=!jWP>fKDd6$3K&Hv2b8une*h1=O6v^zunLUN3fNV4QMok<9D# zT}~DaxZe?-v!Q>3FhA>w=l1D(RSI*9RBB`s^nWI({5AEa*i2*E`6=}+**G7dbM?GP zf^2B=x|WV?j?9^fOk%|@AU{D)^{uO;SaXJ>luuPk5mbuyf`1ci6&14pIT-p{?#*i9 z+14=Za_g8GH5vAuisoO3w2XpG>X%PCT}z#o`H)9wRoFe5m212DeBc_QSJ>5Q5DHG} zz2K;hJHmiJ{&rilsy*v%K9#vG5)Gt?P8l=UHP4<#75i;I*V*st(jkHjqPD);dD6AK z%(A;0UqjObO%7s--G-18sr+t;@)tb^^%wH}D_=g#c3+8xD%mX&O`iwE6$*Jp`LDCH z(Tlmb^5p3u>mro+=zdU1N*wxCq{Mgj5>ku*bIhrN-+aWY*4;X)heolb_OvoM3aMx= z*bVxp{8p(F5lx`&l+TT`+ZRJBc^QuXEyhivq=Lh*CxX|p;AqU%aJyx}~MfmpY62skG}6tuat!gDubA_-{EfzE7@!bVJ6pr{%OHp1G!X-4EaS{Fn1~ zmBY(sj*6!bnEUqu$iFH7Pvy+%&HPZEpiyX!1=Yd3d-kVgJ@CvRcPO*|Q>*M#=w&_6 z4)el8zktN0pkBe;H&5?Od8O&^k>MK&LS`JLdo*A8l*t zP1sn(rVmlX!KYuTwiQFc#{0u(f5t~g`1fiiQT~Lw7`@J{sPxBaTqs@m3vzx9HKYWn z8*_6qoED>)kBiO4dT#muT`AC;mO&&icU$6xqK<+B&P6QJ*O#!MUJ6Y4*YeQNCWlND z``(OY4>*3lAI1=dz0p68MEqBwI>IxMtp444ydIcL2%E0G_4NPZ9~tBHP4-W@cvn;H&1Y$M!s*rjP6mo2~|NE!A2ga{+DA54)uRUpU`Fr1ft5v<=MSc#^zSUu~Yj5uS zYjA&4Pj~4DKc6*m)$$!%{e2&DI;B=L=)dodG?a%-rd{LIBST_Y$VG~(Enp&kp&WzM z>fXj#%y-K|U%G0MBUl~TXcTBf(IS_4T>PIEdlB$=A$$Q3ZN1ziAf5f4WsGkg7}U0K zj&eKI1r0TTw-NCX6ScHtiY(Q@;2?y~j}p&95KDhgB|~Wq4s%g!>tgkZkkl`yShYKc z(yV?V!bJ5)o=5clmQAKkh;&e>p!l;dm5!arSeQT;7w(6E?V~ia%!EWKoRerYUvYU5Cpuq8B-di5)g3ZkosWe}!M< z8QWY-E!t`da6hSsug%DbJ$(37{!fntE{<2emDL7=yuLmqWQeGdvi<^xN(ySI({0ud z32)*yYaknsyR21=E=O@UR5fO6rdIeJ%VT%mY5^{18lb?O{vMH0-u9b(g~4V8%hGGp2bhl-zAN453 zYO(Gwh^Ili6;B&jYNe5tU~oiwV!}lH3Z1ui(Tcx4W?=2KAD(A!K=vD14R;^p^Khj< zo%#*)2%{zlD!lr5-6W16f~!B|5*Bvxl&T{;ELbAa@`qduQGcf3Ekey4m~|qht)#0x zX95cqHT|qHHDXT#ZVOjvQG}!aHiwR{msfKnWqje?8pies^Q8QnnQSLh@(#AEl=S_y zh1ken9GN2B*6A8OvT&{o!q(5*yGsmRgRUI{qzwnIq+suUqfD<`I)U*<08@m6yW3h zeZ%f)Vddqnuo(0&7<`UYG&kk7nb^6W;s>ubke+}3bRAs&L)Ms#f4^QCRn9eytPZ}a z$UUPdhs}UW;4om@W>LVwVRw+ot3<~*biP*o%(GIB(?No*RoRY%Br>SM1ln<`OjGqw z1rF9ne*O8cA-~g^XyU_6dS=8nDCKv<$5vpv*uDSWt=-nYZ$$>TdZtp`aYWH|LGwY6`LX(#%*^d27Zy4h&@AXn zh9|?bTfY7?{{ow`f(=UV$e#I$z5@D$$A&}INy$Wo{_5Aa@Zp)_XUjG1a-rL3tKcbN z2x1P9%O`Cqr{j;d$^^-2@Ts^dYg6Zg1^Lux@2R@OV#uGMT5NwMcBGPAPw)gYUT?KN zvtm8tTEWZH-Jq%XcRBAqv;S*1%wabQj9u&rDqJG5rk47U>@{n z-aNaDqK?Yp1lvScQNbv!R3S&swaso5FkMOxf3J+>tyB9Tk=zAce2#kBMx3uilV9@* z`=^`OPpGGPR7wOasqG4aain2oxmHbesorf#Y(pP}@jP~f{-eemJX14MU6af=+5Q-& zN|I2({fG|l5#7v7JPf2~EcE){U2DCFhRU~`HiY;bic6u^(1_kIYl-Y7O1p2s-*24u zUMV48LM|HI)77EQ_xhN!%=oP9*&&^yRrMl=E1sziJ=K5xEDeftb&pG9XO*6{lRNuh z=iz3YMVl|IzR&qnb?oU}MHg=Nb5t97NrZS0hrm9f)ozj=jr}K9t9qBC*s(x=TkH{I zeEHNE2iNHXaa7lnAqUQteUD0>ZzT3E=LAyyBM6bsJZLk9u|~xSxV|C3a^h*ke1r%U zX71>_7z3(xa4Loz90@JWU%(Vufg?kHp`82{ac_1^hu7h2lx}>W?v(zgdWEB=1cV}E zCw9-P$JBev-Q+4ymZeY4SJ0_3I8QcSh;QxulG0|7;jZJ_BW<(qh>a^Z#h=^V{<<#n zc=iX3Mug;#KUD;ZQbv3(o;4k6F%8wHVYF5#HTo;gzu#VpsvKehi4oh$ zh_APwx#oxuQ^MZC3DHX~@F-G1Gclpb3X`M@Q^`|MdjQcw;`>$k!qb*PZ8l62LXIaC zFbnp6_G_r`aRS0KE9V?OY@sObnL+c^L#6ZZktWdEq~O}`)4JyBBjQpIU^AZRFWlM< zAoJtEZ^t@@XM3(T*G3YRds`RbVh1%KlARR1u=5Rq*CCmWDNX)LJ6zWj=TDW9VC2RB zGGqTV)+JZPhyz=4ZxR1mmZI<&^?2+!zK4{j9HK!u7Gt$wqfoED&$ia(?`NiKjFa1H za0{OkyuOzM<9qmD!Xkp7{62`x(h0I*O1ig4M&zPNxqu|iIBCP$UY$PuUBh=9Wo z4h3Ewo(F#xMmS%wycs?|vQjh* zyjPx@rp2O|0*og?`qvnE{~g26?~}M-?uXA*&4|2Wd7xfYT~RskrBHa-il2kz%FCR})&i&wEIK7;5CY;QKcWW(bCj3nDy& zqG%iwkrbl5$ch%On)o^%tFC0}J)tlBQ?#sARunh9c?vPAaHZ@1(_Jd^{r{y`TGV^~ z{~Ru*?`N}>omVW_^oBznf^G8Q_v*)*_O$f=-V=ti|4uC9fAT`8FPSe12UKnFLZTY8 zu=Wv$O6@IMwxk{MXDiSz{u9(u^ZsvrPcogH`B*?+yqo8@yq(D(qq}(dgNVIHF8r%V z)R*q1xNxl4%m{asd=*T7DHEX^AVzS*#n?*uqH6xm)q6K`x$%uXJs{v1)Hz>i)udr%S?0Aj;=6Y{m_1nO6nASl_}nx(jEI@G%BtAbYdcx zv>W_M301Pyi%mPnBKb_wOOv2hAU_Pb9E-@>7a;0Q*%}+{ETG0FAtf?rF#l);f21s; z83oS!d0UsE<-9g!YXtK-M)$Mmqqi;+R=E*KoO*>z1lKQZ%7ZF~W<1i?WulTY-yVITZ|95sr$A%Frw3@eHq1NMBj7z?0tH_~4&B35H_` z*b+z$<3`*a!?}k?F z>%uLYO7R|Zqn|$?W!`?D*nR(?^}@ym3@*QrFkS`yLZ~ETdRDex@^^Cv6B9MYY~5!x zBYH|U&;^byzoO2Os&K#oqdutN_|5z8A?L* zBQi=~pZqaelI&h@_hO;2XF8^MDp2C{OvB!%ouwATu}w3?`QYQU$!csk0nmPtNTi81 zr(8?Joao<0T>kSKJmq8N?S#(e`=TBf>)L(^ae}xeRK<%QxZ$I#snaJE7Q89?jxL#k zpOuxRoAL-nz;@vj)6I%ndA+>=#BQ&Un8acE7Wj6<(HdGOX;RkHaN%jUgw)#UGjn*5 zXTGLk*1MKa6eF4(d-lxG2`Ir;I-8SZEmIBt<=0_hbyH{m%*7+6srHSe#@R2c@p276 z%}&4yf3)i7UOO(ijl@q%%}l&TXs5fzqP~ypn&EdGr!yL*mOt)Ce%8vOp`;APUSaq? zrbn&)UPD*+Ibydzd|u*FdoLk1v*{%jkOyH&Ig`L&H_1`kMsDH&TmP!>7;BmX;s_B! zcUwJ;-EWkq`x&5aNyfDBk;cYE(>%Te?=;+uN&(2T08pkMxm%r&@OPY3tTB=|u~=K_ zL@y!baMQZD&YX%y zG~k@~Q^AG3r<%#(dqD?l?uV4zU!C>x>%R+v!}q}#)I%6z35MI7dv(HSg9>#YxbP>{ zj+B+MR|5cwg1HTJRt1Qc;P2K(gMencDM3 zZi2q!OFBH2yaEM7ZudHUKGV}|sH1Mn|N8Cl!rs;Nj^^esnPKEbgo9wN2AlsFKga^M z4oAHHM+cbF>IqH_Ab&W;r6>eD9Dey{A)C2LmK%(x>hbJ)VO9ZZ^mqF8Ho0qhla*l*bHBiE`onEt#5WRfO<`qI-1lCt(diPihW{NV zc)duz9~}PXjXEQtu!Ni;QcjzyrB;%yQ}T+yN60- z_|o4MzWPFfww2WX*6nD++{euH#cJPQ(oiNPHN!V4Kg$g!jxd&5vj%y?K5{(v5Pi$P zgCk#UN(`&^Xn~8pbm0i`d_IKkqA%ObtN)k8IEEuGjMenNAi!TNnzR3eFHBsRLZp{& zb8vuD5v{AoqoxrI=Z5frBg1)+LtIW(_*wQtdeSgEMfLh24KzkZMl-U|RhYy>f4h<^LnM8YjB4s=RIK1`(@Re?dBDxFoOQaPhq@V7*Mij|&p=MG&}KP2M@2Zh zvn!_uZH~#?OI);aBy&5V-dE^fO$~f=kHYbZ&v*S2`Fd!z-fB_e;(eW8#0>4 z-2S5ccbE!KKun1rEgUyVCcY9%jK%D0m8^Y-7!kBn6~I>yA5w2S%>vabOefsCX+{54 z6yseHQ-cOPo>;Fi#cn2rXfqN_CMCl*Vq}si+Z6as5Q-W)K|tf7ZJHGd790c4HRvEG z`XYqWHb14TvXQ|vjQwvu-;R!eGBC2I`B6!9M#nRMG)ex!qsuXN>Kx|qYU1g}j@`!7 zQF?zx6!kx@|8F!W-BO9zTo~M^&j@cw^(90EzkrUDM5a3aoS_^W=Ocr3Y};kbyNkW= zx#{tM1*fY@%3#-_n!Xzjz{ z!{n=4XrUSWOB{~e@ zTKs$Jd)h!|_pv&G4Ra22`bN;Rf?giFwC;oJ>r=PKbAs&zN;ET70e(i?*et4BAenf{Od z=IkRno+-qw5izn$wB1=0M!5AJ#0TK<54K0OcB;MEcxKbyn*Stk0Xvm0)P4b1{y4uE zjJ^L`p)xin`Q4IZix2rRj_*Y{ZUgrnfdJ_Fg>MSeH=d%k`T1R~)EJZ>9+U=C;D6Qs zqWuaD90n#-x)1{xO;FOPZEf{I>}ryJ&Hyd*ES0EV%csvBYHz-)4YqX&-ssA*t(Y+} zM^9FG*V$0SNZ=js+qGx%D{>}TV~aoYx8UQ++nS&6od=q+Gbo^ud^+q%Ua3nwwKCe2 zG+`7xA7U?gWfco$_ip93gZbVL)2bJDxU&cG0b1zLS@_yM)wvx-h-;K6&fwD+#);eS#b+Vpym^Dx-aT{(E!XV1MW z3-p1LQ=00|rp7ghq{qOnf0Y;5Z*mft3m?#SGgDM_1OMnQak9ghX4OSB-x~IH+}uSd zi(cICE$r`82^*95XQb5-@PL;87ibVyUCg#<`GF8J`DE+I7vg;dWuzhiLNsC^cH zFK=;y z;RYv^SDE7_)G0ma#yK(Qy&OQJCyVbQW&%w_TSt?yw8~++<*yH34H z7qr|(VDox#))5R>Fg6>iD@{!Ge*euYRY$*Tte+hGL>3d-Za*9KKlFx|*g)T(o0GN6 z##3kkV;!{w8LXNyXHeAmDL+{=$K}x$5<3Q5YY!5!Fb0jhsIm;L7E(?QI zy^Fv2@fjFK{j)gb@>gMk;D`Ld@Fcq3PpG}@B~sh-_36jFz)JrSkWb4`3$K72azywMQ(=D{NX#(!6x@SoH#P=JU&8lq z+#}$Vn~kjk>NB9Gd;4*^N9|I^hpxu)lB$oI$M@d#Ktmb{q;iowOV_V?0SlV}vD*yMr6Ry) z>7{Ka?&4r2KFUKJ*5_Z)-o;jo96s1L@EH+r{S?poA%j6Ht-}RuulFqqKUOBojen^Y z02$ZTjA39*O>MiKijbTp-Tpou z2NZmhuz9mxwYrx5XWPo=ElLJ-;4PF1YRZR&otlePORi~YY~C?Is5q1KJ%n|=ptt_1 zVWDE3WUBkK4>!Ss7yHWrKvy+adwApRpzjh_&7|*SXR7OuyB{r=t z)b5nKaA73OeymQsDg8@tI=+k0rIJd2Hu88&zea8D%olt4t;1+kW?TGivpuM$#XhFn zB4cNyA1Z~;(qKk29=4Y;g=p^i{|5o#!mM5(M0T_Oq9MdGg~?3Bj}d7387HXFufkqu zNxIUJwlCoc2jiR#pHN9oPuo%!{^h1%trtI(n$j~m`#Og0&lYrQJ&7$(71j9KINDaM zco+C0lVh_HCdSm(5POm<(*EW^SeW*7UvTd@b-QO?sr$jwWp2@b$0aPj)*^Pb`X5$7 zWCU1deZh;=kO~aDN<(QxjO@iNk9b~#E_O7nv=nE7Y+z8$2ew0=3$b0Y)yJwp82qI< zT49d{h*3Zxn4T+%on9w!szyTq4eMp!ZXpZyUD>w|h<~>M_Z} z?wSv!!}cZ9#E#b)$Ub~(1a!c2!A-TGMS0G@`4BEy@ym0Br_6(Y1&j>GcqGdo*Y+fn z&v24p^b#9C)T%i5jqlEkj1P4p$ZrKB$QX# zhApyH=6GytT=nGDedH0*YJaE&ul?~uggQ_DW*B57__>^M)Q&iIvYNGfKwfIVw(;9MH)es+aJSXc7uCWIgF!dK(AGqwlFu6kF zH9o0X@{fBmL;{cBOFW}w;0bpMYUL3hMDoYhf5`ftXPlm*y~uqijU^=#nDKLKsi3r)*zm74H-J#Dxc>F}dQ*!j`{`0){?gx^8!Vn$sGowN!Y@cn4oq5cV^`gJ1yL+?bWwb+C!Nn3Cx`0gvG`#Xprn+GWhH&aD0>C}` z|H_pdLKF$ip--So<>NXa6NWM1w&gU92mw2GV*nXLIL6ZOIoQIyn@?lZRIUMjdJ6+! zUq{#CkUbFyF)~qQssr0T(@bTKb_&9aPM>g`F0b{XgsPp=NE!y*f{oO1&Qgv zPb2!fzK$?z1C^xiIPh6Re5;`l9{+Bq{k-~LT-ww%03pCG@8FU6i&C++Gx}eIBg6lU zQb5mJRsJvPa7rhM9FtTcl%}j4Y~YyQQh!8t@09VAk>E`E&-<~AsvJb4M6j>nx!Mu4 z*0ahWl)$gc?O;|0+e?k6E+?Bvk{?kOdNVOxE-`g~n)&BiyDiX&L` zx|!TLsa6DzUf3JO4O4<>2&PZB!}E7BjSr0;&<_Eg)Oi0lo@`_228LNOFi29ZnjaXY zD5h!ri;*A)KomQ?U>fGo;uHfz6*e6aKz-@p&ws^ohOYO(p@fsSBZIBHr$YI5zBG~T z&_58e;MM|IJBYeMmz@FuPMj;4|0`&c=)3F>)WT^$wICXc%)1HnU-n8g+L}cCkrPO@}^uc>sV6np27J=Ew73BDL!Y)al8Azzf$`D6z zp|+N+9+$I_8V-KRA#&<8P8{UFro;8)~WtXAjZcVzYh)TZ?42TZM`p}$=oD^(DW+~JGUIh3ouGG$PX{Pga= zb!esJ*1|XW(u0h%>$kOLm2t3CDygcUxAw8l{J@Fcnin73zc6K>)HM1{dCGN%mj8yM z@T-s6YZNkOM(jiU!k;;S9ut=AYVoa(VcoAy@e|NYyT=lGDI?<>(zXbkTT#2}_P<6h zysY1Di;1>b9;c|C4o;_;-hwqFjemY<4vL1*DVLR zNsT9%LU-Is20E?Q@A)0FT6Zv_(t#N>e{6ujRW)V?t>&OPL6)5x@6%qzWc3tVwO|-; zN=#X`pzW0vM$G!{VS%a5u*XCfYcSGKgY3^sY>%f4XUe{f$UP`||Cz3YP1;oPd9C)Y z8IL<~V^W)4;1y`x7rg!&O8d3d^9WgciG%qTsy$T+mfYb-xU0)7fhvc8#fq|6(@uu{A?ig;Oq>bi3gC!t~3ONU!TT*>0OX<5h6YM zX^Y(hMofMb_{S88bLP3_GUzh)N4oi;e2G&e+4c3-z~#HU zItF)#?y6|VvU0>xPdN70Oidf4oxJZ|RHPk$aL7q`cknj2q>@*DHu)^mKhIT`8V&?~ z&>34>q#oqp=pES8p)0pr^v1e~A)=uX?M&F}ZeL#G$^5t^*($mJ@0!bj0kx}WM0$Pc z-B7kVxidFhYE4T}?{T$mfIS)b5U+gRp`~oisF2hC0?ZMSE?a!&_nbVouKKG*Y%yW* z=g>+H%_}>3TqF#M)0bWlsf>})mt6x9a1y*;8`8(s;meV4^Wy$+_X6e9Icl7GuWYwswz;6*U$w?r3RzB!1~V~o$%J2uNzDrqNXi) znfn0laQgLn4U7x*A9Tn6B5=yJkW`U)sAsI|0vR+CYTj81X(EYh=Te^Z-?Q!Tq|32YjQFr;+k=gi z#(j8IH>st}C_XfB)nUcO(HecS{G)H@7YRC>SuROz@*vo6eii+vpq z#u8^Q$#rQ#apaUDr=`6-pF#PW2moaJJ5t$)n}(44Is1o^fT7yOmhEYQhhzK0Y-6O05jsQ^W0gCE)F>lxfN&&XjtkQ1vv4bQG6XHO-i5cmLf zJ?H2ixL$W6ZH5VoWp3-H-E(BR6?&hz{L#4b^g-01Oe}!?6X=Z2Z9HWBW3KW2B~-94 z_kPiuoblZ72;x8$e^p32%Z#BDGVuH z_O}l&BZZ~Ug)x3~bjUK>+t}1(T}5B#;3RT4KX{abPavy7ReE$0wI;-`@3O3ZA=FkZ z4?Ca9CS%@L-8GkcdWxg~`%88=+xHJvLp^83%GgWH3?ALdwYuRmR>F0k(|LK-ge>%u zsRm1s4tnl7cQR0nf5fjvp*-Nd)9vV(;~37p>T4Pr&)cvg?QB1nP2=p3)gUs?T|007 z{e2I6pm7G3spHy?u$s6NQ`l9VbJ`_vdfJN6$ zBr7GB2bl((OE&FM0t)43@zIdb28&wxL-%HF4w3)`H%K?<4jV`v2=}AScU}e8A5~^c z<~2EVF-OV-(SIq_1kWl#jO%K){nm?_+y%(>)aE}Zdp8^+Gi_v4^Bi$qUdc&+I!lx^ zv;A)f>x+%`;;8L9h?Y#1+{&-WiamBp0>dCq&28F^s9(IlmbDgfy5UB)D!V`NOJ$Pu z45R;6$t=CCW2oEina;`Fwr9n)7yG$fNKk9c+TYW@$cq}~lzx2z!aO{vU%PpW^wUr^ zs$A&cS16zZ#d+-|W0<}rQ9NJNzblS@?aT7(An^FXt3t>i6B?4KUVz4;QV^cDPwLvS zHAhqg(5a3TYZA+rM?u~J2o3VFBuDg*C(89VIk(9K$T>0c`0tG`%)G=1h(u_a8#5Sg z2d-2ww@c;|_2NiLw-ytYXp5L$+GyT*wD=AW6dL)vjT)>J7g&2tZPXSs99QT&9|BtXp(~Vryo(%)d^jFGefg)oq=r#%4 z*0d`t>QDfv_BMbTmqG{X64;XfA`zj6zxg3Mwi>)PfJe?MLOE`uU5u36>&-w>4VGH# z*8pXltgI5=NSZhhmz1oD`&>=Gc%Q-;e`MchZ5W)9O86w;6CcXsj|Yg;1bE1Ifb(pt zlX@2|XVPCN)~R^WewWp0_u#&ZJ5pgewBwF!m4^2DDbBH2u>w^SfY($$EEk~QuA1Xf z{s$IHZS3qYkszz{Hov9C`R8I0rL63CShZLmgW!SeEp|8ee(L`FJUlNc!O!%P^i18$ z=SLVE0}gvTQ`sSCVQ>_D2iWkRk+<=n2Wdw^W^f`~FZ3ZLh&#Oy9CzIQ5d0$~eIq!s zPLwi|yevh=0JM~1_liGMLGsAG!%)qknHJZd}?NMu{R6Q*f|- zy0SfGp402mlt+a6lT)lbx_trKMfW9b-NNLK1ovKI#9bY z*H^$T9qU&~VO~yWw_&@wgZC*ZNqhIxt;TXxmRXsdYuhLO+(tDN;+Z3uK%gsGw$%S+ zKMK_+v&$v5)V%W`cq}bl2ee6TxTL|83IV&N;d3-&+yQn1NdQ_%w=bsS{Y`uQ?FkML znna=e0P4`5y4=+cDJ^;!JGv?apc z#W9qTNoDB9+(6dLQgP-Iwjtj@-3J6O=Lzy zDLapY1oRz?-Np-+95a2RNt3T{!2GP$Ub%~KH!ISP6*NrcwY6zS9X6>b1uf4AW8hw# zoChd!?TtzGe?XAV(&c=1tG(Chr?GxyxgLC$XX+R&NlzT6+$>l3g=*XQ{3r?lU-`k@ zjWFn-DCRkbW!V1`xcE!-Ef*Fu0!~3FoVraRRpB45|N017k|o)(z&#SBo5j9QniP za^%5}{*Y$LIJQNo(oWC1y?Eh07dqgg<)TE1j!o zd#fG4P;db4hH6Cvm!shl|8=nBP|jg1uE+3s6FRJJ4?-~z!SUA z(x%)FoITPkq{aGd2=Z}2Q>s3nC8~y#M%dm=_yz^VS*b``cWgh1OV$@x7Xd>+B~8um z3$Gi&Hue`Db0bVe1hZHl>%ugK3x!(V_EEhEI0j7^Q)lU;?D-2LXo$;Tyh|O8BS=3c zlK3>GeV~m5s(IPxP$R{rd%@x(Lk^{YkkRPc*OFS@3QB z*KGh8`ToYF>!3428xiYVo6DYbh>Uy#v>R>nez!9Hp3%fEq&PMu*ZAek>x2Y!ggp)b zMPaD;x@Gs1@o=kx9=6CS?@Y>U%s}1RtwUbh%R}zmCloF`hG(Fi+%zH_sfpoTA@D2& zz-2IIwyyT8y?n$X{j=1SsKs8><;O!*Lj_lWqloy_no8*?)M4%fiJ0nmsorMn;`${1 zSOUTbUH4fX{euoZs06zxJ?@)-8sgrkW8hjxgBxyU(_Mfb>4H}pUwd*g!Q2aMNGcrTGt!RIC-Y*HPvMfhu^#v<3Qnv z8V3p`hFo4){`cyTMxpn&fu3m@3#iQB`aa`Ok-u6xat^iD7gj+(ty*y653H5B?hXrH zC852Pu02|V+eW=MwcxIP%4egWW><^OTa1o;|9(Rm_GE`JC^Yq7;f>>rA%8A__~(U8&idLKJ%7z0x_w99NWSn|fM-of1?0%8j32g#%_$CHq1M!5UfRmq zj~6=7lnd&9RA#T=_8DNH*)9s@=D$S9b59ggmFRb0>KPCUw#AQPGcuIUeb4Qk2D>uia55tNA`UYRB6!`Ie6v?Non5DEy z6d|1eB?cgSt^p&?z#PN*u>aOEkNj5;C_|*zxL%AGgpN- zmk2J4Qvec&0s@|?mglpaDCrNZWFt$Zl0k9KP8K)fxH;4Af21WQn}5u2c6adUvlWHA zZgyt^V`DtNdGAaxP8wdK&RFnD_BmlN$3roW%;-P}9BhI|_a#QoF%;e?Yzl>#?n|t2S=Jq-~_vNV{KsVp$&bG$Xrwl2~dA|_TFbO-~P-?`Ly zs|f8^a;&@1svG*6ij>mf=C0m{EoqcOxr*&5IG552vP@h3gzx4FWkX8ai8DVN%H7Nd)F1zvZV=2$%uA37ag+}6qAE4>U(p6G`eQy}FNqAaGHI34A>GuhOwFL^iwT1<-0 zES-NABRFM~_ytt2J7#alB>_-i(wQAVtrVQHky+csL+ZC#>eF73F+Y%=Y-T z=D*}^o~d;{js20&Y(la9pw_P=%dtfj;qipz_;jY^cSt?g#+8)%ZGEqz@B&En0#(Lz z@rW%i;Xdlhc8yV4S)zPT>94yx=P3pGu1b>~7<4gUB;3&qyFd~T#A(y}t9UM}`KGs^ zhW0~LTz$z1m?(O=nw3Mg%TNpZn0E(U+IX{=L5#M9in4_X+Wc_m$jC_D&J4x$K9u?c z+1N7B%gHI7+X$<8@uvS>MLwWz%eoYLpAO0HRmFY&$f?ijjZ5}goiCs4?F;t0mSxUs z{0&a&xrcX&VFOxDR4?aEgk{iv&|(2JO3SAHpkx0Bo!?6XqIr3;csMlov~{>;kiKF3 zf)W9bo9l%w=$fu8?e+i=h%nN5$LP^>Y5|waz^0OItF|z`W$ki%$2xa$4I_;8fB>x3n$aNXo#d!b zX5E7-2i%b{ORY3k4-9qhVX=^q*psyLaW|&k)_r?2LPiLP`A80PPy9!3e~h{wK+W}A zsGNRnuR7n*I9&R-Cp7o}4&4`WPZ!_+{Rb}~zXhG3({hQxl0$o%r;$-`4xf?A7|hWp&Ll&JnNCNDsG zM+~0@Is+2jOkBoKuPAA9q-3zQKuJC4leWT@ zx4v15dSml9t}%Fl-8m+seU>SQgqA=($JD25)#;)!#!X6Z77uL-MI)rUOxqfRiE=2M z&7k|}`=$UpKcYhCz>Ghn8%ugj1`YLr?qrJ-@Qr!q#>xJY|CNGgu71CO>r2YN5Ip_B zi_I<0CTh=|tvioZ@sSY2F^>`CJ|5N>6Gl;e)8{9@%~0Q;r#KTJyo08AoD?T?S=B}zxS5koGTKn_+-1Nof z^>`C*JlQ(4tiadD$8c+>2~VKSGHt%jteOANsyvv)i?i%^!lO=#6zm5O(WEIvRG>j} z@w}}QZy@Ec{~d-P?fo2jq{5wgWw1h`DEjZqJq<_+roC$ESv0-735_8Z4IRc!GEIk^ zsko-TT{L!AgPzE9Q#v*$Lr}V4cb#E|?4-Y3Q7;f@zyp}DF`tr$th?P50)uu82|oK#)~&a7w6=)m_`C~AU!oc!H%g!h2Y0dR^! z2ywWrf{y^EmJ6~S5Y85qk_k}r6JufdAs9~FUi6m0a3wj^MLzd!tkpanpJADzM-OYm zWwx;=Dm;V8q#chSuRTVa$8B`puXyQe8urZPUkRcL9Ze#9=ay%k*`^IICkJ$vrl?5m zcT4b%=s{L|x%U$XulTkXFZxlwkvU~H&|xR*6sDzcre@h^L}NAh$9ryhZ?n>69fZT_mCMi8q}pbWkZQu{+j^ zvjB08ye`O!KKiuMpAy4ESHWrWga&o3YhmF6IBgmsUqEPsg8zgE0Fp2~I&vIm?5!XW zMaF-tLhfP`_Jj?$J(krb^`;XmEQ|bEiXb`HrDIqHD-Tzelk8X+qXq|UW2e%Z!fgfyC6c15~AVKopKBdU@A2O9*&{JMQ*cyDMdgeNCh;zM+VwwKVIU zfL|>WQzyuGyYDTBUVnQPxbLF7W3aXnNG15PV06jE!pFVS6H~cRIr5$~B#5{-N#bAv zbSfQ^da5tpMm=HyPkOjEDFa|2jDy;`y5}%Ak#fC=6MFQSXLSBIG0;udM}DjZM}CX( zzF55bdy~!hNn7=Z)(Zwmi{0)2w&tBmhtiUfyaXoM6G&_pz*)1?ka-vri-&lWap7MH zIg}mGMzN06^N&2P21p@g@#aP0(paNuKzgZcKDnfKmu+WhK1#J&a3$dKc2?j+m~+tUtHbK+FCN8 zRah=;ku3>YoL4U?rSHXBRAT*$d~+`78M-rTHd;#Wc+YXcrg3t3ZpV(~o|IH=sX2*w z6GAfu$lEpD{aOGjLAGUlRe#WwPF{Mr+Oe>E8eFrAt6z{7uN_vhBRB@ z-6KVGRO1wuE2S??&89Z^XSUS>kzE9EFtUBj4RO4bk7{VQI~?TvAnpFGEq}ZO!|-dqpbrQU>m?;suVm~LBQoW6p=;5 zVOjtbLEu+N1~$o+0dbjtul1nMj2|TC+{NNsKYki1smhdlgivcT!%UHM6+&+-12v2w zK{EeH0KScsYVDgj9NEeo9yS~OL-B(C-`-nK0#MF9qZtm*Ysojt#ul+q2$#ubXOpvk z)z>WX!Q4vO`!-c~)tyP~?6O#QrS6@z8X&#h-zAfdw8{n6?Qw(Tm{I40p0gY(wm3i{dv#LR<=c^7PuibbT*Z+Xj3u)+s!8xQ$3_se z6=WBN_zeyY#D*OYDN(mF9B~u;iowU*Iix_{NZ}!k{qp4@9-@s5hSAj2BgvI}Zh@aqH0}cm z?TPXJRb-i{M&7hEs&|I-=VnL7kx5`QwT_!LEMMsB2omVL6}UQzy1%>oTN{?7wMM)H z_N)da9k>hw5oOKQQ)JUt#CI?P@2$N7D+z8q8p1D}6wUOP`#IZPGBS#g%|U3X9@4tX z*;WaL;&Uj}$(GndA$cM|X*XM`I9Lae^PJ%{E*5V!)Wd8O-c(#}k1HQ{RC0R)s84tu zFpb9P4&gy6Q|6vNRwTzcVDN{nzNaT4(O2^g42%Adx3S^@092%RH1fu~#qdr53K{fP zqz*LzZqJsX&f4%NWBh0SgQb{ThBr3v(Vj(V>1vXFBTq^u$}CY2-T%D98m#upgw(gNkMq^ru^v8&DvvS;LSZ0CccJ)7BpkzhsAHitXHaBpsN2 z<$NQr4syrK?mm@0c^D7uS8Ea2)QuN+Ko!SZu=j)s=zXU#Rl+Bqk}4@a)4|+V(AJo- z!)?UiGE=3x9TNa$S!@4I=$_uFy@hT1OO~td4N)^6fv^VrIB$1-K{bdaG~13bjQdVr z3ZakH?_Q_~=c+qNq{n>=&=xvwVx z*sL?4zzF21L9L@DnlR?eLALN(`tyvr6_0aq5Iv<_Vb)O{w`d5r{`z5I|4VAi!+m7m z%)erwP;}s1c-ix|-4|p(qpB(qf_O-H`oQqZ>j$4bXw4<4iJ?9${{1p6-RLalyIVM% zP!|>&JerD}SWZx~^f)0TlE1A7~m=H(J1FX$Ju@pkn=k#i6Ml`c??W+v9DW z5lyzXid3X}5GJ?2|0lcTgyK$So-FzMg_2Nkj%9NG?y)DNakt*%Af^$-M6G2i;0jiZ z2xaDdZrHmfIc$v+eu;*5T7(=`DVp*yFGn|PO3K_p(dz8hsN4ZLtMbr@(gx)sZKl?6 zMm0(+SKuZLQmxT~3k0xyLM`aV90sx*XWcf~McogB6ZsAI_w7X z^Pf*%m;AU#KWx2~Kheh@Oz~khX(t=89kNLKKn0=&@?r*IuEQ3iNcoTi z5#(=qZC74NMHMupVvqdUC=z@|O!-XZ0%yf%@D7hh^2v^VZ!vX%M(f`EtR@Pz*q0#$ zkS?Tl0=jAWzo5D|iFqTgmikNgEu&WZRMNWGD(=|Dy$G2O9@@1y5o4kRpiyl(4hRS- zQ(4NU_1RDD@E@|>yM%f&^qKN_VL6B**2RNQ2XkWW-HJnnkm=X7oN^m!IsLf$x)?yA zSC)t1K5(-27LV8#cr{M<2pLPi`cmjxV|n~Qx#>9sRTFj#dsiXT%r>_Ch1c!yT82j1 zbv9Olr%$P?J30uMLd7){Xt5GJAW0hz!qad}M>s0U{vA)m6XD-GP#%g3sd1)xOel{E zwvl&vor9L!NqegmP6r7Q67=lj$_df@Gr#kHI8$fNFF!Zv&%dSSzIPsEO4D2m2$@2& zKX9`f{ayL+#>AiAgWTI{h_SzyHBjqcB{+St_%Hj%hX$Ik%D_b=SMTc5)`+ zXC7^Un7At|TT^dw!_9uzBQDgHLb;n9mUi#C+2`Gx-MwM8@a>69T4~cYa~eU1gFOT? zM-xDf4iGzJ^-nn#qHb6WLwq_!Q1RadbZ4cFdnklWi@a_SaI6F)_IGtT`xr=Su*Qqv zJ5iOO^bG3WpgM?OrjLdQRl};WEa*dS+%q(ckXt4vgf0VLzLt5zVR3l{e&d!yAoyr- z&Px#Ky1(n#Fec;XA_^M|k)J3q8>@r7W9=kyQiClZ^N@8-Ny&%cwIEj1dY0|oJ$Jgy zun9L<#;*tKP%}$%zKswTpuf1HmgGlJ0o9`1giBXulvTPBHQl@7JW@m4pVm}Rba)OK(GxR6aO>p zc0{bwMri6r674>snCKs?wCYBKcjIUbHr18Ap00de0w;>da zC$*=iusp~AfheRn(J1pvHk@Zn2>*>fSz60GI4b>Y{!EBCqq7u=iwllazLp%B5 z+V(RZA`-R?9kTX*;oBmnc94Dy3<l)k0@BFNZfNRu=Jt1nY|DkgT%sy?9kkaPU8FVi20=F=wOaIz5B(MrE zexYJ1S*;Wj8vzS~DDo8+-j!$yXl&N!Flo^G8No>i(>J2Dw_XUj1L9arl&H%+jO4cH zbEw2*V@(|}nux34ZD);0>#^JYG(h4ckm0MD>dUAm!PkhQ*WW)s_Ow{S5`N5)f&;*2b`F z*H?h#E4$O>C{Q(RlYmr2LjeTz;b!l0mhPh6x-}In;ikyQu{-_L7bWaMy$cC>4Z?fB zs;YfFSg(GJ0Ud%{E>i}%rb8IeTn|kPRPMUbQbK&x5EZ$tUI4T=0Pl|{OH1sGZ0vHO zDmxPD>8B6yC||3jdxHWN2wNj_DrV#vD5325+CvseVrUrooy5EWA$tC_+L^#@35~Lh z9I_|m#KNaBq!x5datsbjf?_0q^=Ql8h>&f3C%PwoyWw(KAHZRo+4^MrYl9Er&st-PeZ zSUye`x6y0Ie92*lYl2b%Dl3s7c-D}b)16^(9!@uzNF z6VXYcEcPvPm2EXS4Hsl1p?8Q6mN~3Hn1tb1mms7gwx7mh&B@e+BD(()0_P*czn6}_3CH1@c?$60XW$F3(XY+YF}%LINmKRuAu*5@n+zusjCaa2dcQ$HgXal~Ebnt*1qB^NEyxue z-wy_0YraR$B@Oi9hGd=J(ztV|-M&-+D+ef4c%~Xbv(+a5H3kL=YCa{1WFsklEbguj zQNY^i;{~9V>q#D5LS@~UViTi60kad?@`AC-cM}5r=WD#D>ID!3s59T$E!i;|JPQT~ zwsux)M?rS-vC|q#2R$!AUU+wjXfcqQKM+D)Mx~52WdPg&B+(NA3m^v*v6}#40Bpy- z3u|ufZ~9w0`nGl&I4Zy6vAPc96Ap2_jLG9fY0dViI!x}GK9j7b za9%iR8;z+KQP_4zo&3b{WK8jxDE~F-{c7qH#hW5oqof&?8PUk1`!XsaDTXN_JB5k+ z%?)beEQEK$Z?Ri4>^?cWJA7Z)Qbg)w#2C$;UEbZFI8o@g*BmQ~+p43jR|2g+9>lEj z^m?-s9oep3yzk5dbNLnM5p_srNLkh%L3OLIx3n^fB#^1 zG9mf{Axb=)6&FQ}#%=sEXL#602>n1fp+l=iRp-`C6TFqtvgCe6jmHP8?Nyp-XC#G$ z0z`Fe&kvU3WDgduZ)y`Xg|KUcZ_WnvaTn|sn-2BfC5pX*FLO}8!{|_0l3>27v1Vak zKVJO^)fJ8_UCR)sKE$~mKKLE8JsMW`<(jPgc^uBeZlIP9%DA0E(Sa1X`j1sN z$!RvI2kn>M)Jl{KX=`7Ci24;-tRz8HW3;4@m2u9u4^uM&dz>4!VPmvU^2BwSaWye2 zl33VnY8Y!>l8Zt=q>VF$-kcoeZ)TR89}_a0nu?s-(U7Q;yAib;w9MC@p1Qu92`|8^ zZq-cAwU0Gs$`)D6Zg8XIHQ1kXTW{`-~%>U$?-19X%OI7u5ibCP;s?OH4f)*piB+hiHYA>?^@*9fNewQ1p zZ^)kU#Mt^?R2kB;H|9qZCqCWeD`<&xV1MHGMS}S1iyzAJDcXE%*WSN+1dANm{Xx08 z#zQJQxIxqA5hPVC1Q zM`Kv1#H6Hn?OJSY%kswMvM}#S7+uNHQa5mghciqm)QX&l{QSiF-LGI!udDz>Kc$ov z2?+**sxesbGsa#I#2nBXHCiQ(6|*P~g+SZJhcVYLwYpkb99_>w5Ia}1XaME$^!L>r z98_FLFV@Lhcl5poqq)k7SGD`<_#^Od-IQKf61>fwzT}rBUFXqWJ7mwkRUlY|Ab3*=$`#KOlw*vci9}Q0(_4oWIqnQQ-gDTy$ac;y@1w+8T|m^Ez6RRw>4sf( z9-;e}tR=AVM2?CGop-68;FJxd84^d&Bz9l8M>$ zwtz!lrVmkbn0Cz?x8>?6KMW04u0{gGlM=gSf>cyjbT~e>z(e%a-`WaDJF%+f9TAlpldXQ~DhL+nRbmbG09@w~kAfx5=q-Kj}Z$BZT$m#J-@d{fC zL3a*98123a(9OKa50G?*#1NatIZ10NBhFsI1-lGg%G)+$q1T4pUQn`fnT)YZ4%wbh zesA9R?0q9X_4C0D;k(+A$({9GBPKV)F!sBHXA6dHZxF<;u(!I0#}vi3J(%zOvhFtb z!sTFOR~u#q{VlVfs%xRjCJM>YRKa$O#Cl%Oc2)(`RfE3Iw%%-lU^B^~%&l59)%sa) zhAAb+_KN!Ct+@Ai$IDNOZ43_&CC+NgM9X*Uf`E^I(dK2{d>glHI`L3uzu3O?`p{IR zb)(ErR_gbCb|60bF~g!NTc(nyru$0e!;o=^QaGEYZ0VsVCJj(&u!OlvUkthN1^c^}9*hCkxx!mY3C1lPh8mP^>A$A& z2M$C@NaYfV>WzGz0FDZJ)N2|(uY@EIeMQhK@}W^;6^`iq!fw4o0!36<-Z&S2d}W`! zW%Tpz9+%n6aiIj+Z}K-R6;cHvHVB4ChO;*-L%B5=aJ#!rQBEIV~#dvRcq$BHPff_6BP?2+6 zIVCPTDBf6QEQ8L&EQx2ntO2^QU&M&P#tIVgzuJbP|E#TDD~ zn=;SHu`$BSF?%o75i;^~M}znG?Tr-sDRXyLeGBE*_h?P7mm2k6RBBc#D(j;{=S3y` zY~T5jXV90=X}3Cn`SC~^$+iR^@yNH|*8WXNIdtfweApdmdh8i-9qMxDvJv}`W9C}Q zuG1uz{zD=!)xRfahm%Pahv2~INX0<4>{3$%?uUg$#m`2DN|FWx=j%roe6TYH^y3UU zja-g$1f#o|UM%2}9xmeXyo)5N5G}v!pvC>*`dhD(5@&VCmZ*3-ifh}z}}JUS{+>npHlGudZ3qoKh`kf*~S z0MZ+abX;+|{=|EZ%S^R)Ih~^wR5rXZwe3-zSuwmZ($u0mhEp@-(<0Rvqsqr4+=%vN^#~PjOsh8O1bD~~ zlDir=(@#@j$4|&`Fg%s_a&a&!wQk){?z?*YgLAJZ^#)gCp64R>_-v5gn_9ab_udz| zO9wAVp>WtKU%O51m2u-GP(Jkb_a|m;ZMEn%ijy^tdzupW)X(@b-V#Ezqeh0GtmVwt zQ;%jkM)-w_Kyhp!i#4%-tzCg`tM zEno7WqoAwR9>@}T&Zyeawcx4pB3lN|c%_#r^IvXX3~oP3qx?E?W1z{~hb`9wF2fE& znjq&JDTQu3uj17@Cy&;V%gvjbwxNgh2tWg4KUH+SbUNw$xeX>JY}fXUsu-v*HrXW6 zL`%ZVdaqY@=KD`pEYf|ad}~|Xywjf!QHZT^1HRcC&ut2>AF0ylKe40e6p6q9U=i2n z7;Y+dXRP`=UU++S`}D;SOe0OJH`|#___gaB8SF$|U13x&k3PKE7n%1t_D6w)#{?Qc zYtu8XL$K{oNf`hLM`nDrO8Xbh8k($qLxYu0JDSkkcn>I7aLj0`1#E8nJO$MqSU(b>qTkadxhnTQpl3Pvzu@hTcJO)`!xz!EIN>^#*aS^T=5a?FQLJ=QfY7 zM+`U?-IMq+{K@tc+kNj3s2=QJHR4s|7Fw~n8Nc1F08*x z2QSdLZ=o^CuRVnSy9YZMVk3itUxqvH)PY5XEsNNCZP72sg?$ib=43uz|>& z-JYSYid-4lV+2CPw_Yf}>%Uy>DLR>OBR0-t;P&~5TX>W8fmKDDv+El-%W9Jb-tgIC z^J}`|_Iy*UU5dD~R=4PBvA;otLq_}>9C4<>)_p6188)@I#kLDtJ3q;g3xM-jlNFp` z$s{1u!BtTI5f=S2*vejc`rtM0HulwHf@yyaF{`%qpEjF;HoJsU!FN$$ZsI;y#0G;u znz5lg<;pHl-M2U}aOZqHG3_Q3+QmpY;%MB|_W2>idb7-T{7_r_eLp4Q5_~m{T9=)> zb~b?2d+zIF2dA+5-m!x5)|e8jk}u=U7T`X=#U_8*z(T=pa9_~nGA|Y;{*s~z8-rrn zA%S4JhF4pXOl=(6(ZwQNI^^0g&cUVlI?TGz7Sm5wMge}g&R7N&JR9*KnetRv1U~L*iafLXUD1o_7T`jpJEDnq78PA#A;R3B-UM=t~4{~&Gm~ zc+*r8l{2UnP&y2s-XX=O;X&H+JQlUjdwTWDwnEhb!riNaT08|@r$&QF6J|6U$5x^d zh5#b}<&1;GYzxQMQ(x98>5nhl1mkaq%6(#FSKxk-hHD3mLnMGk`O4g7;VL*kfp#DK ze>9YS8|+lPcK!NQ9v%_AK|iDJudKwnDVCG7wX`8O3sxmhz!Z!XITG;(NQ)e~rLJujhDj4nT;MsDR4iMW??4hArW10`xk0ED+`c)?O zc|$Ftvoq<)ALZdsazfC1+JoaKeqMbAK>ZwZnOw4ACFcAnF3*E_-LX&F>@XF6u0*Di zIlq2FhK^ia)lyC;X1kR^FC@r4F?Jmv%Si8+pP8DvM*QsEZH}8t->xZ6i%IWbp$rSm z1}L>T*%B)aq!I6Rna{3vf_@B^KCmDKQT0|P$+yMI^=;?762iKGDj1q+taMUj;ovpE zVUZX|kJ^gh!jf{bA@Yw^`9Q7Sp&w~AM+1ZFhc{yMgF9+=K?30pA?D6X&3ZMva`6iS z0qmI97^B;@Nsd+!6=pMzjg;)ZVC+4#I{Iyk^7wA3Jknq~lnwJ=>3*G7bU;w;Ou%Bc zO(QK1dAp2q7bAB)<2e(M()EPC{!D!^&y*$OG`sh(_M`AQkPO~t)9>f(N^JR6?r_vh z_NQ@9=h^djt#>Fj96o!Ah`xA#gE3qQyf?^I{c7mY(T0+~pk-O@VD;{A(_V7P6T!j3 zR~4^X4cTQgs`}v55cs1|CA&-LsN7w1Ow?Uif=6k^T}+gelzdt$N*$POC^vZ+9}U90 z$YIqq{wnO2Zsb-hCm9SRZH2(1;*!rNX^lUbuhP=`R3k6ye4!nS>^d*>YLg?^sCZ_! zV%zz*cl6tyA9)A7+34<;ciBA>7l|m_S{R^03|%za?9C=%sjlr0pWJA&nwZt3wHW^) zA~NtBmtwuIN_dX6eNGom|QPj*}a#wO3{ECD5Q^w!8F2bX3sdiKZknS@vBSDH0 z(^WK-$;%}Ll3@aC&#`spa2%B}`IHW!XGgj-o69{@3?x7khMmp_pFhY#aQySgC2V-5 zM}r@v*=`9;@q<_734t0xe;EldKU4at;mJUYE>;rJw1m*1S z>Ch68Zg8o6vL@n&-JDZT{y5s(+wuG7mwM05vZ>WTAfSD)L#4d4dk!gpF>=3jZPHfvgO=+o-woXmko8_xP z_5J_bm?)d)kIl1Y@~qOjcp)~d3Pp;8F}KBAqgjYi;lx=B0pi1fH~iLE8T1mBwF6|V ztSX=|RsAgWrD*y~@h`8$=`&>So+g-_wFDpEYGE4yJ2W>isq4adB9X0vbWr3~mq!zN zmzO#F_3U5gu73>Fo41}qO z9N3=|7yH)thaDLea<2U@Rk4WpP&9rXE{7a}FRQB|(D^+5wHocz$w%%7q-`P+PQ92A z`=3Cv{f{GF|BcY!^#0#ZosvlZ|NKh)18LpgGW3cFMG*a;kmjpH!))A_bpDyGTrD*LkxnUrWq)X)?a-+?q8a!jiopJh>y5s+{WamDL1OWb$~Ebi%#qgs`D z6e$)rC$aOy&xINW^O1a~xj>IJ!`5ZWawOPCjwbZbDy@^`uNWu{Pc)}8>WB#5#Nl$E zT)y2}J!ns^qEJf_y(Byp23+yG#sU7lSkltupkY6Wu4eh=!7IdC^RxJ@VB*%fJ^7Dl z6--u>;!=c!1KUS~HgUyAYdr3^D%VGW&sp8i1; zJ^h0vtUR_q9-#L+L}xl}*$=es__qxpq}i#ALwL#SAKZl`NCnduq^c+9ZJb^#Y_-pC zw=d$pvom&jA@T6xS<+33w+@JkQNUi5&2Bx zLM+t$VJN{;@8qglfW-ZUX=4YASym{I9k|V?l)&_D-yuOGiWuU=D;a?J_PXqeRA|)7 zl%HdHzFyf|NQzT;bzSQ)2y(fv0F`AF3Y%yxN$=&UOkcz|YWdR?7F%vvaj(LHR+8y> zU5N0~j)>+9%=~*4k-22MQi z_{}pnnrl8<(z;)<^}x)dJ-vVDz!7}nhwU4`eoOV=*0&7w45d}F=eCLEAZ9t(xtt2Y z(>twpgrB?DxEn`5g_&P>GHwkd=_Z0M%qLwss*Ztdk51=PtCp7sRfl*gqLQ(mkoxzp zb?nr$&;)lt4AO-04?K_;89$MH|5ez`UKVh!tsbst<4Ist!QLwr{_WYM&dYas`AI;==!LxLo`eR!XD#z-Gx~!SB5uM>^Ny$Xs z3;5{uL*{Tz|ARkQkAEfiOGv^qm$VS(Y_AL9%*1l;vfWuUQ}7=otUM}j3u)uZOHhLpvW%B$axbVOoI>wHCJ%TfJw2u@$ZX8%?^Z?cXr=qic@9BR{Ea8xlu&71HjHmV7Pw4$KbRJF{w?B1y67|vLLQ27^9}KF8T#jIZ zr$@wvzdVH^Kr)ihrsvfCf2`!WM=O}iWVzA3OzqkZ$~O!mtoF$xx3T5V(m0n2Qnxsr z({3KloW4T;^HrGktuAsHU6Mh5mrw74{qIOsZSOo3O4rDI)bnQgElm#0hdH0QNiCK| znV=bm#Y=vOC2--PCo1x_qN^g4F_^|JxAsp$&9J^%8P|8SDKTyug8q;B<`*DORRejK zGm@L~)B~h`i~4NJxGFz5WRgC{7)pOp)R8`PJAG}W|Bjg~3eWXwqlIN>mnUHKisBVh zp5$rsB#smX)ssauG;|Ar-Ol93O^;;LEXcldYBU~+#M3Ze2@j09AEVfUlGDnu*|)Mn zb^T2|p`1zuHPZfec75g(aDVTMPfU3tR)ZyF^&NGuUK74C)wChYsafW$U&UNb09&aY z`~x21>&#@pOj$_+qzmsB@vE4`TR2n`JNov|l%=;BMvNdSHaHmFrzF~+{w6hL6s1W5 zaJ4&3Ftl>Xp3<2v>or3=PdrTSY8IZDmlDq4#eT%A2q~y&$|9Ov zA0vTL?O?C6)ZQvcyg-ub*P1trcAi3Wz1IZfuVy|45~Nz?Lc$93pqf_u>{Zr}LKKt&?O_Wok%e!zM!6Kj~sIlERSo_!n6EAr`$q{_)}- zJda^|kId);=m$axhUsTui8fz38n)_<+~U9f6tU0xmHqf(9{%6&sHx>b!r9Ij8Hv6d ztnRlF?`)|~>v!AAST@Z5R;VRR)&EGFAP@NTKa8qJ+*J!(dqV%^RtO)^goJCfk#9h| z{fAAR-iW?gEJJ=163@G0I^!GBsmg#*M~-u^|8d%wx>a_T{UD}=w0IXxB)LmNa>#lU z9Pwvr{+$S%T$7|8K%iMWk=&d3Na^o%^XFT2|9p$*bzepF^S-yuaJdNx2z~#W@GYFv z@s9j3UP4>0*qos8ZDbS5UX$Ec8x z)710z4fMaSeM#paU+S9*-RkP}-~2xnGOXndcoux*|G5sBySvuif8J*x;za+)(Q&8t zpGNxoDZku5bKl<&{=2W#G8vFj@=|p;Yoky%`$V;-2hV5w{b#_oTT>*Ujh4j|i~NIJlJz~47|a`DyMBFdeBZ=JZ+U8;JWmfOn&W3bA64*> zxs|)~Ab0=iy90Z95;pb5j-!8FdMCv<3hlRf=yB1GffVs5F!p}HH-(z(*ukLTQ>ziDZB zqr#c$FJebP$vZN$iuq47%9>q{ikq&LQ2O<3RM;&h`hA$LM^i6)Aw2vQE>^UwI-(7_ z=6Fl!Z5z~kH?+UUr(biD!Fey&Su^2sby>p2_h6<{V8hcWCta~+L7A$&GNVr%TTyTO zK=fhAm{li!zR~E}&#QsKnwWb9uVRC^11SYR8!!Ysyhsrq$Jk~L4FC`9Il*5Hr@zs; zKBVZwRvCqU;9Kixx86x~EjjVo*+0Zt#B6TF_n&3irM&yPiRdOO$;YJO`r?(_MkJ!R zRM&`g+FlB;F|R()Hv3)|U?NaDlBFBfV><2A+;{1vNoxQ$@hTPp5eCmZX1eS11o7!N z#G0jIlEr9(H0IFoDEOC%x?6By1X|9I$7 zokYgW`FU2RXQ2sRo_pSP>nWtAyTiP zVEu&KXhh7yKVdUSp~PK_9KQSh?vvY;99IX49Oka6Nc@+X)Gb#I-B$@c1Wsz=D&Ndu zAKwv`ziVqH6B99dSi}#*q)j?TbF98{*-3fvmb^PlK&E$(x{|}GyW;7skjT^P8qOw( zMh0V43QPJTT>+b2;}@@GQ-%5AeP@yL941=LwXHB7Om~@>seVIerVO{UBri zRTQ7$St`y>eujf7kuUQ>vqOWG2FBYz?<(7_&)nO@GKK*R-AH5oMY~E!6JafNsv;(g zJ0YDO=GqrI`%IM;gzy=S1urh{`4=ibxgX)yeNm^P^QK{2z(i@BeAe|cBCy&E*D?_D z47Rw%Htx62tzmCK2E#4=3s03{x8rLVcHI7idc*fEkIrl1QoW?GGXMR?`z?8aaZn-4 z=o6!P>~3L=&FxyvKOcmXn(>z8Bj+T&eTEWw)r?F&n~ns#f7xbSjoWj&MNKa@w;BPR zPZY-f-7Mp#<@4}828zz}q4ZlPVl`?@yT7^Nem>-)+vMkcQ>;QYG2XOzDA;m9c-qG_ z!%nyK#{5Or)KHsx&NDXJ-z{|bfl;6JtcvWOc0m#LtTJd2WU$+vvaZOJeYb(`!>2)7 zM*A2yO?>Ha-&XlNq4xAO0+)&brS?+wygnOo7Z$OVM4#c_!6V9l=YgxbNex&`G>vqx zE$bd>b>Vnp1zn?)V9QL1>(aP%0L}hl0&hJ5D?&m(E!#GW0Yj!1+Yfs2%=EKj3w-z# z(csOeJf=;;m%rdsef*-1zG-3`y8F;r<($3E>YdeLr7Zc|CQ>ctCVfSLS`Cj;Aq$7S)hjKUl&Ci%2_k@1{w-%!sFMO6VaWxQXW9+#9P4~48WH$!jm z(J(c$Y!D>yVC_J8G9InzYm6T(S+8e?zbBa(7Z-4*v!!#65OX{YTjn#rz)JpDevu_1 zHaWqv_7YrJ7`n-=Gl9t5{T{3M3VX1xd**@eO~6tvmSRlXD8N9FQ`ByP8^ z{>*qMxD{9wvW_%f9`L~|35`+(k5Lp;1UksxzO6oA zn&I07tgkXz9evf6Q2{wOTEdpuxo^v0ehd%Xcv+(dZPTzp5%jVPnf(+P1p~PBSA>#- z8>t0mBqg8b7L^xJ5<~_S(DHu_@xU8Nd^^QeXx-K&kf>ec$aM9q-e$<-$15@_?%sOB zGf#)F4SQHxI)fyXrtmnHFJ%<^N9~U!Wd8I%d4BZSmkF7GD^zYr6F(acE+^5JfL^n< zxn6ML?$8$pUbY1{t&eC6{HoaYcSegY!aVPFQm=G+_w$g)v4<^1mvgQ2i((tC3fgp* z=&-!<9vekvDKZ&(vJZW7<8+OU`)3`9pFd2ZSj21ZIti~$7*iyQ`eQ;DdESv@HulW z4aqm1!TZcR!VRLQH*tcP)ql}`-gbVyLjHxk}Vq_yAFjW z$`EI&oI{73B}>mmbaWgm(|AZ~E#e-$HiFRJ3YXYB~maXj_BIVqC& z9VKBRN9HeB>!jBM*kA&zjq;AK5~@;cqY9y_nQr~Vn>e{&bC6{x5%6aE`&8WbJQG;7 zewO7MVZOZ65;#rENa=;?F8Ksm`PJ~1hw|Qg1^P9U0+3HsY7u}7^ z!m!}tmf~Nu9Qww(6OS{9<^O$|=^ChQq^Zv9@_3bunBfX9BQOPntsbPyYvn`k5`>CDicaw7?1@x3rZ0)>v>=P$}oGbOcF0W2vdocmiIMhM{@6rl%BfsPo7Bp zQdBOxA+Lo&d61aZ;qKk59E@pKIcS%eVC#?UmzvU6q>RJ5mmh6f;VzFr^D8Ul6^4{) zu8ib1d%a(HpUe3slW*OAcqmh3#Lt$oppSSpw}|qiMmB7+YPnl7^V65aMGE+g-8|8E zTxF;Mqh*eABV8 z1!p$a%HU8q@!e)?)l31ERcG>KLTC7gFfxOg3Ejy*(1ad$S4p7CNBRv)x9Y79zEn*^ z&)goLe1>m7F!QN zF`R17JySej#bD|+B;+*YisCdh;53Bbd$KJ3J7MI6MyQAl{`{e`dOl@hgUpJ$j@LSK zCzJ7v2JvLx);w!FqHfcFD&kiQqs^1u{Iv=;CjS;D`hN`}TZCKW50O;rR3f3<-w;5( zlpckhsgKv^wsR{UhACBF4pqW3fynsF7w@I1n*qA| z^*3JJBsr@TxPg3c20{0>X%!U_zke?@KZ|v$(5D zj>5BJ3}o76L2_lg6=*YHpZOIKVb$&MC#2_hkpqsy?@tHF^Y)Ygsp{#K;?HpsBYpreeh)8RB%6`kVR_bV z5D6bN9H+jIEZIzX=YNDoUna|7B*)r!&8NJ=RzZ4%1#&J&@?S_VfD*6#(8uluo(uJC zEDW$e{Hg$@qIH6v49>q8OXqw=&(&iXVj-PE0xJwP{nS|_KWaXE>hOkxd5`mzN0l;} z{of30E$iG{p|u7({#l0Lo0ul5P9{hTf0KqtCxzrHa?s(=Z7;$5ekdiKcQyYsjzfm>`#F@`9&Vj`I&Gu1 z+3^YPjw=7Vf?lQR;jr?y0+qazt<3Nohhhar{QmY1eU0@%v#f;?q7lac>}WMC)LrFx z#&f6L7~Mn9LwBR`V+vy2%D2@+)K5cfFI>iDdGu(J^g)y3d6aG2AmQ~Nhtm~IuG0HI z#r2HHBVvSGbGX(VT$bKn-88Dm*frb>Hbc!!lIhI<8Ff(D+CH5O^H2{A4gH>MbW}>^ zta=(0-|_{dQPeYKyKH}=J8gMvOBGBIF%qImn{5uO-f3vn${$6t=O9j6n~h@KS{ZHD z8|?m4IKjYpa6k^4o6F#%nWOL=_l}_R6NKTG{^sJ*a59G%xv<{^fS~$x^zsFAHlUze%75uk6!2I`&v5q35;K_ zOzC-3WXL5J*@4zZHfvK&xwN&WP;_~L^j@h_KR&s=U}kb*Ev1u=1-s6G*z#Zrm6Mti z2A5&a!!mp8HA@YiY|=ns^8x28-y!4qjYT_=DeJuHzT7xkG`#CgAc%q4=H zDJNNeHWh(9l5cXK4~PhjY(MtHc5+i-JUsrz&8M-SmiRzS)SaqCV_|(Y;LT|Tl(A*!ByLqE` z9wK)?S|8z2oPgak+m~#zZjf`ta`cv25&3~D_Vsw?#JI+d3RXkqQmyE;fqV6*1*`(W zQtcg@vLn{HTt1-`6<}UFJ&s0Im_Z|_teYv&rDnXHvVW6hwF)6)a%}|FaF^XqTaPI~ z2*M{!wrJcB4(_(7gI@yLXWW_{v9}LE+pZr#k0=xNet zt&q`Z`=#(&t*@FSIoj7u1&bjf5QMinIiTu`IguUv z%5`eJ4h&7>Y|hkIkBz;m%?g5-+RJ+}tw$x$P~2ai*JUsi*31#riAFzm z{K2-zU8G5)LfMV$wtIj2q~v<`?)IF4;$TsGptCHa-;-;U123eRbrs!~d0ov;%P~=R z8eS-5KUrA;iHUnw&>q}*%@={bigKRzUT^foH6khZCj&u=UBgLp<8>fJ0YKH(C2 zW!H4w^zTL4wnb|KLJ_J6WsJe3xmo_booH~EH|+i4B@3(enkPHx3$D9PJ~h*#VDNK- zlCjd#bLK+L_e@XGTFwQ|g1=tbfi-R$DZ>t)W^s5SBEKNm~|h-Sq@(NV#4 z(wHkh@~doE=9#K3ju+HtCv}G9jC_-Ylshw&$X~Ij;`B<$S1bFv-!hz#3x4a2i()l8 zB`(^`To?M9Y`8$*v0xp3Wm`R)Uj5i=fqe`w+D9qBG>g{$e(6#_J}md0FNYkqxlt3o zZXxRtE+(%yF?vT-^M1>vQWW4B(5J1xSu6_sHN`CD7CGuDAS!Lvy5ruBbHTj&+?d=h~g(UDtSrmlIQB4w(U3iJ%8n=NA>Bq-FSX{ zsIfVkMa_J;6=pGWpsL9bnscw-lgW25)FE@ME+P-havz?hc@shSadLi`is|J;v9l$a z#5EYREeP@_uT*$dI&%E!n%91BYsfKcm0-yN?>nV9?%|5Z;>Dc${x(*c=@ z(J|HiqeLFPsCOHQO_TVi{%9yX4l3%YEi)~ARKPqIzw<33!P--5x%tRX>P&8uN!82k z--T1T^on)#|E|TLvD|w-YTsir;STaAR8jD2TKXmE$8s`ucW$k9KJzkin0v_|63K~ zOQ-Lc*YJLSK+5~_zdZ++tyKP2uLYuQ+g`S|M0>D+-**<2`bH&pds zJHTJn*d|+2zY+Iqey1XIm1RFs*qUd59$U4Iig{$8XP(rWZ+#GL+94=N=~Jr{xpE8J zMN}IZ7x%6SV};tAo&kNG`aV8CGo|YpN;oKuKXDS4`$yGv6R%4QO@F@_Rb?)uVR1^( z+5QsK0iv&s!%)z`hqIfw)jCjr+)azS^|4a~ZNhG!F`^80MwF7}P;QE9I5 zF9Pj@Zs&-%^P?NZ66to8N4-8O->DqhQ|2YplStMI?y19{Ju#q&7qb{Wz_Ulkqar&! z0TFQE$SIdWPfdIb?9Kjp(KIL7d{XHafBs@DINiV`qwYdCYqHrvIkOx;{&NOW_oU(V zcF7h2R@&yDyjF{C6*lH4eHf^R`kBOWvct~d`&}-@jny-MD)d@f2=Y^gE~y%kx(^(V zS7FGxR_))k@25oA=5)0NC(KrLEWAlqJi*7H`F~SPyZQ0U5-8me={n_~I``^a{kBSw zys}#Ev1X?{TJ{Vw82rx9Z94Qp?|J0EGIUVsZDd)Yu7Er-LsgAS{jcXWoBvh`rEFKYHZnU6OI&H zlOJQ@R6*Y*;kM-b!u{H3kV8Kn+K(4^kwIi8njh3UvgY3;f=lSsL6ek;s-Hj5s6 zAG?2V$Vho(HL|%}7b(Gw&OUvJt+v=lhgrFE`=}c) z!#o44-8Df@k3!+u*z5~@X&;Rkc0gpwQC?D&SV1S=(n7b^Rx3`YkS6Mhxj)Md*L!&C z?1Y9oSs7|NOjkr$0=?mqQqvs-TCM*B+Z z2Zw?;>l-Lkl=$-}{@eAlc2qH;!Ma27GNe75ta>k%UbcTDIC|iF3twbjgBMCu_`wkQ z5ZQ}Dr3qMH_qVo(tr4TXw)332vT0;U=}sUzW`(E!cgJ)3=|n(8ygxFt?)5k7*q)V7 z!(`^*;8-83%4R&X=6B(TE9{ySQBiqB z$VTa(7agApsKW+BW!}l;oGM|%NhcmwL<8xc5%J6woJR$owb#O~vGljEaz3Gqx9)B1 zwbc}LXc5f&o$?`UZaC~iykg44;ziWnd|QwYUS|}seq7$BRnhLA!1tB?XK8JpZBM4S zvhILv92Dho7TSUU@Ps;5TniF(q|%?(UT^1HIy9VFLPXnDy}g7eRzM^`(2ch;R6rEj z1SdIG%N~*kwrePIXGL!W8t!=KjF1qKJQ+`_F{RwlDS*nrr5y0}e?+SZKijjI-34}< zu3&ZVWnf?ge&&un1}e+WTeo8)$-3epSP(os?T5U+1g{fjr*z;2GB)hf$U{DXli%pS z-`vB-BlGnaJU}6DA>_w6kJ-BOavg6ERlndw1VlLusskHp}9$=W$lc6+an0Fg|#dc527!+&AhWqMYoJ7vTB`ni+dTrd#zT4WR4f-3r@`EOAYA&gS^f2B=-3d zvAIUOrOv29O$-E6XHb*P})1t1AaMuZ(AQg0PmRLDv>f#_rIyfveuBV0=DP#>~r*;eMhR zYPWKWm}MW+<@$q|L4`5HyAudmlcg;GPyq`Se=_1JE0~czFpsn$a=kK#-Lzb z&VueKf(s-aYR-awz~mrBUBJC)eRP)r(RTwuE86fedvE8I2nw~Sl=T@e{TsK^X}jqf zT7B#WnzS3Un)J9d*8`jTqYg+>9c4Qbdg(Fguy50ps8H{0=;r;n@U7*Eg8k9`H+$Ka zPf7`xxZ4904nwOS>Ln^I{Ll)-NLTW1H1Qd~v1gzsg^Gk!nnutWFZ6JnF_ zhySo6T|(d6X|@g+BKp47O+%K-;Gev}lKoWqPYMWFsGlnAi|JR1c3Ub`l{wA&2;i~Z zraF`oJpJIX`)AVCb2VOtPg^f9LFK3A1)Fi7e(oLuU@f=8)@sr%xXO6rr8}OIc8VwYPBnoO0#Lw z(=#4&zh(RPXd+##?bAFf{46iqOs0O5ubJbsTrZeiwUb*c8f>c(VQ%lN7WJ;e@jZ2O z_NsV~qi=c+^}VoJF;rLWuwjlu-CzgE)HWoxnV#hUtVa6_# zPq$8LY?%BMFFp9;@>F+lmqGf6&QnHJE$kV>k7m^s?vKA^+n!>*GgZAm{V9}b4TumT z_3zo+&de7ndF0lM51ZdZfx*me=`9x-L90Je775t@Znkn}0)(1#Xqu+>FV!u(hS0j4 zevHBPeoR}w_r9QCkukFR^cA;V+ndQ14)KqqS+gy?pYy_DVLm zw!Mcb4C#AAbD<J1#m(ZJ7i%<91bf*Nv={ zG2iA!X>;EH`IA`o$E$)bDbtIKhK0seVBb=e`rX1->?wGvd=7dEQ)=OZ_AmRE^a3}V zkLPud0sfgRe6EbR5WHFJyN>L@ft#!3WMo8P!~TZM7xUH_nJcg@=DQiQMumUmZztxyRaR`VNAiY(XYD5BEu#zGRaOR3-f9wS*8xsLVrb z6l%GG%oW=SlUni=6V!3@4100Lp3Cm<9f(Ssd+Yr(8J~#6lx)mn{q+h?zc9tr>6dfM1w9KK*Dv&kx-eTpx zzq>k)^$hP#dSFIokEBeQ5?Ad~RKrSHM{+tA$#RNh^r?rab< zv|p|vp?1&^rK8{XV-`c9@nO4(y2f)j3aKrO;_=&W*Z!cApYHtj*-a@fOgBG39osy-yA@V;Iq|=)6kBW%* zg^IbEX~Y{g(-f7B8(R-ZNlB5j|BFOR-I^F)x8su2nl2h|*l2@}JjdqP-eW8qCs3I? zUf989d8iBvEn5Av`(el*{Y|~+Ogpqpb5=f|kAIdtxcF|l*iu=VmhWwMIE@j*X1mHX z)DtaEvbeDPtPG93Z9qSKpnp-mQa;-Ebf+LnDm$V!0-vj?NMm9brOw+d+lWVF4L?|9~<7^uWa*aw*hu z{P~D`6r5wjw-;y;&m;sHwo`XzZf65oip3n3?_*bT9-rzhB`ei(?$Fi1e;?*6Rtjzy z$}GKqfQjWjW@sBPez!r>Jehb((tN38+0C%E?Hy*_WFMR=rlL*iZhX5tD@0%Ju@8Q( zL;HNCGKD1rH9sbugabDmu^$O$w4}QymE&!>!H^*C`Tk-H?dhy) zmp?7`<()u7PJSX*QqakJup&GVC#>cU^FE}E)~Xj_eVG)FF*Q(dI9QsvnSB9uWwT!h z48xj9g9lZgq>LoR%?5ldFyQP%XWO@CK~)a=2^05$6C@1#mbYW#%9gn&gI4qF6O+QF z1OtRL62*5HbLfU6H3M_>y>_ zkW?T0yw2w_Bt=#^8wI9^zs?&-m>!BP@Keuax@v_m!oO=JuT2LQU!MB$qoGI` z9Xs!^J>8!TiK0lV`MO#K%w_EYhdvWK9S!iPu8+S7p|8?@Q-nTPD9d-BgxZWVuRDM4{%>W~5$MR$tc=*l6-7PImria$NuVcVXD7 z*1j3pj{~1J08lCKf3unPjk~qB7H44~VD+>=b9yBkzh+7$a4tS)JGN_t+!ad*c-zgN zn>jf4swLlBGCcV$t|_~Wf4|$DKG*sMIYx1t>|a+dcsvEWn6HbIIb}}AE)q;R&TzC9 zvb4OUwlu8F?4Z4NBbZ+CT1mp3L|2jcb{DxuemD(1Ub z%V;D*&Ofs%HRL2aGCPqc+T8>Lx^T#viINV+xO)?+midtGxTuK>Lu_Gvx7DG@{P1Rh z>NC+Yv)$>oin@Kg#D~!}HiKwsf>!uE&m!C)qOe@@mb|*KuF>Qu^=Cx-`d0a(3YDZG z;h&>O&(7hgTEok#&iA}(pJYxnmC+toj`OU>HA_92?N5JhWdZe0>US{T3AGSt4w&PD0vx=zP2NIw>}N=rz=m%>7NF|2iw-q_ zn+HZkeb6*3zbQ8>{?=(xFzl;OM*#RaMC4Yy=s|xtE|7_w1UU4_o|4q+ili2!jRbX)K$8|U$iivzthA-%F&9E!r$5-5(8_xNm&&7isFto0%cC}^a^J{rkmMra(xZ6nOX>~=8{e!;{J7moT2tna$m(GxI`g8gvRQG;56SvcVf3U0*!;s)UPiweUsC# zIXVhYHN5xFZNk!lZVnqFBvJ-3znVq;rv9Xx_iUEl!(I@fq<@3w2t>DpfqxF)Qu7$e zfCSy%n>tP;#*sc`T>~-k8|q1K(V_!G-(D8XP`QJLAC3>vfdDWQ8zbWWxRgr(YY4{fKsy68y@I{@0c&&ei39 zB|!qoai7>oi47idqxIc-4Z~YTL)WrtEd^F7XGgvM2;7zL+B4H@-Y4KxJ0Uh?8FjC; zt~YPwq|!FeB_pa1s7p+k&R5r#e!Xs*T<-D6ljT&TgbHtZ=-34fg|FO~N0zK?KEwV> zT||*l5yzeWwOk7Jn1KO>-ey=gPxf&PC!hsChw<2$7dZ_X2N_nA);B85x7^qidduG0 zVXw6fn|EE!JebTss57!$IjJC7KcwqXE5^$Y`%_(%+%4v0aAd=gzT(14dt-i;{3m~X zX@dzB-$L0H#0(h1^fzN)@_b}b_5-LKdCU-)zkpb8EQfb`In9Ko3*@(_mZ4B(hq#C( zi|^|5Xmsf=(TEis)JwsWD~P2@&Z;~$TmwExg4lvUl^WFahf{{a+<6D{@v*WF=rxF+ zN2_vv(C(nw1i7ug;|0W!>~!vi z*D&JA@-f!%^$}dvN z@VU-G_I|YZ#-CRY5N|Egh&toj$_G1tJ~35@#yXc3dkkgcQ%QbBOefJ==Fkr9I~@^o zuT5g+DR9lob~?mmJbZf*JQ!{nGwp)C2QdV;MZit)>Oi`;!tt}`_N%H}4(WJu$3dMTVG!v zd_UaqXr*f5JQFA1{%7D|7_*k&$z`f!PvD3g@qED(%&0m7f^C*NO}l zr2lzux@&ml%19dK1C_5Mk=Mw$$mH+(3Sx0rA4zT#EL9RTq^(L{N^F@cW}IIB*eBaG zHIPMYNtoR1YgTOc&G_PUMYr_uR61@eJ!yX)8S+{7HYqnsro`S@i%(s9`Ma9~BZb-V zPNuv@JqrEJcyLJcgsaeJxWby0*|T0VSU5BhR8W^zKGM+2Hzx{P3&emRlKTc2!iRConP)#*d@yWQeE5Geyqvvg_pI9`dW}v$JeUhzoJis)}W^%q)tgmQJ`9900W*TpT}pnd;bzZ zCjca&-XR2#rOC&E^MAGKr85b>d1AwDQlPeF+#%;S^BnLw4EtVP z@);D8(Y#*j&Ii(I_TQ0!u1i}jM*!%+K%2_&Ul}GG%?vZTy~2BrXb82F9OnvbO0!{X zb9=qADJ@f1!Dch)`4#@^Ou=hD*i(xmCmz(LU`=w~U9#}t5YbqPh}c#COK}mth8ubh zBFcShOK~#8zT_VU-9PN`KbGHr?0kJ<{1R|3yp~5F<41F^k>+0pdgktjZ~2CD@)R6{ z1#lZ<6a!Bf+j0?fiI1k0dJjZp$mQ$*^YRY36pujek9wJPQ7&gSO;=nlMdd2M0A4u> z5z~XN`0U97y;zmR!+TeOF^3hT z+TN(|Isl%DJYM+)3Q$W$00%gYMjA2{9r)OQ41#Yus3+&vs{8>ck$r28d0bm74XVE! zQPw@j_l~Nd-u;L=mE&%I4J1OTz_WR^pIR75Q&|9Vb61rGg@||&M1#BUBU}f*VD=4T z&@gvdJWZH(rJH^=QeYd?x=P&Qc0!n``gTdR^bJOkV07wTjtb|woCAJ@)BP8`i$L^? z@OpLosg)oI>I3FKV1qCgoT{Hpxxe(xpMBl4FDh?DBk7j znZIB~fS7g@VAaF`yFwux11kn95z-cN-0plKIrop13j>-H(z@ZZUPkv_8rf^3VmXqY ziCBs&6>Rb&Xu^fz%kVdWwFunB>vm4mv`2U&^ib%}GnGH`%47TsYxzBWC0^*%4=J&L zihM*58W&pHH3zWWnz7emYgzb; z?vBdUe3Q5t^dbH;z+cc2aiAbdFbBI8S)~LZC}%QqnSfXKm|s_fFvw*!oL4Q@@}+*P9FRX`we9RavlBpW-zy3P@dOb8UG2ar zA;Sz{wBeTX!9%T}qfg7px?xNP{L=)evb92F5w*C#s8UYTS59I;Er1KWaK(+g%y!`t zAT%8%4m`Pi;=u19pa6C3U0n^YSnwj-o0S*ESE{p}!Yt*#a>`dT z&`~i{p9?35SKEpUiP1^OVB0=L6NSh06G#ofbv9lk4W`KE7K;{q4{wbKfrhr6khxUp z`JOM3^Sp8D-18dxRN;wV1U_jh*&mMX0q6!yO;*tz=z*45Qd$fS-BCStj(dvX80TpU zb{H^aX|x_nE2&fKMt#BZOv28A z>Nbyuad8=tgW4;pp91$^6tXtc=h39zi08~pMd(i=AxSomiwtOwJkyt-TZLuPDB(O7 zukI3`H!!JC4Dp_)F9>3nY;~=hIu4!tlPCK3Q3g8w2fr&S2kmS5Vr3&A=7ne-z(Ih| zX_M{yR^w>U`Qdi7_Zw%e(D)j;cO7ya7Vy(|S7!2vM)E=|!o%NG>zON9&g@-G6{-ii z#OtPZ?LMRuzGV?ISnPtLH;A{;~a;r2-2WR*z3o%^E0dOmqmfOtGlAs+WDy z!UxvI_ki9?$ zda*+T5ea|ss@HQ?LB5LB70+Sy>*XkfH-kQ6M+ILQ;Y?wbV^!`ZX-I`0H+7UaO~Umi zKos-4$bl3ejO5d*C*0^VO2CKo>aps4)p3j59gjlbFTtvs^-_`wJHMz6cKWcK2 zUVG8g8QjIZw1PkgsD}Pn_N%j0PgW4u)4Qv@4;cUMwFya-tDAg4HvbQR z-Q&_T=ty$&19?d>H^A_%p1XorRlvl(_m4Tm`KS>}UylW=tgKTp#M>OPn3r+o4)3GC za{16-1iYvb+X59|m|v1BX_69VB`|g1@c`yh2eTk5D}48#%JY|a+FpbB8T9aNnldkr zC%zpnc;KpkLN{^|1vggk5&*L>1O7GH^XGBiH(OOfY0b_r*<_Dthua~8OiAtG5l>VW7X1)LFb3(AL`1f_`AGJL$^?&yrCjILO z2hH|Zem{ePThZyqmgqd`UE-_%>*Ipl635vs5n6(^jdpWXtycD^NklFQ{6Fu%ls?k< z`+jHkF^`zR{06=rk@pJoai58Zd*-$Oax)ue@Vm&Tk@xu(UZVTo&%7LwPs8i>+0>ML z<^E6pA?jv!a1jBI2BFQdQNr1|1n$pZIKiMMfxIPFW4Uh)4*+?HouD%P`?_0k*56)v zL=U=%F@DY`?~-CX_YAEG@qx(x^!l&>u`Qk3CH;Q4-7w~#KZ*Ri{~oz-`k7bXPhV+? zW}9;{3&F=`3(f_VM<0P9tt_M51y2RP`#hhS&V@E;{nt;@#JGmmVYS%13Z;R{xao6` zO|lQ01Y#8B<=)fWUqcPHi#1C{VV}J;y?@ov@4dZP8R#3Rm2Er_&l;Tm`!$z_CnMtD z`u7#AzCmk{V!!ch@Y}K#@Maj@HBMd5lQ~ohs+v!&{pHI zwl?&oMN)K`0GH& zp`B>i@4w;9qigF7P)m!zTD|R}FvKlp`XR-kP`-iXSfND-R(lttC29M8!O;{XH;tL@ zSiW^2O52-PDOH*C;5Hfa3fLX1FS2<&Jvy;&X$MIK+e90|S3eZ43f*#_1P{zT#~uCO z*9Oq(=u(i>2*lc?jlGkzEdTD0nbkjp2DpY|f(chcLrcvx_Vnk#2>6qDWmTx@ubaBN zU@Mm8LnY8lPYC`(d6JUmePqOlaTvl)$;|0a>a@G(cPn8~!?Yk8Vb@^^qo7DOL;WLQ%>#Ylk3F+)d7!OX5f~4%P|D~7@}B#Y80;Wtz=r(<%f=cPO}!>xp?i40u)4pjs9IaXSKmP zC-w(qP=p_Uw`lBH07a7~D~Zo!ljGoh#G0*}B9#7RM;BN+^)(iOA*(?GWAmdUwBE0H zM#MW*p3N@xbWJU;p(xhfH`slkVR$Qi&^TN0Aryb9@R9#+{Vk1|B?a;WIxruOAK*sy z*p6Z0JD*4*J~QX$fL~e}#H03pm%yiNawJbxHwpu_hXUbpMTtQI}L2wkR)AdW7u(eHXG4*Eb z)P!5emA*LKA7O8W?A>td&Bm%-P9L~dxaASZqoW}Fc+U9zMYJ0_^`wlvmZYc`83{yI z=N6mlbC;T!o_Pr{V7;leYHQ|`Q!6F!@22{u%EhxxI-)X0)WXhI%lN`*jFk8TL{PH~ z?Rbxd`7hEdbGS@WBauHu*ai|4W;tc^yx2svDpHRve%u%rsGxGQUV^B*IUA{{_>YNj!Z?b@pad z{&#E%98OC&-Svp}Yp5Ul4@h&`Lctb&ZDqzERwCY?+WrbAn&2`%3Dz-oMGDfA$O1J#^GRLiQ+Xjn{bABNCbxVYJ7;=QioQ?2QUewJ8qrtf5wM zwmS2R~V-j44$V&AvJ4{Wdrv71Q(0L z&OM6=c#@$nIIbx-&zqgd_ONVs(Io0A2PT*1rGT&Ox}TkUh9sB^XKNaHL3qnF{Eh~7 zblu?`%8~%#3}IjTi)s8rC_U;$N-W^ea;f0^8Eb9%=wdp)IPd+cT28?TV2+8IRe%hn zW~nO|^1jwqCm;;wfxdOT{)tMuM~|Pec`3$&;og5UXi{j6%F}~#G+@wIIRf>=W&O^Y zM$8oaaBT;UI^v2WkF4C7=Y=ni?)UTdCzLt9ouJnE;%aF%UPom0?A*KD$G)JUZq6jW zUiJexqW?`eJ*f9pysNt#9Ah^RL%)2XCz_3n?kqvXMrGNzN+C-5+PBvv$=z|z&UQIRJz7uZ-UDER z1161B>z)pRZg`}yLwJ{Z7=-28M=_R#u`45! zZPR-%n_dF!$2U4o+@G#fJ< ziLq;$k-9_5x2X$4Jv zeD{ocE|}^?J+atMS+Y&*o`%FYANeN7>5%1c8j|1zMd~EvCD+#`Z)GdRf%_^NDig;M z9TJq@y>EHIViu8u-naRqaWue&D60P|ac8(8R`~m%i-Fhn_Z2t1>mNXfUHPBJ;$ACH zzdLWxQ5TZBziaK$)tXt;L_UnFtRB7oS2*60>%Q(Nig@TF8g7WEqXJAE!u`78i6ds_ zhO((zpuXPQ`-blf zbaA{1A5Wp2lIdDs8Sn2X7FS$$xuyS&545U?mp+o|0}Ei#r2GP{^NXAWi{C1p!LK>8 z7VEjd6&wVGZ^32>x!O2v%C1*lZ}>O4%-iFvxyxPB3DF%#+Xc&D)V(L(Zrh;Prli zY#Ue4>EI$J9@&jBiT5vAGQSKIzjoESPW|uEl~FKp7CnS*vTF+qn6sJ4k*rmo^5dfS zU04TyT~5WFYO9DaQ2dFF2#kykLtusrx}_8+uPTMA1Z7!YjrxXbV5iE5pfulW=!j}kRyq2m1l}&3? z_RfDi@1J`i2QwlEcbDn~ZhK64xK2~uD@?}CZulY6#4K2Eo7pukqE@9G<*x#-NUTJL z-XZf{_iZ`ODP?b}?920vXt9t8`rVUq3uwoIV`pR-1WwZh#3u5EP8oW;tFID9DiJSg8mE(l0>sq~A**k98=5r_+D!qwb9G7X}Vzc=) znj|?(#}%{16hj9||555in1m+q>HCsZ>^M_~jhVWuS@R>i8}(>P{CLS*I#2%0A8y`F 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 F@n37Jv4H>p literal 0 HcmV?d00001 diff --git a/docs/user-guide/agile-boards/openproject_userguide_boards_overview.png b/docs/user-guide/agile-boards/openproject_userguide_boards_overview.png index 98cd29479e094e764e6bf710c0276b506e5f288c..4b688a5e80cb9e7ed5dd9b48430a6ee446ac87b9 100644 GIT binary patch literal 101933 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 z

    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 Zo!RD_UHa{#CKTiakWqY9{PLsse*w}I66pW{ literal 22670 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 OFwix+`cB93>3;z$V!f>Z From 712f7a131d991e452c36341b0911296265a18efa Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Sat, 7 Mar 2026 03:44:50 +0000 Subject: [PATCH 31/32] update locales from crowdin [ci skip] --- config/locales/crowdin/es.yml | 4 +- config/locales/crowdin/fr.yml | 146 +++---- config/locales/crowdin/js-fr.yml | 4 +- config/locales/crowdin/ko.yml | 50 +-- config/locales/crowdin/pt-BR.yml | 106 ++--- config/locales/crowdin/zh-CN.yml | 398 +++++++++--------- .../backlogs/config/locales/crowdin/es.yml | 38 +- .../config/locales/crowdin/js-zh-CN.yml | 4 +- .../backlogs/config/locales/crowdin/ko.yml | 58 +-- .../backlogs/config/locales/crowdin/pt-BR.yml | 60 +-- .../backlogs/config/locales/crowdin/zh-CN.yml | 40 +- .../boards/config/locales/crowdin/zh-CN.yml | 2 +- modules/budgets/config/locales/crowdin/de.yml | 16 +- modules/budgets/config/locales/crowdin/fr.yml | 18 +- modules/budgets/config/locales/crowdin/ko.yml | 24 +- .../budgets/config/locales/crowdin/pt-BR.yml | 24 +- .../budgets/config/locales/crowdin/zh-CN.yml | 36 +- modules/costs/config/locales/crowdin/de.yml | 2 +- modules/costs/config/locales/crowdin/fr.yml | 20 +- .../costs/config/locales/crowdin/js-fr.yml | 2 +- modules/costs/config/locales/crowdin/ko.yml | 10 +- .../costs/config/locales/crowdin/pt-BR.yml | 10 +- .../costs/config/locales/crowdin/zh-CN.yml | 10 +- .../documents/config/locales/crowdin/ko.yml | 6 +- .../config/locales/crowdin/pt-BR.yml | 6 +- .../config/locales/crowdin/zh-CN.yml | 6 +- .../grids/config/locales/crowdin/js-de.yml | 2 +- .../grids/config/locales/crowdin/js-zh-CN.yml | 4 +- modules/meeting/config/locales/crowdin/af.yml | 5 +- modules/meeting/config/locales/crowdin/ar.yml | 5 +- modules/meeting/config/locales/crowdin/az.yml | 5 +- modules/meeting/config/locales/crowdin/be.yml | 5 +- modules/meeting/config/locales/crowdin/bg.yml | 5 +- modules/meeting/config/locales/crowdin/ca.yml | 5 +- .../meeting/config/locales/crowdin/ckb-IR.yml | 5 +- modules/meeting/config/locales/crowdin/cs.yml | 5 +- modules/meeting/config/locales/crowdin/da.yml | 5 +- modules/meeting/config/locales/crowdin/de.yml | 5 +- modules/meeting/config/locales/crowdin/el.yml | 5 +- modules/meeting/config/locales/crowdin/eo.yml | 5 +- modules/meeting/config/locales/crowdin/es.yml | 5 +- modules/meeting/config/locales/crowdin/et.yml | 5 +- modules/meeting/config/locales/crowdin/eu.yml | 5 +- modules/meeting/config/locales/crowdin/fa.yml | 5 +- modules/meeting/config/locales/crowdin/fi.yml | 5 +- .../meeting/config/locales/crowdin/fil.yml | 5 +- modules/meeting/config/locales/crowdin/fr.yml | 17 +- modules/meeting/config/locales/crowdin/he.yml | 5 +- modules/meeting/config/locales/crowdin/hi.yml | 5 +- modules/meeting/config/locales/crowdin/hr.yml | 5 +- modules/meeting/config/locales/crowdin/hu.yml | 5 +- modules/meeting/config/locales/crowdin/id.yml | 5 +- modules/meeting/config/locales/crowdin/it.yml | 5 +- modules/meeting/config/locales/crowdin/ja.yml | 5 +- modules/meeting/config/locales/crowdin/ka.yml | 5 +- modules/meeting/config/locales/crowdin/kk.yml | 5 +- modules/meeting/config/locales/crowdin/ko.yml | 41 +- modules/meeting/config/locales/crowdin/lt.yml | 5 +- modules/meeting/config/locales/crowdin/lv.yml | 5 +- modules/meeting/config/locales/crowdin/mn.yml | 5 +- modules/meeting/config/locales/crowdin/ms.yml | 5 +- modules/meeting/config/locales/crowdin/ne.yml | 5 +- modules/meeting/config/locales/crowdin/nl.yml | 5 +- modules/meeting/config/locales/crowdin/no.yml | 5 +- modules/meeting/config/locales/crowdin/pl.yml | 5 +- .../meeting/config/locales/crowdin/pt-BR.yml | 39 +- .../meeting/config/locales/crowdin/pt-PT.yml | 5 +- modules/meeting/config/locales/crowdin/ro.yml | 5 +- modules/meeting/config/locales/crowdin/ru.yml | 5 +- modules/meeting/config/locales/crowdin/rw.yml | 5 +- modules/meeting/config/locales/crowdin/si.yml | 5 +- modules/meeting/config/locales/crowdin/sk.yml | 5 +- modules/meeting/config/locales/crowdin/sl.yml | 5 +- modules/meeting/config/locales/crowdin/sr.yml | 5 +- modules/meeting/config/locales/crowdin/sv.yml | 5 +- modules/meeting/config/locales/crowdin/th.yml | 5 +- modules/meeting/config/locales/crowdin/tr.yml | 5 +- modules/meeting/config/locales/crowdin/uk.yml | 5 +- modules/meeting/config/locales/crowdin/uz.yml | 5 +- modules/meeting/config/locales/crowdin/vi.yml | 5 +- .../meeting/config/locales/crowdin/zh-CN.yml | 55 +-- .../meeting/config/locales/crowdin/zh-TW.yml | 5 +- 82 files changed, 781 insertions(+), 727 deletions(-) diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml index 9f2ffb3368df..d46333baea43 100644 --- a/config/locales/crowdin/es.yml +++ b/config/locales/crowdin/es.yml @@ -1357,8 +1357,8 @@ es: activerecord: attributes: agile/sprint: - sharing: "Sharing" - finish_date: "End date" + sharing: "Uso compartido" + finish_date: "Fecha de finalización" jira_import: projects: "Projects" "import/jira": diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index 7ba57fb0aaa2..2ccf73777424 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -114,7 +114,7 @@ fr: title: "Importation" jira: title: "Importation de Jira" - description: "Utilisez cet outil pour importer des données depuis votre instance Jira. Vous pouvez configurer plusieurs hôtes Jira et choisir les données à importer à chaque cycle d'importation." + description: "Utilisez cet outil pour importer des données à partir de votre instance Jira. Vous pouvez configurer plusieurs hôtes Jira et choisir les données à importer à chaque cycle d'importation." errors: cannot_delete_with_imports: "Impossible de supprimer un hôte Jira avec des importations existantes" blank: @@ -125,7 +125,7 @@ fr: new: "Nouvelle configuration" banner: title: "Importation limitée" - description: "Cet outil d'importation est actuellement en version bêta et ne peut importer que des données de base : projets, tickets (nom, titre, description, pièces jointes), utilisateurs (nom, email, appartenance à un projet), statuts et types. Il ne peut pas importer les flux de travail, les champs personnalisés, les relations entre les tickets, ou les autorisations. Nous ne prenons actuellement en charge que les versions 10.x et 11.x de Jira Server/Data Center. Les instances cloud ne sont pas prises en charge pour le moment." + description: "Cet outil d'importation est actuellement en version bêta et ne peut importer que des données de base : projets, tickets (nom, titre, description, pièces jointes), utilisateurs (nom, e-mail, appartenance à un projet), statuts et types. Il ne peut pas importer les flux de travail, les champs personnalisés, les relations entre les tickets ou les autorisations. Nous ne prenons actuellement en charge que les versions 10.x et 11.x de Jira Server/Data Center. Les instances cloud ne sont pas prises en charge pour le moment." form: fields: name: "Nom" @@ -135,17 +135,17 @@ fr: button_save: "Enregistrer la configuration" button_test: "Tester la configuration" button_delete_token: "Supprimer le jeton d'accès" - delete_token_confirm: "Êtes-vous sûr de vouloir supprimer le jeton ? Cela désactivera la connexion à Jira." + delete_token_confirm: "Voulez-vous vraiment supprimer le jeton ? Cela désactivera la connexion à Jira." label_testing: "Test de la configuration..." token_deleted: "Le jeton a été supprimé avec succès." test: success: "Connexion réussie à %{server} (version %{version})" - failed: "Échec de la connexion : Impossible de récupérer les informations sur le serveur" + failed: "Échec de la connexion : impossible de récupérer les informations du serveur" error: "Une erreur inattendue s'est produite lors du test de la connexion" connection_error: "Erreur de connexion : %{message}" parse_error: "Impossible d'analyser la réponse du serveur. Le serveur n'est peut-être pas une instance Jira valide." - api_error: "L'API Jira a renvoyé le statut d'erreur %{status}. Veuillez vérifier l'URL de votre instance Jira et le jeton API." - token_error: "Jeton API invalide. Veuillez vérifier vos informations d'identification dans la configuration." + api_error: "L'API Jira a renvoyé le statut d'erreur %{status}. Veuillez vérifier l'URL de votre instance Jira et le jeton d'API." + token_error: "Jeton d'API invalide. Veuillez vérifier vos informations d'identification dans la configuration." missing_credentials: "Veuillez fournir l'URL et le jeton d'accès personnel pour tester la connexion" invalid_url: "Veuillez fournir une URL valide" client: @@ -157,33 +157,33 @@ fr: projects: "Projets" last_change: "Dernière modification" added: "Ajouté" - label_ago: "%{amount} il y a" + label_ago: "Il y a %{amount}" run: - title: "Importation" + title: "Cycle d'importation" history: "Historique" remove_error: "Une importation Jira ne peut pas être supprimée lorsqu'elle est en cours d'exécution" - import_blocked_error: "Une autre importation Jira est actuellement en cours ou en attente de révision. Veuillez la terminer ou la corriger avant de commencer une nouvelle importation." + import_blocked_error: "Un autre cycle d'importation Jira est actuellement en cours ou en attente de révision. Veuillez le terminer ou l'annuler avant de commencer une nouvelle importation." blank: - title: "Aucun cycle d'importation n'a encore été mis en place" - description: "Créez une exécution d'importation pour commencer à importer des informations à partir de cette instance Jira" + title: "Aucun cycle d'importation n'a encore été configuré" + description: "Créez un cycle d'importation pour commencer à importer des informations à partir de cette instance Jira" index: - description: "Vous pouvez importer différents ensembles de données à chaque cycle d'importation. Il est possible d'annuler une importation immédiatement après en mode révision, mais pas après la finalisation." - button_import_run: "Importation" - button_edit_configuration: "Editer la configuration" + description: "Vous pouvez importer différents ensembles de données à chaque cycle d'importation. Il est possible d'annuler un cycle d'importation immédiatement après en mode révision, mais pas après la finalisation." + button_import_run: "Cycle d'importation" + button_edit_configuration: "Éditer la configuration" status: - initial: "Début" + initial: "Commencer" instance_meta_fetching: "Récupération des métadonnées" - instance_meta_error: "Erreur dans l'extraction des métadonnées" - instance_meta_done: "Métadonnées recherchées" - configuring: "Sélectionnez le champ d'application" - projects_meta_fetching: "Récupérer les données d'un projet" - projects_meta_error: "Erreur dans l'extraction des données du projet" + instance_meta_error: "Erreur lors de la récupération des métadonnées" + instance_meta_done: "Métadonnées récupérées" + configuring: "Sélectionnez la portée" + projects_meta_fetching: "Récupération des données du projet" + projects_meta_error: "Erreur lors de la récupération des données du projet" projects_meta_done: "Données recueillies" importing: "En cours" import_error: "Erreur lors de l'importation" imported: "Mode révision" - reverting: "Retour à l'état initial" - revert_error: "Erreur lors de l'inversion" + reverting: "Rétablissement en cours" + revert_error: "Erreur lors de la restauration" reverted: "Restauré" completed: "Terminé" wizard: @@ -224,62 +224,62 @@ fr: caption_done: "Terminé" description: "Vérifiez quelles données sont disponibles pour l'importation dans l'instance Jira hôte." button_fetch: "Vérifier les données disponibles" - label_progress: "Récupérer les données de Jira..." + label_progress: "Récupération des données de Jira..." groups_and_users: title: "Groupes et utilisateurs" import_scope: - title: "Champ d'application de l'importation" + title: "Portée de l'importation" caption: "Choisissez ce que vous voulez importer dans OpenProject" caption_done: "Terminé" label_info: "Veuillez noter que cet outil d'importation est en version bêta et qu'il ne peut pas importer tous les types de données. Voici un résumé de ce que l'URL de l'instance Jira hôte offre à l'importation et de ce que cet outil est capable d'importer pour le moment." description: "Sélectionnez les données que vous souhaitez importer parmi les données disponibles extraites de l'instance Jira hôte." label_available_data: "Données disponibles" - label_not_available_data: "Non disponible à l'importation" + label_not_available_data: "Indisponibles pour l'importation" button_select_projects: "Sélectionnez les projets à importer" button_continue: "Continuer" label_import: "Sélectionnez les projets que vous souhaitez importer." - button_select: "Sélectionner des projets" + button_select: "Sélectionner les projets" label_selected_data: "Données sélectionnées pour l'importation" - label_progress: "Récupérer les données de Jira..." + label_progress: "Récupération des données de Jira..." elements: - relations: "Relations entre les questions" - workflows: "Workflows au niveau du projet" + relations: "Relations entre les problèmes" + workflows: "Flux de travail au niveau du projet" users: "Utilisateurs" sprints: "Sprints" schemes: "Schémas" permissions: "Autorisations d'utilisateur, de groupe et de projet" confirm_import: - title: "Importer les données" + title: "Importation des données" caption: "Vérifiez vos paramètres d'importation et démarrez l'importation" caption_done: "Terminé" - label_available_data: "Données disponibles à importer" - button_start: "Lancer l'importation" + label_available_data: "Données disponibles pour l'importation" + button_start: "Démarrer l'importation" description: "Vous êtes sur le point de lancer un cycle d'importation avec les paramètres suivants." - label_progress: "Import en cours..." + label_progress: "Importation en cours..." label_import_data: "Importation en cours" import_result: - title: "Importer les résultats de l'exécution" - caption: "Vérifier l'exécution de l'importation ou annuler l'importation" - info: "L'importation a été effectuée avec succès." + title: "Résultats du cycle d'importation" + caption: "Examiner le cycle d'importation ou annuler l'importation" + info: "Le cycle d'importation a été effectué avec succès." label_results: "Importé" label_revert: "Annuler l'importation" button_revert: "Annuler l'importation" button_done: "Finaliser l'importation" - preview_description: 'Les données importées sont actuellement en mode révision. Cliquez sur "Finaliser l''importation" pour rendre l''importation permanente ou sur "Revenir à l''importation" pour annuler toutes les modifications apportées lors de cette importation.' + preview_description: 'Les données importées sont actuellement en mode révision. Cliquez sur « Finaliser l''importation » pour rendre l''importation permanente ou sur « Annuler l''importation » pour annuler toutes les modifications apportées lors de ce cycle d''importation.' label_finalizing_progress: "Finalisation de l'importation..." label_finalized: "Importation finalisée." - label_revert_progress: "Importation réversible..." + label_revert_progress: "Annulation de l'importation..." label_reverted: "Importation annulée." select_dialog: filter_projects: "Filtrer par texte" revert_dialog: - title: "Réinitialiser définitivement cette importation ?" - description: "Cela supprimera tous les objets importés (y compris des projets entiers), même s'il y a eu une activité de l'utilisateur dans ces projets après l'importation dans OpenProject." - confirm: "Je comprends que cette réversion effacera les données de façon permanente" + title: "Annuler définitivement cette importation ?" + description: "Cette opération supprimera tous les objets importés (y compris les projets entiers), même s'il y a eu une activité de l'utilisateur dans ces projets après l'importation dans OpenProject." + confirm: "Je comprends que cette réversion supprimera les données de façon permanente" finalize_dialog: title: "Finaliser cette importation ?" description: "Une fois finalisée, cette importation ne peut plus être annulée. Toutes les données importées le seront définitivement." - confirm: "Je comprends que cette action ne peut être annulée" + confirm: "Je comprends que cette action ne peut pas être annulée" confirm_button: "Compris" select_projects: title: "Sélectionner des projets" @@ -287,7 +287,7 @@ fr: index: description: "Le protocole de contexte de modèle permet aux agents d'IA de fournir à leurs utilisateurs les outils et les ressources exposés par cette instance d'OpenProject. Cette fonctionnalité est encore en version bêta." resources_heading: "Ressources" - resources_description: "OpenProject met en œuvre les ressources suivantes. Chacune d'entre elles peut être activée, renommée et décrite comme vous le souhaitez. Pour plus d'informations, veuillez vous référer à la [documentation sur les ressources MCP](docs_url)." + resources_description: "OpenProject implémente les ressources suivantes. Chacune d'entre elles peut être activée, renommée et décrite comme vous le souhaitez. Pour en savoir plus, veuillez vous référer à la [documentation sur les ressources MCP](docs_url)." resources_submit: "Mettre à jour les ressources" tools_heading: "Outils" tools_description: "OpenProject implémente les outils suivants. Chacun d'entre eux peut être activé, renommé et décrit comme vous le souhaitez. Pour en savoir plus, veuillez vous référer à la [documentation sur les outils MCP](docs_url)." @@ -296,7 +296,7 @@ fr: success: "Les configurations MCP ont été mises à jour avec succès." server_form: description_caption: "Comment le serveur MCP sera décrit aux autres applications qui s'y connectent." - title_caption: "Titre court affiché aux applications qui se connectent au serveur MCP." + title_caption: "Un titre court affiché aux applications qui se connectent au serveur MCP." tool_response_format: "Format de réponse de l'outil" tool_response_format_content_only_label: "Contenu uniquement" tool_response_format_content_only_caption: > @@ -306,7 +306,7 @@ fr: L'option la plus compatible. Les réponses de l'outil comprendront à la fois du contenu régulier et structuré, ce qui permettra aux clients MCP de choisir le format qu'ils souhaitent lire. Cela peut augmenter le nombre de jetons que le modèle linguistique doit traiter, ce qui peut entraîner une augmentation des coûts et une diminution des performances. tool_response_format_structured_only_label: "Contenu structuré uniquement" tool_response_format_structured_only_caption: > - Choisissez cette option si vous êtes certain que les clients MCP qui se connectent à cette instance prennent en charge le contenu structuré. Les réponses de l'outil n'incluront que le contenu structuré et ne tiendront pas compte de sa représentation textuelle. + Choisissez cette option si vous avez la certitude que les clients MCP qui se connectent à cette instance prennent en charge le contenu structuré. Les réponses de l'outil n'incluront que le contenu structuré et ne tiendront pas compte de sa représentation textuelle. update: failure: "La configuration MCP n'a pas pu être mise à jour." success: "La configuration MCP a été mise à jour avec succès." @@ -545,7 +545,7 @@ fr: contained_in_type: "Figurant dans le type" confirm_destroy_option: "Supprimer une option supprimera toutes ses occurrences (ex. dans les plans de travail). Êtes-vous sûr de vouloir le supprimer ?" reorder_alphabetical: "Réorganiser les valeurs par ordre alphabétique" - reorder_confirmation: "Attention : L'ordre actuel des valeurs disponibles ainsi que toutes les valeurs non enregistrées seront perdus. Êtes-vous sûr de vouloir continuer ?" + reorder_confirmation: "Attention : l'ordre actuel des valeurs disponibles ainsi que toutes les valeurs non enregistrées seront perdus. Voulez-vous vraiment continuer ?" placeholder_version_select: "La sélection d'un lot de travaux ou d'un projet est requise en premier lieu" calculated_field_not_editable: "Attribut non modifiable. Cette valeur est calculée automatiquement." no_role_assigment: "Pas d'attribution de rôle" @@ -573,11 +573,11 @@ fr: formula: project: "Ajoutez des valeurs numériques ou saisissez / pour rechercher un attribut ou un opérateur mathématique." regexp: - all: "ex. ^[A-Z0-9]+$" - project: "ex. ^[A-Z0-9]+$" + all: "p. ex., ^[A-Z0-9]+$" + project: "p. ex., ^[A-Z0-9]+$" min_max: all: "0 signifie aucune restriction" - project: "0 pour aucune restriction" + project: "0 signifie aucune restriction" has_comment: project: "Permet à l'utilisateur d'ajouter un commentaire relatif à l'attribut du projet lorsqu'il sélectionne la valeur dans la vue d'ensemble du projet." tab: @@ -804,7 +804,7 @@ fr: is_for_all_blank_slate: heading: Pour tous les projets description: Cet attribut de projet est activé dans tous les projets, car l'option « Pour tous les projets » est cochée. Il ne peut pas être désactivé pour les projets individuels. - enabled_via_assignee_when_submitted_html: Cet attribut de projet ne peut pas être désactivé car il est défini comme assignee when submitted pour les demandes d'initiation de projet. + enabled_via_assignee_when_submitted_html: Cet attribut de projet ne peut pas être désactivé, car il est défini comme responsable au moment de l'envoi pour les demandes d'initiation de projet. types: no_results_title_text: Il n'y a actuellement aucun type disponible. form: @@ -820,8 +820,8 @@ fr: new_label: "Nouvelle priorité" creation_wizard: errors: - no_work_package_type: "La demande d'initiation de projet n'a pas pu être activée car elle nécessite au moins un type de lot de travaux actif et ce projet n'en a pas. Veuillez ajouter au moins un type de lot de travail à ce projet." - no_status_when_submitted: "Échec de l'activation de la demande d'initiation de projet car le type de lot de travail %{type} doit être associé à au moins un statut. Veuillez activer au moins un workflow de statut pour ce type de work package." + no_work_package_type: "La demande d'initiation de projet n'a pas pu être activée, car elle nécessite au moins un type de lot de travaux actif et ce projet n'en a pas. Veuillez ajouter au moins un type de lot de travaux à ce projet." + no_status_when_submitted: "Échec de l'activation de la demande d'initiation de projet, car le type de lot de travaux %{type} doit être associé à au moins un statut. Veuillez activer au moins un flux de travail de statut pour ce type de lot de travaux." export: description_attachment_export: "L'artefact généré sera enregistré en tant que pièce jointe au format PDF dans le lot de travaux de l'artefact." description_file_link_export: "Le lot de travaux de l'artefact contient un lien vers un fichier PDF stocké dans un espace de stockage de fichiers externe. Nécessite un stockage de fichiers de travail avec des dossiers de projet gérés automatiquement pour ce projet. Pour le moment, seuls les espaces de stockage de fichiers Nextcloud sont pris en charge." @@ -1363,9 +1363,9 @@ fr: jira_import: projects: "Projets" "import/jira": - name: "Jira instance name" - url: "Jira instance URL" - personal_access_token: "Personal access token" + name: "Nom de l'instance Jira" + url: "URL de l'instance Jira" + personal_access_token: "Jeton d'accès personnel" announcements: show_until: "Afficher jusqu'à" attachment: @@ -1690,7 +1690,7 @@ fr: spent_hours: "Temps passé" spent_time: "Temps passé" subproject: "Sous-projet" - time_entries: "Consigner temps" + time_entries: "Consigner du temps" type: "Type" version: "Version" watcher: "Observateur" @@ -2760,7 +2760,7 @@ fr: title: "Actions personnalisées" description: "Les actions personnalisées sont des raccourcis en un clic vers un ensemble d'actions prédéfinies que vous pouvez rendre disponibles sur certains lots de travaux en fonction de l'état, du rôle, du type ou du projet." mcp_server: - description: "Introduisez OpenProject dans vos workflows AI avec un serveur MCP sécurisé." + description: "Introduisez OpenProject dans vos flux de travail d'IA avec un serveur MCP sécurisé." meeting_templates: description: "Définissez des modèles de réunion avec une structure d'ordre du jour définie et gagnez du temps en les réutilisant lors de la création de nouvelles réunions." nextcloud_sso: @@ -3075,14 +3075,14 @@ fr: #We need to include the version to invalidate outdated translations in other locales "17_2": new_features_title: > - Cette version contient plusieurs nouvelles fonctionnalités et améliorations, telles que: + Cette version contient plusieurs nouvelles fonctionnalités et améliorations, telles que : new_features_list: - line_0: Workflows AI avec un serveur MCP sécurisé (plan Professionnel et supérieurs) + line_0: Flux de travail d'IA avec un serveur MCP sécurisé (abonnements Professional et supérieurs) line_1: Amélioration de la page d'accueil du projet avec un nouveau widget pour les budgets et amélioration de l'accessibilité - line_2: "Réunions : Modèles de réunion (plan de base et supérieurs)" - line_3: Meilleure transparence des commentaires sur les attributs des projets. + line_2: "Réunions : modèles de réunion (abonnements Basic et supérieurs)" + line_3: Meilleure transparence avec les commentaires sur les attributs de projet. line_4: Amélioration de l'exportation PDF - line_5: Sécurité accrue pour les liens externes (à partir du plan Premium) + line_5: Sécurité accrue pour les liens externes (à partir de l'abonnement Premium) line_6: Améliorations UI/UX dans le module Backlogs line_7: Formulaires de champs personnalisés harmonisés links: @@ -3102,7 +3102,7 @@ fr: journals: changes_retracted: "Les modifications ont été retirées." caused_changes: - budget_deleted: "Budget has been deleted" + budget_deleted: "La budget a été supprimé" dates_changed: "Dates modifiées" default_attribute_written: "Attributs en lecture seule écrits" import: "Importé" @@ -3114,10 +3114,10 @@ fr: total_percent_complete_mode_changed_to_simple_average: "Le calcul des totaux de % d'achèvement est désormais basé sur une simple moyenne des seules valeurs de % d'achèvement." cause_descriptions: import: - header: "changements par %{author}" - field_changed: "%{field} a changé de %{old_value} à %{new_value}" - field_set: "%{field} sur %{value}" - field_removed: "%{field} supprimée" + header: "modifications par %{author}" + field_changed: "%{field} a modifié de %{old_value} à %{new_value}" + field_set: "%{field} réglé sur %{value}" + field_removed: "%{field} supprimé" field_updated: "%{field} mis à jour" deleted_with_diff: "%{field} supprimé (%{link})" changed_with_diff: "%{field} modifié (%{link})" @@ -3128,7 +3128,7 @@ fr: work_package_related_changed_times: par changement vers %{link} connexe work_package_duplicate_closed: Le statut a été mis à jour automatiquement par le doublon de lot de travaux %{link} unaccessable_work_package_changed: par changement vers un lot de travaux connexe - budget_deleted: Budget has been deleted + budget_deleted: La budget a été supprimé working_days_changed: changed: "par changement vers des jours ouvrables (%{changes})" days: @@ -3209,7 +3209,7 @@ fr: active_tokens: "Jetons actifs" blank_description: "Aucun accès à une application tierce n'est configuré et actif pour vous." blank_title: "Pas de jeton d'application OAuth" - last_refreshed_at: "Dernière mise à jour le" + last_refreshed_at: "Dernière actualisation le" title: "OAuth" table_title: "Jetons d'application OAuth" text_hint: "Les jetons d'application OAuth permettent aux applications tierces de se connecter à cette instance d'OpenProject." @@ -3295,7 +3295,7 @@ fr: label_always_visible: "Toujours affiché" label_announcement: "Annonce ou avis. " label_angular: "AngularJS" - label_app_modules: "%{app_title} modules" + label_app_modules: "Modules %{app_title}" label_api_access_key: "Clé d'accès API" label_api_access_key_created_on: "Clé d'accès API créé il y a %{value}" label_api_access_key_type: "API" @@ -3577,7 +3577,7 @@ fr: label_lock_user: "Verrouiller l’utilisateur" label_logged_as: "Connecté en tant que" label_login: "Connexion" - label_custom_comment: "%{name} commentaire" + label_custom_comment: "Commentaire de %{name}" label_custom_logo: "Logo personnalisé pour ordinateur" label_custom_logo_mobile: "Logo personnalisé pour mobile" label_custom_export_logo: "Logo d'exportation personnalisé" @@ -4599,9 +4599,9 @@ fr: setting_smtp_password: "Mot de passe SMTP" setting_smtp_domain: "Domaine SMTP HELO" setting_activity_days_default: "Nombre des jours affichés dans l'activité du projet" - setting_api_tokens_enabled: "Activer les jetons API" + setting_api_tokens_enabled: "Activer les jetons d'API" setting_api_tokens_enabled_caption: > - Décidez si les utilisateurs peuvent créer des jetons API personnels dans les paramètres de leur compte. Ces jetons peuvent être utilisés pour accéder aux différentes API d'OpenProject, telles que APIv3 et MCP. + Décidez si les utilisateurs peuvent créer des jetons d'API personnels dans les paramètres de leur compte. Ces jetons peuvent être utilisés pour accéder aux différentes API d'OpenProject, telles que APIv3 et MCP. setting_app_subtitle: "Sous-titre de l'Application" setting_app_title: "Titre de l'Application" setting_attachment_max_size: "Taille maximale de la pièce jointe" diff --git a/config/locales/crowdin/js-fr.yml b/config/locales/crowdin/js-fr.yml index 4b338ea6c657..ad51bf1455ac 100644 --- a/config/locales/crowdin/js-fr.yml +++ b/config/locales/crowdin/js-fr.yml @@ -87,7 +87,7 @@ fr: button_advanced_filter: "Filtre avancé" button_list_view: "Vue en liste" button_show_view: "Affichage plein écran" - button_log_time: "Afficher l'horodatage" + button_log_time: "Consigner du temps" button_start_timer: "Démarrer le suivi du temps" button_stop_timer: "Arrêter le suivi du temps" button_more: "Plus" @@ -705,7 +705,7 @@ fr: nevermind: "Peu importe" time_entry: work_package_required: "Nécessite d'abord la sélection d'un lot de travaux." - title: "Consigner temps" + title: "Consigner du temps" tracking: "Suivi du temps" stop: "Arrêter" timer: diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml index fd7987799db0..3b4f6b6005bb 100644 --- a/config/locales/crowdin/ko.yml +++ b/config/locales/crowdin/ko.yml @@ -83,9 +83,9 @@ ko: confirmation: "이 Enterprise Edition 지원 토큰을 삭제하시겠습니까?" create_dialog: title: "Enterprise 토큰 추가" - type_token_text: "Your Enterprise token text" + type_token_text: "내 Enterprise 토큰 텍스트" token_placeholder: "여기에 Enterprise Edition 지원 토큰을 붙여넣으세요" - token_caption: "To learn more about how to activate Enterprise edition check our [documentation](docs_url)." + token_caption: "Enterprise 버전을 활성화하는 방법에 대해 자세히 알아보려면 [설명서](docs_url )를 참조하세요." add_token: "Enterprise edition 지원 토큰을 업로드하세요." replace_token: "당신의 현재 지원 토큰을 바꾸세요." order: "Enterprise on-premises edition 주문하기" @@ -111,38 +111,38 @@ ko: text: "사용자의 개별 작업(예: 작업 패키지를 두 번 업데이트)은 연령 차이가 지정된 기간 미만인 경우 단일 작업으로 집계됩니다. 애플리케이션 내에서 단일 작업으로 표시됩니다. 또한 이는 전송되는 이메일 수를 줄이는 동일한 시간만큼 알림을 지연시키고 %{webhook_link} 지연에도 영향을 미칩니다." link: "webhook" import: - title: "Import" + title: "가져오기" jira: - title: "Jira Import" - description: "Use this tool to import data from your Jira instance. You can configure multiple Jira hosts and choose what to import in each import run." + title: "Jira 가져오기" + description: "이 도구를 사용하여 Jira 인스턴스에서 데이터를 가져옵니다. 여러 Jira 호스트를 구성하고 가져오기 실행 각각에서 가져올 항목을 선택할 수 있습니다." errors: - cannot_delete_with_imports: "Cannot delete Jira host with existing imports" + cannot_delete_with_imports: "기존 가져오기가 있는 Jira 호스트는 삭제할 수 없습니다" blank: - title: "No Jira hosts configured yet" - description: "Configure a Jira host to start importing items from Jira to this OpenProject instance." + title: "아직 구성된 Jira 호스트 없음" + description: "Jira에서 이 OpenProject 인스턴스로 항목 가져오기를 시작하려면 Jira 호스트를 구성합니다." configuration: - title: "Jira configuration" - new: "New configuration" + title: "Jira 구성" + new: "새 구성" banner: - title: "Limited import" + title: "제한된 가져오기" description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: - name: "Name" - url: "Jira Server/Data Center URL" - personal_access_token: "Personal Access Token" - button_add: "Add configuration" - button_save: "Save configuration" - button_test: "Test configuration" - button_delete_token: "Delete token" - delete_token_confirm: "Are you sure you want to delete the token? This will disable the Jira connection." - label_testing: "Testing configuration..." - token_deleted: "Token was successfully deleted." + name: "이름" + url: "Jira 서버/데이터 센터 URL" + personal_access_token: "개인 액세스 토큰" + button_add: "구성 추가" + button_save: "구성 저장" + button_test: "구성 테스트" + button_delete_token: "토큰 삭제" + delete_token_confirm: "토큰을 삭제하시겠습니까? 그러면 Jira 연결이 비활성화됩니다." + label_testing: "구성 테스트 중..." + token_deleted: "토큰이 삭제되었습니다." test: - success: "Successfully connected to %{server} (version %{version})" - failed: "Connection failed: Unable to retrieve server information" - error: "An unexpected error occurred while testing the connection" - connection_error: "Connection error: %{message}" + success: "%{server}(버전 %{version})에 연결되었습니다" + failed: "연결 실패: 서버 정보를 검색할 수 없습니다" + error: "연결을 테스트하는 동안 예기치 않은 오류가 발생했습니다" + connection_error: "연결 오류: %{message}" parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." diff --git a/config/locales/crowdin/pt-BR.yml b/config/locales/crowdin/pt-BR.yml index fa561fdd9a88..a53e10b67205 100644 --- a/config/locales/crowdin/pt-BR.yml +++ b/config/locales/crowdin/pt-BR.yml @@ -111,7 +111,7 @@ pt-BR: text: "As ações individuais de um usuário (por exemplo, atualizar um pacote de trabalho duas vezes) são agregadas em uma única ação se o intervalo de tempo for menor que o intervalo especificado. Eles serão exibidos como uma única ação dentro do aplicativo. Isso também atrasará as notificações no mesmo intervalo de tempo, reduzindo o número de e-mails enviados e também afetará o atraso de %{webhook_link}." link: "webhook" import: - title: "Import" + title: "Importar" jira: title: "Jira Import" description: "Use this tool to import data from your Jira instance. You can configure multiple Jira hosts and choose what to import in each import run." @@ -122,19 +122,19 @@ pt-BR: description: "Configure a Jira host to start importing items from Jira to this OpenProject instance." configuration: title: "Jira configuration" - new: "New configuration" + new: "Nova configuração" banner: title: "Limited import" description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: - name: "Name" + name: "Nome" url: "Jira Server/Data Center URL" - personal_access_token: "Personal Access Token" - button_add: "Add configuration" - button_save: "Save configuration" - button_test: "Test configuration" - button_delete_token: "Delete token" + personal_access_token: "Token de acesso pessoal" + button_add: "Adicionar configuração" + button_save: "Salvar configuração" + button_test: "Testar configuração" + button_delete_token: "Excluir token" delete_token_confirm: "Are you sure you want to delete the token? This will disable the Jira connection." label_testing: "Testing configuration..." token_deleted: "Token was successfully deleted." @@ -147,20 +147,20 @@ pt-BR: api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." token_error: "Invalid API token. Please check your credentials in the configuration." missing_credentials: "Please provide both URL and Personal Access Token to test the connection" - invalid_url: "Please provide a valid URL" + invalid_url: "Forneça um URL válido" client: connection_error: "Failed to connect to Jira server: %{message}" connection_timeout: "Connection to Jira server timed out: %{message}" parse_error: "Failed to parse Jira API response: %{message}" api_error: "Jira API returned error status %{status}" columns: - projects: "Projects" - last_change: "Last change" - added: "Added" + projects: "Projetos" + last_change: "Última alteração" + added: "Adicionado" label_ago: "%{amount} ago" run: title: "Import run" - history: "History" + history: "Histórico" remove_error: "A Jira import cannot be removed while it is running" import_blocked_error: "Another Jira import run is currently in progress or awaiting review. Please complete or revert it before starting a new import." blank: @@ -169,25 +169,25 @@ pt-BR: index: description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" - button_edit_configuration: "Edit configuration" + button_edit_configuration: "Editar configuração" status: - initial: "Start" + initial: "Iniciar" instance_meta_fetching: "Fetching meta data" instance_meta_error: "Error fetching meta data" instance_meta_done: "Meta data fetched" - configuring: "Select scope" + configuring: "Selecione o escopo" projects_meta_fetching: "Fetching project data" projects_meta_error: "Error fetching project data" - projects_meta_done: "Data gathered" - importing: "In progress" - import_error: "Error during import" - imported: "Review mode" - reverting: "Reverting" + projects_meta_done: "Dados coletados" + importing: "Em andamento" + import_error: "Erro durante importação" + imported: "Modo de revisão" + reverting: "Revertendo" revert_error: "Error during revert" - reverted: "Reverted" - completed: "Completed" + reverted: "Revertido" + completed: "Concluído" wizard: - button_retry: "Retry" + button_retry: "Tentar novamente" parts: projects: one: "1 project" @@ -213,15 +213,15 @@ pt-BR: groups_and_users: title: "Groups and Users" configuration: - title: "Configure import" + title: "Configurar importação" confirming: - title: "Confirm and import" + title: "Confirmar e importar" review: title: "Review import" sections: fetch_data: title: "Fetch instance meta data" - caption_done: "Completed" + caption_done: "Concluído" description: "Check what data is available for import in the host Jira instance." button_fetch: "Check available data" label_progress: "Fetching data from Jira..." @@ -230,38 +230,38 @@ pt-BR: import_scope: title: "Import scope" caption: "Choose what you want to import into OpenProject" - caption_done: "Completed" + caption_done: "Concluído" label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." description: "Select what data you want to import from the available data fetched from the host Jira instance." - label_available_data: "Available data" + label_available_data: "Dados disponíveis" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" - button_continue: "Continue" + button_continue: "Continuar" label_import: "Select which projects you would like to import." - button_select: "Select projects" + button_select: "Selecionar projetos" label_selected_data: "Selected data for import" label_progress: "Fetching data from Jira..." elements: relations: "Relations between issues" workflows: "Project-level workflows" - users: "Users" + users: "Usuários" sprints: "Sprints" - schemes: "Schemas" + schemes: "Esquemas" permissions: "User, group and project permissions" confirm_import: - title: "Import data" + title: "Importar dados" caption: "Review your import settings and start the import" - caption_done: "Completed" + caption_done: "Concluído" label_available_data: "Available data to import" - button_start: "Start import" + button_start: "Iniciar importação" description: "You are about to start an import run with the following settings." - label_progress: "Import in progress..." + label_progress: "Importação em andamento..." label_import_data: "Currently importing" import_result: title: "Import run results" caption: "Review import run or revert import" info: "Import run successful." - label_results: "Imported" + label_results: "Importado" label_revert: "Revert import" button_revert: "Revert import" button_done: "Finalize import" @@ -271,7 +271,7 @@ pt-BR: label_revert_progress: "Reverting import..." label_reverted: "Import reverted." select_dialog: - filter_projects: "Filter by text" + filter_projects: "Filtrar por texto" revert_dialog: title: "Permanently revert this import?" description: "This will delete all imported objects (including whole projects) even if there was user activity in those projects after the import on OpenProject." @@ -279,15 +279,15 @@ pt-BR: finalize_dialog: title: "Finalize this import?" description: "Once finalized, this import can no longer be reverted. All imported data will become permanently imported." - confirm: "I understand that this action cannot be undone" - confirm_button: "Understood" + confirm: "Compreendo que esta ação é irreversível" + confirm_button: "Compreendido" select_projects: - title: "Select projects" + title: "Selecionar projetos" mcp_configurations: index: description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Recursos" - resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." + resources_description: "O OpenProject implementa as seguintes recursos. Cada uma pode ser habilitada, renomeada e descrita conforme desejado. Para mais informações, consulte a [documentação sobre recursos MCP](docs_url)." resources_submit: "Atualizar recursos" tools_heading: "Ferramentas" tools_description: "O OpenProject implementa as seguintes ferramentas. Cada uma pode ser habilitada, renomeada e descrita conforme desejado. Para mais informações, consulte a [documentação sobre ferramentas MCP](docs_url)." @@ -296,12 +296,12 @@ pt-BR: success: "Configurações MCP atualizadas com sucesso." server_form: description_caption: "Como o servidor MCP será descrito para outros aplicativos que se conectarem a ele." - title_caption: "A short title shown to applications that connect to the MCP server." + title_caption: "Um título curto exibido para aplicativos que se conectam ao servidor MCP." tool_response_format: "Tool response format" - tool_response_format_content_only_label: "Content only" + tool_response_format_content_only_label: "Apenas conteúdo" tool_response_format_content_only_caption: > Choose this if MCP clients connecting to this instance do not support structured content. Tool responses will only contain plain text content and leave out the structured version. - tool_response_format_full_label: "Full" + tool_response_format_full_label: "Completo" tool_response_format_full_caption: > The most compatible option. Tool responses will include both regular and structured content, allowing MCP clients to choose which format they want to read. This may increase the number of tokens that the language model has to process, potentially increasing cost and decreasing performance. tool_response_format_structured_only_label: "Structured content only" @@ -572,11 +572,11 @@ pt-BR: formula: project: "Adicione valores numéricos ou digite / para buscar um atributo ou um operador matemático." regexp: - all: "eg. ^[A-Z0-9]+$" - project: "eg. ^[A-Z0-9]+$" + all: "ex. ^[A-Z0-9]+$" + project: "ex. ^[A-Z0-9]+$" min_max: - all: "0 means no restriction" - project: "0 means no restriction" + all: "0 significa que não há restrição" + project: "0 significa que não há restrição" has_comment: project: "Allows the user to add a comment related to the project attribute when selecting the value in the project overview." tab: @@ -1360,7 +1360,7 @@ pt-BR: sharing: "Sharing" finish_date: "End date" jira_import: - projects: "Projects" + projects: "Projetos" "import/jira": name: "Jira instance name" url: "Jira instance URL" @@ -2123,7 +2123,7 @@ pt-BR: comment: "Comentário" custom_action: "Ação personalizada" custom_field: "Campo personalizado" - customized: "Customized" + customized: "Personalizado" "doorkeeper/application": "Aplicação OAuth" enterprise_token: one: "Token Enterprise" @@ -3104,7 +3104,7 @@ pt-BR: budget_deleted: "Budget has been deleted" dates_changed: "Datas alteradas" default_attribute_written: "Atributos de somente leitura escritos" - import: "Imported" + import: "Importado" progress_mode_changed_to_status_based: "Cálculo de progresso atualizado" status_changed: "Status '%{status_name}'" system_update: "Atualização do sistema OpenProject:" diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml index 2cef13ee4785..44df47ae0e2b 100644 --- a/config/locales/crowdin/zh-CN.yml +++ b/config/locales/crowdin/zh-CN.yml @@ -83,9 +83,9 @@ zh-CN: confirmation: "确定要删除此企业版支持令牌吗?" create_dialog: title: "添加企业令牌" - type_token_text: "Your Enterprise token text" + type_token_text: "您的企业令牌文本" token_placeholder: "在此处粘贴您的企业版支持令牌" - token_caption: "To learn more about how to activate Enterprise edition check our [documentation](docs_url)." + token_caption: "要详细了解如何激活企业版,请查阅我们的[文档](docs_url)。" add_token: "上传企业版支持令牌" replace_token: "替换您当前的支持令牌" order: "订购本地部署版的 Enterprise edition" @@ -111,177 +111,177 @@ zh-CN: text: "如果用户的多项操作(例如,更新工作包两次)的时间间隔小于指定的时间跨度,则这些操作将被聚合为单个操作,并在应用程序中显示为单个操作。这也会将通知延迟同等的时间,从而减少电子邮件的发送数量,并且还会影响 %{webhook_link} 延迟。" link: "Webhook" import: - title: "Import" + title: "导入" jira: - title: "Jira Import" - description: "Use this tool to import data from your Jira instance. You can configure multiple Jira hosts and choose what to import in each import run." + title: "Jira 导入" + description: "使用此工具从您的 Jira 实例中导入数据。您可以配置多个 Jira 主机,并选择每次导入运行要导入的内容。" errors: - cannot_delete_with_imports: "Cannot delete Jira host with existing imports" + cannot_delete_with_imports: "无法删除具有现有导入的 Jira 主机" blank: - title: "No Jira hosts configured yet" - description: "Configure a Jira host to start importing items from Jira to this OpenProject instance." + title: "尚未配置 Jira 主机" + description: "配置 Jira 主机,以开始将 Jira 中的条目导入此 OpenProject 实例。" configuration: - title: "Jira configuration" - new: "New configuration" + title: "Jira 配置" + new: "新配置" banner: - title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + title: "受限导入" + description: "此导入工具目前处于测试阶段,只能导入基本数据:项目、问题(名称、标题、描述、附件)、用户(名称、电子邮件地址、项目成员资格)、状态和类型。不能导入工作流、自定义字段、问题关系或权限。我们目前仅支持 Jira Server/Data Center 版本 10.x 和 11.x。目前不支持云实例。" form: fields: - name: "Name" - url: "Jira Server/Data Center URL" - personal_access_token: "Personal Access Token" - button_add: "Add configuration" - button_save: "Save configuration" - button_test: "Test configuration" - button_delete_token: "Delete token" - delete_token_confirm: "Are you sure you want to delete the token? This will disable the Jira connection." - label_testing: "Testing configuration..." - token_deleted: "Token was successfully deleted." + name: "名称" + url: "Jira 服务器/数据中心 URL" + personal_access_token: "个人访问令牌" + button_add: "添加配置" + button_save: "保存配置" + button_test: "测试配置" + button_delete_token: "删除令牌" + delete_token_confirm: "确定要删除令牌吗?这将禁用 Jira 连接。" + label_testing: "正在测试配置…" + token_deleted: "令牌已成功删除。" test: - success: "Successfully connected to %{server} (version %{version})" - failed: "Connection failed: Unable to retrieve server information" - error: "An unexpected error occurred while testing the connection" - connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." - api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." - token_error: "Invalid API token. Please check your credentials in the configuration." - missing_credentials: "Please provide both URL and Personal Access Token to test the connection" - invalid_url: "Please provide a valid URL" + success: "成功连接到 %{server}(版本 %{version})" + failed: "连接失败:无法检索服务器信息" + error: "测试连接时意外出错" + connection_error: "连接错误:%{message}" + parse_error: "服务器响应解析失败。服务器可能不是有效的 Jira 实例。" + api_error: "Jira API 返回错误状态 %{status}。请检查您的 Jira 实例 URL 和 API 令牌。" + token_error: "API 令牌无效。请在配置中检查您的凭据。" + missing_credentials: "请提供 URL 和个人访问令牌,以测试连接" + invalid_url: "请提供有效的 URL" client: - connection_error: "Failed to connect to Jira server: %{message}" - connection_timeout: "Connection to Jira server timed out: %{message}" - parse_error: "Failed to parse Jira API response: %{message}" - api_error: "Jira API returned error status %{status}" + connection_error: "Jira 服务器连接失败:%{message}" + connection_timeout: "与 Jira 服务器的连接超时:%{message}" + parse_error: "Jira API 响应解析失败:%{message}" + api_error: "Jira API 返回错误状态 %{status}" columns: - projects: "Projects" - last_change: "Last change" - added: "Added" - label_ago: "%{amount} ago" + projects: "项目" + last_change: "上次更改" + added: "已添加" + label_ago: "%{amount} 前" run: - title: "Import run" - history: "History" - remove_error: "A Jira import cannot be removed while it is running" - import_blocked_error: "Another Jira import run is currently in progress or awaiting review. Please complete or revert it before starting a new import." + title: "导入运行" + history: "历史记录" + remove_error: "无法移除正在运行的 Jira 导入" + import_blocked_error: "另一个 Jira 导入运行当前正在执行或等待审核。请先完成或撤消当前运行,然后再开始新的导入。" blank: - title: "No import runs set up yet" - description: "Create an import run to start importing information from this Jira instance" + title: "尚未设置导入运行" + description: "创建导入运行,开始从此 Jira 实例中导入信息" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." - button_import_run: "Import run" - button_edit_configuration: "Edit configuration" + description: "每次导入运行都可以导入不同的数据集。可以在审核模式后立即撤消导入运行,但不能在完成后撤消。" + button_import_run: "导入运行" + button_edit_configuration: "编辑设置" status: - initial: "Start" - instance_meta_fetching: "Fetching meta data" - instance_meta_error: "Error fetching meta data" - instance_meta_done: "Meta data fetched" - configuring: "Select scope" - projects_meta_fetching: "Fetching project data" - projects_meta_error: "Error fetching project data" - projects_meta_done: "Data gathered" - importing: "In progress" - import_error: "Error during import" - imported: "Review mode" - reverting: "Reverting" - revert_error: "Error during revert" - reverted: "Reverted" - completed: "Completed" + initial: "开始" + instance_meta_fetching: "正在获取元数据" + instance_meta_error: "获取元数据时出错" + instance_meta_done: "元数据已获取" + configuring: "选择范围" + projects_meta_fetching: "正在获取项目数据" + projects_meta_error: "获取项目数据时出错" + projects_meta_done: "数据已收集" + importing: "进行中" + import_error: "导入过程中出错" + imported: "审核模式" + reverting: "撤消中" + revert_error: "撤消过程中出错" + reverted: "已撤消" + completed: "已完成" wizard: - button_retry: "Retry" + button_retry: "重试" parts: projects: - other: "%{count} projects" + other: "%{count} 个项目" issues: - other: "%{count} issues" + other: "%{count} 个问题" work_packages: - other: "%{count} work packages" + other: "%{count} 个工作包" types: - other: "%{count} types" + other: "%{count} 种类型" statuses: - other: "%{count} statuses" + other: "%{count} 种状态" users: - other: "%{count} users" + other: "%{count} 名用户" groups: fetch: - title: "Get base data" + title: "获取基础数据" groups_and_users: - title: "Groups and Users" + title: "群组和用户" configuration: - title: "Configure import" + title: "配置导入" confirming: - title: "Confirm and import" + title: "确认并导入" review: - title: "Review import" + title: "审核导入" sections: fetch_data: - title: "Fetch instance meta data" - caption_done: "Completed" - description: "Check what data is available for import in the host Jira instance." - button_fetch: "Check available data" - label_progress: "Fetching data from Jira..." + title: "获取实例元数据" + caption_done: "已完成" + description: "检查主机 Jira 实例中有哪些数据可以导入。" + button_fetch: "检查可用数据" + label_progress: "正在从 Jira 获取数据…" groups_and_users: - title: "Groups and Users" + title: "群组和用户" import_scope: - title: "Import scope" - caption: "Choose what you want to import into OpenProject" - caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." - description: "Select what data you want to import from the available data fetched from the host Jira instance." - label_available_data: "Available data" - label_not_available_data: "Not available for import" - button_select_projects: "Select projects to import" - button_continue: "Continue" - label_import: "Select which projects you would like to import." - button_select: "Select projects" - label_selected_data: "Selected data for import" - label_progress: "Fetching data from Jira..." + title: "导入范围" + caption: "选择要导入 OpenProject 的内容" + caption_done: "已完成" + label_info: "请注意,此导入工具仍处于测试阶段,不能导入所有类型的数据。以下是主机 Jira 实例 URL 提供的导入功能摘要,以及此工具目前能够导入的内容。" + description: "在从主机 Jira 实例获取的可用数据中选择要导入的数据。" + label_available_data: "可用数据" + label_not_available_data: "不可导入" + button_select_projects: "选择要导入的项目" + button_continue: "继续" + label_import: "选择要导入的项目。" + button_select: "选择项目" + label_selected_data: "已选择要导入的数据" + label_progress: "正在从 Jira 获取数据…" elements: - relations: "Relations between issues" - workflows: "Project-level workflows" - users: "Users" - sprints: "Sprints" - schemes: "Schemas" - permissions: "User, group and project permissions" + relations: "问题之间的关系" + workflows: "项目级工作流" + users: "用户" + sprints: "冲刺" + schemes: "方案" + permissions: "用户、群组和项目权限" confirm_import: - title: "Import data" - caption: "Review your import settings and start the import" - caption_done: "Completed" - label_available_data: "Available data to import" - button_start: "Start import" - description: "You are about to start an import run with the following settings." - label_progress: "Import in progress..." - label_import_data: "Currently importing" + title: "导入数据" + caption: "审核导入设置并开始导入" + caption_done: "已完成" + label_available_data: "可导入的数据" + button_start: "开始导入" + description: "您即将使用以下设置开始导入运行。" + label_progress: "正在导入…" + label_import_data: "当前正在导入" import_result: - title: "Import run results" - caption: "Review import run or revert import" - info: "Import run successful." - label_results: "Imported" - label_revert: "Revert import" - button_revert: "Revert import" - button_done: "Finalize import" - preview_description: 'The imported data is currently in review mode. Click "Finalize import" to make the import permanent or "Revert import" to undo all changes made in this import run.' - label_finalizing_progress: "Finalizing import..." - label_finalized: "Import finalized." - label_revert_progress: "Reverting import..." - label_reverted: "Import reverted." + title: "导入运行结果" + caption: "审核导入运行或撤消导入" + info: "导入运行成功。" + label_results: "已导入" + label_revert: "撤消导入" + button_revert: "撤消导入" + button_done: "完成导入" + preview_description: '导入的数据当前处于审核模式。点击“完成导入”可永久导入,点击“撤消导入”可撤消本次导入运行中的所有更改。' + label_finalizing_progress: "正在完成导入…" + label_finalized: "导入已完成。" + label_revert_progress: "正在撤消导入…" + label_reverted: "导入已撤消。" select_dialog: - filter_projects: "Filter by text" + filter_projects: "按文本筛选" revert_dialog: - title: "Permanently revert this import?" - description: "This will delete all imported objects (including whole projects) even if there was user activity in those projects after the import on OpenProject." - confirm: "I understand that this reversion will delete data permanently" + title: "是否永久撤消此导入?" + description: "这将删除所有导入的对象(包括整个项目),即使在 OpenProject 上导入后这些项目中有用户活动。" + confirm: "我明白,此撤消操作会永久删除数据" finalize_dialog: - title: "Finalize this import?" - description: "Once finalized, this import can no longer be reverted. All imported data will become permanently imported." - confirm: "I understand that this action cannot be undone" - confirm_button: "Understood" + title: "是否完成此导入?" + description: "完成后,此导入将无法再撤消。所有导入的数据将永久导入。" + confirm: "我明白此操作无法撤消" + confirm_button: "明白了" select_projects: - title: "Select projects" + title: "选择项目" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." + description: "Model Context Protocol 允许 AI 智能体向其用户提供此 OpenProject 实例所公开的工具和资源。此功能仍处于测试阶段。" resources_heading: "资源" - resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." + resources_description: "OpenProject 实现了以下资源。每种工具都可以根据需要启用、重命名和描述。有关详情,请参阅[关于 MCP 资源的文档](docs_url)。" resources_submit: "更新资源" tools_heading: "工具" tools_description: "OpenProject 实现了以下工具。每种工具都可以根据需要启用、重命名和描述。有关详情,请参阅[关于 MCP 工具的文档](docs_url)。" @@ -290,17 +290,17 @@ zh-CN: success: "MCP 配置已成功更新。" server_form: description_caption: "如何向连接到 MCP 服务器的其他应用程序描述该 MCP 服务器。" - title_caption: "A short title shown to applications that connect to the MCP server." - tool_response_format: "Tool response format" - tool_response_format_content_only_label: "Content only" + title_caption: "展示给连接到 MCP 服务器的应用程序的简短标题。" + tool_response_format: "工具响应格式" + tool_response_format_content_only_label: "仅内容" tool_response_format_content_only_caption: > - Choose this if MCP clients connecting to this instance do not support structured content. Tool responses will only contain plain text content and leave out the structured version. - tool_response_format_full_label: "Full" + 如果连接到此实例的 MCP 客户端不支持结构化内容,则选中此项。此后,工具响应将只包含纯文本内容,而不包含结构化版本。 + tool_response_format_full_label: "完整" tool_response_format_full_caption: > - The most compatible option. Tool responses will include both regular and structured content, allowing MCP clients to choose which format they want to read. This may increase the number of tokens that the language model has to process, potentially increasing cost and decreasing performance. - tool_response_format_structured_only_label: "Structured content only" + 最兼容的选项。工具响应将包含常规内容和结构化内容,MCP 客户端可以选择要读取的格式。这可能会增加语言模型需要处理的词元数,从而可能导致成本增加,性能降低。 + tool_response_format_structured_only_label: "仅结构化内容" tool_response_format_structured_only_caption: > - Choose this if you are certain that MCP clients connecting to this instance support structured content. Tool responses will only include structured content and leave out its text representation. + 如果您确定连接到此实例的 MCP 客户端支持结构化内容,则选中此项。此后,工具响应将只包含结构化内容,而不包含其文本表示。 update: failure: "MCP 配置无法更新。" success: "MCP 配置已成功更新。" @@ -536,7 +536,7 @@ zh-CN: contained_in_type: "已包含在类型中" confirm_destroy_option: "删除某个选项将会删除其所有实例 (例如, 在工作包中)。确定要删除?" reorder_alphabetical: "按字母顺序重新排序" - reorder_confirmation: "Warning: The current order of available values as well as all unsaved values will be lost. Are you sure you want to continue?" + reorder_confirmation: "警告:当前的可用值顺序以及所有未保存的值都将丢失。确定要继续吗?" placeholder_version_select: "需要先选择工作包或项目" calculated_field_not_editable: "不可编辑属性。此值是自动计算的。" no_role_assigment: "无角色指定" @@ -564,13 +564,13 @@ zh-CN: formula: project: "添加数值或输入 / 以搜索特性或数学运算符。" regexp: - all: "eg. ^[A-Z0-9]+$" - project: "eg. ^[A-Z0-9]+$" + all: "例如 ^[A-Z0-9]+$" + project: "例如 ^[A-Z0-9]+$" min_max: - all: "0 means no restriction" - project: "0 means no restriction" + all: "0 表示无限制" + project: "0 表示无限制" has_comment: - project: "Allows the user to add a comment related to the project attribute when selecting the value in the project overview." + project: "用户可以在项目概览中选择值时添加与项目特性相关的注释。" tab: no_results_title_text: 目前没有自定义字段。 no_results_content_text: 创建新的自定义字段 @@ -589,8 +589,8 @@ zh-CN: confirmation_live_message_unchecked: "继续按钮现已失效。您需要勾选复选框才能继续。" mcp_configurations: server_url_component: - caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." - label: "Server URL" + caption: "可连接 OpenProject MCP 服务器的 URL。设置 MCP 客户端时需要使用。" + label: "服务器 URL" op_dry_validation: or: "或" errors: @@ -794,7 +794,7 @@ zh-CN: is_for_all_blank_slate: heading: 适用于所有项目 description: 由于选中了“适用于所有项目”选项,所有项目都启用了此项目特性。无法为个别项目停用该特性。 - enabled_via_assignee_when_submitted_html: This project attribute cannot be disabled since it is set as assignee when submitted for project initiation requests. + enabled_via_assignee_when_submitted_html: 无法禁用此项目特性,因为在提交项目启动请求时,它被设为受理人。 types: no_results_title_text: 目前有可用的类型。 form: @@ -810,8 +810,8 @@ zh-CN: new_label: "新优先级" creation_wizard: errors: - no_work_package_type: "Failed to enable project initiation request because it requires at least one active work package type and this project has none. Please add at least one work package type to this project." - no_status_when_submitted: "Failed to enable project initiation request because work package type %{type} requires at least one status associated with it. Please enable at least one status workflow for this work package type." + no_work_package_type: "无法启用项目启动请求,因为它至少需要一个活动的工作包类型,但此项目没有。请为此项目至少添加一种工作包类型。" + no_status_when_submitted: "无法启用项目启动请求,因为工作包类型 %{type} 至少需要一个与之相关的状态。请为此工作包类型至少启用一个状态工作流。" export: description_attachment_export: "生成的工件将作为 PDF 附件保存到工件工作包中。" description_file_link_export: "工件工作包将有一个文件链接,指向存储在外部文件存储空间的 PDF 文件。此项目需要一个有效文件存储空间,其中包含自动管理的项目文件夹。目前仅支持 Nextcloud 文件存储空间。" @@ -825,7 +825,7 @@ zh-CN: label_request_submission: "请求提交" project_attributes_description: > 选择哪些项目特性应包含在项目启动请求中。此列表仅包含为此项目启用的[项目特性](project_attributes_url)。 - enabled_because_required_html: This project attribute cannot be disabled for this project initiation request since it is defined as required. This can be changed in the administration settings by the administrator of the instance. + enabled_because_required_html: 无法为此项目启动请求禁用此项目特性,因为它被定义为必填项。实例管理员可在管理设置中更改此设置。 status: button_edit: 编辑状态 wizard: @@ -1341,14 +1341,14 @@ zh-CN: activerecord: attributes: agile/sprint: - sharing: "Sharing" - finish_date: "End date" + sharing: "共享中" + finish_date: "结束日期" jira_import: - projects: "Projects" + projects: "项目" "import/jira": - name: "Jira instance name" - url: "Jira instance URL" - personal_access_token: "Personal access token" + name: "Jira 实例名称" + url: "Jira 实例 URL" + personal_access_token: "个人访问令牌" announcements: show_until: "显示截止日期" attachment: @@ -1394,7 +1394,7 @@ zh-CN: regexp: "正则表达式" searchable: "可搜索" admin_only: "仅管理员" - has_comment: "Add a comment text field" + has_comment: "添加注释文本字段" custom_value: value: "值" design_color: @@ -1723,7 +1723,7 @@ zh-CN: not_available: "因系统配置而不可用。" not_deletable: "无法删除。" not_current_user: "不是当前用户。" - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + only_one_active_sprint_allowed: "每个项目只允许有一个活跃的冲刺。" not_found: "未找到" not_a_date: "不是有效的日期。" not_a_datetime: "不是有效的日期时间。" @@ -1830,7 +1830,7 @@ zh-CN: meeting: error_conflict: "无法保存,因为会议已被其他人同时更新。请重新加载页面。" message: - cannot_move_message_to_forum_of_different_project: "A message cannot be moved to a forum of a different project." + cannot_move_message_to_forum_of_different_project: "无法将消息转移到其他项目的论坛。" notifications: at_least_one_channel: "至少需要指定一个发送通知的通道。" attributes: @@ -2086,7 +2086,7 @@ zh-CN: in_use: "此令牌名称已被使用,请选择其他令牌名称" format: "%{message}" jira: - invalid_protocol: "Please provide a valid protocol (http or https)" + invalid_protocol: "请提供有效的协议(http 或 https)" template: body: "请检查以下字段:" header: @@ -2102,7 +2102,7 @@ zh-CN: comment: "评论" custom_action: "自定义操作" custom_field: "自定义字段" - customized: "Customized" + customized: "自定义" "doorkeeper/application": "OAuth应用程序" enterprise_token: other: "企业令牌" @@ -2273,7 +2273,7 @@ zh-CN: role: "角色" roles: "角色" search: "搜索" - sprint: "Sprint" + sprint: "冲刺" start_date: "开始日期" status: "状态" state: "地区" @@ -2625,7 +2625,7 @@ zh-CN: gantt_pdf_export: 甘特图 PDF 导出 ldap_groups: LDAP 用户和群组同步 mcp_server: Model Context Protocol (MCP) - meeting_templates: Reusable meeting templates + meeting_templates: 可重用会议模板 nextcloud_sso: Nextcloud存储的单点登录(SSO) one_drive_sharepoint_file_storage: OneDrive/SharePoint 文件存储 placeholder_users: 占位符用户 @@ -2703,9 +2703,9 @@ zh-CN: title: "自定义操作" description: "自定义操作是一键快捷方式,指向一组预定义的操作,您可以根据状态、角色、类型或项目在某些工作包上使用这些操作。" mcp_server: - description: "Bring OpenProject into your AI workflows with a secure MCP server." + description: "通过安全的 MCP 服务器将 OpenProject 引入您的 AI 工作流。" meeting_templates: - description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." + description: "定义具有设定的议程结构的会议模板,并在创建新会议时重复使用这些模板,从而节省时间。" nextcloud_sso: title: "Nextcloud存储的单点登录(SSO)" description: "使用单点登录为您的 Nextcloud 存储启用无缝且安全的身份验证。简化访问管理并提升用户便利性。" @@ -3017,16 +3017,16 @@ zh-CN: #We need to include the version to invalidate outdated translations in other locales "17_2": new_features_title: > - The release contains various new features and improvements, such as: + 此版本包含各种新功能和改进,例如: new_features_list: - line_0: AI workflows with a secure MCP server (Professional plan and higher) - line_1: Improved project home page with new widget for budgets and improved accessibility - line_2: "Meetings: Meeting templates (Basic plan and higher)" - line_3: Better transparency with project attribute comments. - line_4: PDF export enhancements - line_5: Increased security for external links (Premium plan and higher) - line_6: UI/UX improvements in the Backlogs module - line_7: Harmonized custom field forms + line_0: 通过安全的 MCP 服务器实现的 AI 工作流(专业版及更高版本) + line_1: 改进了项目主页,新增了预算微件,提高了可访问性 + line_2: "会议:会议模板(基本方案及更高版本)" + line_3: 通过项目特性注释,提高了透明度。 + line_4: PDF 导出增强功能 + line_5: 提高了外部链接的安全性(高级方案及更高版本) + line_6: 积压工作模块中的 UI/UX 改进 + line_7: 统一的自定义字段表单 links: upgrade_enterprise_edition: "升级到企业版" postgres_migration: "将您的安装迁移到 PostgreSQL" @@ -3044,10 +3044,10 @@ zh-CN: journals: changes_retracted: "更改已撤回。" caused_changes: - budget_deleted: "Budget has been deleted" + budget_deleted: "预算已删除" dates_changed: "日期已更改" default_attribute_written: "已写入只读属性" - import: "Imported" + import: "已导入" progress_mode_changed_to_status_based: "更新进度计算" status_changed: "状态 '%{status_name}'" system_update: "OpenProject 系统更新:" @@ -3056,21 +3056,21 @@ zh-CN: total_percent_complete_mode_changed_to_simple_average: "完成% 总数的计算现在仅基于完成% 值的简单平均值。" cause_descriptions: import: - header: "changes by %{author}" - field_changed: "%{field} changed from %{old_value} to %{new_value}" - field_set: "%{field} set to %{value}" - field_removed: "%{field} removed" - field_updated: "%{field} updated" - deleted_with_diff: "%{field} deleted (%{link})" - changed_with_diff: "%{field} changed (%{link})" - set_with_diff: "%{field} set (%{link})" + header: "更改者:%{author}" + field_changed: "%{field} 已从 %{old_value} 更改为 %{new_value}" + field_set: "%{field} 设置为 %{value}" + field_removed: "%{field} 已移除" + field_updated: "%{field} 已更新" + deleted_with_diff: "%{field} 已删除 (%{link})" + changed_with_diff: "%{field} 已更改 (%{link})" + set_with_diff: "%{field} 已设置 (%{link})" work_package_predecessor_changed_times: 根据前置任务 %{link}的更改 work_package_parent_changed_times: 通过对父级的更改 %{link} work_package_children_changed_times: 通过对子级的更改 %{link} work_package_related_changed_times: 通过对相关内容的更改 %{link} work_package_duplicate_closed: 重复的工作包自动更新了状态 %{link} unaccessable_work_package_changed: 通过对相关工作包的更改 - budget_deleted: Budget has been deleted + budget_deleted: 预算已删除 working_days_changed: changed: "通过更改工作日(%{changes})" days: @@ -3151,7 +3151,7 @@ zh-CN: active_tokens: "有效令牌" blank_description: "没有为您配置和激活第三方应用程序访问权限。" blank_title: "没有 OAuth 应用程序令牌" - last_refreshed_at: "Last refreshed at" + last_refreshed_at: "最后刷新时间" title: "OAuth" table_title: "OAuth 应用程序令牌" text_hint: "OAuth 应用程序令牌允许第三方应用程序与此 OpenProject 实例关联。" @@ -3237,7 +3237,7 @@ zh-CN: label_always_visible: "总是显示" label_announcement: "公告" label_angular: "AngularJS" - label_app_modules: "%{app_title} modules" + label_app_modules: "%{app_title} 模块" label_api_access_key: "API 访问键" label_api_access_key_created_on: "API 访问密钥创建于 %{value} 前" label_api_access_key_type: "API" @@ -3391,7 +3391,7 @@ zh-CN: label_duplicates: "复制" label_edit: "编辑" label_edit_x: "编辑:%{x}" - label_view_x: "View: %{x}" + label_view_x: "查看:%{x}" label_enable_multi_select: "切换多选" label_enabled_project_custom_fields: "启用自定义字段" label_enabled_project_modules: "启用的模块" @@ -3496,7 +3496,7 @@ zh-CN: label_external_links: "外部链接" label_locale: "语言和地区" label_jump_to_a_project: "跳转到一个项目..." - label_jira_import: "Jira Import" + label_jira_import: "Jira 导入" label_keyword_plural: "关键词" label_language_based: "基于用户的语言" label_last_activity: "最近一次活动" @@ -3519,7 +3519,7 @@ zh-CN: label_lock_user: "锁定用户" label_logged_as: "登录用户名" label_login: "登录" - label_custom_comment: "%{name} comment" + label_custom_comment: "%{name} 注释" label_custom_logo: "自定义徽标桌面版" label_custom_logo_mobile: "自定义徽标移动版" label_custom_export_logo: "自定义导出徽标" @@ -4144,7 +4144,7 @@ zh-CN: notice_successful_delete: "成功删除。" notice_successful_cancel: "取消成功" notice_successful_update: "成功更新。" - notice_successful_move: "Successful move from %{from} to %{to}." + notice_successful_move: "成功从 %{from} 移动到 %{to}。" notice_unsuccessful_create: "创建失败。" notice_unsuccessful_create_with_reason: "创建失败:%{reason}" notice_unsuccessful_update: "更新失败。" @@ -4304,7 +4304,7 @@ zh-CN: permission_edit_project_query: "编辑项目查询" placeholders: default: "-" - templated_hint: Automatically generated through type %{type} + templated_hint: 通过类型 %{type} 自动生成 portfolio: count: zero: "0 个项目组合" @@ -4487,9 +4487,9 @@ zh-CN: setting_capture_external_links: "捕获外部链接" setting_capture_external_links_text: > 启用后,格式化文本中的所有外部链接在离开应用程序前都会重定向至警告页面。这有助于保护用户免受潜在恶意外部网站的危害。 - setting_capture_external_links_require_login: "Require users to be logged in" + setting_capture_external_links_require_login: "需要用户登录" setting_capture_external_links_require_login_text: > - When enabled, users wanting to click on external links need to be logged in before being able to continue. + 启用后,想要点击外部链接的用户需要先登录,然后才能继续操作。 setting_after_first_login_redirect_url: "首次登录重定向" setting_after_first_login_redirect_url_text_html: > 设置用户首次登录后的重定向路径。如果该路径为空,则重定向到主页以进行导览介绍。
    示例: /my/page @@ -4534,9 +4534,9 @@ zh-CN: setting_smtp_password: "SMTP 密码" setting_smtp_domain: "SMTP HELO 域" setting_activity_days_default: "项目活动显示的天数" - setting_api_tokens_enabled: "Enable API tokens" + setting_api_tokens_enabled: "启用 API 令牌" setting_api_tokens_enabled_caption: > - Decide whether users can create personal API tokens in their account settings. These tokens can be used to access the different APIs of OpenProject, such as APIv3 and MCP. + 决定用户是否可以在帐户设置中创建个人 API 令牌。这些令牌可用于访问 OpenProject 的不同 API,如 APIv3 和 MCP。 setting_app_subtitle: "应用副标题" setting_app_title: "应用程序标题" setting_attachment_max_size: "最大的附件大小" @@ -5074,10 +5074,10 @@ zh-CN: reset_failed_logins: "重置失败的帐户" status_user_and_brute_force: "%{user} 和 %{brute_force}" status_change: "状态更改" - text_change_disabled_for_provider_login: "The name and email is set by your login provider and can thus not be changed." + text_change_disabled_for_provider_login: "名称和电子邮件地址由您的登录提供商设置,因此无法更改。" unlock: "解锁​​​​" unlock_and_reset_failed_logins: "解锁和重置失败的帐户" - error_cannot_delete_user: "User cannot be deleted" + error_cannot_delete_user: "无法删除用户" version_status_closed: "关闭" version_status_locked: "锁定" version_status_open: "打开" diff --git a/modules/backlogs/config/locales/crowdin/es.yml b/modules/backlogs/config/locales/crowdin/es.yml index 6c924301122f..f6cc2dd72b13 100644 --- a/modules/backlogs/config/locales/crowdin/es.yml +++ b/modules/backlogs/config/locales/crowdin/es.yml @@ -26,7 +26,7 @@ es: activerecord: attributes: sprint: - duration: "Sprint duration" + duration: "Duración del sprint" work_package: position: "Posición" story_points: "Puntos de Historia" @@ -46,7 +46,7 @@ es: task_type: "Tipo de tarea" backlogs: any: "cualquiera" - column_width: "Column width" + column_width: "Ancho de columna" definition_of_done: "Criterio de Aceptación" impediment: "Impedimento" label_versions_default_fold_state: "Mostrar versiones colapsadas" @@ -54,8 +54,8 @@ es: work_package_is_closed: "El paquete de trabajo esta terminado, cuando" label_is_done_status: "El estado %{status_name} significa completado" points_label: - one: "point" - other: "points" + one: "punto" + other: "puntos" positions_could_not_be_rebuilt: "Las posiciones no pudieron ser reconstruidas." positions_rebuilt_successfully: "Posiciones reconstruidas con éxito." rebuild: "Reconstruir" @@ -64,8 +64,8 @@ es: show_burndown_chart: "Diagrama de Quemado" story: "Historia" story_points: - one: "%{count} story point" - other: "%{count} story points" + one: "%{count} punto de historia" + other: "%{count} puntos de historia" task: "Tarea" task_color: "Color de la tarea" unassigned: "No asignado" @@ -73,24 +73,24 @@ es: header_backlogs: "Módulo de trabajos pendientes" button_update_backlogs: "Actualizar módulo de trabajos pendientes" backlog_component: - blankslate_title: "%{name} is empty" - blankslate_description: "No items planned yet. Drag items here to add them." + blankslate_title: "%{name} está vacío" + blankslate_description: "Aún no hay elementos previstos. Arrastre los elementos aquí para añadirlos." backlog_header_component: - label_toggle_backlog: "Collapse/Expand %{name}" + label_toggle_backlog: "Contraer/expandir %{name}" label_story_count: - zero: "No stories in backlog" - one: "%{count} story in backlog" - other: "%{count} stories in backlog" + zero: "No hay historias en backlog" + one: "%{count} historia en backlog" + other: "%{count} historias en backlog" backlog_menu_component: - label_actions: "Backlog actions" + label_actions: "Acciones de backlog" action_menu: - edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" - task_board: "Task board" - burndown_chart: "Burndown chart" + edit_sprint: "Editar sprint" + new_story: "Nueva historia" + stories_tasks: "Historias/tareas" + task_board: "Panel de tareas" + burndown_chart: "Diagrama Burndown" wiki: "Wiki" - properties: "Properties" + properties: "Propiedades" story_component: label_drag_story: "Move %{name}" story_menu_component: diff --git a/modules/backlogs/config/locales/crowdin/js-zh-CN.yml b/modules/backlogs/config/locales/crowdin/js-zh-CN.yml index 4d23720f048b..b704b0ad0170 100644 --- a/modules/backlogs/config/locales/crowdin/js-zh-CN.yml +++ b/modules/backlogs/config/locales/crowdin/js-zh-CN.yml @@ -25,5 +25,5 @@ zh-CN: properties: storyPoints: "故事点" burndown: - day: "Day" - points: "Points" + day: "天" + points: "点" diff --git a/modules/backlogs/config/locales/crowdin/ko.yml b/modules/backlogs/config/locales/crowdin/ko.yml index 4bc4ff2c2c2b..3127941ab0c8 100644 --- a/modules/backlogs/config/locales/crowdin/ko.yml +++ b/modules/backlogs/config/locales/crowdin/ko.yml @@ -26,7 +26,7 @@ ko: activerecord: attributes: sprint: - duration: "Sprint duration" + duration: "스프린트 기간" work_package: position: "위치" story_points: "스토리 포인트" @@ -46,7 +46,7 @@ ko: task_type: "작업 유형" backlogs: any: "모두" - column_width: "Column width" + column_width: "열 너비" definition_of_done: "완료 정의" impediment: "제한" label_versions_default_fold_state: "접힌 버전 표시" @@ -54,7 +54,7 @@ ko: work_package_is_closed: "다음 경우에 작업 패키지가 완료됩니다." label_is_done_status: "%{status_name} 상태는 완료를 의미합니다." points_label: - other: "points" + other: "포인트" positions_could_not_be_rebuilt: "위치를 다시 빌드할 수 없습니다." positions_rebuilt_successfully: "위치가 성공적으로 다시 빌드되었습니다." rebuild: "다시 빌드" @@ -63,7 +63,7 @@ ko: show_burndown_chart: "번다운 차트" story: "스토리" story_points: - other: "%{count} story points" + other: "%{count} 스토리 포인트" task: "작업" task_color: "작업 색상" unassigned: "할당되지 않음" @@ -71,28 +71,28 @@ ko: header_backlogs: "백로그 모듈" button_update_backlogs: "백로그 모듈 업데이트" backlog_component: - blankslate_title: "%{name} is empty" - blankslate_description: "No items planned yet. Drag items here to add them." + blankslate_title: "%{name}이(가) 비어 있습니다" + blankslate_description: "아직 계획된 항목이 없습니다. 항목을 추가하려면 여기로 드래그하세요." backlog_header_component: - label_toggle_backlog: "Collapse/Expand %{name}" + label_toggle_backlog: "%{name} 축소/확장" label_story_count: - zero: "No stories in backlog" - one: "%{count} story in backlog" - other: "%{count} stories in backlog" + zero: "백로그에 스토리 없음" + one: "백로그의 %{count}개 스토리" + other: "백로그의 %{count}개 스토리" backlog_menu_component: - label_actions: "Backlog actions" + label_actions: "백로그 작업" action_menu: - edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" - task_board: "Task board" - burndown_chart: "Burndown chart" - wiki: "Wiki" - properties: "Properties" + edit_sprint: "스프린트 편집" + new_story: "새로운 스토리" + stories_tasks: "스토리/작업" + task_board: "작업 보드" + burndown_chart: "번다운 차트" + wiki: "위키" + properties: "속성" story_component: - label_drag_story: "Move %{name}" + label_drag_story: "%{name} 이동" story_menu_component: - label_actions: "Story actions" + label_actions: "스토리 작업" backlogs_points_burn_direction: "포인트 번 업/다운" backlogs_product_backlog: "제품 백로그" backlogs_story: "스토리" @@ -100,14 +100,14 @@ ko: backlogs_task: "일감" backlogs_task_type: "작업 유형" backlogs_wiki_template: "스프린트 위키 페이지에 대한 템플릿" - backlogs_empty_title: "No versions are defined yet" - backlogs_empty_action_text: "To start using backlogs, please create a version first" - backlogs_not_configured_title: "Backlogs not configured" - backlogs_not_configured_description: "Story and task types need to be set before using this module." - backlogs_not_configured_action_text: "Configure Backlogs" + backlogs_empty_title: "아직 정의된 버전 없음" + backlogs_empty_action_text: "백로그 사용을 시작하려면 먼저 버전을 만드세요" + backlogs_not_configured_title: "백로그 구성 안 됨" + backlogs_not_configured_description: "이 모듈을 사용하기 전에 스토리 및 작업 유형을 설정해야 합니다." + backlogs_not_configured_action_text: "백로그 구성" burndown: - story_points: "Story points" - story_points_ideal: "Story points (ideal)" + story_points: "스토리 포인트" + story_points_ideal: "스토리 포인트(적합함)" errors: attributes: task_type: @@ -127,8 +127,8 @@ ko: project_module_backlogs: "백로그" rb_burndown_charts: show: - blankslate_title: "No burndown data available" - blankslate_description: "Set start and end date for the sprint to generate a burndown chart." + blankslate_title: "사용 가능한 번다운 데이터 없음" + blankslate_description: "스프린트의 시작 날짜와 종료 날짜를 설정하여 번다운 차트를 생성합니다." remaining_hours: "남은 작업" version_settings_display_label: "백로그의 열" version_settings_display_option_left: "왼쪽" diff --git a/modules/backlogs/config/locales/crowdin/pt-BR.yml b/modules/backlogs/config/locales/crowdin/pt-BR.yml index 0bb6ae34367f..941be3e4c9dd 100644 --- a/modules/backlogs/config/locales/crowdin/pt-BR.yml +++ b/modules/backlogs/config/locales/crowdin/pt-BR.yml @@ -26,7 +26,7 @@ pt-BR: activerecord: attributes: sprint: - duration: "Sprint duration" + duration: "Duração da sprint" work_package: position: "Posição" story_points: "Pontos de história" @@ -46,7 +46,7 @@ pt-BR: task_type: "Tipo de tarefa" backlogs: any: "qualquer" - column_width: "Column width" + column_width: "Largura da coluna" definition_of_done: "Definição de pronto" impediment: "Impedimento" label_versions_default_fold_state: "Mostrar versões em modo fechado" @@ -54,8 +54,8 @@ pt-BR: work_package_is_closed: "Pacote de trabalho está pronto, quando" label_is_done_status: "Situação %{status_name} significa pronto" points_label: - one: "point" - other: "points" + one: "ponto" + other: "pontos" positions_could_not_be_rebuilt: "Posições não poderiam ser reconstruídas." positions_rebuilt_successfully: "Posições reconstruídas com sucesso." rebuild: "Reconstruir" @@ -64,8 +64,8 @@ pt-BR: show_burndown_chart: "Gráfico de Burndown" story: "História" story_points: - one: "%{count} story point" - other: "%{count} story points" + one: "%{count} ponto de história" + other: "%{count} pontos de história" task: "Tarefa" task_color: "Cor da tarefa" unassigned: "Não atribuída" @@ -73,28 +73,28 @@ pt-BR: header_backlogs: "Módulo de backlogs" button_update_backlogs: "Atualizar módulo de backlogs" backlog_component: - blankslate_title: "%{name} is empty" - blankslate_description: "No items planned yet. Drag items here to add them." + blankslate_title: "%{name} está vazio" + blankslate_description: "Ainda não há itens planejados. Arraste os itens para este espaço para adicioná-los." backlog_header_component: - label_toggle_backlog: "Collapse/Expand %{name}" + label_toggle_backlog: "Recolher/Expandir %{name}" label_story_count: - zero: "No stories in backlog" - one: "%{count} story in backlog" - other: "%{count} stories in backlog" + zero: "Nenhuma história no backlog" + one: "%{count} história no backlog" + other: "%{count} histórias no backlog" backlog_menu_component: - label_actions: "Backlog actions" + label_actions: "Ações do backlog" action_menu: - edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" - task_board: "Task board" - burndown_chart: "Burndown chart" + edit_sprint: "Editar sprint" + new_story: "Nova história" + stories_tasks: "Histórias/Tarefas" + task_board: "Quadro de tarefas" + burndown_chart: "Gráfico de burndown" wiki: "Wiki" - properties: "Properties" + properties: "Propriedades" story_component: - label_drag_story: "Move %{name}" + label_drag_story: "Mover %{name}" story_menu_component: - label_actions: "Story actions" + label_actions: "Ações da história" backlogs_points_burn_direction: "Pontos burn up/down" backlogs_product_backlog: "Backlog do produto" backlogs_story: "História" @@ -102,14 +102,14 @@ pt-BR: backlogs_task: "Tarefa" backlogs_task_type: "Tipo de tarefa" backlogs_wiki_template: "Modelo para página wiki da sprint" - backlogs_empty_title: "No versions are defined yet" - backlogs_empty_action_text: "To start using backlogs, please create a version first" - backlogs_not_configured_title: "Backlogs not configured" - backlogs_not_configured_description: "Story and task types need to be set before using this module." - backlogs_not_configured_action_text: "Configure Backlogs" + backlogs_empty_title: "Ainda não há versões definidas" + backlogs_empty_action_text: "Para começar a usar o backlog, primeiro crie uma versão" + backlogs_not_configured_title: "Backlogs não configurados" + backlogs_not_configured_description: "Os tipos de histórias e tarefas precisam ser definidos antes de usar este módulo." + backlogs_not_configured_action_text: "Configurar backlogs" burndown: - story_points: "Story points" - story_points_ideal: "Story points (ideal)" + story_points: "Pontos de história" + story_points_ideal: "Pontos de história (ideal)" errors: attributes: task_type: @@ -129,8 +129,8 @@ pt-BR: project_module_backlogs: "Backlogs" rb_burndown_charts: show: - blankslate_title: "No burndown data available" - blankslate_description: "Set start and end date for the sprint to generate a burndown chart." + blankslate_title: "Nenhum dado de burndown disponível" + blankslate_description: "Defina a data de início e término da sprint para gerar o gráfico de burndown." remaining_hours: "trabalho restante" version_settings_display_label: "Coluna no backlog" version_settings_display_option_left: "esquerda" diff --git a/modules/backlogs/config/locales/crowdin/zh-CN.yml b/modules/backlogs/config/locales/crowdin/zh-CN.yml index 44a22a43e667..25892b903ea8 100644 --- a/modules/backlogs/config/locales/crowdin/zh-CN.yml +++ b/modules/backlogs/config/locales/crowdin/zh-CN.yml @@ -54,7 +54,7 @@ zh-CN: work_package_is_closed: "工作包已完成,当" label_is_done_status: "状态 %{status_name} 表示已完成" points_label: - other: "点数" + other: "点" positions_could_not_be_rebuilt: "无法重建顺序" positions_rebuilt_successfully: "已成功重建顺序" rebuild: "重建" @@ -72,27 +72,27 @@ zh-CN: button_update_backlogs: "更新积压工作模块" backlog_component: blankslate_title: "%{name} 为空" - blankslate_description: "尚未计划项目。将项目拖到此处即可添加。" + blankslate_description: "尚未计划条目。请将条目拖到此处以添加。" backlog_header_component: label_toggle_backlog: "折叠/展开 %{name}" label_story_count: - zero: "待办清单中没有故事" - one: "待办清单中有 %{count} 个故事" - other: "待办清单中有 %{count} 个故事" + zero: "积压工作中没有故事" + one: "积压工作中有 %{count} 个故事" + other: "积压工作中有 %{count} 个故事" backlog_menu_component: - label_actions: "待办清单操作" + label_actions: "积压工作操作" action_menu: edit_sprint: "编辑冲刺" new_story: "新故事" stories_tasks: "故事/任务" task_board: "任务板" - burndown_chart: "Burndown chart" - wiki: "Wiki" - properties: "Properties" + burndown_chart: "燃尽图" + wiki: "维基百科" + properties: "属性" story_component: - label_drag_story: "Move %{name}" + label_drag_story: "移动 %{name}" story_menu_component: - label_actions: "Story actions" + label_actions: "故事操作" backlogs_points_burn_direction: "点数燃尽曲线" backlogs_product_backlog: "产品待办清单" backlogs_story: "故事" @@ -100,14 +100,14 @@ zh-CN: backlogs_task: "任务" backlogs_task_type: "任务类型" backlogs_wiki_template: "冲刺 (Sprint) 的维基页面模板" - backlogs_empty_title: "No versions are defined yet" - backlogs_empty_action_text: "To start using backlogs, please create a version first" - backlogs_not_configured_title: "Backlogs not configured" - backlogs_not_configured_description: "Story and task types need to be set before using this module." - backlogs_not_configured_action_text: "Configure Backlogs" + backlogs_empty_title: "尚未定义版本" + backlogs_empty_action_text: "要开始使用积压工作,请先创建一个版本" + backlogs_not_configured_title: "未配置积压工作" + backlogs_not_configured_description: "使用此模块前,需要设置故事和任务类型。" + backlogs_not_configured_action_text: "配置积压工作" burndown: - story_points: "Story points" - story_points_ideal: "Story points (ideal)" + story_points: "故事点" + story_points_ideal: "故事点(理想)" errors: attributes: task_type: @@ -127,8 +127,8 @@ zh-CN: project_module_backlogs: "待办清单" rb_burndown_charts: show: - blankslate_title: "No burndown data available" - blankslate_description: "Set start and end date for the sprint to generate a burndown chart." + blankslate_title: "没有可用的燃尽数据" + blankslate_description: "设置冲刺的开始和结束日期,以生成燃尽图。" remaining_hours: "剩余工时" version_settings_display_label: "待办清单中的列" version_settings_display_option_left: "左" diff --git a/modules/boards/config/locales/crowdin/zh-CN.yml b/modules/boards/config/locales/crowdin/zh-CN.yml index 48e7b4061926..f67cfb9d4847 100644 --- a/modules/boards/config/locales/crowdin/zh-CN.yml +++ b/modules/boards/config/locales/crowdin/zh-CN.yml @@ -20,7 +20,7 @@ zh-CN: action: "操作面板 (%{attribute})" board_type_attributes: assignee: 受理人 - status: Kanban + status: 看板 version: 版本 subproject: 子项目 subtasks: 父子 diff --git a/modules/budgets/config/locales/crowdin/de.yml b/modules/budgets/config/locales/crowdin/de.yml index 0c514190c1f3..0ca8bc88c60a 100644 --- a/modules/budgets/config/locales/crowdin/de.yml +++ b/modules/budgets/config/locales/crowdin/de.yml @@ -44,7 +44,7 @@ de: labor_budget_item: attributes: principal: - not_a_member_of_budget_project: "is not a member of the budget's project" + not_a_member_of_budget_project: "ist kein Mitglied des Budgetprojekts" models: budget: "Budget" material_budget_item: "Stück" @@ -76,16 +76,16 @@ de: heading: "Projektcontrolling starten" description: "Erhalten Sie einen Überblick über Ihre Budgets und Kosten, um den Status Ihres Projekts effizient zu verfolgen" blankslate_zero: - heading: "Budget details missing" - description: "Add details about your planned budget to see data here" + heading: "Budgetdetails fehlen" + description: "Fügen Sie Details zu Ihrem geplanten Budget hinzu, um die Daten hier zu sehen" caption: zero: "Keine Budgetdaten." - one: "Data aggregated from %{count} budget included in this %{workspace}." - other: "Data aggregated from %{count} budgets included in this %{workspace}." + one: "Daten aggregiert aus %{count} Budget in diesem %{workspace}." + other: "Daten aggregiert aus %{count} Budgets in diesem %{workspace}." caption_with_subitems: - zero: "No budget data." - one: "Data aggregated from %{count} budget included in this %{workspace} and its subitems." - other: "Data aggregated from %{count} budgets included in this %{workspace} and its subitems." + zero: "Keine Budgetdaten." + one: "Daten aggregiert aus %{count} Budget in diesem %{workspace} und seinen Unterelementen." + other: "Daten aggregiert aus %{count} Budgets in diesem %{workspace} und seinen Unterelementen." view_details: "Budgetdetails anzeigen" events: budget: "Budget bearbeitet" diff --git a/modules/budgets/config/locales/crowdin/fr.yml b/modules/budgets/config/locales/crowdin/fr.yml index 9b8ec632b0c2..85f799c6f0d4 100644 --- a/modules/budgets/config/locales/crowdin/fr.yml +++ b/modules/budgets/config/locales/crowdin/fr.yml @@ -74,18 +74,18 @@ fr: title: "Budget par type de coût" blankslate: heading: "Démarrer le contrôle du projet" - description: "Obtenez une vue d'ensemble de vos budgets et de vos coûts pour suivre efficacement l'état de santé de votre projet" + description: "Profitez d'une vue d'ensemble de vos budgets et de vos coûts pour suivre efficacement l'état de santé de votre projet" blankslate_zero: - heading: "Budget details missing" - description: "Add details about your planned budget to see data here" + heading: "Détails du budget manquant" + description: "Ajoutez les détails de votre budget prévisionnel pour voir les données ici" caption: - zero: "Pas de données budgétaires." - one: "Data aggregated from %{count} budget included in this %{workspace}." - other: "Data aggregated from %{count} budgets included in this %{workspace}." + zero: "Aucune donnée budgétaire." + one: "Données agrégées à partir de %{count} budget inclus dans ce %{workspace}." + other: "Données agrégées à partir des %{count} budgets inclus dans ce %{workspace}." caption_with_subitems: - zero: "No budget data." - one: "Data aggregated from %{count} budget included in this %{workspace} and its subitems." - other: "Data aggregated from %{count} budgets included in this %{workspace} and its subitems." + zero: "Pas de données budgétaires." + one: "Les données agrégées à partir du budget %{count} sont incluses dans ce %{workspace} et ses sous-points." + other: "Les données agrégées à partir des %{count} budgets sont incluses dans ce %{workspace} et ses sous-éléments." view_details: "Voir les détails du budget" events: budget: "Budget modifié" diff --git a/modules/budgets/config/locales/crowdin/ko.yml b/modules/budgets/config/locales/crowdin/ko.yml index 639199e18845..13847fa1a8e3 100644 --- a/modules/budgets/config/locales/crowdin/ko.yml +++ b/modules/budgets/config/locales/crowdin/ko.yml @@ -65,28 +65,28 @@ ko: budgets: widgets: budget_totals: - title: "Budget totals" - remaining_budget: "Remaining budget" - spent_budget: "Spent budget" - total_actual_costs: "Total actual costs" - total_planned_budget: "Total planned budget" + title: "예산 합계" + remaining_budget: "남은 예산" + spent_budget: "소비된 예산" + total_actual_costs: "총 실제 비용" + total_planned_budget: "총 계획 예산" budget_by_cost_type: - title: "Budget by cost type" + title: "비용 유형별 예산" blankslate: - heading: "Start project controlling" - description: "Get an overview of your budgets and costs to efficiently track the health status of your project" + heading: "프로젝트 제어 시작" + description: "예산 및 비용에 대한 개요를 확인하여 효율적으로 프로젝트 상태를 추적합니다" blankslate_zero: - heading: "Budget details missing" - description: "Add details about your planned budget to see data here" + heading: "예산 세부 정보 누락" + description: "계획된 예산에 대한 세부 정보를 추가하여 여기에서 데이터를 확인합니다" caption: - zero: "No budget data." + zero: "예산 데이터가 없습니다." one: "Data aggregated from %{count} budget included in this %{workspace}." other: "Data aggregated from %{count} budgets included in this %{workspace}." caption_with_subitems: zero: "No budget data." one: "Data aggregated from %{count} budget included in this %{workspace} and its subitems." other: "Data aggregated from %{count} budgets included in this %{workspace} and its subitems." - view_details: "View budget details" + view_details: "예산 세부 정보 보기" events: budget: "예산 편집됨" help_click_to_edit: "편집하려면 여기를 클릭하세요." diff --git a/modules/budgets/config/locales/crowdin/pt-BR.yml b/modules/budgets/config/locales/crowdin/pt-BR.yml index 35d5e1085a60..4a28b36a9b2a 100644 --- a/modules/budgets/config/locales/crowdin/pt-BR.yml +++ b/modules/budgets/config/locales/crowdin/pt-BR.yml @@ -65,28 +65,28 @@ pt-BR: budgets: widgets: budget_totals: - title: "Budget totals" - remaining_budget: "Remaining budget" - spent_budget: "Spent budget" - total_actual_costs: "Total actual costs" - total_planned_budget: "Total planned budget" + title: "Totais do orçamento" + remaining_budget: "Orçamento restante" + spent_budget: "Orçamento gasto" + total_actual_costs: "Total dos custos reais" + total_planned_budget: "Total do orçamento planejado" budget_by_cost_type: - title: "Budget by cost type" + title: "Orçamento por tipo de custo" blankslate: - heading: "Start project controlling" - description: "Get an overview of your budgets and costs to efficiently track the health status of your project" + heading: "Iniciar controle do projeto" + description: "Obtenha uma visão geral dos seus orçamentos e custos para acompanhar com eficiência a situação do seu projeto" blankslate_zero: - heading: "Budget details missing" - description: "Add details about your planned budget to see data here" + heading: "Detalhes de orçamento ausentes" + description: "Adicione os detalhes do orçamento planejado para visualizar os dados aqui" caption: - zero: "No budget data." + zero: "Nenhum dado de orçamento." one: "Data aggregated from %{count} budget included in this %{workspace}." other: "Data aggregated from %{count} budgets included in this %{workspace}." caption_with_subitems: zero: "No budget data." one: "Data aggregated from %{count} budget included in this %{workspace} and its subitems." other: "Data aggregated from %{count} budgets included in this %{workspace} and its subitems." - view_details: "View budget details" + view_details: "Ver detalhes do orçamento" events: budget: "Orçamento editado" help_click_to_edit: "Clique aqui para editar." diff --git a/modules/budgets/config/locales/crowdin/zh-CN.yml b/modules/budgets/config/locales/crowdin/zh-CN.yml index ae49beb5cd96..99dde4a9d209 100644 --- a/modules/budgets/config/locales/crowdin/zh-CN.yml +++ b/modules/budgets/config/locales/crowdin/zh-CN.yml @@ -44,7 +44,7 @@ zh-CN: labor_budget_item: attributes: principal: - not_a_member_of_budget_project: "is not a member of the budget's project" + not_a_member_of_budget_project: "不是预算项目的成员" models: budget: "预算" material_budget_item: "单位" @@ -65,28 +65,28 @@ zh-CN: budgets: widgets: budget_totals: - title: "Budget totals" - remaining_budget: "Remaining budget" - spent_budget: "Spent budget" - total_actual_costs: "Total actual costs" - total_planned_budget: "Total planned budget" + title: "预算总额" + remaining_budget: "剩余预算" + spent_budget: "已用预算" + total_actual_costs: "实际成本总额" + total_planned_budget: "计划预算总额" budget_by_cost_type: - title: "Budget by cost type" + title: "按成本类型分列的预算" blankslate: - heading: "Start project controlling" - description: "Get an overview of your budgets and costs to efficiently track the health status of your project" + heading: "开始项目控制" + description: "概括了解预算和成本,有效跟踪项目的健康状况" blankslate_zero: - heading: "Budget details missing" - description: "Add details about your planned budget to see data here" + heading: "预算详情缺失" + description: "添加计划预算的详情,以便在此处查看数据" caption: - zero: "No budget data." - one: "Data aggregated from %{count} budget included in this %{workspace}." - other: "Data aggregated from %{count} budgets included in this %{workspace}." + zero: "无预算数据。" + one: "从包含在此 %{workspace} 中的 %{count} 个预算中汇总的数据。" + other: "从包含在此 %{workspace} 中的 %{count} 个预算中汇总的数据。" caption_with_subitems: - zero: "No budget data." - one: "Data aggregated from %{count} budget included in this %{workspace} and its subitems." - other: "Data aggregated from %{count} budgets included in this %{workspace} and its subitems." - view_details: "View budget details" + zero: "无预算数据。" + one: "从包含在此 %{workspace} 及其子条目中的 %{count} 个预算中汇总的数据。" + other: "从包含在此 %{workspace} 及其子条目中的 %{count} 个预算中汇总的数据。" + view_details: "查看预算详情" events: budget: "预算已编辑" help_click_to_edit: "单击此处进行编辑。" diff --git a/modules/costs/config/locales/crowdin/de.yml b/modules/costs/config/locales/crowdin/de.yml index bbe92ee3b3d1..67123a735df4 100644 --- a/modules/costs/config/locales/crowdin/de.yml +++ b/modules/costs/config/locales/crowdin/de.yml @@ -232,7 +232,7 @@ de: title: "Tatsächliche Kosten pro Monat" blankslate: heading: "Erfassen Sie Ihre Zeit und Kosten" - description: "Get an overview of your costs and logged time to monitor progress of your project. Make sure that work packages are associated with the correct budget." + description: "Erhalten Sie einen Überblick über Ihre Kosten und protokollierte Zeit, um den Fortschritt Ihres Projekts zu verfolgen. Stellen Sie sicher, dass Arbeitspakete mit dem richtigen Budget verknüpft sind." action: "Zeit buchen" view_details: "Details zu den tatsächlichen Kosten anzeigen" ee: diff --git a/modules/costs/config/locales/crowdin/fr.yml b/modules/costs/config/locales/crowdin/fr.yml index 3749c698d481..b40ae8b6b910 100644 --- a/modules/costs/config/locales/crowdin/fr.yml +++ b/modules/costs/config/locales/crowdin/fr.yml @@ -82,7 +82,7 @@ fr: models: time_entry: invalid_time: "doit être entre 00:00 et 23:59." - cannot_log_for_this_work_package: "Impossible d'enregistrer le journal pour ce lot de travaux." + cannot_log_for_this_work_package: "Impossible de consigner du temps pour ce lot de travaux." duplicate_ongoing: "Une saisie de temps en cours existe déjà pour cet utilisateur." work_package: is_not_a_valid_target_for_cost_entries: "Le lot de travaux #%{id} n'est pas une cible valide pour réaffecter les entrées de coût." @@ -97,10 +97,10 @@ fr: valid_from: "Valable à partir du" fixed_date: "Date fixe" button_add_rate: "Ajouter tarif" - button_log_costs: "Consigner coûts unitaires" - button_log_time: "Journal" + button_log_costs: "Consigner des coûts unitaires" + button_log_time: "Consigner" button_add_activity: "Activité" - button_add_time_entry: "Consigner temps" + button_add_time_entry: "Consigner du temps" button_stop_timer: "Arrêter le suivi du temps" caption_booked_on_project: "Réservé pour le projet" caption_default: "Défaut" @@ -113,10 +113,10 @@ fr: caption_save_rate: "Enregistrer tarif" caption_set_rate: "Définir le tarif actuel" caption_show_locked: "Afficher les types verrouillés" - caption_log_time_dialog: "Sauvegarder le journal" + caption_log_time_dialog: "Consigner du temps" description_date_for_new_rate: "Date pour le nouveau tarif" description_costs_settings: "Définissez le format souhaité pour les coûts dans tous les projets." - description_time_settings: "Définissez les champs à remplir obligatoirement lors de l'enregistrement du temps de travail dans tous les projets." + description_time_settings: "Définissez les champs à remplir obligatoirement lors de la consignation du temps de travail dans tous les projets." group_by_others: "dans aucun groupe" label_between: "entre" label_cost_filter_add: "Ajouter filtre d'entrée de coût" @@ -142,7 +142,7 @@ fr: label_work_package_filter_add: "Ajouter filtre de lot de travaux" label_kind: "Type" label_less_or_equal: "<=" - label_log_costs: "Journaliser les coûts unitaires" + label_log_costs: "Consigner des coûts unitaires" label_new_time_entry_activity: "Nouvelle saisie de temps d'activité" label_time_entry_activity_form_description: "Les modifications apportées à cette saisie du temps d'activité seront répercutées dans tous les projets où elle est activée." label_no: "Non" @@ -194,7 +194,7 @@ fr: permission_edit_hourly_rates: "Éditer les tarifs horaires" permission_edit_own_hourly_rate: "Éditer ses propres tarifs horaires" permission_edit_rates: "Éditer les tarifs" - permission_log_costs: "Réserver coûts unitaires" + permission_log_costs: "Réserver des coûts unitaires" permission_log_own_costs: "Réserver coûts unitaires propres" permission_view_cost_entries: "Afficher coûts réservés" permission_view_cost_rates: "Voir les tarifs de coût" @@ -232,8 +232,8 @@ fr: title: "Coûts réels par mois" blankslate: heading: "Commencez à suivre votre temps et vos coûts" - description: "Get an overview of your costs and logged time to monitor progress of your project. Make sure that work packages are associated with the correct budget." - action: "Durée du journal" + description: "Obtenez une vue d'ensemble de vos coûts et du temps consignés pour suivre l'avancement de votre projet. Assurez-vous que les lots de travaux sont associés au bon budget." + action: "Enregistrer le temps" view_details: "Voir les détails des coûts réels" ee: features: diff --git a/modules/costs/config/locales/crowdin/js-fr.yml b/modules/costs/config/locales/crowdin/js-fr.yml index b9d385c460cd..79740f6f9e06 100644 --- a/modules/costs/config/locales/crowdin/js-fr.yml +++ b/modules/costs/config/locales/crowdin/js-fr.yml @@ -30,6 +30,6 @@ fr: properties: overallCosts: "Coûts globaux" spentUnits: "Unités consommées" - button_log_costs: "Consigner coûts unitaires" + button_log_costs: "Consigner des coûts unitaires" label_hour: "heure" label_hours: "heures" diff --git a/modules/costs/config/locales/crowdin/ko.yml b/modules/costs/config/locales/crowdin/ko.yml index 29ea12b0a505..9d67d3282486 100644 --- a/modules/costs/config/locales/crowdin/ko.yml +++ b/modules/costs/config/locales/crowdin/ko.yml @@ -225,12 +225,12 @@ ko: costs: widgets: actual_costs: - title: "Actual costs by month" + title: "월별 실제 비용" blankslate: - heading: "Start tracking your time and costs" - description: "Get an overview of your costs and logged time to monitor progress of your project. Make sure that work packages are associated with the correct budget." - action: "Log time" - view_details: "View actual costs details" + heading: "시간 및 비용 추적 시작" + description: "비용 및 기록된 시간에 대한 개요를 확인하여 프로젝트의 진행률을 모니터링합니다. 작업 패키지가 올바른 예산과 연결되어 있는지 확인해야 합니다." + action: "시간 기록" + view_details: "실제 비용 세부 정보 보기" ee: features: time_entry_time_restrictions: 정확한 시간 추적 요구 diff --git a/modules/costs/config/locales/crowdin/pt-BR.yml b/modules/costs/config/locales/crowdin/pt-BR.yml index 3893f3ed3c54..a80308e2a7b3 100644 --- a/modules/costs/config/locales/crowdin/pt-BR.yml +++ b/modules/costs/config/locales/crowdin/pt-BR.yml @@ -229,12 +229,12 @@ pt-BR: costs: widgets: actual_costs: - title: "Actual costs by month" + title: "Custos reais por mês" blankslate: - heading: "Start tracking your time and costs" - description: "Get an overview of your costs and logged time to monitor progress of your project. Make sure that work packages are associated with the correct budget." - action: "Log time" - view_details: "View actual costs details" + heading: "Comece a registrar seu tempo e seus custos" + description: "Obtenha uma visão geral dos seus custos e do tempo registrado para acompanhar o progresso do seu projeto. Certifique-se de que os pacotes de trabalho estejam associados ao orçamento correto." + action: "Registrar tempo" + view_details: "Ver detalhes dos custos reais" ee: features: time_entry_time_restrictions: Exigir controle exato de tempo diff --git a/modules/costs/config/locales/crowdin/zh-CN.yml b/modules/costs/config/locales/crowdin/zh-CN.yml index 1e9f0507ae98..b90c323aa6d4 100644 --- a/modules/costs/config/locales/crowdin/zh-CN.yml +++ b/modules/costs/config/locales/crowdin/zh-CN.yml @@ -225,12 +225,12 @@ zh-CN: costs: widgets: actual_costs: - title: "Actual costs by month" + title: "每月实际成本" blankslate: - heading: "Start tracking your time and costs" - description: "Get an overview of your costs and logged time to monitor progress of your project. Make sure that work packages are associated with the correct budget." - action: "Log time" - view_details: "View actual costs details" + heading: "开始跟踪时间和成本" + description: "概括了解成本和记录的时间,以便监控项目进度。确保工作包与正确的预算相关联。" + action: "记录时间" + view_details: "查看实际成本详情" ee: features: time_entry_time_restrictions: 需要准确的时间跟踪 diff --git a/modules/documents/config/locales/crowdin/ko.yml b/modules/documents/config/locales/crowdin/ko.yml index 7442a3181e85..6dd3bbe14c11 100644 --- a/modules/documents/config/locales/crowdin/ko.yml +++ b/modules/documents/config/locales/crowdin/ko.yml @@ -24,7 +24,7 @@ ko: name: "OpenProject 문서" description: "프로젝트에서 문서 생성을 허용하는 OpenProject 플러그인입니다." attributes: - collaborative_editing_hocuspocus_url: "Hocuspocus server URL" + collaborative_editing_hocuspocus_url: "Hocuspocus 서버 URL" activerecord: errors: models: @@ -121,8 +121,8 @@ ko: some_unwritable: 일부 값은 환경 변수를 통해 구성되며 여기에서 편집할 수 없습니다. hocuspocus_server_url: label: "Hocuspocus 서버 URL" - caption: "The WebSocket address of a working Hocuspocus server." - invalid_scheme: "Must use a WebSocket protocol (ws:// or wss://)." + caption: "작동 중인 Hocuspocus 서버의 WebSocket 주소입니다." + invalid_scheme: "WebSocket 프로토콜(ws:// 또는 wss://)을 사용해야 합니다." hocuspocus_server_secret: label: "클라이언트 비밀번호" caption: "Hocuspocus 서버에서 제공한 비밀번호를 붙여넣으세요." diff --git a/modules/documents/config/locales/crowdin/pt-BR.yml b/modules/documents/config/locales/crowdin/pt-BR.yml index abeb92255d82..f61e93f1347e 100644 --- a/modules/documents/config/locales/crowdin/pt-BR.yml +++ b/modules/documents/config/locales/crowdin/pt-BR.yml @@ -24,7 +24,7 @@ pt-BR: name: "Documentos do OpenProject" description: "Um plugin OpenProject para permitir a criação de documentos em projetos." attributes: - collaborative_editing_hocuspocus_url: "Hocuspocus server URL" + collaborative_editing_hocuspocus_url: "URL do servidor Hocuspocus" activerecord: errors: models: @@ -123,8 +123,8 @@ pt-BR: some_unwritable: Alguns valores são configurados por meio de variáveis de ambiente e não podem ser editados aqui. hocuspocus_server_url: label: "URL do servidor Hocuspocus" - caption: "The WebSocket address of a working Hocuspocus server." - invalid_scheme: "Must use a WebSocket protocol (ws:// or wss://)." + caption: "O endereço WebSocket de um servidor Hocuspocus em funcionamento." + invalid_scheme: "Deve usar um protocolo WebSocket (ws:// ou wss://)." hocuspocus_server_secret: label: "Segredo do cliente" caption: "Cole o segredo fornecido pelo servidor Hocuspocus." diff --git a/modules/documents/config/locales/crowdin/zh-CN.yml b/modules/documents/config/locales/crowdin/zh-CN.yml index 32a9999c5fe5..2cbb46ca3618 100644 --- a/modules/documents/config/locales/crowdin/zh-CN.yml +++ b/modules/documents/config/locales/crowdin/zh-CN.yml @@ -24,7 +24,7 @@ zh-CN: name: "OpenProject 文档" description: "允许在项目中创建文档的 OpenProject 插件。" attributes: - collaborative_editing_hocuspocus_url: "Hocuspocus server URL" + collaborative_editing_hocuspocus_url: "Hocuspocus 服务器 URL" activerecord: errors: models: @@ -121,8 +121,8 @@ zh-CN: some_unwritable: 一些值通过环境变量配置,无法在此处编辑。 hocuspocus_server_url: label: "Hocuspocus 服务器 URL" - caption: "The WebSocket address of a working Hocuspocus server." - invalid_scheme: "Must use a WebSocket protocol (ws:// or wss://)." + caption: "有效 Hocuspocus 服务器的 WebSocket 地址。" + invalid_scheme: "必须使用 WebSocket 协议(ws:// 或 wss://)。" hocuspocus_server_secret: label: "客户端密钥" caption: "粘贴 Hocuspocus 服务器提供的密钥。" diff --git a/modules/grids/config/locales/crowdin/js-de.yml b/modules/grids/config/locales/crowdin/js-de.yml index 464207ac38d6..35322bc76f1a 100644 --- a/modules/grids/config/locales/crowdin/js-de.yml +++ b/modules/grids/config/locales/crowdin/js-de.yml @@ -51,7 +51,7 @@ de: title: 'Arbeitspaket-Tabelle' work_packages_graph: title: 'Arbeitspaket-Graph' - summary: "%{chartType} Tabelle mit Arbeitspaketen, die %{description} sind." + summary: "%{chartType} Diagramm zeigt Arbeitspakete. Zusammenfassung: %{description}." work_packages_calendar: title: 'Kalender' work_packages_overview: diff --git a/modules/grids/config/locales/crowdin/js-zh-CN.yml b/modules/grids/config/locales/crowdin/js-zh-CN.yml index 8eb6c2e836ed..d47790eeea7d 100644 --- a/modules/grids/config/locales/crowdin/js-zh-CN.yml +++ b/modules/grids/config/locales/crowdin/js-zh-CN.yml @@ -2,12 +2,12 @@ zh-CN: js: grid: add_widget: '添加微件' - widget_menu_label: 'Show menu options for %{widgetName} widget' + widget_menu_label: '显示 %{widgetName} 微件的菜单选项' remove: '移除微件' configure: '配置微件' widgets: missing_permission: "您没有查看此微件所需的权限。" - not_available: "This widget is currently unavailable." + not_available: "此微件目前不可用。" custom_text: title: '自定义文本' documents: diff --git a/modules/meeting/config/locales/crowdin/af.yml b/modules/meeting/config/locales/crowdin/af.yml index 73c81ba665f1..6fdedae06497 100644 --- a/modules/meeting/config/locales/crowdin/af.yml +++ b/modules/meeting/config/locales/crowdin/af.yml @@ -126,7 +126,6 @@ af: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ af: label_time_zone: "Tydsone" label_start_date: "Begindatum" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ af: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/ar.yml b/modules/meeting/config/locales/crowdin/ar.yml index a5be635bc4c4..01a60b1f048a 100644 --- a/modules/meeting/config/locales/crowdin/ar.yml +++ b/modules/meeting/config/locales/crowdin/ar.yml @@ -134,7 +134,6 @@ ar: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "اجتماع جديد" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -215,6 +214,8 @@ ar: label_time_zone: "المنطقة الزمنية" label_start_date: "تاريخ البدء" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -641,7 +642,7 @@ ar: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/az.yml b/modules/meeting/config/locales/crowdin/az.yml index 625bfe211748..a17ea75ee84e 100644 --- a/modules/meeting/config/locales/crowdin/az.yml +++ b/modules/meeting/config/locales/crowdin/az.yml @@ -126,7 +126,6 @@ az: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ az: label_time_zone: "Time zone" label_start_date: "Start date" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ az: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/be.yml b/modules/meeting/config/locales/crowdin/be.yml index 3ef8fdca9d5c..fc460aeee00b 100644 --- a/modules/meeting/config/locales/crowdin/be.yml +++ b/modules/meeting/config/locales/crowdin/be.yml @@ -130,7 +130,6 @@ be: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -205,6 +204,8 @@ be: label_time_zone: "Time zone" label_start_date: "Start date" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -627,7 +628,7 @@ be: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/bg.yml b/modules/meeting/config/locales/crowdin/bg.yml index 40e900a45ecc..42ad60b58772 100644 --- a/modules/meeting/config/locales/crowdin/bg.yml +++ b/modules/meeting/config/locales/crowdin/bg.yml @@ -126,7 +126,6 @@ bg: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Нова среща" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ bg: label_time_zone: "Часова зона" label_start_date: "Начална дата" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ bg: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/ca.yml b/modules/meeting/config/locales/crowdin/ca.yml index 3a2048577d55..acf2a23f64fd 100644 --- a/modules/meeting/config/locales/crowdin/ca.yml +++ b/modules/meeting/config/locales/crowdin/ca.yml @@ -126,7 +126,6 @@ ca: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Nova reunió" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ ca: label_time_zone: "Zona horària" label_start_date: "Data d'inici" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ ca: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/ckb-IR.yml b/modules/meeting/config/locales/crowdin/ckb-IR.yml index 82a4700edd3b..ce28e54db24b 100644 --- a/modules/meeting/config/locales/crowdin/ckb-IR.yml +++ b/modules/meeting/config/locales/crowdin/ckb-IR.yml @@ -126,7 +126,6 @@ ckb-IR: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ ckb-IR: label_time_zone: "Time zone" label_start_date: "Start date" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ ckb-IR: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/cs.yml b/modules/meeting/config/locales/crowdin/cs.yml index 0cd6cb235dd8..9a662afbdf2d 100644 --- a/modules/meeting/config/locales/crowdin/cs.yml +++ b/modules/meeting/config/locales/crowdin/cs.yml @@ -130,7 +130,6 @@ cs: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Nová schůzka" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Nová jednorázová schůzka" label_meeting_new_recurring: "Nová opakovaná schůzka" label_meeting_create: "Vytvořit schůzku" @@ -205,6 +204,8 @@ cs: label_time_zone: "Časové pásmo" label_start_date: "Datum zahájení" label_subscribe_icalendar: "Přihlásit kalendář k odběru" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -627,7 +628,7 @@ cs: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/da.yml b/modules/meeting/config/locales/crowdin/da.yml index ad970b4f1812..1c93c068c16b 100644 --- a/modules/meeting/config/locales/crowdin/da.yml +++ b/modules/meeting/config/locales/crowdin/da.yml @@ -126,7 +126,6 @@ da: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Nyt møde" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ da: label_time_zone: "Tidszone" label_start_date: "Start dato" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ da: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/de.yml b/modules/meeting/config/locales/crowdin/de.yml index a65e00d18a41..3f76f579fbf3 100644 --- a/modules/meeting/config/locales/crowdin/de.yml +++ b/modules/meeting/config/locales/crowdin/de.yml @@ -126,7 +126,6 @@ de: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Neue Besprechung" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Neue einmalige Besprechung" label_meeting_new_recurring: "Neue Terminserie" label_meeting_create: "Besprechung erstellen" @@ -195,6 +194,8 @@ de: label_time_zone: "Zeitzone" label_start_date: "Beginn" label_subscribe_icalendar: "Im Kalender abonnieren" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ de: text_meeting_draft_banner: "Dieses Meeting ist derzeit ein Entwurf. Diese Besprechung sendet keine Kalenderaktualisierungen oder Einladungen, selbst wenn Sie Besprechungsdetails ändern oder Teilnehmer hinzufügen/entfernen." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Diese Besprechung öffnen und Einladungen verschicken?" text_exit_draft_mode_dialog_subtitle: "Sie können nicht mehr zum Entwurfsmodus zurückkehren, sobald Sie die Besprechung eröffnen." text_exit_draft_mode_dialog_template_title: "Das erste Vorkommen dieser Terminserie öffnen?" diff --git a/modules/meeting/config/locales/crowdin/el.yml b/modules/meeting/config/locales/crowdin/el.yml index bdc82fb90ccb..50dc9392b83e 100644 --- a/modules/meeting/config/locales/crowdin/el.yml +++ b/modules/meeting/config/locales/crowdin/el.yml @@ -126,7 +126,6 @@ el: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Νέα Συνάντηση" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Δημιουργία συνάντησης" @@ -195,6 +194,8 @@ el: label_time_zone: "Ζώνη Ώρας" label_start_date: "Ημερομηνία έναρξης" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ el: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/eo.yml b/modules/meeting/config/locales/crowdin/eo.yml index 6014ac200ca9..6a0f507a9e58 100644 --- a/modules/meeting/config/locales/crowdin/eo.yml +++ b/modules/meeting/config/locales/crowdin/eo.yml @@ -126,7 +126,6 @@ eo: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Nova renkontiĝo" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ eo: label_time_zone: "Horzono" label_start_date: "Komencdato" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ eo: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/es.yml b/modules/meeting/config/locales/crowdin/es.yml index 7beca91e01be..7bcd99b2ebcb 100644 --- a/modules/meeting/config/locales/crowdin/es.yml +++ b/modules/meeting/config/locales/crowdin/es.yml @@ -126,7 +126,6 @@ es: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Nueva reunión" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Nueva reunión única" label_meeting_new_recurring: "Nueva reunión periódica" label_meeting_create: "Crear reunión" @@ -195,6 +194,8 @@ es: label_time_zone: "Zona horaria" label_start_date: "Fecha de inicio" label_subscribe_icalendar: "Suscribirse al calendario" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ es: text_meeting_draft_banner: "Estás en modo Borrador. Esta reunión no enviará actualizaciones ni invitaciones de calendario, incluso si cambias los detalles de la reunión o añades/eliminas participantes." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "¿Abrir esta reunión y enviar invitaciones?" text_exit_draft_mode_dialog_subtitle: "Una vez programada una reunión, no puedes volver al modo Borrador." text_exit_draft_mode_dialog_template_title: "¿Abrir la primera repetición de esta serie de reuniones?" diff --git a/modules/meeting/config/locales/crowdin/et.yml b/modules/meeting/config/locales/crowdin/et.yml index 4abace527dd9..dd2123de87e4 100644 --- a/modules/meeting/config/locales/crowdin/et.yml +++ b/modules/meeting/config/locales/crowdin/et.yml @@ -126,7 +126,6 @@ et: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Uus koosolek" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ et: label_time_zone: "Ajavöönd" label_start_date: "Alguskuupäev" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ et: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/eu.yml b/modules/meeting/config/locales/crowdin/eu.yml index 5b03636da211..cea506922d63 100644 --- a/modules/meeting/config/locales/crowdin/eu.yml +++ b/modules/meeting/config/locales/crowdin/eu.yml @@ -126,7 +126,6 @@ eu: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Hitzordu berria" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ eu: label_time_zone: "Ordu-eremua" label_start_date: "Hasiera data" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ eu: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/fa.yml b/modules/meeting/config/locales/crowdin/fa.yml index 6bbe1eebba37..a0207f78ca31 100644 --- a/modules/meeting/config/locales/crowdin/fa.yml +++ b/modules/meeting/config/locales/crowdin/fa.yml @@ -126,7 +126,6 @@ fa: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "ایجاد جلسه" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ fa: label_time_zone: "منطقه زمانی" label_start_date: "تاریخ شروع" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ fa: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/fi.yml b/modules/meeting/config/locales/crowdin/fi.yml index 04bf03e00672..3d6caee31126 100644 --- a/modules/meeting/config/locales/crowdin/fi.yml +++ b/modules/meeting/config/locales/crowdin/fi.yml @@ -126,7 +126,6 @@ fi: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Uusi kokous" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ fi: label_time_zone: "Aikavyöhyke" label_start_date: "Aloituspäivä" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ fi: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/fil.yml b/modules/meeting/config/locales/crowdin/fil.yml index a95839c0f439..87115689c258 100644 --- a/modules/meeting/config/locales/crowdin/fil.yml +++ b/modules/meeting/config/locales/crowdin/fil.yml @@ -126,7 +126,6 @@ fil: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Bagong Pagpupulong" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ fil: label_time_zone: "Time Zone" label_start_date: "Petsa ng Pagsisimula" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ fil: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/fr.yml b/modules/meeting/config/locales/crowdin/fr.yml index 4eb86c80af8d..9eabf1d9b295 100644 --- a/modules/meeting/config/locales/crowdin/fr.yml +++ b/modules/meeting/config/locales/crowdin/fr.yml @@ -126,7 +126,6 @@ fr: label_meeting_template_edit: "Éditer le modèle" label_meeting_create_from_template: "Créer une réunion à partir d'un modèle" label_meeting_new: "Nouvelle réunion" - caption_meeting_template_select: "Sélectionnez un modèle et copier automatiquement ses éléments de l'ordre du jour" label_meeting_new_dynamic: "Nouvelle réunion ponctuelle" label_meeting_new_recurring: "Nouvelle réunion récurrente" label_meeting_create: "Créer une réunion" @@ -195,6 +194,8 @@ fr: label_time_zone: "Fuseau horaire" label_start_date: "Date de début" label_subscribe_icalendar: "S'abonner au calendrier" + caption_meeting_template_select: "Sélectionnez un modèle pour copier automatiquement ses points de l'ordre du jour" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -246,9 +247,9 @@ fr: header: "Annulée : Réunion « %{title} »" header_occurrence: "Annulée : occurrence de la réunion « %{title} »" header_series: "Annulée : série de réunions « %{title} »" - summary_occurrence: "Une occurrence de '%{title}' a été annulée par %{actor}, ou vous avez été supprimé en tant que participant" - summary_series: "La série de réunions '%{title}' a été annulée par %{actor}, ou vous avez été retiré en tant que participant" - summary: "'%{title}' a été annulé par %{actor}, ou vous avez été supprimé en tant que participant" + summary_occurrence: "Une occurrence de « %{title} » a été annulée par %{actor}, ou vous avez été supprimé(e) en tant que participant(e)" + summary_series: "La série de réunions « %{title} » a été annulée par %{actor}, ou vous avez été supprimé(e) en tant que participant(e)" + summary: "« %{title} » a été annulé par %{actor}, ou vous avez été supprimé(e) en tant que participant(e)" date_time: "Date/heure prévue" participant_added: header: "Réunion « %{title} » - Participant ajouté" @@ -262,7 +263,7 @@ fr: summary_series: "%{actor} a supprimé %{participant} de la série de réunions « %{title} »" ended: header_series: "Terminé : Série de rencontres '%{title}'" - summary_series: "La série de réunions '%{title}' a été clôturée par %{actor}" + summary_series: "La série de réunions « %{title} » a été clôturée par %{actor}" updated: header: "La réunion « %{title} » a été mise à jour" summary: "La réunion « %{title} » a été mise à jour par %{actor}" @@ -289,7 +290,7 @@ fr: Cette action est irréversible. Veuillez procéder avec prudence. template: title: "Supprimer le modèle" - heading: "Supprimer ce modèle\_?" + heading: "Supprimer ce modèle ?" occurrence: title: "Annuler l'occurrence de la réunion" heading: "Annuler cette occurrence de réunion ?" @@ -504,7 +505,7 @@ fr: text_duration_in_hours: "Durée en heures" text_in_hours: "en heures" text_meeting_agenda_for_meeting: 'ordre du jour de la réunion «%{meeting} »' - text_meeting_template_blank_slate_heading: "Il n'y a pas de modèles à afficher" + text_meeting_template_blank_slate_heading: "Il n'y a aucun modèle à afficher" text_meeting_template_blank_slate: "Vous pouvez créer un nouveau modèle pour des réunions ponctuelles" text_meeting_series_end_early_heading: "Supprimer les futures occurrences ?" text_meeting_series_end_early: "La fin de la série supprimera les futures occurrences de réunions ouvertes ou planifiées" @@ -613,7 +614,7 @@ fr: text_meeting_draft_banner: "Vous êtes actuellement en mode brouillon. Cette réunion n'enverra pas de mises à jour de calendrier ni d'invitations, même si vous modifiez les détails de la réunion ou si vous ajoutez/supprimez des participants." text_onetime_meeting_template_banner: "Vous êtes en train de modifier un modèle de réunion. Vous pouvez utiliser ce modèle pour créer des réunions ponctuelles avec un ordre du jour prédéfini. Les modifications n'affecteront pas les réunions déjà créées." text_onetime_meeting_template_empty_heading: "Ce modèle de réunion est vide" - text_onetime_meeting_template_description: "Ajouter des éléments à l'ordre du jour et des pièces jointes à ce modèle. Ils seront inclus dans chaque réunion basée sur ce modèle." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Ouvrez cette réunion et envoyez des invitations ?" text_exit_draft_mode_dialog_subtitle: "Vous ne pouvez pas revenir au mode brouillon une fois que vous avez planifié une réunion." text_exit_draft_mode_dialog_template_title: "Ouvrez la première occurrence de cette série de réunions ?" diff --git a/modules/meeting/config/locales/crowdin/he.yml b/modules/meeting/config/locales/crowdin/he.yml index 27212c1c64b2..0c6c1ea40ea5 100644 --- a/modules/meeting/config/locales/crowdin/he.yml +++ b/modules/meeting/config/locales/crowdin/he.yml @@ -130,7 +130,6 @@ he: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "פגישה חדשה" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -205,6 +204,8 @@ he: label_time_zone: "איזור זמן" label_start_date: "תאריך התחלה" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -627,7 +628,7 @@ he: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/hi.yml b/modules/meeting/config/locales/crowdin/hi.yml index cc91f666bba6..fafe394fc0a1 100644 --- a/modules/meeting/config/locales/crowdin/hi.yml +++ b/modules/meeting/config/locales/crowdin/hi.yml @@ -126,7 +126,6 @@ hi: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ hi: label_time_zone: "समय क्षेत्र" label_start_date: "प्रारंभ दिनांक" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ hi: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/hr.yml b/modules/meeting/config/locales/crowdin/hr.yml index c238623014c6..6ebf9bd57e0d 100644 --- a/modules/meeting/config/locales/crowdin/hr.yml +++ b/modules/meeting/config/locales/crowdin/hr.yml @@ -128,7 +128,6 @@ hr: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Novi sastanak" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -200,6 +199,8 @@ hr: label_time_zone: "Vremenska zona" label_start_date: "Datum Početka" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -620,7 +621,7 @@ hr: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/hu.yml b/modules/meeting/config/locales/crowdin/hu.yml index ccadd388ecab..f5e69bfeb6c1 100644 --- a/modules/meeting/config/locales/crowdin/hu.yml +++ b/modules/meeting/config/locales/crowdin/hu.yml @@ -126,7 +126,6 @@ hu: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Új megbeszélés" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Új egyszeri megbeszélés" label_meeting_new_recurring: "Új ismétlődő megbeszélés" label_meeting_create: "Megbeszélés létrehozása" @@ -195,6 +194,8 @@ hu: label_time_zone: "Időzóna" label_start_date: "Kezdési dátum" label_subscribe_icalendar: "Feliratkozás az iCalendars-ra" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ hu: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/id.yml b/modules/meeting/config/locales/crowdin/id.yml index 1f5d85bc19af..1ebe98f4ecaa 100644 --- a/modules/meeting/config/locales/crowdin/id.yml +++ b/modules/meeting/config/locales/crowdin/id.yml @@ -124,7 +124,6 @@ id: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Rapat Baru" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Rapat satu waktu baru" label_meeting_new_recurring: "Rapat berulang baru" label_meeting_create: "Buat rapat" @@ -190,6 +189,8 @@ id: label_time_zone: "Zona waktu" label_start_date: "Tanggal mulai" label_subscribe_icalendar: "Langganan ke kalender" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -606,7 +607,7 @@ id: text_meeting_draft_banner: "Saat ini, Anda berada dalam mode draf. Rapat ini tidak akan mengirimkan pembaruan kalender atau undangan, bahkan jika Anda mengubah detail rapat atau menambahkan/menghapus peserta." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Buka rapat ini dan kirim undangan?" text_exit_draft_mode_dialog_subtitle: "Anda tidak dapat kembali ke mode draf setellah Anda menjadwalkan rapat." text_exit_draft_mode_dialog_template_title: "Buka acara yang pertama dalam seri rapat ini?" diff --git a/modules/meeting/config/locales/crowdin/it.yml b/modules/meeting/config/locales/crowdin/it.yml index 7ecc9bb9f130..4ba54b3c3563 100644 --- a/modules/meeting/config/locales/crowdin/it.yml +++ b/modules/meeting/config/locales/crowdin/it.yml @@ -126,7 +126,6 @@ it: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Nuova riunione" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Nuova riunione una tantum" label_meeting_new_recurring: "Nuova riunione ricorrente" label_meeting_create: "Crea riunione" @@ -195,6 +194,8 @@ it: label_time_zone: "Fuso orario" label_start_date: "Data di inizio" label_subscribe_icalendar: "Iscriviti al calendario" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ it: text_meeting_draft_banner: "Al momento sei in modalità bozza. Questa riunione non invierà alcun aggiornamento del calendario né inviti, anche in caso di modifica dei dettagli della riunione o di aggiunta o rimozione di partecipanti." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Aprire questa riunione e inviare gli inviti?" text_exit_draft_mode_dialog_subtitle: "Non può tornare alla modalità bozza una volta programmata una riunione." text_exit_draft_mode_dialog_template_title: "Aprire la prima occorrenza di questa serie di riunioni?" diff --git a/modules/meeting/config/locales/crowdin/ja.yml b/modules/meeting/config/locales/crowdin/ja.yml index 150704f9f799..9c97ff0f24e6 100644 --- a/modules/meeting/config/locales/crowdin/ja.yml +++ b/modules/meeting/config/locales/crowdin/ja.yml @@ -124,7 +124,6 @@ ja: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "新しい会議" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "新しい一度限りの会議" label_meeting_new_recurring: "定期的な会議の作成" label_meeting_create: "会議を作成" @@ -190,6 +189,8 @@ ja: label_time_zone: "タイムゾーン" label_start_date: "開始日" label_subscribe_icalendar: "カレンダーを購読する" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -606,7 +607,7 @@ ja: text_meeting_draft_banner: "現在下書きモードです。 会議の詳細を変更したり出席者を追加/削除したりしても,この会議はカレンダーの更新や招待状を送信しません。" text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "この会議を開いて招待を送信しますか?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/ka.yml b/modules/meeting/config/locales/crowdin/ka.yml index 875d2b9ef07a..2b3930e73bfe 100644 --- a/modules/meeting/config/locales/crowdin/ka.yml +++ b/modules/meeting/config/locales/crowdin/ka.yml @@ -126,7 +126,6 @@ ka: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "ახალი შეხვედრა" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ ka: label_time_zone: "დროის სარტყელი" label_start_date: "დაწყების თარიღი" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ ka: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/kk.yml b/modules/meeting/config/locales/crowdin/kk.yml index 9f09eb1c78c5..eb3c476208d6 100644 --- a/modules/meeting/config/locales/crowdin/kk.yml +++ b/modules/meeting/config/locales/crowdin/kk.yml @@ -126,7 +126,6 @@ kk: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ kk: label_time_zone: "Time zone" label_start_date: "Start date" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ kk: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/ko.yml b/modules/meeting/config/locales/crowdin/ko.yml index ae42f59194e0..a5ffc684ea38 100644 --- a/modules/meeting/config/locales/crowdin/ko.yml +++ b/modules/meeting/config/locales/crowdin/ko.yml @@ -67,10 +67,10 @@ ko: errors: models: meeting_participant: - user_invalid: "is not a valid participant." + user_invalid: "- 유효한 참가자가 아닙니다." meeting_agenda_item: - section_not_belong_to_meeting: "Section does not belong to the same meeting." - user_invalid: "is not a valid participant." + section_not_belong_to_meeting: "섹션이 같은 미팅에 속하지 않습니다." + user_invalid: "- 유효한 참가자가 아닙니다." recurring_meeting_interim_response: not_an_occurrence: "is not a valid occurrence time for this recurring meeting" recurring_meeting: @@ -116,15 +116,14 @@ ko: error_notification_with_errors: "알림을 보내지 못했습니다. 다음 수신자에게 알리지 못했습니다. %{recipients}" label_meeting: "미팅" label_meeting_plural: "미팅" - label_meeting_templates: "Templates" - label_meeting_template: "Template" - label_meeting_template_new: "New template" - label_meeting_template_create: "Create template" - label_meeting_template_delete: "Delete template" - label_meeting_template_edit: "Edit template" - label_meeting_create_from_template: "Create meeting from template" + label_meeting_templates: "템플릿" + label_meeting_template: "템플릿" + label_meeting_template_new: "새 템플릿" + label_meeting_template_create: "템플릿 만들기" + label_meeting_template_delete: "템플릿 삭제" + label_meeting_template_edit: "템플릿 편집" + label_meeting_create_from_template: "템플릿에서 미팅 만들기" label_meeting_new: "새 미팅" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "새로운 일회성 미팅" label_meeting_new_recurring: "새로운 반복 미팅" label_meeting_create: "미팅 생성" @@ -190,6 +189,8 @@ ko: label_time_zone: "표준 시간대" label_start_date: "시작일" label_subscribe_icalendar: "캘린더 구독" + caption_meeting_template_select: "템플릿을 선택하면 의제 항목이 자동으로 복사됩니다." + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -283,8 +284,8 @@ ko: confirmation_message_html: > 이 작업은 되돌릴 수 없습니다. 주의하여 진행하세요. template: - title: "Delete template" - heading: "Delete this template?" + title: "템플릿 삭제" + heading: "이 템플릿을 삭제하시겠습니까?" occurrence: title: "미팅 항목 취소" heading: "이 미팅 항목을 취소하시겠습니까?" @@ -420,7 +421,7 @@ ko: button_finalize: "첫 번째 미팅 열기" blank_title: "미팅 시리즈 템플릿이 비어 있습니다." description: > - 이 템플릿은 시리즈의 새로운 미팅이 생성될 때마다 사용됩니다. 이 템플릿에 안건 항목, 참가자 및 첨부 파일을 추가할 수 있습니다. + 이 템플릿은 시리즈의 새로운 미팅이 생성될 때마다 사용됩니다. 이 템플릿에 의제 항목, 참가자 및 첨부 파일을 추가할 수 있습니다. label_view_template: "템플릿 보기" label_edit_template: "템플릿 편집" banner_html: > @@ -482,7 +483,7 @@ ko: end_series_dialog: title: "미팅 시리즈 종료" notice_successful_notification: "모든 참가자에게 보내는 이메일 캘린더 업데이트" - notice_meeting_template_created: "Template successfully created" + notice_meeting_template_created: "템플릿이 생성되었습니다" notice_timezone_missing: 표준 시간대가 설정되지 않았으며 %{zone}(으)로 간주됩니다. 해당 표준 시간대를 선택하려면 여기를 클릭하세요. notice_meeting_updated: "이 페이지는 다른 사람이 업데이트했습니다. 변경 사항을 보려면 다시 로드하세요." permission_create_meetings: "미팅 생성" @@ -497,8 +498,8 @@ ko: text_duration_in_hours: "기간(시간)" text_in_hours: " 시간" text_meeting_agenda_for_meeting: '미팅 "%{meeting}"에 대한 의제' - text_meeting_template_blank_slate_heading: "There are no templates to display" - text_meeting_template_blank_slate: "You can create a new template for one-time meetings" + text_meeting_template_blank_slate_heading: "표시할 템플릿이 없습니다" + text_meeting_template_blank_slate: "일회성 미팅을 위한 새 템플릿을 만들 수 있습니다" text_meeting_series_end_early_heading: "향후 항목을 삭제하시겠습니까?" text_meeting_series_end_early: "이 시리즈를 종료하면 향후 오픈 또는 예정된 미팅 항목이 모두 삭제됩니다" text_meeting_closing_are_you_sure: "미팅 어젠더를 닫으시겠습니까?" @@ -604,9 +605,9 @@ ko: text_meeting_in_progress_dropdown_description: "미팅 중에 이루어진 결정 사항 또는 필요한 정보 등의 결과를 문서화합니다." text_meeting_closed_dropdown_description: "이 미팅은 종료되었습니다. 더 이상 의제 항목 또는 결과를 수정할 수 없습니다." text_meeting_draft_banner: "초안 모드에 현재 있습니다. 이 미팅은 미팅 세부 정보를 변경하거나 참가자를 추가/제거하더라도 캘린더 업데이트나 초대장을 전송하지 않습니다." - text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." - text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_banner: "현재 미팅 템플릿을 편집하는 중입니다. 이 템플릿을 사용하여 사전 정의된 의제가 있는 일회성 미팅을 만들 수 있습니다. 변경 사항은 이미 생성된 미팅에 영향을 미치지 않습니다." + text_onetime_meeting_template_empty_heading: "이 미팅 템플릿은 비어 있습니다" + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "이 미팅을 열고 초대장을 보내시겠습니까?" text_exit_draft_mode_dialog_subtitle: "미팅을 예약한 후에는 초안 모드로 돌아갈 수 없습니다." text_exit_draft_mode_dialog_template_title: "이 미팅 시리즈의 첫 번째 항목을 열어보시겠습니까?" diff --git a/modules/meeting/config/locales/crowdin/lt.yml b/modules/meeting/config/locales/crowdin/lt.yml index c8bee77b0754..9ed2501ffc6d 100644 --- a/modules/meeting/config/locales/crowdin/lt.yml +++ b/modules/meeting/config/locales/crowdin/lt.yml @@ -130,7 +130,6 @@ lt: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Naujas pasitarimas" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -205,6 +204,8 @@ lt: label_time_zone: "Laiko juosta" label_start_date: "Pradžios data" label_subscribe_icalendar: "Prenumeruoti kalendorių" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -627,7 +628,7 @@ lt: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/lv.yml b/modules/meeting/config/locales/crowdin/lv.yml index 1616f604b574..f61a95c05f6d 100644 --- a/modules/meeting/config/locales/crowdin/lv.yml +++ b/modules/meeting/config/locales/crowdin/lv.yml @@ -128,7 +128,6 @@ lv: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Jauna sanāksme" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Izveidot sanāksmi" @@ -200,6 +199,8 @@ lv: label_time_zone: "Laika josla" label_start_date: "Sākuma datums" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -620,7 +621,7 @@ lv: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/mn.yml b/modules/meeting/config/locales/crowdin/mn.yml index a6a1a5236bf8..e36707a31e8b 100644 --- a/modules/meeting/config/locales/crowdin/mn.yml +++ b/modules/meeting/config/locales/crowdin/mn.yml @@ -126,7 +126,6 @@ mn: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ mn: label_time_zone: "Time zone" label_start_date: "Start date" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ mn: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/ms.yml b/modules/meeting/config/locales/crowdin/ms.yml index 93ab39142853..6896c316366a 100644 --- a/modules/meeting/config/locales/crowdin/ms.yml +++ b/modules/meeting/config/locales/crowdin/ms.yml @@ -124,7 +124,6 @@ ms: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Mesyuarat Baharu" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Mesyuarat baru sekali" label_meeting_new_recurring: "Mesyuarat berulang yang baru" label_meeting_create: "Buat mesyuarat" @@ -190,6 +189,8 @@ ms: label_time_zone: "Zon waktu" label_start_date: "Tarikh mula" label_subscribe_icalendar: "Langgan kalendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -606,7 +607,7 @@ ms: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/ne.yml b/modules/meeting/config/locales/crowdin/ne.yml index 9f87ad11114b..71a4e46aaf1b 100644 --- a/modules/meeting/config/locales/crowdin/ne.yml +++ b/modules/meeting/config/locales/crowdin/ne.yml @@ -126,7 +126,6 @@ ne: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ ne: label_time_zone: "Time zone" label_start_date: "Start date" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ ne: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/nl.yml b/modules/meeting/config/locales/crowdin/nl.yml index 8244a3e290c5..5c61689c80dc 100644 --- a/modules/meeting/config/locales/crowdin/nl.yml +++ b/modules/meeting/config/locales/crowdin/nl.yml @@ -126,7 +126,6 @@ nl: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Nieuwe vergadering" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Nieuwe eenmalige vergadering" label_meeting_new_recurring: "Nieuwe terugkerende vergadering" label_meeting_create: "Creëer vergadering" @@ -195,6 +194,8 @@ nl: label_time_zone: "Tijdzone" label_start_date: "Startdatum" label_subscribe_icalendar: "Abonneren op agenda" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ nl: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/no.yml b/modules/meeting/config/locales/crowdin/no.yml index 43d9628a6578..f1e847905892 100644 --- a/modules/meeting/config/locales/crowdin/no.yml +++ b/modules/meeting/config/locales/crowdin/no.yml @@ -126,7 +126,6 @@ label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Nytt møte" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ label_time_zone: "Tidssone" label_start_date: "Startdato" label_subscribe_icalendar: "Abonner på kalender" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/pl.yml b/modules/meeting/config/locales/crowdin/pl.yml index 8ea02388ab9e..ec18b5c45c40 100644 --- a/modules/meeting/config/locales/crowdin/pl.yml +++ b/modules/meeting/config/locales/crowdin/pl.yml @@ -130,7 +130,6 @@ pl: label_meeting_template_edit: "Edytuj szablon" label_meeting_create_from_template: "Utwórz spotkanie z szablonu" label_meeting_new: "Nowe spotkanie" - caption_meeting_template_select: "Wybierz szablon, aby automatycznie skopiować z niego punkty planu spotkania" label_meeting_new_dynamic: "Nowe spotkanie jednorazowe" label_meeting_new_recurring: "Nowe spotkanie cykliczne" label_meeting_create: "Utwórz spotkanie" @@ -205,6 +204,8 @@ pl: label_time_zone: "Strefa czasowa" label_start_date: "Data rozpoczęcia" label_subscribe_icalendar: "Subskrybuj kalendarz" + caption_meeting_template_select: "Wybierz szablon, aby automatycznie skopiować z niego punkty planu spotkania" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -627,7 +628,7 @@ pl: text_meeting_draft_banner: "Jesteś teraz w trybie wersji roboczej. To spotkanie nie wyśle żadnych aktualizacji kalendarza ani zaproszeń, nawet jeśli zmienisz szczegóły spotkania lub dodasz/usuniesz uczestników." text_onetime_meeting_template_banner: "Obecnie edytujesz szablon spotkania. Możesz użyć tego szablonu do tworzenia jednorazowych spotkań z predefiniowanym planem spotkania. Zmiany nie będą miały wpływu na już utworzone spotkania." text_onetime_meeting_template_empty_heading: "Ten szablon spotkania jest pusty" - text_onetime_meeting_template_description: "Dodaj punkty planu spotkania i załączniki do tego szablonu. Będą one dołączane do każdego spotkania opartego na tym szablonie." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Otworzyć to spotkanie i wysłać zaproszenia?" text_exit_draft_mode_dialog_subtitle: "Po zaplanowaniu spotkania nie można powrócić do trybu wersji roboczej." text_exit_draft_mode_dialog_template_title: "Otworzyć pierwsze wystąpienie z tej serii spotkań?" diff --git a/modules/meeting/config/locales/crowdin/pt-BR.yml b/modules/meeting/config/locales/crowdin/pt-BR.yml index d7d1686aa319..68bb78328db8 100644 --- a/modules/meeting/config/locales/crowdin/pt-BR.yml +++ b/modules/meeting/config/locales/crowdin/pt-BR.yml @@ -68,10 +68,10 @@ pt-BR: errors: models: meeting_participant: - user_invalid: "is not a valid participant." + user_invalid: "não é um participante válido." meeting_agenda_item: - section_not_belong_to_meeting: "Section does not belong to the same meeting." - user_invalid: "is not a valid participant." + section_not_belong_to_meeting: "A seção não pertence à mesma reunião." + user_invalid: "não é um participante válido." recurring_meeting_interim_response: not_an_occurrence: "is not a valid occurrence time for this recurring meeting" recurring_meeting: @@ -118,15 +118,14 @@ pt-BR: error_notification_with_errors: "Falha ao enviar notificação. Os seguintes destinatários não puderam ser notificados: %{recipients}" label_meeting: "Reunião" label_meeting_plural: "Reuniões" - label_meeting_templates: "Templates" - label_meeting_template: "Template" - label_meeting_template_new: "New template" - label_meeting_template_create: "Create template" - label_meeting_template_delete: "Delete template" - label_meeting_template_edit: "Edit template" - label_meeting_create_from_template: "Create meeting from template" + label_meeting_templates: "Modelos" + label_meeting_template: "Modelo" + label_meeting_template_new: "Novo modelo" + label_meeting_template_create: "Criar modelo" + label_meeting_template_delete: "Excluir modelo" + label_meeting_template_edit: "Editar modelo" + label_meeting_create_from_template: "Criar reunião a partir de um modelo" label_meeting_new: "Nova Reunião" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Nova reunião única" label_meeting_new_recurring: "Nova reunião recorrente" label_meeting_create: "Criar reunião" @@ -195,6 +194,8 @@ pt-BR: label_time_zone: "Fuso horário" label_start_date: "Data de início" label_subscribe_icalendar: "Assinar calendário" + caption_meeting_template_select: "Selecione um modelo para copiar automaticamente os itens da agenda" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -288,8 +289,8 @@ pt-BR: confirmation_message_html: > Essa ação não pode ser desfeita. Prossiga com cautela. template: - title: "Delete template" - heading: "Delete this template?" + title: "Excluir modelo" + heading: "Excluir este modelo?" occurrence: title: "Cancelar ocorrência da reunião" heading: "Cancelar esta ocorrência da reunião?" @@ -489,7 +490,7 @@ pt-BR: end_series_dialog: title: "Encerrar série de reuniões" notice_successful_notification: "Atualização do calendário enviada por e-mail para todos os participantes" - notice_meeting_template_created: "Template successfully created" + notice_meeting_template_created: "Modelo criado com sucesso" notice_timezone_missing: Nenhum fuso horário está definido, portanto assumiu-se %{zone}. Para escolher o seu fuso horário, clique aqui. notice_meeting_updated: "Esta página foi atualizada por outra pessoa. Recarregue para visualizar as alterações." permission_create_meetings: "Criar reuniões" @@ -504,8 +505,8 @@ pt-BR: text_duration_in_hours: "Duração em horas" text_in_hours: "em horas" text_meeting_agenda_for_meeting: 'agenda para a reunião "%{meeting}"' - text_meeting_template_blank_slate_heading: "There are no templates to display" - text_meeting_template_blank_slate: "You can create a new template for one-time meetings" + text_meeting_template_blank_slate_heading: "Não há modelos para exibir" + text_meeting_template_blank_slate: "Você pode criar um novo modelo para reuniões únicas" text_meeting_series_end_early_heading: "Excluir ocorrências futuras?" text_meeting_series_end_early: "Encerrar a série excluirá qualquer reunião futura, aberta ou agendada" text_meeting_closing_are_you_sure: "Você tem certeza de que deseja encerar a pauta da reunião?" @@ -611,9 +612,9 @@ pt-BR: text_meeting_in_progress_dropdown_description: "Registre os resultados como solicitações de informação ou decisões tomadas durante a reunião." text_meeting_closed_dropdown_description: "Esta reunião está encerrada. Já não é possível modificar os pontos da ordem de trabalhos ou os resultados." text_meeting_draft_banner: "Você está no modo rascunho. Esta reunião não enviará nenhuma atualização de calendário ou convite, mesmo que você altere os detalhes da reunião ou adicione/remoca participantes." - text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." - text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_banner: "Você está editando um modelo de reunião. Use este modelo para criar reuniões únicas com uma agenda predefinida. As alterações não afetarão reuniões já criadas." + text_onetime_meeting_template_empty_heading: "Este modelo de reunião está vazio" + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Abrir esta reunião e enviar convites?" text_exit_draft_mode_dialog_subtitle: "Você não pode retornar ao modo rascunho após você agendar a reunião." text_exit_draft_mode_dialog_template_title: "Abrir a primeira ocorrência desta série de reuniões?" diff --git a/modules/meeting/config/locales/crowdin/pt-PT.yml b/modules/meeting/config/locales/crowdin/pt-PT.yml index 224a445c7400..d4bc3db52aae 100644 --- a/modules/meeting/config/locales/crowdin/pt-PT.yml +++ b/modules/meeting/config/locales/crowdin/pt-PT.yml @@ -126,7 +126,6 @@ pt-PT: label_meeting_template_edit: "Editar modelo" label_meeting_create_from_template: "Criar reunião a partir de modelo" label_meeting_new: "Nova reunião" - caption_meeting_template_select: "Selecione um modelo para copiar automaticamente os seus pontos da agenda" label_meeting_new_dynamic: "Nova reunião única" label_meeting_new_recurring: "Nova reunião recorrente" label_meeting_create: "Criar reunião" @@ -195,6 +194,8 @@ pt-PT: label_time_zone: "Fuso horário" label_start_date: "Data de início" label_subscribe_icalendar: "Subscrever o calendário" + caption_meeting_template_select: "Selecione um modelo para copiar automaticamente os seus pontos da agenda" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ pt-PT: text_meeting_draft_banner: "Está no modo de rascunho. Esta reunião não enviará atualizações de calendário ou convites, mesmo que altere os detalhes da reunião ou adicione/remova participantes." text_onetime_meeting_template_banner: "Está a editar um modelo de reunião. Pode utilizar este modelo para criar reuniões únicas com uma agenda predefinida. As alterações não afetarão as reuniões já criadas." text_onetime_meeting_template_empty_heading: "Este modelo de reunião está vazio" - text_onetime_meeting_template_description: "Adicione elementos da agenda e anexos a este modelo. Serão incluídos em todas as reuniões com base neste modelo." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Abrir esta reunião e enviar convites?" text_exit_draft_mode_dialog_subtitle: "Não pode regressar ao modo de rascunho após agendar uma reunião." text_exit_draft_mode_dialog_template_title: "Abrir a primeira ocorrência desta série de reuniões?" diff --git a/modules/meeting/config/locales/crowdin/ro.yml b/modules/meeting/config/locales/crowdin/ro.yml index 01ca73393d37..5ad3e74bfa07 100644 --- a/modules/meeting/config/locales/crowdin/ro.yml +++ b/modules/meeting/config/locales/crowdin/ro.yml @@ -128,7 +128,6 @@ ro: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Noua întâlnire" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "Întâlnire periodică nouă" label_meeting_create: "Creează întâlnire" @@ -200,6 +199,8 @@ ro: label_time_zone: "Fus orar" label_start_date: "Dată început" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -620,7 +621,7 @@ ro: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/ru.yml b/modules/meeting/config/locales/crowdin/ru.yml index a3df551cf310..bd5e282c0193 100644 --- a/modules/meeting/config/locales/crowdin/ru.yml +++ b/modules/meeting/config/locales/crowdin/ru.yml @@ -130,7 +130,6 @@ ru: label_meeting_template_edit: "Редактировать шаблон" label_meeting_create_from_template: "Создать встречу из шаблона" label_meeting_new: "Новое совещание" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Новое однократное совещание" label_meeting_new_recurring: "Новое повторяющееся совещание" label_meeting_create: "Создать совещание" @@ -205,6 +204,8 @@ ru: label_time_zone: "Часовой пояс" label_start_date: "Дата начала" label_subscribe_icalendar: "Подписаться на календарь" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -627,7 +628,7 @@ ru: text_meeting_draft_banner: "В настоящее время Вы находитесь в режиме черновика. Это совещание не будет рассылать никаких обновлений календаря или приглашений, даже если Вы измените детали совещания или добавите/удалите участников." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Открыть это совещание и разослать приглашения?" text_exit_draft_mode_dialog_subtitle: "Вы не можете вернуться в режим черновика после того, как запланировали совещание." text_exit_draft_mode_dialog_template_title: "Открыть первое совещание из этой серии?" diff --git a/modules/meeting/config/locales/crowdin/rw.yml b/modules/meeting/config/locales/crowdin/rw.yml index 7950404c9c2b..74cd8cb745d8 100644 --- a/modules/meeting/config/locales/crowdin/rw.yml +++ b/modules/meeting/config/locales/crowdin/rw.yml @@ -126,7 +126,6 @@ rw: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ rw: label_time_zone: "Time zone" label_start_date: "Start date" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ rw: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/si.yml b/modules/meeting/config/locales/crowdin/si.yml index a0730a1d7729..61003981c93b 100644 --- a/modules/meeting/config/locales/crowdin/si.yml +++ b/modules/meeting/config/locales/crowdin/si.yml @@ -126,7 +126,6 @@ si: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ si: label_time_zone: "වේලා කලාපය" label_start_date: "ආරම්භක දිනය" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ si: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/sk.yml b/modules/meeting/config/locales/crowdin/sk.yml index 4c5a7ba0576a..30f9dd468248 100644 --- a/modules/meeting/config/locales/crowdin/sk.yml +++ b/modules/meeting/config/locales/crowdin/sk.yml @@ -130,7 +130,6 @@ sk: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Nové stretnutie" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -205,6 +204,8 @@ sk: label_time_zone: "Časové pásmo" label_start_date: "Dátum začiatku" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -627,7 +628,7 @@ sk: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/sl.yml b/modules/meeting/config/locales/crowdin/sl.yml index 2f5e8c65f2af..2703081ec7ba 100644 --- a/modules/meeting/config/locales/crowdin/sl.yml +++ b/modules/meeting/config/locales/crowdin/sl.yml @@ -130,7 +130,6 @@ sl: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Nov sestanek" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -205,6 +204,8 @@ sl: label_time_zone: "Časovni pas" label_start_date: "Datum začetka" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -627,7 +628,7 @@ sl: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/sr.yml b/modules/meeting/config/locales/crowdin/sr.yml index eb77c19cedf9..ee7e301be47a 100644 --- a/modules/meeting/config/locales/crowdin/sr.yml +++ b/modules/meeting/config/locales/crowdin/sr.yml @@ -128,7 +128,6 @@ sr: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -200,6 +199,8 @@ sr: label_time_zone: "Time zone" label_start_date: "Start date" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -620,7 +621,7 @@ sr: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/sv.yml b/modules/meeting/config/locales/crowdin/sv.yml index 3581dd14f11c..75410f70c815 100644 --- a/modules/meeting/config/locales/crowdin/sv.yml +++ b/modules/meeting/config/locales/crowdin/sv.yml @@ -126,7 +126,6 @@ sv: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Nytt möte" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Nytt engångsmöte" label_meeting_new_recurring: "Nytt återkommande möte" label_meeting_create: "Skapa möte" @@ -195,6 +194,8 @@ sv: label_time_zone: "Tidszon" label_start_date: "Startdatum" label_subscribe_icalendar: "Prenumerera på kalender" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ sv: text_meeting_draft_banner: "Du befinner dig för närvarande i utkastläge. Det här mötet kommer inte att skicka ut några kalenderuppdateringar eller inbjudningar, även om du ändrar mötesdetaljer eller lägger till/tar bort deltagare." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Öppna detta möte och skicka inbjudningar?" text_exit_draft_mode_dialog_subtitle: "Du kan inte gå tillbaka till utkastet när du schemalägger ett möte." text_exit_draft_mode_dialog_template_title: "Öppna den första förekomsten av denna mötesserie?" diff --git a/modules/meeting/config/locales/crowdin/th.yml b/modules/meeting/config/locales/crowdin/th.yml index 604c0bd717d4..379be6c06382 100644 --- a/modules/meeting/config/locales/crowdin/th.yml +++ b/modules/meeting/config/locales/crowdin/th.yml @@ -124,7 +124,6 @@ th: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -190,6 +189,8 @@ th: label_time_zone: "โซนเวลา" label_start_date: "วันเริ่มต้น" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -606,7 +607,7 @@ th: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/tr.yml b/modules/meeting/config/locales/crowdin/tr.yml index 246ac3f00c82..c839a67802a9 100644 --- a/modules/meeting/config/locales/crowdin/tr.yml +++ b/modules/meeting/config/locales/crowdin/tr.yml @@ -126,7 +126,6 @@ tr: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Yeni Toplantı" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Tek seferlik yeni toplantı" label_meeting_new_recurring: "Yeni yinelenen toplantı" label_meeting_create: "Toplantı oluştur" @@ -195,6 +194,8 @@ tr: label_time_zone: "Saat dilim" label_start_date: "Başlama tarihi" label_subscribe_icalendar: "Takvime abone ol" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ tr: text_meeting_draft_banner: "Şu anda taslak modundasınız. Toplantı ayrıntılarını değiştirseniz veya katılımcı ekleyip çıkarsanız bile bu toplantı herhangi bir takvim güncellemesi veya davet göndermeyecektir." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Bu toplantıyı açıp davetiye gönderelim mi?" text_exit_draft_mode_dialog_subtitle: "Bir toplantı planladıktan sonra taslak moduna geri dönemezsiniz." text_exit_draft_mode_dialog_template_title: "Bu toplantı serisinin ilkini açar mısınız?" diff --git a/modules/meeting/config/locales/crowdin/uk.yml b/modules/meeting/config/locales/crowdin/uk.yml index 775ca627fd96..2609642c9070 100644 --- a/modules/meeting/config/locales/crowdin/uk.yml +++ b/modules/meeting/config/locales/crowdin/uk.yml @@ -130,7 +130,6 @@ uk: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Нова зустріч" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Нова одноразова нарада" label_meeting_new_recurring: "Нова повторювана нарада" label_meeting_create: "Створити нараду" @@ -205,6 +204,8 @@ uk: label_time_zone: "Часовий пояс" label_start_date: "Дата початку" label_subscribe_icalendar: "Підписатися на календар" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -627,7 +628,7 @@ uk: text_meeting_draft_banner: "Зараз ви працюєте в режимі чернетки: оновлення або запрошення з календаря не надсилатимуться щодо цієї наради, навіть якщо змінити її дані або додати/видалити учасників." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Відкрити цю нараду й надіслати запрошення?" text_exit_draft_mode_dialog_subtitle: "Запланувавши нараду, не можна повернутися в режим чернетки." text_exit_draft_mode_dialog_template_title: "Відкрити першу нараду цієї серії?" diff --git a/modules/meeting/config/locales/crowdin/uz.yml b/modules/meeting/config/locales/crowdin/uz.yml index 662e4a4ff30a..2e53f66911c6 100644 --- a/modules/meeting/config/locales/crowdin/uz.yml +++ b/modules/meeting/config/locales/crowdin/uz.yml @@ -126,7 +126,6 @@ uz: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "New Meeting" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "New one-time meeting" label_meeting_new_recurring: "New recurring meeting" label_meeting_create: "Create meeting" @@ -195,6 +194,8 @@ uz: label_time_zone: "Time zone" label_start_date: "Start date" label_subscribe_icalendar: "Subscribe to calendar" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -613,7 +614,7 @@ uz: text_meeting_draft_banner: "You are currently in draft mode. This meeting will not send out any calendar updates or invites, even if you change meeting details or add/remove participants." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Open this meeting and send invites?" text_exit_draft_mode_dialog_subtitle: "You cannot return to draft mode once you schedule a meeting." text_exit_draft_mode_dialog_template_title: "Open the first occurrence of this meeting series?" diff --git a/modules/meeting/config/locales/crowdin/vi.yml b/modules/meeting/config/locales/crowdin/vi.yml index 4e630618beb0..1eb3bca9ba0b 100644 --- a/modules/meeting/config/locales/crowdin/vi.yml +++ b/modules/meeting/config/locales/crowdin/vi.yml @@ -124,7 +124,6 @@ vi: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "Cuộc họp mới" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "Cuộc họp một lần mới" label_meeting_new_recurring: "Cuộc họp định kỳ mới" label_meeting_create: "Tạo cuộc họp" @@ -190,6 +189,8 @@ vi: label_time_zone: "Múi giờ" label_start_date: "Ngày bắt đầu" label_subscribe_icalendar: "Đăng ký lịch" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -606,7 +607,7 @@ vi: text_meeting_draft_banner: "Bạn hiện đang ở chế độ nháp. Cuộc họp này sẽ không gửi bất kỳ cập nhật lịch hoặc lời mời nào, ngay cả khi bạn thay đổi chi tiết cuộc họp hoặc thêm/xóa người tham gia." text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "Mở cuộc họp này và gửi lời mời?" text_exit_draft_mode_dialog_subtitle: "Bạn không thể quay lại chế độ nháp sau khi lên lịch cuộc họp." text_exit_draft_mode_dialog_template_title: "Mở lần xuất hiện đầu tiên của chuỗi cuộc họp này?" diff --git a/modules/meeting/config/locales/crowdin/zh-CN.yml b/modules/meeting/config/locales/crowdin/zh-CN.yml index e550bc23d322..d13f02de22d0 100644 --- a/modules/meeting/config/locales/crowdin/zh-CN.yml +++ b/modules/meeting/config/locales/crowdin/zh-CN.yml @@ -59,7 +59,7 @@ zh-CN: end_date: "结束日期" iterations: "事件" recurring_meeting_interim_response: - start_time: "Start time" + start_time: "开始时间" meeting_participant: invited: "已邀请" attended: "已参加" @@ -67,12 +67,12 @@ zh-CN: errors: models: meeting_participant: - user_invalid: "is not a valid participant." + user_invalid: "不是有效的参与者。" meeting_agenda_item: - section_not_belong_to_meeting: "Section does not belong to the same meeting." - user_invalid: "is not a valid participant." + section_not_belong_to_meeting: "该部分不属于同一次会议。" + user_invalid: "不是有效的参与者。" recurring_meeting_interim_response: - not_an_occurrence: "is not a valid occurrence time for this recurring meeting" + not_an_occurrence: "不是此定期会议的有效发生时间" recurring_meeting: must_cover_existing_meetings: one: "该系列会议中有一次公开会议未列入新时间表。请调整时间表,将会议包含在内。" @@ -116,15 +116,14 @@ zh-CN: error_notification_with_errors: "发送通知失败。无法通知下列收件人:%{recipients}" label_meeting: "会议" label_meeting_plural: "会议" - label_meeting_templates: "Templates" - label_meeting_template: "Template" - label_meeting_template_new: "New template" - label_meeting_template_create: "Create template" - label_meeting_template_delete: "Delete template" - label_meeting_template_edit: "Edit template" - label_meeting_create_from_template: "Create meeting from template" + label_meeting_templates: "模板" + label_meeting_template: "模板" + label_meeting_template_new: "新模板" + label_meeting_template_create: "创建模板" + label_meeting_template_delete: "删除模板" + label_meeting_template_edit: "编辑模板" + label_meeting_create_from_template: "根据模板创建会议" label_meeting_new: "新增会议" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "新的动态会议" label_meeting_new_recurring: "新的定期会议" label_meeting_create: "创建会议" @@ -190,6 +189,8 @@ zh-CN: label_time_zone: "时区" label_start_date: "开始日期" label_subscribe_icalendar: "订阅日历" + caption_meeting_template_select: "选择一个模板,以自动复制其议程条目" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -241,9 +242,9 @@ zh-CN: header: "已取消:会议 '%{title}'" header_occurrence: "已取消:会议事件 '%{title}'" header_series: "已取消:会议系列 '%{title}'" - summary_occurrence: "An occurrence of '%{title}' has been cancelled by %{actor}, or you have been removed as a participant" - summary_series: "Meeting series '%{title}' has been cancelled by %{actor}, or you have been removed as a participant" - summary: "'%{title}' has been cancelled by %{actor}, or you have been removed as a participant" + summary_occurrence: "'%{title}' 的事件已被 %{actor} 取消,或者您的参与者身份已被移除" + summary_series: "会议系列 '%{title}' 已被 %{actor} 取消,或者您的参与者身份已被移除" + summary: "'%{title}' 已被 %{actor} 取消,或者您的参与者身份已被移除" date_time: "预定日期/时间" participant_added: header: "会议 '%{title}' - 已添加参加者" @@ -257,7 +258,7 @@ zh-CN: summary_series: "%{actor} 将 %{participant} 从会议系列 '%{title}' 中移除" ended: header_series: "结束:会议系列 '%{title}'" - summary_series: "Meeting series '%{title}' has been ended by %{actor}" + summary_series: "会议系列 '%{title}' 已由 %{actor} 结束" updated: header: "会议 '%{title}' 已更新" summary: "会议 '%{title}' 已由 %{actor} 更新" @@ -283,8 +284,8 @@ zh-CN: confirmation_message_html: > 此操作不可逆。请谨慎处理。 template: - title: "Delete template" - heading: "Delete this template?" + title: "删除模板" + heading: "是否删除此模板?" occurrence: title: "取消会议事件" heading: "取消此会议事件?" @@ -482,7 +483,7 @@ zh-CN: end_series_dialog: title: "结束会议系列" notice_successful_notification: "已向所有与会者发送电子邮件日历更新" - notice_meeting_template_created: "Template successfully created" + notice_meeting_template_created: "模板创建成功" notice_timezone_missing: 没有设定时区,预设时区为 %{zone}。要选择您的时区,请单击此处。 notice_meeting_updated: "此页面已被其他人更新。重新加载以查看更改。" permission_create_meetings: "创建会议" @@ -497,8 +498,8 @@ zh-CN: text_duration_in_hours: "持续时间(单位:小时)" text_in_hours: "小时" text_meeting_agenda_for_meeting: '“%{meeting}”会议议程' - text_meeting_template_blank_slate_heading: "There are no templates to display" - text_meeting_template_blank_slate: "You can create a new template for one-time meetings" + text_meeting_template_blank_slate_heading: "没有可显示的模板" + text_meeting_template_blank_slate: "可以为一次性会议创建新模板" text_meeting_series_end_early_heading: "删除未来发生的事件?" text_meeting_series_end_early: "结束系列将删除任何将来的公开会议或预定会议的事件" text_meeting_closing_are_you_sure: "确定要关闭该会议议程吗?" @@ -544,8 +545,8 @@ zh-CN: label_agenda_item_move_up: "向上移动" label_agenda_item_move_down: "向下移动" label_agenda_item_duplicate: "复制" - label_agenda_item_duplicate_in_next: "Duplicate in next meeting" - label_agenda_item_duplicate_in_next_title: "Duplicate in next meeting?" + label_agenda_item_duplicate_in_next: "在下次会议中重复" + label_agenda_item_duplicate_in_next_title: "是否在下次会议中重复?" label_agenda_item_add_notes: "添加备注" label_agenda_item_add_outcome: "添加成果" label_agenda_item_work_package_add: "添加工作包" @@ -604,9 +605,9 @@ zh-CN: text_meeting_in_progress_dropdown_description: "记录会议期间的信息需求或决策等成果。" text_meeting_closed_dropdown_description: "此会议已关闭。您不能再修改议程项目或成果。" text_meeting_draft_banner: "您目前处于草稿模式。即使您更改了会议详细信息或添加/移除了参与者,此会议也不会发送任何日历更新或邀请。" - text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." - text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_banner: "您当前正在编辑会议模板。您可以使用此模板创建具有预定义议程的一次性会议。更改不会影响已创建的会议。" + text_onetime_meeting_template_empty_heading: "此会议模板为空" + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "是否打开此会议并发送邀请?" text_exit_draft_mode_dialog_subtitle: "会议安排完成后,您将无法返回到草稿模式。" text_exit_draft_mode_dialog_template_title: "是否打开此会议系列的第一个会议?" diff --git a/modules/meeting/config/locales/crowdin/zh-TW.yml b/modules/meeting/config/locales/crowdin/zh-TW.yml index 5f179fd8a136..3c47a83f41cf 100644 --- a/modules/meeting/config/locales/crowdin/zh-TW.yml +++ b/modules/meeting/config/locales/crowdin/zh-TW.yml @@ -124,7 +124,6 @@ zh-TW: label_meeting_template_edit: "Edit template" label_meeting_create_from_template: "Create meeting from template" label_meeting_new: "新增會議" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" label_meeting_new_dynamic: "建立一次性會議" label_meeting_new_recurring: "新的重複性會議" label_meeting_create: "新增會議" @@ -190,6 +189,8 @@ zh-TW: label_time_zone: "時區" label_start_date: "開始日期" label_subscribe_icalendar: "訂閱行事曆" + caption_meeting_template_select: "Select a template to automatically copy its agenda items" + caption_template_project_select: "Please select the project in which to create this meeting template" meeting: participants: label: @@ -606,7 +607,7 @@ zh-TW: text_meeting_draft_banner: "您目前處於草稿模式。即使您變更會議詳細資訊或新增/移除參與者,此會議也不會傳送任何行事曆更新或邀請。" text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_description: "Add agenda items and attachments to this template. They will be included in every meeting based on this template." + text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." text_exit_draft_mode_dialog_title: "開啟此會議並發送邀請函?" text_exit_draft_mode_dialog_subtitle: "一旦排定會議,就無法返回草稿模式。" text_exit_draft_mode_dialog_template_title: "要開啟此會議系列的第一場會議嗎?" From 4e5e3f0c99ce0058866277fbfc330c2091332a72 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Sun, 8 Mar 2026 03:51:08 +0000 Subject: [PATCH 32/32] update locales from crowdin [ci skip] --- config/locales/crowdin/it.yml | 410 +++++++++--------- config/locales/crowdin/ko.yml | 288 ++++++------ config/locales/crowdin/pt-BR.yml | 298 ++++++------- config/locales/crowdin/zh-CN.yml | 62 +-- .../backlogs/config/locales/crowdin/it.yml | 60 +-- .../backlogs/config/locales/crowdin/js-it.yml | 4 +- .../backlogs/config/locales/crowdin/js-ko.yml | 4 +- .../config/locales/crowdin/js-pt-BR.yml | 4 +- .../backlogs/config/locales/crowdin/zh-CN.yml | 2 +- modules/budgets/config/locales/crowdin/it.yml | 36 +- modules/budgets/config/locales/crowdin/ko.yml | 2 +- .../budgets/config/locales/crowdin/pt-BR.yml | 12 +- .../budgets/config/locales/crowdin/zh-CN.yml | 8 +- modules/costs/config/locales/crowdin/it.yml | 10 +- .../costs/config/locales/crowdin/zh-CN.yml | 4 +- .../documents/config/locales/crowdin/it.yml | 6 +- .../grids/config/locales/crowdin/js-it.yml | 4 +- .../grids/config/locales/crowdin/js-ko.yml | 4 +- .../grids/config/locales/crowdin/js-pt-BR.yml | 4 +- modules/meeting/config/locales/crowdin/it.yml | 56 +-- modules/meeting/config/locales/crowdin/ko.yml | 2 +- .../meeting/config/locales/crowdin/pt-BR.yml | 40 +- .../meeting/config/locales/crowdin/zh-CN.yml | 10 +- 23 files changed, 665 insertions(+), 665 deletions(-) diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml index d8fe42ac312b..1cbdf070b890 100644 --- a/config/locales/crowdin/it.yml +++ b/config/locales/crowdin/it.yml @@ -83,9 +83,9 @@ it: confirmation: "Vuoi davvero eliminare questo token di assistenza dell'Enterprise Edition?" create_dialog: title: "Aggiungi token Enterprise" - type_token_text: "Your Enterprise token text" + type_token_text: "Testo del token Enterprise" token_placeholder: "Incolla il tuo token di assistenza per Enterprise edition qui" - token_caption: "To learn more about how to activate Enterprise edition check our [documentation](docs_url)." + token_caption: "Per saperne di più su come attivare l'edizione Enterprise, consulta la nostra [documentazione](docs_url)." add_token: "Carica un token di assistenza per Enterprise edition" replace_token: "Sostituisci il token di assistenza attuale" order: "Ordina l'edizione Enterprise on-premises" @@ -111,183 +111,183 @@ it: text: "Le singole azioni di un utente (es. l'aggiornamento di una macro-attività due volte) vengono aggregate in un'unica azione se il tempo intercorso tra esse è inferiore al periodo minimo di tempo impostato. Verranno visualizzate quindi come un'unica azione all'interno dell'applicazione. Questo ritarderà anche le notifiche della stessa quantità di tempo, riducendo così il numero di email inviate, e influirà anche sul ritardo di %{webhook_link}." link: "webhook" import: - title: "Import" + title: "Importa" jira: - title: "Jira Import" - description: "Use this tool to import data from your Jira instance. You can configure multiple Jira hosts and choose what to import in each import run." + title: "Importazione di Jira" + description: "Utilizza questo strumento per importare dati dalla tua istanza Jira. Puoi configurare più host Jira e scegliere cosa importare a ogni importazione." errors: - cannot_delete_with_imports: "Cannot delete Jira host with existing imports" + cannot_delete_with_imports: "Impossibile eliminare l'host Jira con importazioni esistenti" blank: - title: "No Jira hosts configured yet" - description: "Configure a Jira host to start importing items from Jira to this OpenProject instance." + title: "Nessun host Jira ancora configurato" + description: "Configura un host Jira per iniziare a importare elementi da Jira a questa istanza di OpenProject." configuration: - title: "Jira configuration" - new: "New configuration" + title: "Configurazione Jira" + new: "Nuova configurazione" banner: - title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + title: "Importazione limitata" + description: "Questo strumento di importazione è attualmente in versione beta e può importare solo dati di base: progetti, issue (nome, titolo, descrizione, allegati), utenti (nome, email, appartenenza al progetto), stati e tipi. Non può importare flussi di lavoro, campi personalizzati, relazioni tra issue o autorizzazioni. Al momento supportiamo solo le versioni 10.x e 11.x di Jira Server/Data Center. Le istanze cloud non sono supportate al momento." form: fields: - name: "Name" - url: "Jira Server/Data Center URL" - personal_access_token: "Personal Access Token" - button_add: "Add configuration" - button_save: "Save configuration" - button_test: "Test configuration" - button_delete_token: "Delete token" - delete_token_confirm: "Are you sure you want to delete the token? This will disable the Jira connection." - label_testing: "Testing configuration..." - token_deleted: "Token was successfully deleted." + name: "Nome" + url: "URL del server/data center Jira" + personal_access_token: "Token di acceso personale" + button_add: "Aggiungi configurazione" + button_save: "Salva configurazione" + button_test: "Configurazione di test" + button_delete_token: "Elimina token" + delete_token_confirm: "Vuoi davvero eliminare il token? Questo disabiliterà la connessione Jira." + label_testing: "Configurazione di test..." + token_deleted: "Il token è stato eliminato con successo." test: - success: "Successfully connected to %{server} (version %{version})" - failed: "Connection failed: Unable to retrieve server information" - error: "An unexpected error occurred while testing the connection" - connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." - api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." - token_error: "Invalid API token. Please check your credentials in the configuration." - missing_credentials: "Please provide both URL and Personal Access Token to test the connection" - invalid_url: "Please provide a valid URL" + success: "Connessione riuscita a %{server} (versione %{version})" + failed: "Connessione non riuscita: impossibile recuperare le informazioni sul server" + error: "Si è verificato un errore imprevisto durante il test della connessione" + connection_error: "Errore di connessione: %{message}" + parse_error: "Impossibile analizzare la risposta dal server. Il server potrebbe non essere un'istanza Jira valida." + api_error: "L'API Jira ha restituito lo stato di errore %{status}. Controlla l'URL dell'istanza Jira e il token API." + token_error: "Token API non valido. Controlla le tue credenziali nella configurazione." + missing_credentials: "Fornisci sia l'URL che il token di accesso personale per testare la connessione" + invalid_url: "Fornisci un URL valido" client: - connection_error: "Failed to connect to Jira server: %{message}" - connection_timeout: "Connection to Jira server timed out: %{message}" - parse_error: "Failed to parse Jira API response: %{message}" - api_error: "Jira API returned error status %{status}" + connection_error: "Impossibile connettersi al server Jira: %{message}" + connection_timeout: "La connessione al server Jira è scaduta: %{message}" + parse_error: "Impossibile analizzare la risposta dell'API Jira: %{message}" + api_error: "Jira API ha restituito lo stato di errore %{status}" columns: - projects: "Projects" - last_change: "Last change" - added: "Added" - label_ago: "%{amount} ago" + projects: "Progetti" + last_change: "Ultima modifica" + added: "Aggiunta" + label_ago: "%{amount} fa" run: - title: "Import run" - history: "History" - remove_error: "A Jira import cannot be removed while it is running" - import_blocked_error: "Another Jira import run is currently in progress or awaiting review. Please complete or revert it before starting a new import." + title: "Importa esecuzione" + history: "Cronologia" + remove_error: "Un'importazione di Jira non può essere rimossa mentre è in esecuzione" + import_blocked_error: "Un'altra importazione Jira è attualmente in corso o in attesa di revisione. Completala o annullala prima di iniziare una nuova importazione." blank: - title: "No import runs set up yet" - description: "Create an import run to start importing information from this Jira instance" + title: "Nessuna importazione ancora impostata" + description: "Crea un'esecuzione di importazione per iniziare a importare informazioni da questa istanza di Jira" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." - button_import_run: "Import run" - button_edit_configuration: "Edit configuration" + description: "È possibile importare diversi set di dati a ogni importazione. È possibile annullare un'importazione subito dopo in modalità di revisione, ma non dopo la finalizzazione." + button_import_run: "Importa esecuzione" + button_edit_configuration: "Modifica configurazione" status: - initial: "Start" - instance_meta_fetching: "Fetching meta data" - instance_meta_error: "Error fetching meta data" - instance_meta_done: "Meta data fetched" - configuring: "Select scope" - projects_meta_fetching: "Fetching project data" - projects_meta_error: "Error fetching project data" - projects_meta_done: "Data gathered" - importing: "In progress" - import_error: "Error during import" - imported: "Review mode" - reverting: "Reverting" - revert_error: "Error during revert" - reverted: "Reverted" - completed: "Completed" + initial: "Inizio" + instance_meta_fetching: "Recupero dei metadati" + instance_meta_error: "Errore nel recupero dei metadati" + instance_meta_done: "Metadati recuperati" + configuring: "Seleziona l'ambito" + projects_meta_fetching: "Recupero dei dati di progetto" + projects_meta_error: "Errore nel recupero dei dati di progetto" + projects_meta_done: "Dati raccolti" + importing: "In corso" + import_error: "Errore nell'importazione" + imported: "Modalità di revisione" + reverting: "Ripristino" + revert_error: "Errore durante il ripristino" + reverted: "Ripristinato" + completed: "Completato" wizard: - button_retry: "Retry" + button_retry: "Riprova" parts: projects: - one: "1 project" - other: "%{count} projects" + one: "1 progetto" + other: "%{count} progetti" issues: - one: "1 issue" - other: "%{count} issues" + one: "1 problema" + other: "%{count} problemi" work_packages: - one: "1 work package" - other: "%{count} work packages" + one: "1 macro-attività" + other: "%{count} macro-attività" types: - one: "1 type" - other: "%{count} types" + one: "1 tipo" + other: "%{count} tipi" statuses: - one: "1 status" - other: "%{count} statuses" + one: "1 stato" + other: "%{count} stati" users: - one: "1 user" - other: "%{count} users" + one: "1 utente" + other: "%{count} utenti" groups: fetch: - title: "Get base data" + title: "Ottieni dati di base" groups_and_users: - title: "Groups and Users" + title: "Gruppi e Utenti" configuration: - title: "Configure import" + title: "Configura importazione" confirming: - title: "Confirm and import" + title: "Conferma e importa" review: - title: "Review import" + title: "Revisione importazione" sections: fetch_data: - title: "Fetch instance meta data" - caption_done: "Completed" - description: "Check what data is available for import in the host Jira instance." - button_fetch: "Check available data" - label_progress: "Fetching data from Jira..." + title: "Recupero dei metadati dell'istanza" + caption_done: "Completato" + description: "Controlla quali dati sono disponibili per l'importazione nell'istanza Jira host." + button_fetch: "Controlla i dati disponibili" + label_progress: "Recupero dei dati da Jira..." groups_and_users: - title: "Groups and Users" + title: "Gruppi e Utenti" import_scope: - title: "Import scope" - caption: "Choose what you want to import into OpenProject" - caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." - description: "Select what data you want to import from the available data fetched from the host Jira instance." - label_available_data: "Available data" - label_not_available_data: "Not available for import" - button_select_projects: "Select projects to import" - button_continue: "Continue" - label_import: "Select which projects you would like to import." - button_select: "Select projects" - label_selected_data: "Selected data for import" - label_progress: "Fetching data from Jira..." + title: "Importa ambito" + caption: "Scegli cosa vuoi importare in OpenProject" + caption_done: "Completato" + label_info: "Tieni presente che questo strumento di importazione è in versione beta e non può importare tutti i tipi di dati. Ecco un riepilogo di ciò che l'URL dell'istanza Jira host offre per l'importazione e di ciò che questo strumento è in grado di importare al momento." + description: "Seleziona i dati che desideri importare tra quelli disponibili recuperati dall'istanza host di Jira." + label_available_data: "Dati disponibili" + label_not_available_data: "Non disponibile per l'importazione" + button_select_projects: "Seleziona i progetti da importare" + button_continue: "Continua" + label_import: "Seleziona quali progetti vuoi importare." + button_select: "Seleziona i progetti" + label_selected_data: "Dati selezionati per l'importazione" + label_progress: "Recupero dei dati da Jira..." elements: - relations: "Relations between issues" - workflows: "Project-level workflows" - users: "Users" - sprints: "Sprints" - schemes: "Schemas" - permissions: "User, group and project permissions" + relations: "Relazioni tra i problemi" + workflows: "Flussi di lavoro a livello di progetto" + users: "Utenti" + sprints: "Sprint" + schemes: "Schemi" + permissions: "Autorizzazioni per utenti, gruppi e progetti" confirm_import: - title: "Import data" - caption: "Review your import settings and start the import" - caption_done: "Completed" - label_available_data: "Available data to import" - button_start: "Start import" - description: "You are about to start an import run with the following settings." - label_progress: "Import in progress..." - label_import_data: "Currently importing" + title: "Importa dati" + caption: "Controlla le impostazioni dell'importazione e avviala" + caption_done: "Completato" + label_available_data: "Dati disponibili da importare" + button_start: "Avvia l'importazione" + description: "Stai per avviare un'importazione con le seguenti impostazioni." + label_progress: "Importazione in corso..." + label_import_data: "Importazione in corso" import_result: - title: "Import run results" - caption: "Review import run or revert import" - info: "Import run successful." - label_results: "Imported" - label_revert: "Revert import" - button_revert: "Revert import" - button_done: "Finalize import" - preview_description: 'The imported data is currently in review mode. Click "Finalize import" to make the import permanent or "Revert import" to undo all changes made in this import run.' - label_finalizing_progress: "Finalizing import..." - label_finalized: "Import finalized." - label_revert_progress: "Reverting import..." - label_reverted: "Import reverted." + title: "Importa i risultati dell'esecuzione" + caption: "Rivedi l'esecuzione dell'importazione o annulla l'importazione" + info: "Importazione eseguita con successo." + label_results: "Importato" + label_revert: "Annulla l'importazione" + button_revert: "Annulla l'importazione" + button_done: "Finalizza l'importazione" + preview_description: 'I dati importati sono attualmente in modalità di revisione. Fare clic su "Finalizza l''importazione" per rendere l''importazione permanente o su "Annulla l''importazione" per annullare tutte le modifiche apportate in questa importazione.' + label_finalizing_progress: "Completamento dell'importazione..." + label_finalized: "Importazione finalizzata." + label_revert_progress: "Annullamento dell'importazione in corso..." + label_reverted: "Importazione annullata." select_dialog: - filter_projects: "Filter by text" + filter_projects: "Filtro testo" revert_dialog: - title: "Permanently revert this import?" - description: "This will delete all imported objects (including whole projects) even if there was user activity in those projects after the import on OpenProject." - confirm: "I understand that this reversion will delete data permanently" + title: "Annullare definitivamente questa importazione?" + description: "Questa operazione eliminerà tutti gli oggetti importati (inclusi interi progetti), anche se è stata rilevata attività utente in tali progetti dopo l'importazione su OpenProject." + confirm: "Comprendo che questa operazione eliminerà i dati in modo permanente" finalize_dialog: - title: "Finalize this import?" - description: "Once finalized, this import can no longer be reverted. All imported data will become permanently imported." - confirm: "I understand that this action cannot be undone" - confirm_button: "Understood" + title: "Finalizzare questa importazione?" + description: "Una volta finalizzata, questa importazione non potrà più essere annullata. Tutti i dati importati verranno importati in modo permanente." + confirm: "Comprendo che questa azione non può essere annullata" + confirm_button: "Ho capito" select_projects: - title: "Select projects" + title: "Seleziona i progetti" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." + description: "Il protocollo di contesto del modello consente agli agenti di intelligenza artificiale di fornire ai propri utenti strumenti e risorse esposti da questa istanza di OpenProject. Questa funzionalità è ancora in versione beta." resources_heading: "Risorse" - resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." + resources_description: "OpenProject implementa le seguenti risorse. Ognuna di esse può essere abilitata, rinominata e descritta a piacere. Per ulteriori informazioni, consultare la [documentazione sulle risorse MCP](docs_url)." resources_submit: "Aggiorna risorse" tools_heading: "Strumenti" tools_description: "OpenProject implementa i seguenti strumenti. Ognuno di essi può essere abilitato, rinominato e descritto a piacere. Per ulteriori informazioni, consultare la [documentazione sugli strumenti MCP](docs_url)." @@ -296,17 +296,17 @@ it: success: "Configurazioni MCP aggiornate con successo." server_form: description_caption: "Come verrà descritto il server MCP alle altre applicazioni che vi si collegheranno." - title_caption: "A short title shown to applications that connect to the MCP server." - tool_response_format: "Tool response format" - tool_response_format_content_only_label: "Content only" + title_caption: "Un breve titolo mostrato alle applicazioni che si connettono al server MCP." + tool_response_format: "Formato di risposta dello strumento" + tool_response_format_content_only_label: "Solo contenuto" tool_response_format_content_only_caption: > - Choose this if MCP clients connecting to this instance do not support structured content. Tool responses will only contain plain text content and leave out the structured version. - tool_response_format_full_label: "Full" + Seleziona questa opzione se i client MCP che si connettono a questa istanza non supportano contenuti strutturati. Le risposte dello strumento conterranno solo testo normale e ometteranno la versione strutturata. + tool_response_format_full_label: "Completa" tool_response_format_full_caption: > - The most compatible option. Tool responses will include both regular and structured content, allowing MCP clients to choose which format they want to read. This may increase the number of tokens that the language model has to process, potentially increasing cost and decreasing performance. - tool_response_format_structured_only_label: "Structured content only" + L'opzione più compatibile. Le risposte dello strumento includeranno sia contenuti regolari che strutturati, consentendo ai clienti MCP di scegliere il formato che desiderano leggere. Ciò potrebbe aumentare il numero di token che il modello linguistico deve elaborare, con un potenziale aumento dei costi e una riduzione delle prestazioni. + tool_response_format_structured_only_label: "Solo contenuti strutturati" tool_response_format_structured_only_caption: > - Choose this if you are certain that MCP clients connecting to this instance support structured content. Tool responses will only include structured content and leave out its text representation. + Seleziona questa opzione se hai certezza che i client MCP che si connettono a questa istanza supportino contenuti strutturati. Le risposte dello strumento includeranno solo contenuti strutturati, escludendone la rappresentazione testuale. update: failure: "La configurazione MCP non può essere aggiornata." success: "La configurazione MCP è stata aggiornata correttamente." @@ -543,7 +543,7 @@ it: contained_in_type: "Contenuto nel tipo" confirm_destroy_option: "L'eliminazione di un'opzione eliminerà tutte le sue occorrenze (ad es. nelle macro-attività). Procedere all'eliminazione?" reorder_alphabetical: "Riordina i valori alfabeticamente" - reorder_confirmation: "Warning: The current order of available values as well as all unsaved values will be lost. Are you sure you want to continue?" + reorder_confirmation: "Attenzione: l'ordine attuale dei valori disponibili e tutti i valori non salvati andranno persi. Vuoi continuare?" placeholder_version_select: "Prima è necessario selezionare la macro-attività o il progetto" calculated_field_not_editable: "Attributo non modificabile. Questo valore viene calcolato automaticamente." no_role_assigment: "Nessuna assegnazione di ruolo" @@ -571,13 +571,13 @@ it: formula: project: "Aggiungi valori numerici o digita / per cercare un attributo o un operatore matematico." regexp: - all: "eg. ^[A-Z0-9]+$" - project: "eg. ^[A-Z0-9]+$" + all: "es. ^[A-Z0-9]+$" + project: "es. ^[A-Z0-9]+$" min_max: - all: "0 means no restriction" - project: "0 means no restriction" + all: "0 significa nessuna restrizione" + project: "0 significa nessuna restrizione" has_comment: - project: "Allows the user to add a comment related to the project attribute when selecting the value in the project overview." + project: "Consente all'utente di aggiungere un commento relativo all'attributo del progetto quando seleziona il valore nella panoramica del progetto." tab: no_results_title_text: Al momento non esistono campi personalizzati. no_results_content_text: Crea un nuovo campo personalizzato @@ -596,8 +596,8 @@ it: confirmation_live_message_unchecked: "Il pulsante per procedere è ora inattivo. Devi spuntare la casella per continuare." mcp_configurations: server_url_component: - caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." - label: "Server URL" + caption: "URL a cui sarà raggiungibile il server OpenProject MCP. Necessario per la configurazione dei client MCP." + label: "URL del server" op_dry_validation: or: "oppure" errors: @@ -802,7 +802,7 @@ it: is_for_all_blank_slate: heading: Per tutti i progetti description: Questo attributo di progetto è attivato in tutti i progetti, poiché l'opzione "Per tutti i progetti" è selezionata. Non può essere disattivato per i singoli progetti. - enabled_via_assignee_when_submitted_html: This project attribute cannot be disabled since it is set as assignee when submitted for project initiation requests. + enabled_via_assignee_when_submitted_html: Questo attributo del progetto non può essere disabilitato poiché è impostato come assegnatario quando inviato per le richieste di avvio del progetto. types: no_results_title_text: Al momento non sono disponibili tipi. form: @@ -818,8 +818,8 @@ it: new_label: "Nuova priorità" creation_wizard: errors: - no_work_package_type: "Failed to enable project initiation request because it requires at least one active work package type and this project has none. Please add at least one work package type to this project." - no_status_when_submitted: "Failed to enable project initiation request because work package type %{type} requires at least one status associated with it. Please enable at least one status workflow for this work package type." + no_work_package_type: "Impossibile abilitare la richiesta di avvio del progetto perché richiede almeno un tipo di macro-attività attivo e questo progetto non ne ha nessuno. Aggiungere almeno un tipo di macro-attività a questo progetto." + no_status_when_submitted: "Impossibile abilitare la richiesta di avvio del progetto perché il tipo di macro-attività %{type} richiede almeno uno stato associato. Abilitare almeno un flusso di lavoro di stato per questo tipo di macro-attività." export: description_attachment_export: "L'artefatto generato verrà salvato come allegato PDF alla macro-attività dell'artefatto." description_file_link_export: "La macro-attività dell'artefatto includerà un collegamento a un file PDF archiviato in uno spazio di archiviazione esterno. Richiede uno spazio di archiviazione file funzionante con cartelle di progetto gestite automaticamente per questo progetto. Al momento sono supportati solo archivi file Nextcloud." @@ -833,7 +833,7 @@ it: label_request_submission: "Richiesta di invio" project_attributes_description: > Seleziona quali attributi di progetto includere nella richiesta di avvio del progetto. Questo elenco include solo gli [attributi di progetto](project_attributes_url) abilitati per questo progetto. - enabled_because_required_html: This project attribute cannot be disabled for this project initiation request since it is defined as required. This can be changed in the administration settings by the administrator of the instance. + enabled_because_required_html: Questo attributo di progetto non può essere disabilitato per questa richiesta di avvio del progetto poiché è definito come obbligatorio. Questa impostazione può essere modificata nelle impostazioni di amministrazione dall'amministratore dell'istanza. status: button_edit: Modifica lo stato wizard: @@ -1357,14 +1357,14 @@ it: activerecord: attributes: agile/sprint: - sharing: "Sharing" - finish_date: "End date" + sharing: "Condivisione" + finish_date: "Data di fine" jira_import: - projects: "Projects" + projects: "Progetti" "import/jira": - name: "Jira instance name" - url: "Jira instance URL" - personal_access_token: "Personal access token" + name: "Nome dell'istanza Jira" + url: "URL dell'istanza Jira" + personal_access_token: "Token di accesso personale" announcements: show_until: "Visualizza fino a" attachment: @@ -1410,7 +1410,7 @@ it: regexp: "Espressione regolare" searchable: "Ricercabile" admin_only: "Solo amministratore" - has_comment: "Add a comment text field" + has_comment: "Aggiungere un campo di testo per i commenti" custom_value: value: "Valore" design_color: @@ -1739,7 +1739,7 @@ it: not_available: "non è disponibile a causa di una configurazione di sistema." not_deletable: "non può essere eliminato." not_current_user: "non è l'utente attuale." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + only_one_active_sprint_allowed: "è consentito un solo sprint attivo per progetto." not_found: "non trovato." not_a_date: "non è una data valida." not_a_datetime: "non è un'orario valido." @@ -1847,7 +1847,7 @@ it: meeting: error_conflict: "Impossibile salvare perché la riunione è stata aggiornata da qualcun altro nel frattempo. Ricarica la pagina." message: - cannot_move_message_to_forum_of_different_project: "A message cannot be moved to a forum of a different project." + cannot_move_message_to_forum_of_different_project: "Un messaggio non può essere spostato in un forum di un altro progetto." notifications: at_least_one_channel: "Deve essere specificato almeno un canale per l'invio delle notifiche." attributes: @@ -2104,7 +2104,7 @@ it: in_use: "Questo nome di token è già utilizzato, scegline uno differente" format: "%{message}" jira: - invalid_protocol: "Please provide a valid protocol (http or https)" + invalid_protocol: "Fornisci un protocollo valido (http o https)" template: body: "Perfavore controlla i seguenti campi:" header: @@ -2123,7 +2123,7 @@ it: comment: "Commento" custom_action: "Azione personalizzata" custom_field: "Campo personalizzato" - customized: "Customized" + customized: "Personalizzato" "doorkeeper/application": "Applicazione OAuth" enterprise_token: one: "Token Enterprise" @@ -2680,8 +2680,8 @@ it: edit_attribute_groups: Modifica proprietà gruppo gantt_pdf_export: Esportazione PDF Gantt ldap_groups: Utenti LDAP e sincronizzazione di gruppo - mcp_server: Model Context Protocol (MCP) - meeting_templates: Reusable meeting templates + mcp_server: Modello di protocollo contestuale (MCP - Model Context Protocol) + meeting_templates: Modelli di riunione riutilizzabili nextcloud_sso: Accesso singolo per Nextcloud Storage one_drive_sharepoint_file_storage: Archiviazione file OneDrive/SharePoint placeholder_users: Utenti segnaposto @@ -2759,9 +2759,9 @@ it: title: "Azioni personalizzate" description: "Le azioni personalizzate sono scorciatoie che con un clic ti consentono di eseguire una serie di azioni predefinite che è possibile rendere disponibili su determinate macro-attività in base a stato, ruolo, tipo o progetto." mcp_server: - description: "Bring OpenProject into your AI workflows with a secure MCP server." + description: "Integra OpenProject nei tuoi flussi di lavoro di intelligenza artificiale con un server MCP sicuro." meeting_templates: - description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." + description: "Definisci modelli di riunione con una struttura di agenda definita e risparmia tempo riutilizzandoli quando crei nuove riunioni." nextcloud_sso: title: "Single Sign-On per Nextcloud Storage" description: "Abilita un'autenticazione veloce e sicura per il tuo archivio Nextcloud con Single Sign-On. Semplifica la gestione degli accessi e migliora la praticità per l'utente." @@ -3074,16 +3074,16 @@ it: #We need to include the version to invalidate outdated translations in other locales "17_2": new_features_title: > - The release contains various new features and improvements, such as: + Questa versione contiene diverse nuove funzionalità e miglioramenti, come ad esempio: new_features_list: - line_0: AI workflows with a secure MCP server (Professional plan and higher) - line_1: Improved project home page with new widget for budgets and improved accessibility - line_2: "Meetings: Meeting templates (Basic plan and higher)" - line_3: Better transparency with project attribute comments. - line_4: PDF export enhancements - line_5: Increased security for external links (Premium plan and higher) - line_6: UI/UX improvements in the Backlogs module - line_7: Harmonized custom field forms + line_0: Flussi di lavoro IA con un server MCP sicuro (piano Professional e superiori) + line_1: Migliorata la home page del progetto con un nuovo widget per i budget e una migliore accessibilità + line_2: "Riunioni: modelli di riunione (piano Basic e superiore)" + line_3: Maggiore trasparenza con i commenti sugli attributi del progetto. + line_4: Miglioramenti all'esportazione di PDF + line_5: Maggiore sicurezza per i link esterni (piano Premium e superiori) + line_6: Miglioramenti UI/UX nel modulo Backlog + line_7: Moduli di campi personalizzati armonizzati links: upgrade_enterprise_edition: "Aggiorna ad Enterprise edition" postgres_migration: "Migrazione dell'installazione su PostgreSQL" @@ -3101,10 +3101,10 @@ it: journals: changes_retracted: "Le modifiche sono state annullate." caused_changes: - budget_deleted: "Budget has been deleted" + budget_deleted: "Il budget è stato cancellato" dates_changed: "Date cambiate" default_attribute_written: "Attributi di sola lettura scritti" - import: "Imported" + import: "Importato" progress_mode_changed_to_status_based: "Calcolo dei progressi aggiornato" status_changed: "Stato '%{status_name}'" system_update: "Aggiornamento del sistema OpenProject:" @@ -3113,21 +3113,21 @@ it: total_percent_complete_mode_changed_to_simple_average: "Il calcolo dei totali della % completamento si basa ora su una media semplice dei soli valori della % completamento." cause_descriptions: import: - header: "changes by %{author}" - field_changed: "%{field} changed from %{old_value} to %{new_value}" - field_set: "%{field} set to %{value}" - field_removed: "%{field} removed" - field_updated: "%{field} updated" - deleted_with_diff: "%{field} deleted (%{link})" - changed_with_diff: "%{field} changed (%{link})" - set_with_diff: "%{field} set (%{link})" + header: "modifiche di %{author}" + field_changed: "%{field} è cambiato da %{old_value} a %{new_value}" + field_set: "%{field} impostato su %{value}" + field_removed: "%{field} rimosso" + field_updated: "%{field} aggiornato" + deleted_with_diff: "%{field} eliminato (%{link})" + changed_with_diff: "%{field} modificato (%{link})" + set_with_diff: "%{field} impostato (%{link})" work_package_predecessor_changed_times: da modifiche al predecessore %{link} work_package_parent_changed_times: da modifiche al genitore %{link} work_package_children_changed_times: da modifiche al figlio %{link} work_package_related_changed_times: da modifiche a elemento correlato %{link} work_package_duplicate_closed: Lo stato è stato aggiornato automaticamente dalla macro-attività duplicata %{link} unaccessable_work_package_changed: da modifiche a macro-attività correlata - budget_deleted: Budget has been deleted + budget_deleted: Il budget è stato cancellato working_days_changed: changed: "da modifiche ai giorni lavorativi (%{changes})" days: @@ -3208,7 +3208,7 @@ it: active_tokens: "Token attivi" blank_description: "Non è configurato e attivo alcun accesso ad applicazioni di terze parti per te." blank_title: "Nessun token di applicazione OAuth" - last_refreshed_at: "Last refreshed at" + last_refreshed_at: "Ultimo aggiornamento:" title: "OAuth" table_title: "Token di applicazione OAuth" text_hint: "I token di applicazione OAuth consentono alle applicazioni di terze parti di connettersi con questa istanza OpenProject." @@ -3294,7 +3294,7 @@ it: label_always_visible: "Sempre visibile" label_announcement: "Annuncio" label_angular: "AngularJS" - label_app_modules: "%{app_title} modules" + label_app_modules: "Moduli %{app_title}" label_api_access_key: "Chiave di accesso API" label_api_access_key_created_on: "Chiave di accesso API creata %{value} fa" label_api_access_key_type: "API" @@ -3448,7 +3448,7 @@ it: label_duplicates: "duplica" label_edit: "Modifica" label_edit_x: "Modifica: %{x}" - label_view_x: "View: %{x}" + label_view_x: "Visualizza: %{x}" label_enable_multi_select: "Attiva/disattiva multiselezione" label_enabled_project_custom_fields: "Campi personalizzati abilitati" label_enabled_project_modules: "Moduli abilitati" @@ -3553,7 +3553,7 @@ it: label_external_links: "Link esterni" label_locale: "Lingua e paese" label_jump_to_a_project: "Salta ad altro progetto..." - label_jira_import: "Jira Import" + label_jira_import: "Importazione di Jira" label_keyword_plural: "Parole chiave" label_language_based: "Basato sulla lingua dell'utente" label_last_activity: "Ultima attività" @@ -3576,7 +3576,7 @@ it: label_lock_user: "Blocca utente" label_logged_as: "Accesso eseguito come" label_login: "Accedi" - label_custom_comment: "%{name} comment" + label_custom_comment: "Commento di %{name}" label_custom_logo: "Logo desktop personalizzato" label_custom_logo_mobile: "Logo mobile personalizzato" label_custom_export_logo: "Esportazione personalizzata logo" @@ -4204,7 +4204,7 @@ it: notice_successful_delete: "Cancellato con successo." notice_successful_cancel: "Cancellato con successo." notice_successful_update: "Aggiornato con successo." - notice_successful_move: "Successful move from %{from} to %{to}." + notice_successful_move: "Spostamento riuscito da %{from} a %{to}." notice_unsuccessful_create: "Creazione fallita." notice_unsuccessful_create_with_reason: "Creazione non riuscita: %{reason}" notice_unsuccessful_update: "Aggiornamento non riuscito." @@ -4366,7 +4366,7 @@ it: permission_edit_project_query: "Modifica elenco di progetti" placeholders: default: "-" - templated_hint: Automatically generated through type %{type} + templated_hint: Generato automaticamente tramite il tipo %{type} portfolio: count: zero: "0 portfolio" @@ -4551,9 +4551,9 @@ it: setting_capture_external_links: "Intercetta link esterni" setting_capture_external_links_text: > Se l'opzione è abilitata, tutti i link esterni in testo formattato verranno reindirizzati a una pagina di avviso prima di uscire dall'applicazione. Questo aiuta a proteggere gli utenti da siti web esterni potenzialmente dannosi. - setting_capture_external_links_require_login: "Require users to be logged in" + setting_capture_external_links_require_login: "Richiedi agli utenti di effettuare l'accesso" setting_capture_external_links_require_login_text: > - When enabled, users wanting to click on external links need to be logged in before being able to continue. + Se l'opzione è abilitata, gli utenti che desiderano fare clic sui link esterni devono aver effettuato l'accesso prima di poter continuare. setting_after_first_login_redirect_url: "Reindirizzamento di primo accesso" setting_after_first_login_redirect_url_text_html: > Imposta un percorso per reindirizzare gli utenti dopo il loro primo accesso. Se vuoto, reindirizza alla home page per il tour di onboarding.
    Esempio: /my/page @@ -4598,9 +4598,9 @@ it: setting_smtp_password: "Password SMTP" setting_smtp_domain: "Dominio SMTP HELO" setting_activity_days_default: "Intervallo di giorni visualizzati sulle attività del progetto" - setting_api_tokens_enabled: "Enable API tokens" + setting_api_tokens_enabled: "Abilita i token API" setting_api_tokens_enabled_caption: > - Decide whether users can create personal API tokens in their account settings. These tokens can be used to access the different APIs of OpenProject, such as APIv3 and MCP. + Decidi se gli utenti possono creare token API personali nelle impostazioni del proprio account. Questi token possono essere utilizzati per accedere alle diverse API di OpenProject, come APIv3 e MCP. setting_app_subtitle: "Sottotitolo applicazione" setting_app_title: "Titolo applicazione" setting_attachment_max_size: "Dimensione max. dell'allegato" @@ -5139,10 +5139,10 @@ it: reset_failed_logins: "Azzera gli accessi falliti" status_user_and_brute_force: "%{user} e %{brute_force}" status_change: "Cambiamento di stato" - text_change_disabled_for_provider_login: "The name and email is set by your login provider and can thus not be changed." + text_change_disabled_for_provider_login: "Il nome e l'e-mail sono impostati dal servizio con cui hai effettuato l'accesso e non possono essere modificati." unlock: "Sblocca" unlock_and_reset_failed_logins: "Sblocca e azzera gli accessi non riusciti" - error_cannot_delete_user: "User cannot be deleted" + error_cannot_delete_user: "L'utente non può essere eliminato" version_status_closed: "chiuso" version_status_locked: "bloccato" version_status_open: "aperte" diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml index 3b4f6b6005bb..ecf1b4fbb7f9 100644 --- a/config/locales/crowdin/ko.yml +++ b/config/locales/crowdin/ko.yml @@ -144,144 +144,144 @@ ko: error: "연결을 테스트하는 동안 예기치 않은 오류가 발생했습니다" connection_error: "연결 오류: %{message}" parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." - api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." - token_error: "Invalid API token. Please check your credentials in the configuration." - missing_credentials: "Please provide both URL and Personal Access Token to test the connection" - invalid_url: "Please provide a valid URL" + api_error: "Jira API가 오류 상태 %{status}을(를) 반환했습니다. Jira 인스턴스 URL 및 API 토큰을 확인하세요." + token_error: "잘못된 API 토큰입니다. 구성에서 자격 증명을 확인하세요." + missing_credentials: "URL과 개인 액세스 토큰을 모두 제공하여 연결을 테스트하세요" + invalid_url: "유효한 URL을 제공하세요" client: - connection_error: "Failed to connect to Jira server: %{message}" - connection_timeout: "Connection to Jira server timed out: %{message}" - parse_error: "Failed to parse Jira API response: %{message}" - api_error: "Jira API returned error status %{status}" + connection_error: "Jira 서버에 연결하지 못했습니다: %{message}" + connection_timeout: "Jira 서버에 연결이 시간 초과되었습니다: %{message}" + parse_error: "Jira API 응답을 구문 분석하지 못했습니다: %{message}" + api_error: "Jira API가 오류 상태 %{status}을(를) 반환했습니다" columns: - projects: "Projects" - last_change: "Last change" - added: "Added" - label_ago: "%{amount} ago" + projects: "프로젝트" + last_change: "마지막 변경" + added: "추가됨" + label_ago: "%{amount} 전" run: - title: "Import run" - history: "History" - remove_error: "A Jira import cannot be removed while it is running" - import_blocked_error: "Another Jira import run is currently in progress or awaiting review. Please complete or revert it before starting a new import." + title: "가져오기 실행" + history: "기록" + remove_error: "Jira 가져오기는 실행되는 동안 제거할 수 없습니다" + import_blocked_error: "다른 Jira 가져오기 실행이 현재 진행 중이거나 검토를 기다리는 중입니다. 새 가져오기를 시작하기 전에 완료하거나 되돌리세요." blank: - title: "No import runs set up yet" - description: "Create an import run to start importing information from this Jira instance" + title: "가져오기 실행이 아직 설정되지 않음" + description: "가져오기 실행을 만들어서 이 Jira 인스턴스에서 정보 가져오기를 시작하세요" index: description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." - button_import_run: "Import run" - button_edit_configuration: "Edit configuration" + button_import_run: "가져오기 실행" + button_edit_configuration: "구성 편집" status: - initial: "Start" - instance_meta_fetching: "Fetching meta data" - instance_meta_error: "Error fetching meta data" - instance_meta_done: "Meta data fetched" - configuring: "Select scope" - projects_meta_fetching: "Fetching project data" - projects_meta_error: "Error fetching project data" - projects_meta_done: "Data gathered" - importing: "In progress" - import_error: "Error during import" - imported: "Review mode" - reverting: "Reverting" - revert_error: "Error during revert" - reverted: "Reverted" - completed: "Completed" + initial: "시작" + instance_meta_fetching: "메타 데이터를 가져오는 중" + instance_meta_error: "메타 데이터를 가져오는 중에 오류 발생" + instance_meta_done: "메타 데이터 가져옴" + configuring: "범위 선택" + projects_meta_fetching: "프로젝트 데이터를 가져오는 중" + projects_meta_error: "프로젝트 데이터를 가져오는 중에 오류 발생" + projects_meta_done: "데이터 수집함" + importing: "진행 중" + import_error: "가져오는 중에 오류 발생" + imported: "검토 모드" + reverting: "되돌리는 중" + revert_error: "되돌리는 중에 오류 발생" + reverted: "되돌림" + completed: "완료됨" wizard: - button_retry: "Retry" + button_retry: "다시 시도" parts: projects: - other: "%{count} projects" + other: "%{count}개 프로젝트" issues: - other: "%{count} issues" + other: "%{count}개 이슈" work_packages: - other: "%{count} work packages" + other: "%{count}개 작업 패키지" types: - other: "%{count} types" + other: "%{count}개 유형" statuses: - other: "%{count} statuses" + other: "%{count}개 상태" users: - other: "%{count} users" + other: "%{count}명 사용자" groups: fetch: - title: "Get base data" + title: "기본 데이터 가져오기" groups_and_users: - title: "Groups and Users" + title: "그룹 및 사용자" configuration: - title: "Configure import" + title: "가져오기 구성" confirming: - title: "Confirm and import" + title: "확인 및 가져오기" review: - title: "Review import" + title: "가져오기 검토" sections: fetch_data: - title: "Fetch instance meta data" - caption_done: "Completed" + title: "인스턴스 메타 데이터 가져오기" + caption_done: "완료됨" description: "Check what data is available for import in the host Jira instance." button_fetch: "Check available data" - label_progress: "Fetching data from Jira..." + label_progress: "Jira에서 데이터를 가져오는 중..." groups_and_users: - title: "Groups and Users" + title: "그룹 및 사용자" import_scope: - title: "Import scope" - caption: "Choose what you want to import into OpenProject" - caption_done: "Completed" + title: "가져오기 범위" + caption: "OpenProject로 가져올 항목을 선택합니다" + caption_done: "완료됨" label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." description: "Select what data you want to import from the available data fetched from the host Jira instance." - label_available_data: "Available data" - label_not_available_data: "Not available for import" - button_select_projects: "Select projects to import" - button_continue: "Continue" - label_import: "Select which projects you would like to import." - button_select: "Select projects" - label_selected_data: "Selected data for import" - label_progress: "Fetching data from Jira..." + label_available_data: "사용 가능한 데이터" + label_not_available_data: "가져오기에 사용할 수 없음" + button_select_projects: "가져올 프로젝트 선택" + button_continue: "계속" + label_import: "가져올 프로젝트를 선택합니다." + button_select: "프로젝트 선택" + label_selected_data: "가져올 데이터 선택함" + label_progress: "Jira에서 데이터를 가져오는 중..." elements: - relations: "Relations between issues" + relations: "이슈 간의 관계" workflows: "Project-level workflows" - users: "Users" - sprints: "Sprints" - schemes: "Schemas" + users: "사용자" + sprints: "스프린트" + schemes: "스키마" permissions: "User, group and project permissions" confirm_import: - title: "Import data" - caption: "Review your import settings and start the import" - caption_done: "Completed" - label_available_data: "Available data to import" - button_start: "Start import" - description: "You are about to start an import run with the following settings." - label_progress: "Import in progress..." - label_import_data: "Currently importing" + title: "데이터 가져오기" + caption: "가져오기 설정을 검토하고 가져오기를 시작합니다" + caption_done: "완료됨" + label_available_data: "가져올 수 있는 데이터" + button_start: "가져오기 시작" + description: "다음 설정으로 가져오기 실행을 시작하려고 합니다." + label_progress: "가져오기 진행 중..." + label_import_data: "현재 가져오는 중" import_result: - title: "Import run results" - caption: "Review import run or revert import" - info: "Import run successful." - label_results: "Imported" - label_revert: "Revert import" - button_revert: "Revert import" - button_done: "Finalize import" - preview_description: 'The imported data is currently in review mode. Click "Finalize import" to make the import permanent or "Revert import" to undo all changes made in this import run.' - label_finalizing_progress: "Finalizing import..." - label_finalized: "Import finalized." - label_revert_progress: "Reverting import..." - label_reverted: "Import reverted." + title: "가져오기 실행 결과" + caption: "가져오기 실행 검토 또는 가져오기 되돌리기" + info: "가져오기 실행에 성공했습니다." + label_results: "가져옴" + label_revert: "가져오기 되돌리기" + button_revert: "가져오기 되돌리기" + button_done: "가져오기 완료" + preview_description: '가져온 데이터는 현재 검토 모드에 있습니다. 가져오기를 영구적으로 적용하려면 "가져오기 완료"를 클릭하고, 가져오기 실행에서 변경된 모든 사항을 취소하려면 "가져오기 되돌리기"를 클릭합니다.' + label_finalizing_progress: "가져오기를 완료하는 중..." + label_finalized: "가져오기가 완료되었습니다." + label_revert_progress: "가져오기를 되돌리는 중..." + label_reverted: "가져오기를 되돌렸습니다." select_dialog: - filter_projects: "Filter by text" + filter_projects: "텍스트로 필터링" revert_dialog: - title: "Permanently revert this import?" - description: "This will delete all imported objects (including whole projects) even if there was user activity in those projects after the import on OpenProject." - confirm: "I understand that this reversion will delete data permanently" + title: "이 가져오기를 영구적으로 되돌리시겠습니까?" + description: "이렇게 하면 OpenProject의 가져오기 후 해당 프로젝트에 사용자 활동이 있더라도 가져온 모든 개체(전체 프로젝트 포함)가 삭제됩니다." + confirm: "이 되돌리기를 통해 데이터가 영구적으로 삭제됨을 이해합니다" finalize_dialog: - title: "Finalize this import?" - description: "Once finalized, this import can no longer be reverted. All imported data will become permanently imported." - confirm: "I understand that this action cannot be undone" - confirm_button: "Understood" + title: "이 가져오기를 완료하시겠습니까?" + description: "가져오기가 완료되면 더 이상 되돌릴 수 없습니다. 가져온 모든 데이터는 영구적으로 가져오게 됩니다." + confirm: "이 작업을 취소할 수 없음을 이해합니다." + confirm_button: "이해함" select_projects: - title: "Select projects" + title: "프로젝트 선택" mcp_configurations: index: description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "리소스" - resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." + resources_description: "OpenProject는 다음 리소스를 구현합니다. 원하는 대로 각 도구를 활성화하고, 이름을 바꾸고, 설명할 수 있습니다. 자세한 내용은 [MCP 리소스의 문서](docs_url)를 참조하세요." resources_submit: "리소스 업데이트" tools_heading: "도구" tools_description: "OpenProject는 다음 도구를 구현합니다. 원하는 대로 각 도구를 활성화하고, 이름을 바꾸고, 설명할 수 있습니다. 자세한 내용은 [MCP 도구의 문서](docs_url)를 참조하세요." @@ -290,17 +290,17 @@ ko: success: "MCP 구성이 업데이트되었습니다." server_form: description_caption: "MCP 서버에 연결하는 다른 애플리케이션에 대해 MCP 서버가 설명되는 방식입니다." - title_caption: "A short title shown to applications that connect to the MCP server." - tool_response_format: "Tool response format" - tool_response_format_content_only_label: "Content only" + title_caption: "MCP 서버에 연결하는 애플리케이션에 표시되는 짧은 제목입니다." + tool_response_format: "도구 응답 형식" + tool_response_format_content_only_label: "콘텐츠 전용" tool_response_format_content_only_caption: > - Choose this if MCP clients connecting to this instance do not support structured content. Tool responses will only contain plain text content and leave out the structured version. - tool_response_format_full_label: "Full" + 이 인스턴스에 연결하는 MCP 클라이언트가 구조화된 콘텐츠를 지원하지 않는 경우 이 옵션을 선택하세요. 도구 응답에는 일반 텍스트 콘텐츠만 포함되며 구조화된 버전은 제외됩니다. + tool_response_format_full_label: "전체" tool_response_format_full_caption: > - The most compatible option. Tool responses will include both regular and structured content, allowing MCP clients to choose which format they want to read. This may increase the number of tokens that the language model has to process, potentially increasing cost and decreasing performance. - tool_response_format_structured_only_label: "Structured content only" + 가장 호환성이 높은 옵션입니다. 도구 응답에는 일반 콘텐츠와 구조화된 콘텐츠가 모두 포함되므로, MCP 클라이언트가 원하는 형식을 선택할 수 있습니다. 이렇게 하면 언어 모델이 처리해야 하는 토큰 수가 증가하여, 잠재적으로 비용이 높아지고 성능이 저하될 수 있습니다. + tool_response_format_structured_only_label: "구조화된 콘텐츠 전용" tool_response_format_structured_only_caption: > - Choose this if you are certain that MCP clients connecting to this instance support structured content. Tool responses will only include structured content and leave out its text representation. + 이 인스턴스에 연결하는 MCP 클라이언트가 구조화된 콘텐츠를 지원하는 것이 분명한 경우 이 옵션을 선택하세요. 도구 응답에는 구조화된 콘텐츠만 포함되며 텍스트 표현은 제외됩니다. update: failure: "MCP 구성을 업데이트할 수 없습니다." success: "MCP 구성이 업데이트되었습니다." @@ -539,7 +539,7 @@ ko: contained_in_type: "타입에 포함됨." confirm_destroy_option: "옵션을 삭제하면 모든 해당 항목(예: 작업 패키지 내 모든 항목)이 삭제됩니다. 그래도 삭제하시겠습니까?" reorder_alphabetical: "알파벳순으로 값 재정렬" - reorder_confirmation: "Warning: The current order of available values as well as all unsaved values will be lost. Are you sure you want to continue?" + reorder_confirmation: "경고: 사용 가능한 값의 현재 순서 및 저장되지 않은 모든 값이 손실됩니다. 계속하시겠습니까?" placeholder_version_select: "먼저 작업 패키지 또는 프로젝트를 선택해야 합니다" calculated_field_not_editable: "편집할 수 없는 특성입니다. 이 값은 자동으로 계산됩니다." no_role_assigment: "역할 할당 없음" @@ -567,13 +567,13 @@ ko: formula: project: "숫자 값을 추가하거나 /를 입력하여 특성 또는 수학 연산자를 검색합니다." regexp: - all: "eg. ^[A-Z0-9]+$" - project: "eg. ^[A-Z0-9]+$" + all: "예: ^[A-Z0-9]+$" + project: "예: ^[A-Z0-9]+$" min_max: - all: "0 means no restriction" - project: "0 means no restriction" + all: "0은 제한이 없음을 의미합니다" + project: "0은 제한이 없음을 의미합니다" has_comment: - project: "Allows the user to add a comment related to the project attribute when selecting the value in the project overview." + project: "사용자가 프로젝트 개요에서 값을 선택할 때 프로젝트 특성과 관련된 코멘트를 추가할 수 있습니다." tab: no_results_title_text: 사용자 필드가 없습니다. no_results_content_text: 새 사용자 필드 생성 @@ -593,7 +593,7 @@ ko: mcp_configurations: server_url_component: caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." - label: "Server URL" + label: "서버 URL" op_dry_validation: or: "또는" errors: @@ -1345,14 +1345,14 @@ ko: activerecord: attributes: agile/sprint: - sharing: "Sharing" - finish_date: "End date" + sharing: "공유" + finish_date: "종료 날짜" jira_import: - projects: "Projects" + projects: "프로젝트" "import/jira": - name: "Jira instance name" - url: "Jira instance URL" - personal_access_token: "Personal access token" + name: "Jira 인스턴스 이름" + url: "Jira 인스턴스 URL" + personal_access_token: "개인 액세스 토큰" announcements: show_until: "표시 기한" attachment: @@ -1398,7 +1398,7 @@ ko: regexp: "정규 표현식" searchable: "검색가능한" admin_only: "관리자 전용" - has_comment: "Add a comment text field" + has_comment: "코멘트 텍스트 필드 추가" custom_value: value: "값" design_color: @@ -1727,7 +1727,7 @@ ko: not_available: "- 시스템 구성으로 인해 사용 가능하지 않습니다." not_deletable: "- 삭제할 수 없습니다." not_current_user: "은(는) 현재 유효한 사용자가 아닙니다." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + only_one_active_sprint_allowed: "프로젝트당 하나의 활성 스프린트만 허용됩니다." not_found: "- 찾을 수 없습니다." not_a_date: "은(는) 유효한 날짜가 아닙니다." not_a_datetime: "은(는) 유효한 날짜가 아닙니다." @@ -1834,7 +1834,7 @@ ko: meeting: error_conflict: "그 사이에 다른 사람이 미팅을 업데이트했기 때문에 저장할 수 없습니다. 페이지를 다시 로드하세요." message: - cannot_move_message_to_forum_of_different_project: "A message cannot be moved to a forum of a different project." + cannot_move_message_to_forum_of_different_project: "다른 프로젝트의 포럼으로 메시지를 이동할 수 없습니다." notifications: at_least_one_channel: "알림을 보낼 채널을 하나 이상 지정해야 합니다." attributes: @@ -2090,7 +2090,7 @@ ko: in_use: "이 토큰 이름은 이미 사용 중입니다. 다른 이름을 선택하세요" format: "%{message}" jira: - invalid_protocol: "Please provide a valid protocol (http or https)" + invalid_protocol: "유효한 프로토콜(http 또는 https)을 입력하세요" template: body: "다음 필드를 확인 하십시오." header: @@ -2106,7 +2106,7 @@ ko: comment: "코멘트" custom_action: "사용자 지정 작업" custom_field: "사용자 정의 필드" - customized: "Customized" + customized: "사용자 지정됨" "doorkeeper/application": "OAuth 애플리케이션" enterprise_token: other: "Enterprise 토큰" @@ -2277,7 +2277,7 @@ ko: role: "역할" roles: "역할" search: "검색" - sprint: "Sprint" + sprint: "스프린트" start_date: "시작 날짜" status: "상태" state: "상태" @@ -2628,8 +2628,8 @@ ko: edit_attribute_groups: 특성 그룹 편집 gantt_pdf_export: Gantt PDF 내보내기 ldap_groups: LDAP 사용자 및 그룹 동기화 - mcp_server: Model Context Protocol (MCP) - meeting_templates: Reusable meeting templates + mcp_server: 모델 컨텍스트 프로토콜(MCP) + meeting_templates: 재사용 가능한 미팅 템플릿 nextcloud_sso: Nextcloud 저장소용 Single Sign-On one_drive_sharepoint_file_storage: OneDrive/SharePoint 파일 저장소 placeholder_users: 플레이스홀더 사용자 @@ -3051,7 +3051,7 @@ ko: budget_deleted: "Budget has been deleted" dates_changed: "변경된 날짜" default_attribute_written: "읽기 전용 특성 작성됨" - import: "Imported" + import: "가져옴" progress_mode_changed_to_status_based: "진행률 계산 업데이트됨" status_changed: "상태 '%{status_name}'" system_update: "OpenProject 시스템 업데이트:" @@ -3060,14 +3060,14 @@ ko: total_percent_complete_mode_changed_to_simple_average: "이제 완료 % 합계 계산은 완료 % 값의 단순 평균만을 기반으로 합니다." cause_descriptions: import: - header: "changes by %{author}" - field_changed: "%{field} changed from %{old_value} to %{new_value}" - field_set: "%{field} set to %{value}" - field_removed: "%{field} removed" + header: "%{author} 님이 변경함" + field_changed: "%{field}이(가) %{old_value}에서 %{new_value}(으)로 변경됨" + field_set: "%{field}이(가) %{value}(으)로 설정됨" + field_removed: "%{field} 제거됨" field_updated: "%{field} updated" - deleted_with_diff: "%{field} deleted (%{link})" - changed_with_diff: "%{field} changed (%{link})" - set_with_diff: "%{field} set (%{link})" + deleted_with_diff: "%{field} 삭제됨(%{link})" + changed_with_diff: "%{field} 변경됨(%{link})" + set_with_diff: "%{field} 설정됨(%{link})" work_package_predecessor_changed_times: 선행 단계 %{link}에 대한 변경 사항 기준 work_package_parent_changed_times: 부모 %{link}에 대한 변경 사항 기준 work_package_children_changed_times: 자식 %{link}에 대한 변경 사항 기준 @@ -3155,7 +3155,7 @@ ko: active_tokens: "활성 토큰" blank_description: "타사 애플리케이션 액세스가 구성 및 활성화되어 있지 않습니다." blank_title: "OAuth 애플리케이션 토큰 없음" - last_refreshed_at: "Last refreshed at" + last_refreshed_at: "마지막 새로고침:" title: "OAuth" table_title: "OAuth 애플리케이션 토큰" text_hint: "OAuth 애플리케이션 토큰을 통해 타사 애플리케이션이 이 OpenProject 인스턴스와 연결할 수 있습니다." @@ -3395,7 +3395,7 @@ ko: label_duplicates: "복제" label_edit: "편집" label_edit_x: "편집: %{x}" - label_view_x: "View: %{x}" + label_view_x: "보기: %{x}" label_enable_multi_select: "다중 선택 토글" label_enabled_project_custom_fields: "사용자 정의 필드 사용" label_enabled_project_modules: "사용 가능한 모듈" @@ -3500,7 +3500,7 @@ ko: label_external_links: "외부 링크" label_locale: "언어 및 지역" label_jump_to_a_project: "프로젝트로 이동..." - label_jira_import: "Jira Import" + label_jira_import: "Jira 가져오기" label_keyword_plural: "키워드" label_language_based: "사용자 언어에 따름" label_last_activity: "마지막 활동" @@ -3523,7 +3523,7 @@ ko: label_lock_user: "사용자 잠금" label_logged_as: "로그인한 계정:" label_login: "로그인" - label_custom_comment: "%{name} comment" + label_custom_comment: "%{name} 코멘트" label_custom_logo: "사용자 지정 로고 데스크톱" label_custom_logo_mobile: "사용자 지정 로고 모바일" label_custom_export_logo: "사용자 지정 내보내기 로고" @@ -4150,7 +4150,7 @@ ko: notice_successful_delete: "삭제에 성공했습니다." notice_successful_cancel: "취소에 성공했습니다." notice_successful_update: "업데이트에 성공했습니다." - notice_successful_move: "Successful move from %{from} to %{to}." + notice_successful_move: "%{from}에서 %{to}(으)로 이동했습니다." notice_unsuccessful_create: "생성이 실패했습니다." notice_unsuccessful_create_with_reason: "생성 실패: %{reason}" notice_unsuccessful_update: "업데이트에 실패했습니다." @@ -4310,7 +4310,7 @@ ko: permission_edit_project_query: "프로젝트 쿼리 편집" placeholders: default: "-" - templated_hint: Automatically generated through type %{type} + templated_hint: '%{type} 유형을 통해 자동으로 생성됨' portfolio: count: zero: "0개 포트폴리오" @@ -4493,9 +4493,9 @@ ko: setting_capture_external_links: "외부 링크 캡처" setting_capture_external_links_text: > 활성화된 경우, 서식이 지정된 텍스트의 모든 외부 링크는 애플리케이션을 종료하기 전에 경고 페이지를 통해 리디렉션됩니다. 따라서 잠재적인 악성 외부 웹사이트로부터 사용자를 보호할 수 있습니다. - setting_capture_external_links_require_login: "Require users to be logged in" + setting_capture_external_links_require_login: "사용자가 로그인해야 함" setting_capture_external_links_require_login_text: > - When enabled, users wanting to click on external links need to be logged in before being able to continue. + 이 옵션을 활성화하면, 외부 링크를 클릭하려는 사용자는 로그인해야 계속할 수 있습니다. setting_after_first_login_redirect_url: "첫 번째 로그인 리디렉션" setting_after_first_login_redirect_url_text_html: > 첫 로그인 후 사용자를 리디렉션할 경로를 설정하세요. 비어 있으면 온보딩 투어의 홈페이지로 리디렉션됩니다.
    예: /my/page @@ -4540,9 +4540,9 @@ ko: setting_smtp_password: "SMTP 비밀번호" setting_smtp_domain: "SMTP HELO 도메인" setting_activity_days_default: "프로젝트 작업에 표시되는 기간(일)" - setting_api_tokens_enabled: "Enable API tokens" + setting_api_tokens_enabled: "API 토큰 활성화" setting_api_tokens_enabled_caption: > - Decide whether users can create personal API tokens in their account settings. These tokens can be used to access the different APIs of OpenProject, such as APIv3 and MCP. + 사용자가 계정 설정에서 개인 API 토큰을 만들 수 있는지 여부를 결정합니다. 해당 토큰은 APIv3 및 MCP와 같은 OpenProject의 다양한 API에 액세스하는 데 사용할 수 있습니다. setting_app_subtitle: "응용 프로그램 부제목" setting_app_title: "응용 프로그램 제목" setting_attachment_max_size: "첨부 파일 최대 크기" @@ -5080,7 +5080,7 @@ ko: reset_failed_logins: "실패한 로그인 재설정" status_user_and_brute_force: "%{user} 및 %{brute_force}" status_change: "상태 변경" - text_change_disabled_for_provider_login: "The name and email is set by your login provider and can thus not be changed." + text_change_disabled_for_provider_login: "이름 및 이메일은 로그인 공급자가 설정하므로 변경할 수 없습니다." unlock: "잠금 해제" unlock_and_reset_failed_logins: "실패한 로그인 잠금 해제 및 재설정" error_cannot_delete_user: "User cannot be deleted" diff --git a/config/locales/crowdin/pt-BR.yml b/config/locales/crowdin/pt-BR.yml index a53e10b67205..effb21bbfb33 100644 --- a/config/locales/crowdin/pt-BR.yml +++ b/config/locales/crowdin/pt-BR.yml @@ -83,9 +83,9 @@ pt-BR: confirmation: "Tem certeza de que deseja excluir este token de suporte da edição Enterprise?" create_dialog: title: "Adicionar token Enterprise" - type_token_text: "Your Enterprise token text" + type_token_text: "Seu texto de token Enterprise" token_placeholder: "Colar seu token de suporte da edição Enterprise" - token_caption: "To learn more about how to activate Enterprise edition check our [documentation](docs_url)." + token_caption: "Para saber mais sobre como ativar a edição Enterprise, consulte nossa [documentação](docs_url)." add_token: "Carregar um token de suporte da edição Enterprise " replace_token: "Substitua seu token atual de suporte" order: "Solicitar edição Enterprise local" @@ -113,179 +113,179 @@ pt-BR: import: title: "Importar" jira: - title: "Jira Import" - description: "Use this tool to import data from your Jira instance. You can configure multiple Jira hosts and choose what to import in each import run." + title: "Importação do Jira" + description: "Use esta ferramenta para importar dados da sua instância do Jira. Você pode configurar vários hosts do Jira e escolher o que importar em cada execução de importação." errors: - cannot_delete_with_imports: "Cannot delete Jira host with existing imports" + cannot_delete_with_imports: "Não é possível excluir o host do Jira enquanto houver importações existentes" blank: - title: "No Jira hosts configured yet" - description: "Configure a Jira host to start importing items from Jira to this OpenProject instance." + title: "Nenhum host do Jira configurado até o momento" + description: "Configure um host do Jira para começar a importar itens do Jira para esta instância do OpenProject." configuration: - title: "Jira configuration" + title: "Configuração do Jira" new: "Nova configuração" banner: - title: "Limited import" - description: "This import tool is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + title: "Importação limitada" + description: "Esta ferramenta de importação está atualmente em versão beta e só consegue importar dados básicos: projetos, tarefas (nome, título, descrição, anexos), usuários (nome, e-mail, participação em projetos), status e tipos. Não é possível importar fluxos de trabalho, campos personalizados, relações entre tarefas ou permissões. No momento, só damos suporte às versões 10.x e 11.x do Jira Server/Data Center. Instâncias Cloud não possuem suporte." form: fields: name: "Nome" - url: "Jira Server/Data Center URL" + url: "URL do Jira Server/Data Center" personal_access_token: "Token de acesso pessoal" button_add: "Adicionar configuração" button_save: "Salvar configuração" button_test: "Testar configuração" button_delete_token: "Excluir token" - delete_token_confirm: "Are you sure you want to delete the token? This will disable the Jira connection." - label_testing: "Testing configuration..." - token_deleted: "Token was successfully deleted." + delete_token_confirm: "Tem certeza de que deseja excluir o token? Isso desativará a conexão com o Jira." + label_testing: "Testando configuração..." + token_deleted: "Token excluído com sucesso." test: - success: "Successfully connected to %{server} (version %{version})" - failed: "Connection failed: Unable to retrieve server information" - error: "An unexpected error occurred while testing the connection" - connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." - api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." - token_error: "Invalid API token. Please check your credentials in the configuration." - missing_credentials: "Please provide both URL and Personal Access Token to test the connection" + success: "Conectado com sucesso a %{server} (versão %{version})" + failed: "Falha na conexão: não foi possível recuperar as informações do servidor" + error: "Ocorreu um erro inesperado ao testar a conexão" + connection_error: "Erro de conexão: %{message}" + parse_error: "Falha ao interpretar a resposta do servidor. O servidor pode não ser uma instância válida do Jira." + api_error: "A API do Jira retornou o status de erro %{status}. Verifique o URL da sua instância do Jira e o token da API." + token_error: "Token da API inválido. Verifique suas credenciais na configuração." + missing_credentials: "Forneça tanto o URL quanto o Token de Acesso Pessoal para testar a conexão" invalid_url: "Forneça um URL válido" client: - connection_error: "Failed to connect to Jira server: %{message}" - connection_timeout: "Connection to Jira server timed out: %{message}" - parse_error: "Failed to parse Jira API response: %{message}" - api_error: "Jira API returned error status %{status}" + connection_error: "Falha ao conectar ao servidor Jira: %{message}" + connection_timeout: "O tempo de conexão com o servidor Jira esgotou: %{message}" + parse_error: "Falha ao analisar a resposta da API do Jira: %{message}" + api_error: "A API do Jira retornou o status de erro %{status}" columns: projects: "Projetos" last_change: "Última alteração" added: "Adicionado" - label_ago: "%{amount} ago" + label_ago: "Há %{amount}" run: - title: "Import run" + title: "Execução de importação" history: "Histórico" - remove_error: "A Jira import cannot be removed while it is running" - import_blocked_error: "Another Jira import run is currently in progress or awaiting review. Please complete or revert it before starting a new import." + remove_error: "Uma importação do Jira não pode ser removida enquanto estiver em execução" + import_blocked_error: "Outra execução de importação do Jira está em andamento ou aguardando revisão. Conclua ou reverta-a antes de iniciar uma nova importação." blank: - title: "No import runs set up yet" - description: "Create an import run to start importing information from this Jira instance" + title: "Ainda não há execuções de importação configuradas" + description: "Crie uma execução de importação para começar a importar informações desta instância do Jira" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." - button_import_run: "Import run" + description: "Você pode importar diferentes conjuntos de dados em cada execução de importação. É possível desfazer uma execução de importação imediatamente após o modo de revisão, mas não após a finalização." + button_import_run: "Execução de importação" button_edit_configuration: "Editar configuração" status: initial: "Iniciar" - instance_meta_fetching: "Fetching meta data" - instance_meta_error: "Error fetching meta data" - instance_meta_done: "Meta data fetched" + instance_meta_fetching: "Buscando metadados" + instance_meta_error: "Erro ao buscar metadados" + instance_meta_done: "Metadados obtidos" configuring: "Selecione o escopo" - projects_meta_fetching: "Fetching project data" - projects_meta_error: "Error fetching project data" + projects_meta_fetching: "Buscando dados do projeto" + projects_meta_error: "Erro ao buscar dados do projeto" projects_meta_done: "Dados coletados" importing: "Em andamento" import_error: "Erro durante importação" imported: "Modo de revisão" reverting: "Revertendo" - revert_error: "Error during revert" + revert_error: "Erro durante a reversão" reverted: "Revertido" completed: "Concluído" wizard: button_retry: "Tentar novamente" parts: projects: - one: "1 project" - other: "%{count} projects" + one: "1 projeto" + other: "%{count} projetos" issues: - one: "1 issue" - other: "%{count} issues" + one: "1 tarefa" + other: "%{count} tarefas" work_packages: - one: "1 work package" - other: "%{count} work packages" + one: "1 pacote de trabalho" + other: "%{count} pacotes de trabalho" types: - one: "1 type" - other: "%{count} types" + one: "1 tipo" + other: "%{count} tipos" statuses: one: "1 status" - other: "%{count} statuses" + other: "%{count} status" users: - one: "1 user" - other: "%{count} users" + one: "1 usuário" + other: "%{count} usuários" groups: fetch: - title: "Get base data" + title: "Obter dados básicos" groups_and_users: - title: "Groups and Users" + title: "Grupos e usuários" configuration: title: "Configurar importação" confirming: title: "Confirmar e importar" review: - title: "Review import" + title: "Revisar importação" sections: fetch_data: - title: "Fetch instance meta data" + title: "Buscar metadados da instância" caption_done: "Concluído" - description: "Check what data is available for import in the host Jira instance." - button_fetch: "Check available data" - label_progress: "Fetching data from Jira..." + description: "Verifique quais dados estão disponíveis para importação na instância do Jira host." + button_fetch: "Verificar dados disponíveis" + label_progress: "Buscando dados do Jira..." groups_and_users: - title: "Groups and Users" + title: "Grupos e usuários" import_scope: - title: "Import scope" - caption: "Choose what you want to import into OpenProject" + title: "Escopo da importação" + caption: "Escolha o que deseja importar para o OpenProject" caption_done: "Concluído" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance URL offers for import and what this tool is able to import right now." - description: "Select what data you want to import from the available data fetched from the host Jira instance." + label_info: "Observe que esta ferramenta de importação está em versão beta e não consegue importar todos os tipos de dados. A seguir, um resumo do que o URL da instância Jira host oferece para importação e do que esta ferramenta consegue importar no momento." + description: "Selecione os dados que deseja importar a partir das informações disponíveis obtidas da instância Jira host." label_available_data: "Dados disponíveis" - label_not_available_data: "Not available for import" - button_select_projects: "Select projects to import" + label_not_available_data: "Não disponível para importação" + button_select_projects: "Selecione os projetos para importar" button_continue: "Continuar" - label_import: "Select which projects you would like to import." + label_import: "Selecione os projetos que você deseja importar." button_select: "Selecionar projetos" - label_selected_data: "Selected data for import" - label_progress: "Fetching data from Jira..." + label_selected_data: "Dados selecionados para importação" + label_progress: "Buscando dados do Jira..." elements: - relations: "Relations between issues" - workflows: "Project-level workflows" + relations: "Relações entre tarefas" + workflows: "Fluxos de trabalho no nível do projeto" users: "Usuários" sprints: "Sprints" schemes: "Esquemas" - permissions: "User, group and project permissions" + permissions: "Permissões de usuários, grupos e projetos" confirm_import: title: "Importar dados" - caption: "Review your import settings and start the import" + caption: "Revise suas configurações de importação e inicie a importação" caption_done: "Concluído" - label_available_data: "Available data to import" + label_available_data: "Dados disponíveis para importação" button_start: "Iniciar importação" - description: "You are about to start an import run with the following settings." + description: "Você está prestes a iniciar uma execução de importação com as seguintes configurações." label_progress: "Importação em andamento..." - label_import_data: "Currently importing" + label_import_data: "Importando no momento" import_result: - title: "Import run results" - caption: "Review import run or revert import" - info: "Import run successful." + title: "Resultados da execução de importação" + caption: "Revisar execução de importação ou reverter importação" + info: "Execução de importação concluída com sucesso." label_results: "Importado" - label_revert: "Revert import" - button_revert: "Revert import" - button_done: "Finalize import" - preview_description: 'The imported data is currently in review mode. Click "Finalize import" to make the import permanent or "Revert import" to undo all changes made in this import run.' - label_finalizing_progress: "Finalizing import..." - label_finalized: "Import finalized." - label_revert_progress: "Reverting import..." - label_reverted: "Import reverted." + label_revert: "Reverter importação" + button_revert: "Reverter importação" + button_done: "Finalize importação" + preview_description: 'Os dados importados estão atualmente em modo de revisão. Clique em “Finalizar importação” para tornar a importação permanente ou em “Reverter importação” para desfazer todas as alterações feitas nesta execução de importação.' + label_finalizing_progress: "Finalizando importação..." + label_finalized: "Importação finalizada." + label_revert_progress: "Revertendo importação..." + label_reverted: "Importação revertida." select_dialog: filter_projects: "Filtrar por texto" revert_dialog: - title: "Permanently revert this import?" - description: "This will delete all imported objects (including whole projects) even if there was user activity in those projects after the import on OpenProject." - confirm: "I understand that this reversion will delete data permanently" + title: "Deseja reverter esta importação de forma permanente?" + description: "Isso excluirá todos os objetos importados (incluindo projetos inteiros), mesmo que tenha havido atividade de usuários nesses projetos após a importação no OpenProject." + confirm: "Estou ciente de que esta reversão excluirá os dados de forma permanente" finalize_dialog: - title: "Finalize this import?" - description: "Once finalized, this import can no longer be reverted. All imported data will become permanently imported." + title: "Deseja finalizar esta importação?" + description: "Após a finalização, esta importação não poderá mais ser revertida. Todos os dados importados se tornarão permanentes." confirm: "Compreendo que esta ação é irreversível" confirm_button: "Compreendido" select_projects: title: "Selecionar projetos" mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." + description: "O protocolo de contexto do modelo permite que agentes de IA forneçam aos seus usuários ferramentas e recursos disponibilizados por esta instância do OpenProject. Este recurso ainda está em versão beta." resources_heading: "Recursos" resources_description: "O OpenProject implementa as seguintes recursos. Cada uma pode ser habilitada, renomeada e descrita conforme desejado. Para mais informações, consulte a [documentação sobre recursos MCP](docs_url)." resources_submit: "Atualizar recursos" @@ -297,16 +297,16 @@ pt-BR: server_form: description_caption: "Como o servidor MCP será descrito para outros aplicativos que se conectarem a ele." title_caption: "Um título curto exibido para aplicativos que se conectam ao servidor MCP." - tool_response_format: "Tool response format" + tool_response_format: "Formato de resposta da ferramenta" tool_response_format_content_only_label: "Apenas conteúdo" tool_response_format_content_only_caption: > - Choose this if MCP clients connecting to this instance do not support structured content. Tool responses will only contain plain text content and leave out the structured version. + Escolha esta opção se os clientes MCP que se conectam a esta instância não derem suporte ao conteúdo estruturado. As respostas da ferramenta só conterão texto simples, sem a versão estruturada. tool_response_format_full_label: "Completo" tool_response_format_full_caption: > - The most compatible option. Tool responses will include both regular and structured content, allowing MCP clients to choose which format they want to read. This may increase the number of tokens that the language model has to process, potentially increasing cost and decreasing performance. - tool_response_format_structured_only_label: "Structured content only" + A opção mais compatível. As respostas da ferramenta incluirão tanto o conteúdo normal quanto o estruturado, permitindo que os clientes MCP escolham qual formato desejam visualizar. Isso pode aumentar o número de tokens que o modelo de linguagem precisa processar, potencialmente elevando o custo e reduzindo o desempenho. + tool_response_format_structured_only_label: "Somente conteúdo estruturado" tool_response_format_structured_only_caption: > - Choose this if you are certain that MCP clients connecting to this instance support structured content. Tool responses will only include structured content and leave out its text representation. + Escolha esta opção se tiver certeza de que os clientes MCP que se conectam a esta instância derem suporte ao conteúdo estruturado. As respostas da ferramenta incluirão apenas o conteúdo estruturado, sem a versão em texto. update: failure: "A configuração MCP não pôde ser atualizada." success: "Configuração MCP atualizada com sucesso." @@ -544,7 +544,7 @@ pt-BR: contained_in_type: "Contido no tipo" confirm_destroy_option: "Removendo uma opção removerá todas as suas ocorrências (ex. em pacotes de trabalho). Tem certeza que você quer removê-la?" reorder_alphabetical: "Reorganizar valores em ordem alfabética" - reorder_confirmation: "Warning: The current order of available values as well as all unsaved values will be lost. Are you sure you want to continue?" + reorder_confirmation: "Aviso: A ordem atual dos valores disponíveis, assim como todos os valores não salvos, será perdida. Tem certeza de que deseja continuar?" placeholder_version_select: "Primeiro é necessária a seleção do pacote de trabalho ou projeto" calculated_field_not_editable: "Atributo não editável. O valor é calculado automaticamente." no_role_assigment: "Nenhuma atribuição de função" @@ -578,7 +578,7 @@ pt-BR: all: "0 significa que não há restrição" project: "0 significa que não há restrição" has_comment: - project: "Allows the user to add a comment related to the project attribute when selecting the value in the project overview." + project: "Permite ao usuário adicionar um comentário relacionado ao atributo do projeto ao selecionar o valor na visão geral do projeto." tab: no_results_title_text: Atualmente, não há campos personalizados. no_results_content_text: Criar um novo campo personalizado @@ -597,8 +597,8 @@ pt-BR: confirmation_live_message_unchecked: "O botão para prosseguir está desativado. É necessário marcar a caixa de seleção para continuar." mcp_configurations: server_url_component: - caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." - label: "Server URL" + caption: "O URL em que o servidor MCP do OpenProject estará acessível. Necessário para configurar os clientes MCP." + label: "URL do servidor" op_dry_validation: or: "ou" errors: @@ -803,7 +803,7 @@ pt-BR: is_for_all_blank_slate: heading: Para todos os projetos description: Este atributo de projeto está ativado em todos os projetos, pois a opção “Para todos os projetos” está selecionada. Não é possível desativá-lo para projetos individuais. - enabled_via_assignee_when_submitted_html: This project attribute cannot be disabled since it is set as assignee when submitted for project initiation requests. + enabled_via_assignee_when_submitted_html: Este atributo do projeto não pode ser desativado, pois está configurado como responsável ao enviar nas solicitações de início de projeto. types: no_results_title_text: Atualmente, não há tipos disponíveis. form: @@ -819,8 +819,8 @@ pt-BR: new_label: "Nova prioridade" creation_wizard: errors: - no_work_package_type: "Failed to enable project initiation request because it requires at least one active work package type and this project has none. Please add at least one work package type to this project." - no_status_when_submitted: "Failed to enable project initiation request because work package type %{type} requires at least one status associated with it. Please enable at least one status workflow for this work package type." + no_work_package_type: "Falha ao ativar a solicitação de início de projeto, pois é necessário ter pelo menos um tipo de pacote de trabalho ativo, e este projeto não possui nenhum. Adicione pelo menos um tipo de pacote de trabalho a este projeto." + no_status_when_submitted: "Falha ao ativar a solicitação de início de projeto, pois o tipo de pacote de trabalho %{type} precisa ter pelo menos um status associado. Habilite pelo menos um fluxo de trabalho de status para este tipo de pacote de trabalho." export: description_attachment_export: "O artefato gerado será salvo como um anexo PDF no pacote de trabalho do artefato." description_file_link_export: "O pacote de trabalho do artefato incluirá um link para um PDF armazenado em um armazenamento de arquivos externo. É necessário que o armazenamento ofereça gerenciamento automático de pastas por projeto. Atualmente, apenas armazenamentos Nextcloud são compatíveis." @@ -834,7 +834,7 @@ pt-BR: label_request_submission: "Envio de solicitação" project_attributes_description: > Selecione quais atributos do projeto devem ser incluídos na solicitação de início do projeto. Esta lista inclui apenas [atributos do projeto](project_attributes_url) habilitados para este projeto. - enabled_because_required_html: This project attribute cannot be disabled for this project initiation request since it is defined as required. This can be changed in the administration settings by the administrator of the instance. + enabled_because_required_html: Este atributo do projeto não pode ser desativado para esta solicitação de início de projeto, pois é obrigatório. Essa opção pode ser alterada pelo administrador da instância nas configurações de administração. status: button_edit: Editar status wizard: @@ -1357,14 +1357,14 @@ pt-BR: activerecord: attributes: agile/sprint: - sharing: "Sharing" - finish_date: "End date" + sharing: "Compartilhamento" + finish_date: "Data de término" jira_import: projects: "Projetos" "import/jira": - name: "Jira instance name" - url: "Jira instance URL" - personal_access_token: "Personal access token" + name: "Nome da instância Jira" + url: "URL da instância Jira" + personal_access_token: "Token de acesso de pessoal" announcements: show_until: "Exibir até" attachment: @@ -1410,7 +1410,7 @@ pt-BR: regexp: "Expressão regular" searchable: "Pesquisável" admin_only: "Apenas administrador" - has_comment: "Add a comment text field" + has_comment: "Adicionar um campo de texto para comentário" custom_value: value: "Valor" design_color: @@ -1739,7 +1739,7 @@ pt-BR: not_available: "não está disponível devido a uma configuração do sistema." not_deletable: "não pode ser excluído." not_current_user: "não é o usuário atual." - only_one_active_sprint_allowed: "only one active sprint is allowed per project." + only_one_active_sprint_allowed: "apenas uma sprint ativa é permitida por projeto." not_found: "não encontrado." not_a_date: "não é uma data válida." not_a_datetime: "não é uma data/hora válida." @@ -1847,7 +1847,7 @@ pt-BR: meeting: error_conflict: "Não foi possível salvar, pois a reunião foi atualizada por outra pessoa enquanto isso. Atualize a página, por favor." message: - cannot_move_message_to_forum_of_different_project: "A message cannot be moved to a forum of a different project." + cannot_move_message_to_forum_of_different_project: "Uma mensagem não pode ser movida para um fórum de outro projeto." notifications: at_least_one_channel: "É necessário especificar pelo menos um canal para o envio de notificações." attributes: @@ -2104,7 +2104,7 @@ pt-BR: in_use: "Este nome de token já está em uso, escolha outro" format: "%{message}" jira: - invalid_protocol: "Please provide a valid protocol (http or https)" + invalid_protocol: "Forneça um protocolo válido (http ou https)" template: body: "Por favor, verifique os seguintes campos:" header: @@ -2680,8 +2680,8 @@ pt-BR: edit_attribute_groups: Editar atributo de grupos gantt_pdf_export: Exportar diagrama de Gantt para PDF ldap_groups: Sincronização de usuários e grupos LDAP - mcp_server: Model Context Protocol (MCP) - meeting_templates: Reusable meeting templates + mcp_server: Protocolo de Contexto do Modelo (MCP) + meeting_templates: Modelos de reunião reutilizáveis nextcloud_sso: Autenticação única para o armazenamento do Nextcloud one_drive_sharepoint_file_storage: Armazenamento de Arquivos OneDrive/SharePoint placeholder_users: Usuários Genéricos @@ -2759,9 +2759,9 @@ pt-BR: title: "Ações personalizadas" description: "As ações personalizadas são atalhos de clique único para um conjunto de ações pré-definidas que você pode disponibilizar em certos pacotes de trabalho com base no estado, função, tipo ou projeto." mcp_server: - description: "Bring OpenProject into your AI workflows with a secure MCP server." + description: "Integre o OpenProject aos seus fluxos de trabalho de IA com um servidor MCP seguro." meeting_templates: - description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." + description: "Defina modelos de reunião com uma estrutura de pauta predefinida e economize tempo reutilizando-os ao criar novas reuniões." nextcloud_sso: title: "Autenticação única para o armazenamento do Nextcloud" description: "Ative a autenticação segura e contínua para o seu armazenamento Nextcloud com Autenticação única. Simplifique o gerenciamento de acessos e melhore a experiência do usuário." @@ -3074,16 +3074,16 @@ pt-BR: #We need to include the version to invalidate outdated translations in other locales "17_2": new_features_title: > - The release contains various new features and improvements, such as: + A versão traz diversos novos recursos e melhorias, como: new_features_list: - line_0: AI workflows with a secure MCP server (Professional plan and higher) - line_1: Improved project home page with new widget for budgets and improved accessibility - line_2: "Meetings: Meeting templates (Basic plan and higher)" - line_3: Better transparency with project attribute comments. - line_4: PDF export enhancements - line_5: Increased security for external links (Premium plan and higher) - line_6: UI/UX improvements in the Backlogs module - line_7: Harmonized custom field forms + line_0: Fluxos de trabalho de IA com um servidor MCP seguro (plano Professional ou superior) + line_1: Página inicial do projeto aprimorada, com novo widget para orçamentos e acessibilidade melhorada + line_2: "Reuniões: Modelos de reunião (plano Basic ou superior)" + line_3: Mais transparência com comentários nos atributos do projeto. + line_4: Melhorias na exportação para PDF + line_5: Segurança reforçada para links externos (plano Premium ou superior) + line_6: Melhorias de UI/UX no módulo de Backlogs + line_7: Formulários de campos personalizados harmonizados links: upgrade_enterprise_edition: "Atualizar para a edição Enterprise" postgres_migration: "Migrando sua instalação para PostgreSQL" @@ -3101,7 +3101,7 @@ pt-BR: journals: changes_retracted: "As mudanças foram retraídas." caused_changes: - budget_deleted: "Budget has been deleted" + budget_deleted: "Orçamento foi excluído" dates_changed: "Datas alteradas" default_attribute_written: "Atributos de somente leitura escritos" import: "Importado" @@ -3113,21 +3113,21 @@ pt-BR: total_percent_complete_mode_changed_to_simple_average: "O cálculo dos totais de % de conclusão agora é feito com base na média simples dos valores de % de conclusão." cause_descriptions: import: - header: "changes by %{author}" - field_changed: "%{field} changed from %{old_value} to %{new_value}" - field_set: "%{field} set to %{value}" - field_removed: "%{field} removed" - field_updated: "%{field} updated" - deleted_with_diff: "%{field} deleted (%{link})" - changed_with_diff: "%{field} changed (%{link})" - set_with_diff: "%{field} set (%{link})" + header: "alterações por %{author}" + field_changed: "%{field} alterado de %{old_value} para %{new_value}" + field_set: "%{field} definido como %{value}" + field_removed: "%{field} removido" + field_updated: "%{field} atualizado" + deleted_with_diff: "%{field} excluído (%{link})" + changed_with_diff: "%{field} alterado (%{link})" + set_with_diff: "%{field} definido (%{link})" work_package_predecessor_changed_times: por alterações ao antecessor %{link} work_package_parent_changed_times: por alterações ao primário %{link} work_package_children_changed_times: por alterações ao secundário %{link} work_package_related_changed_times: por alterações ao %{link} relacionado work_package_duplicate_closed: O status foi atualizado automaticamente pelo pacote de trabalho duplicado %{link} unaccessable_work_package_changed: por alterações a um pacote de trabalho relacionado - budget_deleted: Budget has been deleted + budget_deleted: Orçamento foi excluído working_days_changed: changed: "por alterações a dias úteis (%{changes})" days: @@ -3208,7 +3208,7 @@ pt-BR: active_tokens: "Tokens ativos" blank_description: "Não há nenhum acesso ativo de aplicativos de terceiros configurado para sua conta." blank_title: "Sem token de aplicativo OAuth" - last_refreshed_at: "Last refreshed at" + last_refreshed_at: "Última atualização em" title: "OAuth" table_title: "Tokens de aplicativo OAuth" text_hint: "Tokens de aplicativo OAuth permitem que aplicativos de terceiros se conectem a esta instância do OpenProject." @@ -3448,7 +3448,7 @@ pt-BR: label_duplicates: "Duplicados" label_edit: "Editar" label_edit_x: "Editar: %{x}" - label_view_x: "View: %{x}" + label_view_x: "Visualizar: %{x}" label_enable_multi_select: "Alterna para seleção múltipla" label_enabled_project_custom_fields: "Campos personalizados habilitados" label_enabled_project_modules: "Módulos habilitados" @@ -3553,7 +3553,7 @@ pt-BR: label_external_links: "Links externos" label_locale: "Idioma e região" label_jump_to_a_project: "Saltar para um projeto..." - label_jira_import: "Jira Import" + label_jira_import: "Importação do Jira" label_keyword_plural: "Palavras-chave" label_language_based: "Com base no idioma do usuário" label_last_activity: "Última atividade" @@ -3576,7 +3576,7 @@ pt-BR: label_lock_user: "Bloquear usuário" label_logged_as: "Conectado como" label_login: "Fazer login" - label_custom_comment: "%{name} comment" + label_custom_comment: "Comentário de %{name}" label_custom_logo: "Logotipo personalizado para desktop" label_custom_logo_mobile: "Logotipo personalizado para celular" label_custom_export_logo: "Logo de exportação personalizado" @@ -4203,7 +4203,7 @@ pt-BR: notice_successful_delete: "Exclusão bem sucedida." notice_successful_cancel: "Cancelamento bem-sucedido." notice_successful_update: "Atualizado com sucesso." - notice_successful_move: "Successful move from %{from} to %{to}." + notice_successful_move: "Movido com sucesso de %{from} para %{to}." notice_unsuccessful_create: "Falha na criação." notice_unsuccessful_create_with_reason: "Falha na criação: %{reason}" notice_unsuccessful_update: "Falha na atualização." @@ -4365,7 +4365,7 @@ pt-BR: permission_edit_project_query: "Editar consulta do projeto" placeholders: default: "-" - templated_hint: Automatically generated through type %{type} + templated_hint: Gerado automaticamente através do tipo %{type} portfolio: count: zero: "0 portfólios" @@ -4550,9 +4550,9 @@ pt-BR: setting_capture_external_links: "Capturar links externos" setting_capture_external_links_text: > Quando ativado, todos os links externos em textos formatados serão redirecionados por uma página de aviso antes de sair do aplicativo. Isso ajuda a proteger os usuários de sites externos potencialmente maliciosos. - setting_capture_external_links_require_login: "Require users to be logged in" + setting_capture_external_links_require_login: "Exigir que os usuários estejam conectados" setting_capture_external_links_require_login_text: > - When enabled, users wanting to click on external links need to be logged in before being able to continue. + Quando habilitado, os usuários que desejarem clicar em links externos precisarão estar conectados antes de continuar. setting_after_first_login_redirect_url: "Redirecionamento de primeiro login" setting_after_first_login_redirect_url_text_html: > Defina um caminho para redirecionar os usuários após o primeiro login. Se deixado em branco, eles serão redirecionados para a página inicial do tour de introdução.
    Exemplo: /my/page @@ -4597,9 +4597,9 @@ pt-BR: setting_smtp_password: "Senha SMTP" setting_smtp_domain: "Domínio SMTP HELO" setting_activity_days_default: "Dias exibidos na atividade de projeto" - setting_api_tokens_enabled: "Enable API tokens" + setting_api_tokens_enabled: "Ativar tokens de API" setting_api_tokens_enabled_caption: > - Decide whether users can create personal API tokens in their account settings. These tokens can be used to access the different APIs of OpenProject, such as APIv3 and MCP. + Determine se os usuários podem criar tokens de API pessoais nas configurações da conta. Esses tokens podem ser usados para acessar as diferentes APIs do OpenProject, como APIv3 e MCP. setting_app_subtitle: "Subtítulo do aplicativo" setting_app_title: "Título da aplicação" setting_attachment_max_size: "Tamanho máximo dos anexos" @@ -5138,10 +5138,10 @@ pt-BR: reset_failed_logins: "Redefinição de logins que falharam" status_user_and_brute_force: "%{user} e %{brute_force}" status_change: "Mudança de situação" - text_change_disabled_for_provider_login: "The name and email is set by your login provider and can thus not be changed." + text_change_disabled_for_provider_login: "O nome e o e-mail são definidos por seu provedor de login e, por isso, não podem ser alterados." unlock: "Desbloquear" unlock_and_reset_failed_logins: "Desbloquear e redefinir logins com falha" - error_cannot_delete_user: "User cannot be deleted" + error_cannot_delete_user: "Usuário não pode ser excluído" version_status_closed: "fechado" version_status_locked: "bloqueado" version_status_open: "aberto" diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml index 44df47ae0e2b..7acdf7c810dd 100644 --- a/config/locales/crowdin/zh-CN.yml +++ b/config/locales/crowdin/zh-CN.yml @@ -141,7 +141,7 @@ zh-CN: test: success: "成功连接到 %{server}(版本 %{version})" failed: "连接失败:无法检索服务器信息" - error: "测试连接时意外出错" + error: "测试连接时发生意外错误" connection_error: "连接错误:%{message}" parse_error: "服务器响应解析失败。服务器可能不是有效的 Jira 实例。" api_error: "Jira API 返回错误状态 %{status}。请检查您的 Jira 实例 URL 和 API 令牌。" @@ -149,15 +149,15 @@ zh-CN: missing_credentials: "请提供 URL 和个人访问令牌,以测试连接" invalid_url: "请提供有效的 URL" client: - connection_error: "Jira 服务器连接失败:%{message}" + connection_error: "无法连接到 Jira 服务器:%{message}" connection_timeout: "与 Jira 服务器的连接超时:%{message}" - parse_error: "Jira API 响应解析失败:%{message}" + parse_error: "无法解析 Jira API 响应:%{message}" api_error: "Jira API 返回错误状态 %{status}" columns: projects: "项目" last_change: "上次更改" added: "已添加" - label_ago: "%{amount} 前" + label_ago: "%{amount}前" run: title: "导入运行" history: "历史记录" @@ -169,7 +169,7 @@ zh-CN: index: description: "每次导入运行都可以导入不同的数据集。可以在审核模式后立即撤消导入运行,但不能在完成后撤消。" button_import_run: "导入运行" - button_edit_configuration: "编辑设置" + button_edit_configuration: "编辑配置" status: initial: "开始" instance_meta_fetching: "正在获取元数据" @@ -182,7 +182,7 @@ zh-CN: importing: "进行中" import_error: "导入过程中出错" imported: "审核模式" - reverting: "撤消中" + reverting: "正在撤消" revert_error: "撤消过程中出错" reverted: "已撤消" completed: "已完成" @@ -200,7 +200,7 @@ zh-CN: statuses: other: "%{count} 种状态" users: - other: "%{count} 名用户" + other: "%{count} 个用户" groups: fetch: title: "获取基础数据" @@ -294,13 +294,13 @@ zh-CN: tool_response_format: "工具响应格式" tool_response_format_content_only_label: "仅内容" tool_response_format_content_only_caption: > - 如果连接到此实例的 MCP 客户端不支持结构化内容,则选中此项。此后,工具响应将只包含纯文本内容,而不包含结构化版本。 + 如果连接到此实例的 MCP 客户端不支持结构化内容,则选中此项。工具响应将只包含纯文本内容,而不包含结构化版本。 tool_response_format_full_label: "完整" tool_response_format_full_caption: > 最兼容的选项。工具响应将包含常规内容和结构化内容,MCP 客户端可以选择要读取的格式。这可能会增加语言模型需要处理的词元数,从而可能导致成本增加,性能降低。 tool_response_format_structured_only_label: "仅结构化内容" tool_response_format_structured_only_caption: > - 如果您确定连接到此实例的 MCP 客户端支持结构化内容,则选中此项。此后,工具响应将只包含结构化内容,而不包含其文本表示。 + 如果您确定连接到此实例的 MCP 客户端支持结构化内容,则选中此项。工具响应将只包含结构化内容,而不包含其文本表示。 update: failure: "MCP 配置无法更新。" success: "MCP 配置已成功更新。" @@ -570,7 +570,7 @@ zh-CN: all: "0 表示无限制" project: "0 表示无限制" has_comment: - project: "用户可以在项目概览中选择值时添加与项目特性相关的注释。" + project: "允许用户在项目概览中选择值时添加与项目特性相关的注释。" tab: no_results_title_text: 目前没有自定义字段。 no_results_content_text: 创建新的自定义字段 @@ -589,7 +589,7 @@ zh-CN: confirmation_live_message_unchecked: "继续按钮现已失效。您需要勾选复选框才能继续。" mcp_configurations: server_url_component: - caption: "可连接 OpenProject MCP 服务器的 URL。设置 MCP 客户端时需要使用。" + caption: "可以访问 OpenProject MCP 服务器的 URL。设置 MCP 客户端时需要使用。" label: "服务器 URL" op_dry_validation: or: "或" @@ -810,7 +810,7 @@ zh-CN: new_label: "新优先级" creation_wizard: errors: - no_work_package_type: "无法启用项目启动请求,因为它至少需要一个活动的工作包类型,但此项目没有。请为此项目至少添加一种工作包类型。" + no_work_package_type: "无法启用项目启动请求,因为它至少需要一个有效工作包类型,但此项目没有。请为此项目至少添加一种工作包类型。" no_status_when_submitted: "无法启用项目启动请求,因为工作包类型 %{type} 至少需要一个与之相关的状态。请为此工作包类型至少启用一个状态工作流。" export: description_attachment_export: "生成的工件将作为 PDF 附件保存到工件工作包中。" @@ -825,7 +825,7 @@ zh-CN: label_request_submission: "请求提交" project_attributes_description: > 选择哪些项目特性应包含在项目启动请求中。此列表仅包含为此项目启用的[项目特性](project_attributes_url)。 - enabled_because_required_html: 无法为此项目启动请求禁用此项目特性,因为它被定义为必填项。实例管理员可在管理设置中更改此设置。 + enabled_because_required_html: 无法为此项目启动请求禁用此项目特性,因为它被定义为必选项。实例管理员可以在管理设置中更改此设置。 status: button_edit: 编辑状态 wizard: @@ -1341,7 +1341,7 @@ zh-CN: activerecord: attributes: agile/sprint: - sharing: "共享中" + sharing: "共享" finish_date: "结束日期" jira_import: projects: "项目" @@ -1723,7 +1723,7 @@ zh-CN: not_available: "因系统配置而不可用。" not_deletable: "无法删除。" not_current_user: "不是当前用户。" - only_one_active_sprint_allowed: "每个项目只允许有一个活跃的冲刺。" + only_one_active_sprint_allowed: "每个项目只允许有一个有效冲刺。" not_found: "未找到" not_a_date: "不是有效的日期。" not_a_datetime: "不是有效的日期时间。" @@ -3019,8 +3019,8 @@ zh-CN: new_features_title: > 此版本包含各种新功能和改进,例如: new_features_list: - line_0: 通过安全的 MCP 服务器实现的 AI 工作流(专业版及更高版本) - line_1: 改进了项目主页,新增了预算微件,提高了可访问性 + line_0: 通过安全的 MCP 服务器实现的 AI 工作流(专业方案及更高版本) + line_1: 改进了项目首页,新增了预算微件,提高了可访问性 line_2: "会议:会议模板(基本方案及更高版本)" line_3: 通过项目特性注释,提高了透明度。 line_4: PDF 导出增强功能 @@ -3057,13 +3057,13 @@ zh-CN: cause_descriptions: import: header: "更改者:%{author}" - field_changed: "%{field} 已从 %{old_value} 更改为 %{new_value}" - field_set: "%{field} 设置为 %{value}" - field_removed: "%{field} 已移除" - field_updated: "%{field} 已更新" - deleted_with_diff: "%{field} 已删除 (%{link})" - changed_with_diff: "%{field} 已更改 (%{link})" - set_with_diff: "%{field} 已设置 (%{link})" + field_changed: "“%{field}”已从 %{old_value} 更改为 %{new_value}" + field_set: "“%{field}”设置为 %{value}" + field_removed: "“%{field}”已移除" + field_updated: "“%{field}”已更新" + deleted_with_diff: "“%{field}”已删除 (%{link})" + changed_with_diff: "“%{field}”已更改 (%{link})" + set_with_diff: "“%{field}”已设置 (%{link})" work_package_predecessor_changed_times: 根据前置任务 %{link}的更改 work_package_parent_changed_times: 通过对父级的更改 %{link} work_package_children_changed_times: 通过对子级的更改 %{link} @@ -3222,7 +3222,7 @@ zh-CN: label_added: "已添加" label_added_by: "由%{author}添加" label_added_by_on: "由 %{author} 添加 %{date}" - label_added_time_by: "由 %{author} %{age} 前添加" + label_added_time_by: "由 %{author} %{age}前添加" label_additional_workflow_transitions_for_assignee: "当用户是受理人时允许额外的转移" label_additional_workflow_transitions_for_author: "当用户是作者时允许额外转移" label_administration: "管理" @@ -3239,7 +3239,7 @@ zh-CN: label_angular: "AngularJS" label_app_modules: "%{app_title} 模块" label_api_access_key: "API 访问键" - label_api_access_key_created_on: "API 访问密钥创建于 %{value} 前" + label_api_access_key_created_on: "API 访问密钥创建于 %{value}前" label_api_access_key_type: "API" label_auto_option: "(自动)" label_ical_access_key_type: "iCalendar" @@ -3424,7 +3424,7 @@ zh-CN: label_favorite: "收藏夹" label_feed_plural: "订阅源" label_feeds_access_key: "RSS 访问密钥" - label_feeds_access_key_created_on: "RSS 访问密钥创建于 %{value} 前" + label_feeds_access_key_created_on: "RSS 访问密钥创建于 %{value}前" label_feeds_access_key_type: "RSS 订阅" label_file_plural: "文件" label_filter: "筛选器" @@ -3519,7 +3519,7 @@ zh-CN: label_lock_user: "锁定用户" label_logged_as: "登录用户名" label_login: "登录" - label_custom_comment: "%{name} 注释" + label_custom_comment: "%{name}注释" label_custom_logo: "自定义徽标桌面版" label_custom_logo_mobile: "自定义徽标移动版" label_custom_export_logo: "自定义导出徽标" @@ -3803,9 +3803,9 @@ zh-CN: label_type_new: "新类型" label_type_plural: "类型" label_ui: "用户界面" - label_updated_time: "%{value} 前更新" + label_updated_time: "%{value}前更新" label_updated_time_at: "%{author} %{age}" - label_updated_time_by: "%{author} 于 %{age} 前更新" + label_updated_time_by: "%{author} 于 %{age}前更新" label_upgrade_guides: "升级指南" label_used_by: "使用于" label_used_by_types: "用于类型" @@ -4304,7 +4304,7 @@ zh-CN: permission_edit_project_query: "编辑项目查询" placeholders: default: "-" - templated_hint: 通过类型 %{type} 自动生成 + templated_hint: 通过“%{type}”类型自动生成 portfolio: count: zero: "0 个项目组合" diff --git a/modules/backlogs/config/locales/crowdin/it.yml b/modules/backlogs/config/locales/crowdin/it.yml index f5040895dfec..4caea4de2d57 100644 --- a/modules/backlogs/config/locales/crowdin/it.yml +++ b/modules/backlogs/config/locales/crowdin/it.yml @@ -26,7 +26,7 @@ it: activerecord: attributes: sprint: - duration: "Sprint duration" + duration: "Durata dello sprint" work_package: position: "Posizione" story_points: "Punti della storia" @@ -46,7 +46,7 @@ it: task_type: "Tipo di attività" backlogs: any: "qualsiasi" - column_width: "Column width" + column_width: "Larghezza della colonna" definition_of_done: "Definizione di fatto" impediment: "Impedimento" label_versions_default_fold_state: "Espandi le versioni" @@ -54,8 +54,8 @@ it: work_package_is_closed: "Il pacchetto di lavoro è fatto, quando" label_is_done_status: "Lo stato %{status_name} vuol dire completato" points_label: - one: "point" - other: "points" + one: "punto" + other: "punti" positions_could_not_be_rebuilt: "Le posizioni non potrebbero essere ricostruite." positions_rebuilt_successfully: "Posizioni ricostruite correttamente." rebuild: "Ricostruisci" @@ -64,8 +64,8 @@ it: show_burndown_chart: "Grafico Burndown" story: "Storia" story_points: - one: "%{count} story point" - other: "%{count} story points" + one: "%{count} punto story" + other: "%{count} punti story" task: "Attività" task_color: "Colore attività" unassigned: "Non assegnato" @@ -73,28 +73,28 @@ it: header_backlogs: "Modulo backlog" button_update_backlogs: "Aggiorna il modulo backlog" backlog_component: - blankslate_title: "%{name} is empty" - blankslate_description: "No items planned yet. Drag items here to add them." + blankslate_title: "%{name} è vuoto" + blankslate_description: "Nessun elemento pianificato ancora. Trascina gli elementi qui per aggiungerli." backlog_header_component: - label_toggle_backlog: "Collapse/Expand %{name}" + label_toggle_backlog: "Comprimi/Espandi %{name}" label_story_count: - zero: "No stories in backlog" - one: "%{count} story in backlog" - other: "%{count} stories in backlog" + zero: "Nessuna story nel backlog" + one: "%{count} story nel backlog" + other: "%{count} story nel backlog" backlog_menu_component: - label_actions: "Backlog actions" + label_actions: "Azioni nel backlog" action_menu: - edit_sprint: "Edit sprint" - new_story: "New story" - stories_tasks: "Stories/Tasks" - task_board: "Task board" - burndown_chart: "Burndown chart" + edit_sprint: "Modifica sprint" + new_story: "Nuova story" + stories_tasks: "Story/Task" + task_board: "Bacheca dei task" + burndown_chart: "Grafico Burndown" wiki: "Wiki" - properties: "Properties" + properties: "Proprietà" story_component: - label_drag_story: "Move %{name}" + label_drag_story: "Sposta %{name}" story_menu_component: - label_actions: "Story actions" + label_actions: "Azioni della story" backlogs_points_burn_direction: "Punteggi per burn positivo/negativo" backlogs_product_backlog: "Backlog del prodotto" backlogs_story: "Storia" @@ -102,14 +102,14 @@ it: backlogs_task: "Attività" backlogs_task_type: "Tipo di attività" backlogs_wiki_template: "Modello per pagina wiki dello sprint" - backlogs_empty_title: "No versions are defined yet" - backlogs_empty_action_text: "To start using backlogs, please create a version first" - backlogs_not_configured_title: "Backlogs not configured" - backlogs_not_configured_description: "Story and task types need to be set before using this module." - backlogs_not_configured_action_text: "Configure Backlogs" + backlogs_empty_title: "Non sono ancora state definite delle versioni" + backlogs_empty_action_text: "Per iniziare a usare i backlog, crea prima una versione" + backlogs_not_configured_title: "Backlog non configurati" + backlogs_not_configured_description: "Prima di utilizzare questo modulo è necessario impostare la tipologia di story e di task." + backlogs_not_configured_action_text: "Configura i backlog" burndown: - story_points: "Story points" - story_points_ideal: "Story points (ideal)" + story_points: "Punti story" + story_points_ideal: "Punti story (ideali)" errors: attributes: task_type: @@ -129,8 +129,8 @@ it: project_module_backlogs: "Backlog" rb_burndown_charts: show: - blankslate_title: "No burndown data available" - blankslate_description: "Set start and end date for the sprint to generate a burndown chart." + blankslate_title: "Non sono disponibili dati di burndown" + blankslate_description: "Imposta la data di inizio e di fine dello sprint per generare un grafico di burndown." remaining_hours: "lavoro residuo" version_settings_display_label: "Colonna nel backlog" version_settings_display_option_left: "sinistra" diff --git a/modules/backlogs/config/locales/crowdin/js-it.yml b/modules/backlogs/config/locales/crowdin/js-it.yml index 334cf2c39735..97e6364d9edf 100644 --- a/modules/backlogs/config/locales/crowdin/js-it.yml +++ b/modules/backlogs/config/locales/crowdin/js-it.yml @@ -25,5 +25,5 @@ it: properties: storyPoints: "Punti della storia" burndown: - day: "Day" - points: "Points" + day: "Giorno" + points: "Punti" diff --git a/modules/backlogs/config/locales/crowdin/js-ko.yml b/modules/backlogs/config/locales/crowdin/js-ko.yml index 34bf0f016c0c..1e87ff5a9b1c 100644 --- a/modules/backlogs/config/locales/crowdin/js-ko.yml +++ b/modules/backlogs/config/locales/crowdin/js-ko.yml @@ -25,5 +25,5 @@ ko: properties: storyPoints: "스토리 포인트" burndown: - day: "Day" - points: "Points" + day: "일" + points: "포인트" diff --git a/modules/backlogs/config/locales/crowdin/js-pt-BR.yml b/modules/backlogs/config/locales/crowdin/js-pt-BR.yml index bb6d4d398bbb..0f4a3462b7c7 100644 --- a/modules/backlogs/config/locales/crowdin/js-pt-BR.yml +++ b/modules/backlogs/config/locales/crowdin/js-pt-BR.yml @@ -25,5 +25,5 @@ pt-BR: properties: storyPoints: "Pontos de História" burndown: - day: "Day" - points: "Points" + day: "Dia" + points: "Pontos" diff --git a/modules/backlogs/config/locales/crowdin/zh-CN.yml b/modules/backlogs/config/locales/crowdin/zh-CN.yml index 25892b903ea8..148af750cd91 100644 --- a/modules/backlogs/config/locales/crowdin/zh-CN.yml +++ b/modules/backlogs/config/locales/crowdin/zh-CN.yml @@ -87,7 +87,7 @@ zh-CN: stories_tasks: "故事/任务" task_board: "任务板" burndown_chart: "燃尽图" - wiki: "维基百科" + wiki: "维基" properties: "属性" story_component: label_drag_story: "移动 %{name}" diff --git a/modules/budgets/config/locales/crowdin/it.yml b/modules/budgets/config/locales/crowdin/it.yml index cd052fd0889d..318aed3e097b 100644 --- a/modules/budgets/config/locales/crowdin/it.yml +++ b/modules/budgets/config/locales/crowdin/it.yml @@ -44,7 +44,7 @@ it: labor_budget_item: attributes: principal: - not_a_member_of_budget_project: "is not a member of the budget's project" + not_a_member_of_budget_project: "non è un membro del progetto di budget" models: budget: "Bilancio" material_budget_item: "Unità" @@ -65,28 +65,28 @@ it: budgets: widgets: budget_totals: - title: "Budget totals" - remaining_budget: "Remaining budget" - spent_budget: "Spent budget" - total_actual_costs: "Total actual costs" - total_planned_budget: "Total planned budget" + title: "Totali del budget" + remaining_budget: "Budget rimanente" + spent_budget: "Budget speso" + total_actual_costs: "Totale costi effettivi" + total_planned_budget: "Budget totale pianificato" budget_by_cost_type: - title: "Budget by cost type" + title: "Budget per tipo di costo" blankslate: - heading: "Start project controlling" - description: "Get an overview of your budgets and costs to efficiently track the health status of your project" + heading: "Avvia il controllo del progetto" + description: "Ottieni una panoramica dei tuoi budget e costi per monitorare in modo efficiente lo stato di salute del tuo progetto" blankslate_zero: - heading: "Budget details missing" - description: "Add details about your planned budget to see data here" + heading: "Dettagli del budget mancanti" + description: "Aggiungi dettagli sul tuo budget pianificato per visualizzare i dati qui" caption: - zero: "No budget data." - one: "Data aggregated from %{count} budget included in this %{workspace}." - other: "Data aggregated from %{count} budgets included in this %{workspace}." + zero: "Nessun dato di budget." + one: "Dati aggregati da %{count} budget incluso in questo %{workspace}." + other: "Dati aggregati da %{count} budget inclusi in questo %{workspace}." caption_with_subitems: - zero: "No budget data." - one: "Data aggregated from %{count} budget included in this %{workspace} and its subitems." - other: "Data aggregated from %{count} budgets included in this %{workspace} and its subitems." - view_details: "View budget details" + zero: "Nessun dato di budget." + one: "Dati aggregati da %{count} budget incluso in questo %{workspace} e nei suoi sottoelementi." + other: "Dati aggregati da %{count} budget inclusi in questo %{workspace} e nei suoi sottoelementi." + view_details: "Visualizza i dettagli del budget" events: budget: "Bilancio modificato" help_click_to_edit: "Clicca qui per modificare." diff --git a/modules/budgets/config/locales/crowdin/ko.yml b/modules/budgets/config/locales/crowdin/ko.yml index 13847fa1a8e3..5743e90bbf80 100644 --- a/modules/budgets/config/locales/crowdin/ko.yml +++ b/modules/budgets/config/locales/crowdin/ko.yml @@ -83,7 +83,7 @@ ko: one: "Data aggregated from %{count} budget included in this %{workspace}." other: "Data aggregated from %{count} budgets included in this %{workspace}." caption_with_subitems: - zero: "No budget data." + zero: "예산 데이터가 없습니다." one: "Data aggregated from %{count} budget included in this %{workspace} and its subitems." other: "Data aggregated from %{count} budgets included in this %{workspace} and its subitems." view_details: "예산 세부 정보 보기" diff --git a/modules/budgets/config/locales/crowdin/pt-BR.yml b/modules/budgets/config/locales/crowdin/pt-BR.yml index 4a28b36a9b2a..980c21156ff6 100644 --- a/modules/budgets/config/locales/crowdin/pt-BR.yml +++ b/modules/budgets/config/locales/crowdin/pt-BR.yml @@ -44,7 +44,7 @@ pt-BR: labor_budget_item: attributes: principal: - not_a_member_of_budget_project: "is not a member of the budget's project" + not_a_member_of_budget_project: "não é membro do projeto do orçamento" models: budget: "Orçamento" material_budget_item: "Unidade" @@ -80,12 +80,12 @@ pt-BR: description: "Adicione os detalhes do orçamento planejado para visualizar os dados aqui" caption: zero: "Nenhum dado de orçamento." - one: "Data aggregated from %{count} budget included in this %{workspace}." - other: "Data aggregated from %{count} budgets included in this %{workspace}." + one: "Dados agregados de %{count} orçamento incluídos neste %{workspace}." + other: "Dados agregados de %{count} orçamentos incluídos neste %{workspace}." caption_with_subitems: - zero: "No budget data." - one: "Data aggregated from %{count} budget included in this %{workspace} and its subitems." - other: "Data aggregated from %{count} budgets included in this %{workspace} and its subitems." + zero: "Sem dados de orçamento." + one: "Dados agregados de %{count} orçamento incluídos neste %{workspace} e em seus subitens." + other: "Dados agregados de %{count} orçamentos incluídos neste %{workspace} e em seus subitens." view_details: "Ver detalhes do orçamento" events: budget: "Orçamento editado" diff --git a/modules/budgets/config/locales/crowdin/zh-CN.yml b/modules/budgets/config/locales/crowdin/zh-CN.yml index 99dde4a9d209..5bc4da401e02 100644 --- a/modules/budgets/config/locales/crowdin/zh-CN.yml +++ b/modules/budgets/config/locales/crowdin/zh-CN.yml @@ -44,7 +44,7 @@ zh-CN: labor_budget_item: attributes: principal: - not_a_member_of_budget_project: "不是预算项目的成员" + not_a_member_of_budget_project: "不属于预算的项目" models: budget: "预算" material_budget_item: "单位" @@ -76,8 +76,8 @@ zh-CN: heading: "开始项目控制" description: "概括了解预算和成本,有效跟踪项目的健康状况" blankslate_zero: - heading: "预算详情缺失" - description: "添加计划预算的详情,以便在此处查看数据" + heading: "预算详细信息缺失" + description: "添加计划预算的详细信息,以便在此处查看数据" caption: zero: "无预算数据。" one: "从包含在此 %{workspace} 中的 %{count} 个预算中汇总的数据。" @@ -86,7 +86,7 @@ zh-CN: zero: "无预算数据。" one: "从包含在此 %{workspace} 及其子条目中的 %{count} 个预算中汇总的数据。" other: "从包含在此 %{workspace} 及其子条目中的 %{count} 个预算中汇总的数据。" - view_details: "查看预算详情" + view_details: "查看预算详细信息" events: budget: "预算已编辑" help_click_to_edit: "单击此处进行编辑。" diff --git a/modules/costs/config/locales/crowdin/it.yml b/modules/costs/config/locales/crowdin/it.yml index 7a79e96c0b41..f7c0cf849d74 100644 --- a/modules/costs/config/locales/crowdin/it.yml +++ b/modules/costs/config/locales/crowdin/it.yml @@ -229,12 +229,12 @@ it: costs: widgets: actual_costs: - title: "Actual costs by month" + title: "Costi effettivi per mese" blankslate: - heading: "Start tracking your time and costs" - description: "Get an overview of your costs and logged time to monitor progress of your project. Make sure that work packages are associated with the correct budget." - action: "Log time" - view_details: "View actual costs details" + heading: "Inizia a monitorare tempi e costi" + description: "Ottieni una panoramica dei costi e dei tempi registrati per monitorare l'avanzamento del tuo progetto. Assicurati che i pacchetti di lavoro siano associati al budget corretto." + action: "Registra tempo" + view_details: "Visualizza i dettagli dei costi effettivi" ee: features: time_entry_time_restrictions: Richiedi il tracciamento esatto dell'orario diff --git a/modules/costs/config/locales/crowdin/zh-CN.yml b/modules/costs/config/locales/crowdin/zh-CN.yml index b90c323aa6d4..8c5dff2879a3 100644 --- a/modules/costs/config/locales/crowdin/zh-CN.yml +++ b/modules/costs/config/locales/crowdin/zh-CN.yml @@ -225,12 +225,12 @@ zh-CN: costs: widgets: actual_costs: - title: "每月实际成本" + title: "实际成本(按月)" blankslate: heading: "开始跟踪时间和成本" description: "概括了解成本和记录的时间,以便监控项目进度。确保工作包与正确的预算相关联。" action: "记录时间" - view_details: "查看实际成本详情" + view_details: "查看实际成本详细信息" ee: features: time_entry_time_restrictions: 需要准确的时间跟踪 diff --git a/modules/documents/config/locales/crowdin/it.yml b/modules/documents/config/locales/crowdin/it.yml index a982b822a5a7..71b63affccf5 100644 --- a/modules/documents/config/locales/crowdin/it.yml +++ b/modules/documents/config/locales/crowdin/it.yml @@ -24,7 +24,7 @@ it: name: "Documenti OpenProject" description: "Un plugin OpenProject per consentire la creazione di documenti nei progetti." attributes: - collaborative_editing_hocuspocus_url: "Hocuspocus server URL" + collaborative_editing_hocuspocus_url: "URL del server Hocuspocus" activerecord: errors: models: @@ -123,8 +123,8 @@ it: some_unwritable: Alcuni valori sono configurati tramite variabili di ambiente e non possono essere modificati qui. hocuspocus_server_url: label: "URL del server Hocuspocus" - caption: "The WebSocket address of a working Hocuspocus server." - invalid_scheme: "Must use a WebSocket protocol (ws:// or wss://)." + caption: "L'indirizzo WebSocket di un server Hocuspocus funzionante." + invalid_scheme: "Deve usare un protocollo WebSocket (ws:// o wss://)." hocuspocus_server_secret: label: "Segreto client" caption: "Incolla il segreto fornito dal server Hocuspocus." diff --git a/modules/grids/config/locales/crowdin/js-it.yml b/modules/grids/config/locales/crowdin/js-it.yml index c0807175d1ae..6dd68fb2f27d 100644 --- a/modules/grids/config/locales/crowdin/js-it.yml +++ b/modules/grids/config/locales/crowdin/js-it.yml @@ -2,12 +2,12 @@ it: js: grid: add_widget: 'Aggiungi widget' - widget_menu_label: 'Show menu options for %{widgetName} widget' + widget_menu_label: 'Mostra le opzioni del menu per il widget %{widgetName}' remove: 'Rimuovi widget' configure: 'Configura il widget' widgets: missing_permission: "Non hai i permessi necessari per visualizzare questo widget." - not_available: "This widget is currently unavailable." + not_available: "Questo widget non è attualmente disponibile." custom_text: title: 'Testo personalizzato' documents: diff --git a/modules/grids/config/locales/crowdin/js-ko.yml b/modules/grids/config/locales/crowdin/js-ko.yml index 79eb4fe3d07d..f538144b35c3 100644 --- a/modules/grids/config/locales/crowdin/js-ko.yml +++ b/modules/grids/config/locales/crowdin/js-ko.yml @@ -2,12 +2,12 @@ ko: js: grid: add_widget: '위젯 추가' - widget_menu_label: 'Show menu options for %{widgetName} widget' + widget_menu_label: '%{widgetName} 위젯의 메뉴 옵션 표시' remove: '위젯 제거' configure: '위젯 구성' widgets: missing_permission: "이 위젯을 보는 데 필요한 권한이 없습니다." - not_available: "This widget is currently unavailable." + not_available: "이 위젯은 현재 사용할 수 없습니다." custom_text: title: '사용자 지정 텍스트' documents: diff --git a/modules/grids/config/locales/crowdin/js-pt-BR.yml b/modules/grids/config/locales/crowdin/js-pt-BR.yml index 967cde12cf34..a7b0f998611c 100644 --- a/modules/grids/config/locales/crowdin/js-pt-BR.yml +++ b/modules/grids/config/locales/crowdin/js-pt-BR.yml @@ -2,12 +2,12 @@ pt-BR: js: grid: add_widget: 'Adicionar widget' - widget_menu_label: 'Show menu options for %{widgetName} widget' + widget_menu_label: 'Exibir opções de menu para o widget %{widgetName}' remove: 'Remover widget' configure: 'Configurar widget' widgets: missing_permission: "Você não tem as permissões necessárias para visualizar este widget." - not_available: "This widget is currently unavailable." + not_available: "Este widget não está disponível no momento." custom_text: title: 'Texto personalizado' documents: diff --git a/modules/meeting/config/locales/crowdin/it.yml b/modules/meeting/config/locales/crowdin/it.yml index 4ba54b3c3563..934a7b4eb611 100644 --- a/modules/meeting/config/locales/crowdin/it.yml +++ b/modules/meeting/config/locales/crowdin/it.yml @@ -60,7 +60,7 @@ it: end_date: "Data di scadenza" iterations: "Ricorrenze" recurring_meeting_interim_response: - start_time: "Start time" + start_time: "Ora di inizio" meeting_participant: invited: "Invitato" attended: "Ha partecipato" @@ -68,12 +68,12 @@ it: errors: models: meeting_participant: - user_invalid: "is not a valid participant." + user_invalid: "non è un partecipante valido." meeting_agenda_item: - section_not_belong_to_meeting: "Section does not belong to the same meeting." - user_invalid: "is not a valid participant." + section_not_belong_to_meeting: "La sezione non appartiene alla stessa riunione." + user_invalid: "non è un partecipante valido." recurring_meeting_interim_response: - not_an_occurrence: "is not a valid occurrence time for this recurring meeting" + not_an_occurrence: "non è un orario di occorrenza valido per questa riunione ricorrente" recurring_meeting: must_cover_existing_meetings: one: "C'è una riunione aperta nella serie che non è coperta dal nuovo programma. Adatta il programma per includere tutte le riunioni esistenti." @@ -118,13 +118,13 @@ it: error_notification_with_errors: "Impossibile inviare notifica. Non è possibile notificare i seguenti destinatari: %{recipients}" label_meeting: "Riunione" label_meeting_plural: "Riunioni" - label_meeting_templates: "Templates" - label_meeting_template: "Template" - label_meeting_template_new: "New template" - label_meeting_template_create: "Create template" - label_meeting_template_delete: "Delete template" - label_meeting_template_edit: "Edit template" - label_meeting_create_from_template: "Create meeting from template" + label_meeting_templates: "Modelli" + label_meeting_template: "Modello" + label_meeting_template_new: "Nuovo modello" + label_meeting_template_create: "Crea modello" + label_meeting_template_delete: "Elimina modello" + label_meeting_template_edit: "Modifica modello" + label_meeting_create_from_template: "Crea una riunione da un modello" label_meeting_new: "Nuova riunione" label_meeting_new_dynamic: "Nuova riunione una tantum" label_meeting_new_recurring: "Nuova riunione ricorrente" @@ -194,8 +194,8 @@ it: label_time_zone: "Fuso orario" label_start_date: "Data di inizio" label_subscribe_icalendar: "Iscriviti al calendario" - caption_meeting_template_select: "Select a template to automatically copy its agenda items" - caption_template_project_select: "Please select the project in which to create this meeting template" + caption_meeting_template_select: "Seleziona un modello per copiare automaticamente i suoi elementi dell'ordine del giorno" + caption_template_project_select: "Seleziona il progetto in cui creare questo modello di riunione" meeting: participants: label: @@ -247,9 +247,9 @@ it: header: "Cancellata: riunione \"%{title}\"" header_occurrence: "Cancellata: occorrenza della riunione \"%{title}\"" header_series: "Cancellata: serie di riunioni \"%{title}\"" - summary_occurrence: "An occurrence of '%{title}' has been cancelled by %{actor}, or you have been removed as a participant" - summary_series: "Meeting series '%{title}' has been cancelled by %{actor}, or you have been removed as a participant" - summary: "'%{title}' has been cancelled by %{actor}, or you have been removed as a participant" + summary_occurrence: "Un'occorrenza di '%{title}' è stata annullata da %{actor}, oppure ti hanno rimosso come partecipante" + summary_series: "La serie di riunioni '%{title}' è stata annullata da %{actor} oppure ti hanno rimosso come partecipante" + summary: "'%{title}' è stata annullata da %{actor} oppure ti hanno rimosso come partecipante" date_time: "Data/ora programmata" participant_added: header: "Riunione '%{title}' - Partecipante aggiunto" @@ -263,7 +263,7 @@ it: summary_series: "%{actor} ha rimosso %{participant} dalla serie di riunioni '%{title}'" ended: header_series: "Terminata: serie di riunioni \"%{title}\"" - summary_series: "Meeting series '%{title}' has been ended by %{actor}" + summary_series: "La serie di riunioni '%{title}' è stata conclusa da %{actor}" updated: header: "La riunione \"%{title}\" è stata aggiornata" summary: "La riunione \"%{title}\" è stata aggiornata da %{actor}" @@ -289,8 +289,8 @@ it: confirmation_message_html: > Questa azione è irreversibile. Procedi con cautela. template: - title: "Delete template" - heading: "Delete this template?" + title: "Elimina modello" + heading: "Eliminare questo modello?" occurrence: title: "Cancella l'occorrenza della riunione" heading: "Cancellare questa occorrenza della riunione?" @@ -490,7 +490,7 @@ it: end_series_dialog: title: "Termina serie di riunioni" notice_successful_notification: "Aggiornamento del calendario via e-mail inviato a tutti i partecipanti" - notice_meeting_template_created: "Template successfully created" + notice_meeting_template_created: "Modello creato correttamente" notice_timezone_missing: Nessun fuso orario è impostato e la %{zone} è un requisito necessario. Per scegliere il tuo fuso orario, fare clic qui. notice_meeting_updated: "Questa pagina è stata aggiornata da qualcun altro. Ricarica per visualizzare le modifiche." permission_create_meetings: "Creare riunioni" @@ -505,8 +505,8 @@ it: text_duration_in_hours: "Durata in ore" text_in_hours: "in ore" text_meeting_agenda_for_meeting: 'ordine del giorno della riunione "%{meeting}"' - text_meeting_template_blank_slate_heading: "There are no templates to display" - text_meeting_template_blank_slate: "You can create a new template for one-time meetings" + text_meeting_template_blank_slate_heading: "Non ci sono modelli da visualizzare" + text_meeting_template_blank_slate: "È possibile creare un nuovo modello per riunioni una tantum" text_meeting_series_end_early_heading: "Cancellare le occorrenze future?" text_meeting_series_end_early: "La chiusura della serie cancellerà tutte le future occorrenze di riunioni aperte o programmate" text_meeting_closing_are_you_sure: "Vuoi davvero chiudere l'agenda di questa riunione?" @@ -552,8 +552,8 @@ it: label_agenda_item_move_up: "Sposta su" label_agenda_item_move_down: "Sposta giu" label_agenda_item_duplicate: "Duplica" - label_agenda_item_duplicate_in_next: "Duplicate in next meeting" - label_agenda_item_duplicate_in_next_title: "Duplicate in next meeting?" + label_agenda_item_duplicate_in_next: "Duplica nella prossima riunione" + label_agenda_item_duplicate_in_next_title: "Duplicare nella prossima riunione?" label_agenda_item_add_notes: "Aggiungi nota" label_agenda_item_add_outcome: "Aggiungi risultato" label_agenda_item_work_package_add: "Aggiungi macro-attività" @@ -612,9 +612,9 @@ it: text_meeting_in_progress_dropdown_description: "Documenta i risultati, come le esigenze informative o le decisioni prese durante la riunione." text_meeting_closed_dropdown_description: "Questa riunione è chiusa. Non puoi più modificare i punti all'ordine del giorno." text_meeting_draft_banner: "Al momento sei in modalità bozza. Questa riunione non invierà alcun aggiornamento del calendario né inviti, anche in caso di modifica dei dettagli della riunione o di aggiunta o rimozione di partecipanti." - text_onetime_meeting_template_banner: "You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings." - text_onetime_meeting_template_empty_heading: "This meeting template is empty" - text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." + text_onetime_meeting_template_banner: "Stai modificando un modello di riunione. Puoi utilizzare questo modello per creare riunioni singole con un ordine del giorno predefinito. Le modifiche non influiranno sulle riunioni già create." + text_onetime_meeting_template_empty_heading: "Questo modello di riunione è vuoto" + text_onetime_meeting_template_empty_description: "Aggiungi a questo modello i punti all'ordine del giorno, le sezioni e gli allegati. Saranno inclusi in ogni riunione creata usando questo modello." text_exit_draft_mode_dialog_title: "Aprire questa riunione e inviare gli inviti?" text_exit_draft_mode_dialog_subtitle: "Non può tornare alla modalità bozza una volta programmata una riunione." text_exit_draft_mode_dialog_template_title: "Aprire la prima occorrenza di questa serie di riunioni?" diff --git a/modules/meeting/config/locales/crowdin/ko.yml b/modules/meeting/config/locales/crowdin/ko.yml index a5ffc684ea38..15d1d2ebab8c 100644 --- a/modules/meeting/config/locales/crowdin/ko.yml +++ b/modules/meeting/config/locales/crowdin/ko.yml @@ -59,7 +59,7 @@ ko: end_date: "종료 날짜" iterations: "항목" recurring_meeting_interim_response: - start_time: "Start time" + start_time: "시작 시간" meeting_participant: invited: "초대됨" attended: "참석함" diff --git a/modules/meeting/config/locales/crowdin/pt-BR.yml b/modules/meeting/config/locales/crowdin/pt-BR.yml index 68bb78328db8..afbd98bf1a4c 100644 --- a/modules/meeting/config/locales/crowdin/pt-BR.yml +++ b/modules/meeting/config/locales/crowdin/pt-BR.yml @@ -60,7 +60,7 @@ pt-BR: end_date: "Data de término" iterations: "Ocorrências" recurring_meeting_interim_response: - start_time: "Start time" + start_time: "Hora de início" meeting_participant: invited: "Convidado" attended: "Participou" @@ -73,7 +73,7 @@ pt-BR: section_not_belong_to_meeting: "A seção não pertence à mesma reunião." user_invalid: "não é um participante válido." recurring_meeting_interim_response: - not_an_occurrence: "is not a valid occurrence time for this recurring meeting" + not_an_occurrence: "não é um horário válido para esta reunião recorrente" recurring_meeting: must_cover_existing_meetings: one: "Há uma reunião aberta na série que não está contemplada na nova programação. Ajuste a programação para incluir todas as reuniões existentes." @@ -194,8 +194,8 @@ pt-BR: label_time_zone: "Fuso horário" label_start_date: "Data de início" label_subscribe_icalendar: "Assinar calendário" - caption_meeting_template_select: "Selecione um modelo para copiar automaticamente os itens da agenda" - caption_template_project_select: "Please select the project in which to create this meeting template" + caption_meeting_template_select: "Selecione um modelo para copiar automaticamente os itens da pauta" + caption_template_project_select: "Selecione o projeto no qual deseja criar este modelo de reunião" meeting: participants: label: @@ -208,7 +208,7 @@ pt-BR: no_participants: "Sem participantes" show_all: "Mostrar todos" text: - template: "Esses participantes serão adicionados automaticamente a todas as reuniões futuras à medida que forem agendadas." + template: "Esses participantes serão convidados automaticamente para todas as futuras reuniões à medida que forem criadas." manage_participants: "Pesquisar e adicionar membros do projeto como participantes desta reunião." search_for_members: "Pesquisar membros do projeto" blankslate: @@ -216,7 +216,7 @@ pt-BR: description: "Ainda não há participantes." attachments: template: "Esses arquivos anexados serão adicionados a todas as reuniões futuras da série." - text: "Os arquivos anexados podem ser acessados por todos os participantes da reunião. Além disso, você pode simplesmente arrastá-los e soltá-los nas anotações do item da agenda." + text: "Os arquivos anexados estão disponíveis para todos os participantes da reunião. Você também pode arrastá-los e soltá-los nas anotações dos itens da pauta." copy: title: "Copiar reunião: %{title}" attachments: "Copiar anexos" @@ -390,8 +390,8 @@ pt-BR: total_items: "%{current} de %{total}" previous: "Anterior" next: "Próximo" - no_items: "Sem itens na agenda" - no_items_flash: "Não há itens na agenda para apresentar." + no_items: "Sem itens na pauta" + no_items_flash: "Não há itens na pauta para apresentar." ical_response: update_failed: "Não foi possível atualizar status de participação." meeting_not_found: "Reunião não encontrada por UID." @@ -557,7 +557,7 @@ pt-BR: label_agenda_item_add_notes: "Adicionar anotações" label_agenda_item_add_outcome: "Adicionar resultado" label_agenda_item_work_package_add: "Adicionar pacote de trabalho" - label_agenda_item_work_package: "Pacote de trabalho do item da agenda" + label_agenda_item_work_package: "Pacote de trabalho do Item da pauta" label_section_rename: "Renomear seção" label_agenda_outcome: "Resultado" label_agenda_new_outcome: "Novo resultado" @@ -584,8 +584,8 @@ pt-BR: label_series_backlog_clear_title: "Limpar backlog da série?" text_series_backlog_clear_description: > Isso removerá todos os itens do backlog da série, que é compartilhado com todas as reuniões desta série. Tem certeza de que deseja continuar? Essa ação é irreversível. - text_agenda_item_title: 'Item da agenda "%{title}"' - text_agenda_work_package_deleted: "Item da agenda para o pacote de trabalho excluído" + text_agenda_item_title: 'Item da pauta "%{title}"' + text_agenda_work_package_deleted: "Item da pauta para o pacote de trabalho excluído" text_deleted_agenda_item: "Item da agenda excluído" label_initial_meeting_details: "Reunião" label_meeting_details: "Detalhes da reunião" @@ -604,7 +604,7 @@ pt-BR: label_meeting_close_action: "Fechar reunião" label_meeting_in_progress_action: "Iniciar reunião" label_meeting_open_action: "Reunião aberta" - text_meeting_draft_description: "Prepare sua agenda no modo rascunho. Esta reunião não enviará nenhuma atualização de calendário ou convite, mesmo que você altere os detalhes da reunião ou adicione/remova participantes." + text_meeting_draft_description: "Prepare sua pauta em modo rascunho. Esta reunião não enviará nenhuma atualização de calendário ou convites, mesmo que você altere os detalhes da reunião ou adicione/remova participantes." text_meeting_open_description: "Você pode adicionar ou remover participantes e itens da agenda. Assim que a agenda estiver pronta, marque-a como \"Em andamento\" para registrar os resultados." text_meeting_closed_description: "Esta reunião está fechada. Você não pode mais adicionar/remover itens da agenda." text_meeting_in_progress_description: "Você pode modificar a agenda, registrar os resultados de cada item e acompanhar a presença dos participantes. Após a conclusão da reunião, você pode marcá-la como encerrada para bloqueá-la." @@ -612,11 +612,11 @@ pt-BR: text_meeting_in_progress_dropdown_description: "Registre os resultados como solicitações de informação ou decisões tomadas durante a reunião." text_meeting_closed_dropdown_description: "Esta reunião está encerrada. Já não é possível modificar os pontos da ordem de trabalhos ou os resultados." text_meeting_draft_banner: "Você está no modo rascunho. Esta reunião não enviará nenhuma atualização de calendário ou convite, mesmo que você altere os detalhes da reunião ou adicione/remoca participantes." - text_onetime_meeting_template_banner: "Você está editando um modelo de reunião. Use este modelo para criar reuniões únicas com uma agenda predefinida. As alterações não afetarão reuniões já criadas." + text_onetime_meeting_template_banner: "Você está editando um modelo de reunião. Pode usar este modelo para criar reuniões pontuais com uma pauta predefinida. Alterações não afetarão reuniões já criadas." text_onetime_meeting_template_empty_heading: "Este modelo de reunião está vazio" - text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." + text_onetime_meeting_template_empty_description: "Adicione aqui itens de pauta, seções e anexos. Eles serão incluídos em todas as reuniões criadas com este modelo." text_exit_draft_mode_dialog_title: "Abrir esta reunião e enviar convites?" - text_exit_draft_mode_dialog_subtitle: "Você não pode retornar ao modo rascunho após você agendar a reunião." + text_exit_draft_mode_dialog_subtitle: "Não é possível voltar ao modo rascunho depois de agendar uma reunião." text_exit_draft_mode_dialog_template_title: "Abrir a primeira ocorrência desta série de reuniões?" text_exit_draft_mode_dialog_template_subtitle: "Você não pode retornar ao modo rascunho após isto." text_meeting_not_editable_anymore: "A reunião não pode mais ser editada." @@ -630,17 +630,17 @@ pt-BR: text_add_work_package_to_meeting_form: "O pacote de trabalho será adicionado à reunião selecionada ou ao backlog como um item da agenda." text_add_work_package_to_meeting_description: "Um pacote de trabalho pode ser adicionado a uma ou várias reuniões para discussão. Quaisquer anotações sobre ele também ficarão visíveis aqui." text_agenda_item_no_notes: "Nenhum comentário foi feito" - text_agenda_item_not_editable_anymore: "Este item da agenda não pode mais ser editado." + text_agenda_item_not_editable_anymore: "Este item da pauta não pode mais ser editado." text_agenda_item_move_next_meeting: "Este item será transferido para a próxima reunião em %{date} às %{time}." - text_agenda_item_moved_to_next_meeting: "Item da agenda movido para a próxima reunião em %{date}" - text_agenda_item_duplicate_in_next_meeting: "Tem certeza de que deseja adicionar uma cópia deste item da agenda à próxima reunião, em %{date} às %{time}? Os resultados não serão duplicados." - text_agenda_item_duplicated_in_next_meeting: "Item da agenda duplicado na próxima reunião, em %{date}" + text_agenda_item_moved_to_next_meeting: "Item da pauta movido para a próxima reunião em %{date}" + text_agenda_item_duplicate_in_next_meeting: "Tem certeza de que deseja adicionar uma cópia deste item da pauta à próxima reunião, em %{date} às %{time}? Os resultados não serão duplicados." + text_agenda_item_duplicated_in_next_meeting: "Item da pauta duplicado na próxima reunião, em %{date}" text_work_package_has_no_upcoming_meeting_agenda_items: "Este pacote de trabalho ainda não está programado na agenda de uma reunião futura." text_agenda_item_no_available_occurrence: "Todas as ocorrências futuras foram canceladas." text_agenda_item_dialog_skipping_cancelled_one: "Observação: Ignorar a ocorrência cancelada em %{date}." text_agenda_item_dialog_skipping_cancelled_many: "Observação: Ignorar %{count} ocorrências canceladas." text_work_package_add_to_meeting_hint: 'Use o botão "Adicionar à reunião" para adicionar este pacote de trabalho a uma próxima reunião.' - text_work_package_has_no_past_meeting_agenda_items: "Este pacote de trabalho não foi adicionado como item da agenda em uma reunião anterior." + text_work_package_has_no_past_meeting_agenda_items: "Este pacote de trabalho não foi adicionado como item da pauta em uma reunião anterior." text_email_updates_muted: "As atualizações de calendário por e-mail estão silenciadas. Os participantes não receberão convites atualizados por e-mail quando você fizer alterações." text_email_updates_enabled: "As atualizações de calendário por e-mail estão habilitados. Todos os participantes receberão convites atualizados por e-mail quando você fizer alterações." my_account: diff --git a/modules/meeting/config/locales/crowdin/zh-CN.yml b/modules/meeting/config/locales/crowdin/zh-CN.yml index d13f02de22d0..b4ec178cde3c 100644 --- a/modules/meeting/config/locales/crowdin/zh-CN.yml +++ b/modules/meeting/config/locales/crowdin/zh-CN.yml @@ -69,10 +69,10 @@ zh-CN: meeting_participant: user_invalid: "不是有效的参与者。" meeting_agenda_item: - section_not_belong_to_meeting: "该部分不属于同一次会议。" + section_not_belong_to_meeting: "该部分不属于同一个会议。" user_invalid: "不是有效的参与者。" recurring_meeting_interim_response: - not_an_occurrence: "不是此定期会议的有效发生时间" + not_an_occurrence: "不是此定期会议的有效事件时间" recurring_meeting: must_cover_existing_meetings: one: "该系列会议中有一次公开会议未列入新时间表。请调整时间表,将会议包含在内。" @@ -118,7 +118,7 @@ zh-CN: label_meeting_plural: "会议" label_meeting_templates: "模板" label_meeting_template: "模板" - label_meeting_template_new: "新模板" + label_meeting_template_new: "新建模板" label_meeting_template_create: "创建模板" label_meeting_template_delete: "删除模板" label_meeting_template_edit: "编辑模板" @@ -190,7 +190,7 @@ zh-CN: label_start_date: "开始日期" label_subscribe_icalendar: "订阅日历" caption_meeting_template_select: "选择一个模板,以自动复制其议程条目" - caption_template_project_select: "Please select the project in which to create this meeting template" + caption_template_project_select: "请选择要在其中创建此会议模板的项目" meeting: participants: label: @@ -607,7 +607,7 @@ zh-CN: text_meeting_draft_banner: "您目前处于草稿模式。即使您更改了会议详细信息或添加/移除了参与者,此会议也不会发送任何日历更新或邀请。" text_onetime_meeting_template_banner: "您当前正在编辑会议模板。您可以使用此模板创建具有预定义议程的一次性会议。更改不会影响已创建的会议。" text_onetime_meeting_template_empty_heading: "此会议模板为空" - text_onetime_meeting_template_empty_description: "Add agenda items, sections and attachments here. They will be included in every meeting created using this template." + text_onetime_meeting_template_empty_description: "在此处添加议程条目、部分和附件。使用此模板创建的每个会议都将包含这些内容。" text_exit_draft_mode_dialog_title: "是否打开此会议并发送邀请?" text_exit_draft_mode_dialog_subtitle: "会议安排完成后,您将无法返回到草稿模式。" text_exit_draft_mode_dialog_template_title: "是否打开此会议系列的第一个会议?"